Update waf to v2.0.19

This commit is contained in:
Robin Gareus 2020-01-20 23:08:55 +01:00
parent 2e9ac80e99
commit 19603d075f
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
5 changed files with 31 additions and 77 deletions

View File

@ -1,15 +1,20 @@
Download waf (https://waf.io/)
autowaf.py is present in the tools directory of the Ardour source code.
a patch for C++11/clang can be found in tools/waflib.patch (needed for waf 1.8.19)
Current waf is build as follows;
# Download waf (https://waf.io/)
#
# autowaf.py and misc.py are present in the tools directory of the Ardour source code.
# - waf-str.patch is needed for py2/py3 compatible install_dir:
# * in py2 paths are byte-arrays and would need to be converted using .encode("utf-8")
# (otherwise waf expands them /t/o/p/a/t/h/s/l/i/k/e/t/h/i/s)
# * however py3 cannot handled encoded arrays:
# (TypeError: cannot use a string pattern on a bytes-like object)
#
# Current waf is build as follows:
ARDOURSRC=`pwd`
cd /tmp
curl https://waf.io/waf-1.6.11.tar.bz2 | tar xj
cd waf-1.6.11
curl https://waf.io/waf-2.0.19.tar.bz2 | tar xj
cd waf-2.0.19
patch -p1 < $ARDOURSRC/tools/waflib.patch
./waf-light -v --make-waf --tools=misc,doxygen,$ARDOURSRC/tools/autowaf.py --prelude=''
patch -p1 < $ARDOURSRC/tools/waf-str.patch
./waf-light -v --make-waf --tools=misc,doxygen,$ARDOURSRC/tools/autowaf.py,$ARDOURSRC/tools/misc.py --prelude=''
cp ./waf $ARDOURSRC/waf

View File

@ -140,14 +140,13 @@ def check_pkg(conf, name, **args):
found = None
pkg_var_name = 'PKG_' + name.replace('-', '_')
pkg_name = name
if conf.env.PARDEBUG:
args['mandatory'] = False # Smash mandatory arg
found = conf.check_cfg(package=pkg_name + 'D', args="--cflags --libs", **args)
if found:
pkg_name += 'D'
if mandatory:
args['mandatory'] = True # Unsmash mandatory arg
if not found:
if 'atleast_version' in args:
if not 'msg' in args:
args['msg'] = 'Checking for %r >= %s' %(pkg_name, args['atleast_version'])
found = conf.check_cfg(package=pkg_name, args=[pkg_name + " >= " + args['atleast_version'], '--cflags', '--libs'], **args)
else:
found = conf.check_cfg(package=pkg_name, args="--cflags --libs", **args)
if found:
conf.env[pkg_var_name] = pkg_name

View File

@ -80,67 +80,6 @@ def apply_copy(self):
tsk.debug()
raise Errors.WafError('task without an environment')
def subst_func(tsk):
"Substitutes variables in a .in file"
m4_re = re.compile('@(\w+)@', re.M)
code = tsk.inputs[0].read() #Utils.readf(infile)
# replace all % by %% to prevent errors by % signs in the input file while string formatting
code = code.replace('%', '%%')
s = m4_re.sub(r'%(\1)s', code)
env = tsk.env
di = getattr(tsk, 'dict', {}) or getattr(tsk.generator, 'dict', {})
if not di:
names = m4_re.findall(code)
for i in names:
di[i] = env.get_flat(i) or env.get_flat(i.upper())
tsk.outputs[0].write(s % di)
@feature('subst')
@before_method('process_source')
def apply_subst(self):
Utils.def_attrs(self, fun=subst_func)
lst = self.to_list(self.source)
self.meths.remove('process_source')
self.dict = getattr(self, 'dict', {})
for filename in lst:
node = self.path.find_resource(filename)
if not node: raise Errors.WafError('cannot find input file %s for processing' % filename)
if self.target:
newnode = self.path.find_or_declare(self.target)
else:
newnode = node.change_ext('')
try:
self.dict = self.dict.get_merged_dict()
except AttributeError:
pass
if self.dict and not self.env['DICT_HASH']:
self.env = self.env.derive()
keys = list(self.dict.keys())
keys.sort()
lst = [self.dict[x] for x in keys]
self.env['DICT_HASH'] = str(Utils.h_list(lst))
tsk = self.create_task('copy', node, newnode)
tsk.fun = self.fun
tsk.dict = self.dict
tsk.dep_vars = ['DICT_HASH']
tsk.chmod = getattr(self, 'chmod', Utils.O644)
if not tsk.env:
tsk.debug()
raise Errors.WafError('task without an environment')
####################
## command-output ####
####################

11
tools/waf-str.patch Normal file
View File

@ -0,0 +1,11 @@
--- a/waflib/Build.py 2020-01-21 15:01:13.864899388 +0100
+++ b/waflib/Build.py 2020-01-21 15:01:59.573030630 +0100
@@ -953,7 +953,7 @@
tsk.link = kw.get('link', '') or kw.get('install_from', '')
tsk.relative_trick = kw.get('relative_trick', False)
tsk.type = kw['type']
- tsk.install_to = tsk.dest = kw['install_to']
+ tsk.install_to = tsk.dest = str(kw['install_to'])
tsk.install_from = kw['install_from']
tsk.relative_base = kw.get('cwd') or kw.get('relative_base', self.path)
tsk.install_user = kw.get('install_user')

BIN
waf vendored

Binary file not shown.