Update waf to v2.0.19
This commit is contained in:
parent
2e9ac80e99
commit
19603d075f
@ -1,15 +1,20 @@
|
|||||||
Download waf (https://waf.io/)
|
# Download waf (https://waf.io/)
|
||||||
|
#
|
||||||
autowaf.py is present in the tools directory of the Ardour source code.
|
# autowaf.py and misc.py are 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)
|
# - 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")
|
||||||
Current waf is build as follows;
|
# (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`
|
ARDOURSRC=`pwd`
|
||||||
cd /tmp
|
cd /tmp
|
||||||
curl https://waf.io/waf-1.6.11.tar.bz2 | tar xj
|
curl https://waf.io/waf-2.0.19.tar.bz2 | tar xj
|
||||||
cd waf-1.6.11
|
cd waf-2.0.19
|
||||||
|
|
||||||
patch -p1 < $ARDOURSRC/tools/waflib.patch
|
patch -p1 < $ARDOURSRC/tools/waf-str.patch
|
||||||
./waf-light -v --make-waf --tools=misc,doxygen,$ARDOURSRC/tools/autowaf.py --prelude=''
|
|
||||||
|
./waf-light -v --make-waf --tools=misc,doxygen,$ARDOURSRC/tools/autowaf.py,$ARDOURSRC/tools/misc.py --prelude=''
|
||||||
cp ./waf $ARDOURSRC/waf
|
cp ./waf $ARDOURSRC/waf
|
||||||
|
@ -140,14 +140,13 @@ def check_pkg(conf, name, **args):
|
|||||||
found = None
|
found = None
|
||||||
pkg_var_name = 'PKG_' + name.replace('-', '_')
|
pkg_var_name = 'PKG_' + name.replace('-', '_')
|
||||||
pkg_name = name
|
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:
|
if mandatory:
|
||||||
args['mandatory'] = True # Unsmash mandatory arg
|
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)
|
found = conf.check_cfg(package=pkg_name, args="--cflags --libs", **args)
|
||||||
if found:
|
if found:
|
||||||
conf.env[pkg_var_name] = pkg_name
|
conf.env[pkg_var_name] = pkg_name
|
||||||
|
@ -80,67 +80,6 @@ def apply_copy(self):
|
|||||||
tsk.debug()
|
tsk.debug()
|
||||||
raise Errors.WafError('task without an environment')
|
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 ####
|
## command-output ####
|
||||||
####################
|
####################
|
||||||
|
11
tools/waf-str.patch
Normal file
11
tools/waf-str.patch
Normal 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')
|
Loading…
Reference in New Issue
Block a user