wafsamba: If we define a realname and a soname create a symlink.
[obnox/samba/samba-obnox.git] / buildtools / wafsamba / samba_install.py
index 3c24679a72e0c489c921f068f78dd2e1d757c4b4..aa7f14331a37aa64db31d1ba70192e88441f75b9 100644 (file)
@@ -103,6 +103,8 @@ def install_library(self):
     if getattr(self, 'samba_realname', None):
         install_name = self.samba_realname
         install_link = None
+        if getattr(self, 'soname', ''):
+            install_link = self.soname
         if getattr(self, 'samba_type', None) == 'PYTHON':
             inst_name    = bld.make_libname(t.target, nolibprefix=True, python=True)
         else:
@@ -124,18 +126,23 @@ def install_library(self):
         install_link = None
         inst_name    = bld.make_libname(t.target)
 
-    if t.env.SONAME_ST and install_link:
-        t.env.append_value('LINKFLAGS', t.env.SONAME_ST % install_link)
+    if t.env.SONAME_ST:
+        # ensure we get the right names in the library
+        if install_link:
+            t.env.append_value('LINKFLAGS', t.env.SONAME_ST % install_link)
+        else:
+            t.env.append_value('LINKFLAGS', t.env.SONAME_ST % install_name)
         t.env.SONAME_ST = ''
 
     # 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))
+                   os.path.join(self.path.abspath(bld.env), 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), install_name)
+        bld.symlink_as(os.path.join(install_path, install_link), os.path.basename(install_name))
     if dev_link:
-        bld.symlink_as(os.path.join(install_path, dev_link), install_name)
+        bld.symlink_as(os.path.join(install_path, dev_link), os.path.basename(install_name))
 
 
 @feature('cshlib')
@@ -156,7 +163,7 @@ def apply_vscript(self):
 
     if self.env.HAVE_LD_VERSION_SCRIPT and getattr(self, 'version_script', ''):
         self.env.append_value('LINKFLAGS', "-Wl,--version-script=%s" %
-            os.path.join(self.path.abspath(self.env), self.version_script))
+            self.version_script)
         self.version_script = None
 
 
@@ -182,7 +189,7 @@ def symlink_lib(self):
 
     link_target = getattr(self, 'link_name', '')
     if link_target == '':
-        basename = self.bld.make_libname(self.target, version=soext)
+        basename = os.path.basename(self.bld.make_libname(self.target, version=soext))
         if getattr(self, "private_library", False):
             link_target = '%s/private/%s' % (LIB_PATH, basename)
         else:
@@ -211,6 +218,8 @@ def symlink_bin(self):
         return
 
     blddir = os.path.dirname(self.bld.srcnode.abspath(self.bld.env))
+    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)
     binpath = self.link_task.outputs[0].abspath(self.env)
     bldpath = os.path.join(self.bld.env.BUILD_DIRECTORY, self.link_task.outputs[0].name)