wafbuild: create missing private library symlinks on platforms without soname support...
[sfrench/samba-autobuild/.git] / buildtools / wafsamba / samba_install.py
index 21035bf29dbaeecf570c13a0cc74046b56a8521f..c07b2ce639a5d390dcd217724588aae5097a8fa4 100644 (file)
@@ -4,8 +4,8 @@
 # library use
 
 import os
-import Utils
-from TaskGen import feature, before, after
+from waflib import Utils, Errors
+from waflib.TaskGen import feature, before, after
 from samba_utils import LIB_PATH, MODE_755, install_rpath, build_rpath
 
 @feature('install_bin')
@@ -45,7 +45,7 @@ def install_binary(self):
 
     # tell waf to install the right binary
     bld.install_as(os.path.join(install_path, orig_target),
-                   os.path.join(self.path.abspath(bld.env), self.target),
+                   self.path.find_or_declare(self.target),
                    chmod=MODE_755)
 
 
@@ -121,7 +121,7 @@ def install_library(self):
             install_name = bld.make_libname(target_name, version=self.vnum)
             install_link = bld.make_libname(target_name, version=vnum_base)
             inst_name    = bld.make_libname(t.target)
-            if not self.private_library:
+            if not self.private_library or not t.env.SONAME_ST:
                 # only generate the dev link for non-bundled libs
                 dev_link     = bld.make_libname(target_name)
         elif getattr(self, 'soname', ''):
@@ -143,8 +143,9 @@ def install_library(self):
 
         # tell waf to install the library
         bld.install_as(os.path.join(install_path, install_name),
-                       os.path.join(self.path.abspath(bld.env), inst_name),
+                       self.path.find_or_declare(inst_name),
                        chmod=MODE_755)
+
         if install_link and install_link != install_name:
             # and the symlink if needed
             bld.symlink_as(os.path.join(install_path, install_link), os.path.basename(install_name))
@@ -227,7 +228,7 @@ def symlink_bin(self):
         return
 
     if not self.link_task.outputs or not self.link_task.outputs[0]:
-        raise Utils.WafError('no outputs found for %s in symlink_bin' % self.name)
+        raise Errors.WafError('no outputs found for %s in symlink_bin' % self.name)
     binpath = self.link_task.outputs[0].abspath(self.env)
     bldpath = os.path.join(self.bld.env.BUILD_DIRECTORY, self.link_task.outputs[0].name)