WAF support for OpenBSD

Brad Smith brad at comstyle.com
Wed Feb 26 23:29:55 MST 2014


On 24/01/14 12:19 AM, Brad Smith wrote:
> On 20/01/14 1:44 AM, Brad Smith wrote:
>> Looking for any assistance with trying to fix WAF on OpenBSD...
>
> Anyone familiar with Samba's WAF be able to help out porting the
> diff below?

Hello? Anyone?

>> ----- Forwarded message from Brad Smith <brad at comstyle.com> -----
>>
>> Date: Fri, 13 Dec 2013 02:48:43 -0500
>> From: Brad Smith <brad at comstyle.com>
>> To: mat at matws.net
>> Subject: WAF support for OpenBSD
>> User-Agent: Mutt/1.5.22 (2013-10-16)
>>
>> Hi Matthieu,
>>
>> I came across this post while looking through the Samba mailing lists.
>>
>> http://marc.info/?l=samba-technical&m=137961606432749&w=2
>>
>> I was working with Thomas to try and fix WAF building shared libraries
>> on OpenBSD
>> as we ran into issues with WAF not properly building and installing
>> shared libs
>> when I was trying to update Samba and some of the other componnents
>> like talloc,
>> tevent, and tdb. As far as I know of all of the issues I had run into
>> have been
>> fixed upstream with WAF 1.7, but Samba uses WAF 1.5 still. Would you
>> be able to
>> assist with backporting the functional changes from the diff below
>> which is
>> against WAF 1.7?
>>
>>
>> diff -upr ./Tools/ccroot.py /home/brad/waf/waflib/Tools/ccroot.py
>> --- ./Tools/ccroot.py    Sat May 25 08:55:40 2013
>> +++ /home/brad/waf/waflib/Tools/ccroot.py    Thu Dec 12 22:16:12 2013
>> @@ -146,11 +146,14 @@ class link_task(Task.Task):
>>                   pattern = '%s'
>>               folder, name = os.path.split(target)
>>
>> -            if self.__class__.__name__.find('shlib') > 0:
>> -                if self.env.DEST_BINFMT == 'pe' and
>> getattr(self.generator, 'vnum', None):
>> +            if self.__class__.__name__.find('shlib') > 0 and
>> getattr(self.generator, 'vnum', None):
>> +                nums = self.generator.vnum.split('.')
>> +                if self.env.DEST_BINFMT == 'pe':
>>                       # include the version in the dll file name,
>>                       # the import lib file name stays unversionned.
>> -                    name = name + '-' +
>> self.generator.vnum.split('.')[0]
>> +                    name = name + '-' + nums[0]
>> +                elif self.env.DEST_OS == 'openbsd':
>> +                    pattern = '%s.%s.%s' % (pattern, nums[0], nums[1])
>>
>>               tmp = folder + os.sep + pattern % name
>>               target = self.generator.path.find_or_declare(tmp)
>> @@ -499,16 +502,23 @@ def apply_vnum(self):
>>           self.env.append_value('LINKFLAGS', v.split())
>>
>>       # the following task is just to enable execution from the build
>> dir :-/
>> -    self.create_task('vnum', node,
>> [node.parent.find_or_declare(name2), node.parent.find_or_declare(name3)])
>>
>> +    if self.env.DEST_OS != 'openbsd':
>> +        self.create_task('vnum', node,
>> [node.parent.find_or_declare(name2), node.parent.find_or_declare(name3)])
>> +
>>       if getattr(self, 'install_task', None):
>>           self.install_task.hasrun = Task.SKIP_ME
>>           bld = self.bld
>>           path = self.install_task.dest
>> -        t1 = bld.install_as(path + os.sep + name3, node,
>> env=self.env, chmod=self.link_task.chmod)
>> -        t2 = bld.symlink_as(path + os.sep + name2, name3)
>> -        t3 = bld.symlink_as(path + os.sep + libname, name3)
>> -        self.vnum_install_task = (t1, t2, t3)
>> +        if self.env.DEST_OS == 'openbsd':
>> +            libname = self.link_task.outputs[0].name
>> +            t1 = bld.install_as('%s%s%s' % (path, os.sep, libname),
>> node, env=self.env, chmod=self.link_task.chmod)
>> +            self.vnum_install_task = (t1,)
>> +        else:
>> +            t1 = bld.install_as(path + os.sep + name3, node,
>> env=self.env, chmod=self.link_task.chmod)
>> +            t2 = bld.symlink_as(path + os.sep + name2, name3)
>> +            t3 = bld.symlink_as(path + os.sep + libname, name3)
>> +            self.vnum_install_task = (t1, t2, t3)
>>
>>       if '-dynamiclib' in self.env['LINKFLAGS']:
>>           # this requires after(propagate_uselib_vars)
>> diff -upr ./Tools/gcc.py /home/brad/waf/waflib/Tools/gcc.py
>> --- ./Tools/gcc.py    Sun Apr 28 04:11:17 2013
>> +++ /home/brad/waf/waflib/Tools/gcc.py    Thu Dec 12 22:16:12 2013
>> @@ -8,8 +8,6 @@
>>   gcc/llvm detection.
>>   """
>>
>> -import os, sys
>> -from waflib import Configure, Options, Utils
>>   from waflib.Tools import ccroot, ar
>>   from waflib.Configure import conf
>>
>> @@ -126,6 +124,10 @@ def gcc_modifier_hpux(conf):
>>       v['STLIB_MARKER']        = '-Bstatic'
>>       v['CFLAGS_cshlib']       = ['-fPIC','-DPIC']
>>       v['cshlib_PATTERN']      = 'lib%s.sl'
>> +
>> + at conf
>> +def gcc_modifier_openbsd(conf):
>> +    conf.env.SONAME_ST = []
>>
>>   @conf
>>   def gcc_modifier_platform(conf):
>> diff -upr ./Tools/gxx.py /home/brad/waf/waflib/Tools/gxx.py
>> --- ./Tools/gxx.py    Sun Apr 28 04:11:17 2013
>> +++ /home/brad/waf/waflib/Tools/gxx.py    Thu Dec 12 22:16:12 2013
>> @@ -8,8 +8,6 @@
>>   g++/llvm detection.
>>   """
>>
>> -import os, sys
>> -from waflib import Configure, Options, Utils
>>   from waflib.Tools import ccroot, ar
>>   from waflib.Configure import conf
>>
>> @@ -127,6 +125,10 @@ def gxx_modifier_hpux(conf):
>>       v['STLIB_MARKER']        = '-Bstatic'
>>       v['CFLAGS_cxxshlib']     = ['-fPIC','-DPIC']
>>       v['cxxshlib_PATTERN']    = 'lib%s.sl'
>> +
>> + at conf
>> +def gxx_modifier_openbsd(conf):
>> +    conf.env.SONAME_ST = []
>>
>>   @conf
>>   def gxx_modifier_platform(conf):
>>
>> ----- End forwarded message -----
>>
>
>


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



More information about the samba-technical mailing list