summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Undheim <ruben.undheim@gmail.com>2019-01-29 15:35:07 +0000
committerRuben Undheim <ruben.undheim@gmail.com>2019-01-29 15:35:07 +0000
commitb2c7b983031ebcabc7cf122a4f0b221c9be1f882 (patch)
treed9151bdee69da25deb8eff20210971e02ce910ce
parent322b308abc48288accdf67d1346038fcd3bdd01f (diff)
parenteec24fb77970647e567b889985635ea0e9f291aa (diff)
Update upstream source from tag 'upstream/0.84.41+dfsg.1'
Update to upstream version '0.84.41+dfsg.1' with Debian dir c10e17d87df0067006439ae2facc8066d4312884
-rw-r--r--oregano.spec.in3
-rwxr-xr-xwaf14
-rw-r--r--waflib/Build.py11
-rw-r--r--waflib/Configure.py7
-rw-r--r--waflib/Context.py18
-rw-r--r--waflib/Node.py2
-rw-r--r--waflib/Options.py2
-rw-r--r--waflib/Runner.py10
-rw-r--r--waflib/Scripting.py15
-rw-r--r--waflib/Task.py12
-rw-r--r--waflib/TaskGen.py6
-rw-r--r--waflib/Tools/c_config.py6
-rw-r--r--waflib/Tools/c_preproc.py2
-rw-r--r--waflib/Tools/ccroot.py8
-rw-r--r--waflib/Tools/compiler_c.py2
-rw-r--r--waflib/Tools/compiler_cxx.py2
-rw-r--r--waflib/Tools/compiler_d.py2
-rw-r--r--waflib/Tools/compiler_fc.py2
-rw-r--r--waflib/Tools/fc.py10
-rw-r--r--waflib/Tools/fc_config.py4
-rw-r--r--waflib/Tools/fc_scan.py8
-rw-r--r--waflib/Tools/ifort.py2
-rw-r--r--waflib/Tools/javaw.py27
-rw-r--r--waflib/Tools/md5_tstamp.py2
-rw-r--r--waflib/Tools/msvc.py4
-rw-r--r--waflib/Tools/python.py2
-rw-r--r--waflib/Tools/waf_unit_test.py2
-rw-r--r--waflib/Utils.py19
-rw-r--r--waflib/ansiterm.py2
-rw-r--r--waflib/extras/compat15.py2
-rw-r--r--waflib/fixpy2.py6
-rwxr-xr-xwaflib/processor.py2
-rw-r--r--wscript2
33 files changed, 142 insertions, 76 deletions
diff --git a/oregano.spec.in b/oregano.spec.in
index ce060db..17daa2a 100644
--- a/oregano.spec.in
+++ b/oregano.spec.in
@@ -84,6 +84,9 @@ rm -rf "$RPM_BUILD_ROOT"
%{_mandir}/man1/oregano.1.gz
%changelog
+* Fri Jan 4 2019 Bernhard Schuster <bernhard@ahoi.io> 0.84.41-1
+ - Dist fix
+
* Mon Sep 21 2018 Bernhard Schuster <bernhard@ahoi.io> 0.84.40-1
- Fix crash causing bugs
diff --git a/waf b/waf
index 3d45b55..b16d09c 100755
--- a/waf
+++ b/waf
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# encoding: latin-1
# Thomas Nagy, 2005-2018
#
@@ -32,13 +32,13 @@ POSSIBILITY OF SUCH DAMAGE.
import os, sys, inspect
-VERSION="2.0.11"
-REVISION="4af5f6d4e441ea5db7e393d841ce352c"
-GIT="fe03c6fa470f0bc3c086baafed8c6b4b6d28a245"
+VERSION="2.0.14"
+REVISION="e67604cd8962dbdaf7c93e0d7470ef5b"
+GIT="353ffefa21e6f8795469d118d8059aa16ef49109"
INSTALL=''
-C1='#4'
-C2='#/'
-C3='#&'
+C1='#('
+C2='#&'
+C3='#%'
cwd = os.getcwd()
join = os.path.join
diff --git a/waflib/Build.py b/waflib/Build.py
index fbec9de..e54c6bc 100644
--- a/waflib/Build.py
+++ b/waflib/Build.py
@@ -131,7 +131,7 @@ class BuildContext(Context.Context):
Node.Nod3=self.node_class
try:
data=cPickle.loads(data)
- except Exception ,e:
+ except Exception as e:
Logs.debug('build: Could not pickle the build cache %s: %r',dbfn,e)
else:
for x in SAVED_ATTRS:
@@ -528,6 +528,8 @@ class inst(Task.Task):
dest=self.install_to.abspath()
else:
dest=Utils.subst_vars(self.install_to,self.env)
+ if not os.path.isabs(dest):
+ dest=os.path.join(self.env.PREFIX,dest)
if destdir and Options.options.destdir:
dest=os.path.join(Options.options.destdir,os.path.splitdrive(dest)[1].lstrip(os.sep))
return dest
@@ -588,7 +590,7 @@ class inst(Task.Task):
pass
try:
self.copy_fun(src,tgt)
- except EnvironmentError ,e:
+ except EnvironmentError as e:
if not os.path.exists(src):
Logs.error('File %r does not exist',src)
elif not os.path.isfile(src):
@@ -620,7 +622,7 @@ class inst(Task.Task):
Logs.info('- remove %s',tgt)
try:
os.remove(tgt)
- except OSError ,e:
+ except OSError as e:
if e.errno!=errno.ENOENT:
if not getattr(self,'uninstall_error',None):
self.uninstall_error=True
@@ -669,7 +671,8 @@ class CleanContext(BuildContext):
lst=[]
for env in self.all_envs.values():
lst.extend(self.root.find_or_declare(f)for f in env[CFG_FILES])
- for n in self.bldnode.ant_glob('**/*',excl='.lock* *conf_check_*/** config.log c4che/*',quiet=True):
+ excluded_dirs='.lock* *conf_check_*/** config.log %s/*'%CACHE_DIR
+ for n in self.bldnode.ant_glob('**/*',excl=excluded_dirs,quiet=True):
if n in lst:
continue
n.delete()
diff --git a/waflib/Configure.py b/waflib/Configure.py
index 1af9a67..a5da91b 100644
--- a/waflib/Configure.py
+++ b/waflib/Configure.py
@@ -61,7 +61,7 @@ class ConfigurationContext(Context.Context):
self.bldnode=(os.path.isabs(out)and self.root or self.path).make_node(out)
self.bldnode.mkdir()
if not os.path.isdir(self.bldnode.abspath()):
- conf.fatal('Could not create the build directory %s'%self.bldnode.abspath())
+ self.fatal('Could not create the build directory %s'%self.bldnode.abspath())
def execute(self):
self.init_dirs()
self.cachedir=self.bldnode.make_node(Build.CACHE_DIR)
@@ -96,6 +96,7 @@ class ConfigurationContext(Context.Context):
env.hash=self.hash
env.files=self.files
env.environ=dict(self.environ)
+ env.launch_dir=Context.launch_dir
if not(self.env.NO_LOCK_IN_RUN or env.environ.get('NO_LOCK_IN_RUN')or getattr(Options.options,'no_lock_in_run')):
env.store(os.path.join(Context.run_dir,Options.lockfile))
if not(self.env.NO_LOCK_IN_TOP or env.environ.get('NO_LOCK_IN_TOP')or getattr(Options.options,'no_lock_in_top')):
@@ -140,9 +141,9 @@ class ConfigurationContext(Context.Context):
module=None
try:
module=Context.load_tool(tool,tooldir,ctx=self,with_sys_path=with_sys_path)
- except ImportError ,e:
+ except ImportError as e:
self.fatal('Could not load the Waf tool %r from %r\n%s'%(tool,getattr(e,'waf_sys_path',sys.path),e))
- except Exception ,e:
+ except Exception as e:
self.to_log('imp %r (%r & %r)'%(tool,tooldir,funs))
self.to_log(traceback.format_exc())
raise
diff --git a/waflib/Context.py b/waflib/Context.py
index 21f2145..ab6b154 100644
--- a/waflib/Context.py
+++ b/waflib/Context.py
@@ -5,9 +5,9 @@
import os,re,imp,sys
from waflib import Utils,Errors,Logs
import waflib.Node
-HEXVERSION=0x2000b00
-WAFVERSION="2.0.11"
-WAFREVISION="a97f6fb0941091b4966b625f15ec32fa783a8bec"
+HEXVERSION=0x2000e00
+WAFVERSION="2.0.14"
+WAFREVISION="907519cab9c1c8c7e4f7d4e468ed6200b9250d58"
ABI=20
DBFILE='.wafpickle-%s-%d-%d'%(sys.platform,sys.hexversion,ABI)
APPNAME='APPNAME'
@@ -172,8 +172,8 @@ class Context(ctx):
encoding=kw.pop('decode_as',default_encoding)
try:
ret,out,err=Utils.run_process(cmd,kw,cargs)
- except Exception ,e:
- raise Errors.WafError('Execution failure: %s'%str(e),ex=e),None,sys.exc_info()[2]
+ except Exception as e:
+ raise Errors.WafError('Execution failure: %s'%str(e),ex=e)
if out:
if not isinstance(out,str):
out=out.decode(encoding,errors='replace')
@@ -218,8 +218,8 @@ class Context(ctx):
encoding=kw.pop('decode_as',default_encoding)
try:
ret,out,err=Utils.run_process(cmd,kw,cargs)
- except Exception ,e:
- raise Errors.WafError('Execution failure: %s'%str(e),ex=e),None,sys.exc_info()[2]
+ except Exception as e:
+ raise Errors.WafError('Execution failure: %s'%str(e),ex=e)
if not isinstance(out,str):
out=out.decode(encoding,errors='replace')
if not isinstance(err,str):
@@ -371,7 +371,7 @@ def load_tool(tool,tooldir=None,ctx=None,with_sys_path=True):
sys.path=tooldir+sys.path
try:
__import__(tool)
- except ImportError ,e:
+ except ImportError as e:
e.waf_sys_path=list(sys.path)
raise
finally:
@@ -392,7 +392,7 @@ def load_tool(tool,tooldir=None,ctx=None,with_sys_path=True):
x=None
else:
__import__(tool)
- except ImportError ,e:
+ except ImportError as e:
e.waf_sys_path=list(sys.path)
raise
finally:
diff --git a/waflib/Node.py b/waflib/Node.py
index 9d5ae5a..dc979d6 100644
--- a/waflib/Node.py
+++ b/waflib/Node.py
@@ -52,7 +52,7 @@ def ant_matcher(s,ignorecase):
k='^%s$'%k
try:
exp=re.compile(k,flags=reflags)
- except Exception ,e:
+ except Exception as e:
raise Errors.WafError('Invalid pattern: %s'%k,e)
else:
accu.append(exp)
diff --git a/waflib/Options.py b/waflib/Options.py
index 92017c8..b61c60a 100644
--- a/waflib/Options.py
+++ b/waflib/Options.py
@@ -18,7 +18,7 @@ class opt_parser(optparse.OptionParser):
while rargs:
try:
optparse.OptionParser._process_args(self,largs,rargs,values)
- except(optparse.BadOptionError,optparse.AmbiguousOptionError),e:
+ except(optparse.BadOptionError,optparse.AmbiguousOptionError)as e:
if self.allow_unknown:
largs.append(e.opt_str)
else:
diff --git a/waflib/Runner.py b/waflib/Runner.py
index 063b6f2..e443021 100644
--- a/waflib/Runner.py
+++ b/waflib/Runner.py
@@ -27,6 +27,8 @@ class PriorityTasks(object):
return len(self.lst)
def __iter__(self):
return iter(self.lst)
+ def __str__(self):
+ return'PriorityTasks: [%s]'%'\n '.join(str(x)for x in self.lst)
def clear(self):
self.lst=[]
def append(self,task):
@@ -97,7 +99,9 @@ class Parallel(object):
self.biter=None
self.dirty=False
self.revdeps=Utils.defaultdict(set)
- self.spawner=Spawner(self)
+ self.spawner=None
+ if self.numjobs>1:
+ self.spawner=Spawner(self)
def get_next_task(self):
if not self.outstanding:
return None
@@ -141,9 +145,11 @@ class Parallel(object):
self.outstanding.append(x)
break
else:
+ if self.stop or self.error:
+ break
raise Errors.WafError('Broken revdeps detected on %r'%self.incomplete)
else:
- tasks=self.biter.next()
+ tasks=next(self.biter)
ready,waiting=self.prio_and_split(tasks)
self.outstanding.extend(ready)
self.incomplete.update(waiting)
diff --git a/waflib/Scripting.py b/waflib/Scripting.py
index e2f085d..7db951d 100644
--- a/waflib/Scripting.py
+++ b/waflib/Scripting.py
@@ -100,11 +100,11 @@ def waf_entry_point(current_directory,version,wafdir):
sys.exit(1)
try:
set_main_module(wscript)
- except Errors.WafError ,e:
+ except Errors.WafError as e:
Logs.pprint('RED',e.verbose_msg)
Logs.error(str(e))
sys.exit(1)
- except Exception ,e:
+ except Exception as e:
Logs.error('Waf: The wscript in %r is unreadable',Context.run_dir)
traceback.print_exc(file=sys.stdout)
sys.exit(2)
@@ -125,14 +125,14 @@ def waf_entry_point(current_directory,version,wafdir):
pdb.post_mortem(tb)
else:
raise
- except Errors.WafError ,e:
+ except Errors.WafError as e:
if Logs.verbose>1:
Logs.pprint('RED',e.verbose_msg)
Logs.error(e.msg)
sys.exit(1)
except SystemExit:
raise
- except Exception ,e:
+ except Exception as e:
traceback.print_exc(file=sys.stdout)
sys.exit(2)
except KeyboardInterrupt:
@@ -194,7 +194,7 @@ def distclean_dir(dirname):
except OSError:
pass
try:
- shutil.rmtree('c4che')
+ shutil.rmtree(Build.CACHE_DIR)
except OSError:
pass
def distclean(ctx):
@@ -202,7 +202,7 @@ def distclean(ctx):
def remove_and_log(k,fun):
try:
fun(k)
- except EnvironmentError ,e:
+ except EnvironmentError as e:
if e.errno!=errno.ENOENT:
Logs.warn('Could not remove %r',k)
if not Options.commands:
@@ -389,12 +389,15 @@ def autoconfigure(execute_method):
cmd=env.config_cmd or'configure'
if Configure.autoconfig=='clobber':
tmp=Options.options.__dict__
+ launch_dir_tmp=Context.launch_dir
if env.options:
Options.options.__dict__=env.options
+ Context.launch_dir=env.launch_dir
try:
run_command(cmd)
finally:
Options.options.__dict__=tmp
+ Context.launch_dir=launch_dir_tmp
else:
run_command(cmd)
run_command(self.cmd)
diff --git a/waflib/Task.py b/waflib/Task.py
index 912008d..f0e2397 100644
--- a/waflib/Task.py
+++ b/waflib/Task.py
@@ -22,6 +22,9 @@ def f(tsk):
bld = gen.bld
cwdx = tsk.get_cwd()
p = env.get_flat
+ def to_list(xx):
+ if isinstance(xx, str): return [xx]
+ return xx
tsk.last_cmd = cmd = \'\'\' %s \'\'\' % s
return tsk.exec_command(cmd, cwd=cwdx, env=env.env or None)
'''
@@ -47,7 +50,8 @@ def f(tsk):
'''
COMPILE_TEMPLATE_SIG_VARS='''
def f(tsk):
- super(tsk.__class__, tsk).sig_vars()
+ sig = tsk.generator.bld.hash_env_vars(tsk.env, tsk.vars)
+ tsk.m.update(sig)
env = tsk.env
gen = tsk.generator
bld = gen.bld
@@ -55,7 +59,7 @@ def f(tsk):
p = env.get_flat
buf = []
%s
- tsk.m.update(repr(buf))
+ tsk.m.update(repr(buf).encode())
'''
classes={}
class store_task_type(type):
@@ -151,7 +155,7 @@ class Task(evil):
cmd,args=self.split_argfile(cmd)
try:
(fd,tmp)=tempfile.mkstemp()
- os.write(fd,'\r\n'.join(args))
+ os.write(fd,'\r\n'.join(args).encode())
os.close(fd)
if Logs.verbose:
Logs.debug('argfile: @%r -> %r',tmp,args)
@@ -699,7 +703,7 @@ def compile_fun_noshell(line):
else:
call='%s%s'%(var,code)
add_dvar(call)
- app('gen.to_list(%s)'%call)
+ app('to_list(%s)'%call)
else:
app('to_list(env[%r])'%var)
add_dvar(var)
diff --git a/waflib/TaskGen.py b/waflib/TaskGen.py
index e699692..ce4f43a 100644
--- a/waflib/TaskGen.py
+++ b/waflib/TaskGen.py
@@ -22,7 +22,7 @@ class task_gen(object):
else:
self.bld=kw['bld']
self.env=self.bld.env.derive()
- self.path=self.bld.path
+ self.path=kw.get('path',self.bld.path)
path=self.path.abspath()
try:
self.idx=self.bld.idx[path]=self.bld.idx.get(path,0)+1
@@ -410,9 +410,9 @@ class subst_pc(Task.Task):
env=self.env
upd=self.m.update
if getattr(self.generator,'fun',None):
- upd(Utils.h_fun(self.generator.fun))
+ upd(Utils.h_fun(self.generator.fun).encode())
if getattr(self.generator,'subst_fun',None):
- upd(Utils.h_fun(self.generator.subst_fun))
+ upd(Utils.h_fun(self.generator.subst_fun).encode())
vars=self.generator.bld.raw_deps.get(self.uid(),[])
act_sig=bld.hash_env_vars(env,vars)
upd(act_sig)
diff --git a/waflib/Tools/c_config.py b/waflib/Tools/c_config.py
index 7b8b9ba..c8350c3 100644
--- a/waflib/Tools/c_config.py
+++ b/waflib/Tools/c_config.py
@@ -198,7 +198,7 @@ def check_cfg(self,*k,**kw):
ret=None
try:
ret=self.exec_cfg(kw)
- except self.errors.WafError ,e:
+ except self.errors.WafError as e:
if'errmsg'in kw:
self.end_msg(kw['errmsg'],'YELLOW',**kw)
if Logs.verbose>1:
@@ -568,7 +568,7 @@ def get_cc_version(conf,cc,gcc=False,icc=False,clang=False):
cmd=cc+['-dM','-E','-']
env=conf.env.env or None
try:
- out,err=conf.cmd_and_log(cmd,output=0,input='\n',env=env)
+ out,err=conf.cmd_and_log(cmd,output=0,input='\n'.encode(),env=env)
except Errors.WafError:
conf.fatal('Could not determine the compiler version %r'%cmd)
if gcc:
@@ -650,7 +650,7 @@ def get_suncc_version(conf,cc):
cmd=cc+['-V']
try:
out,err=conf.cmd_and_log(cmd,output=0)
- except Errors.WafError ,e:
+ except Errors.WafError as e:
if not(hasattr(e,'returncode')and hasattr(e,'stdout')and hasattr(e,'stderr')):
conf.fatal('Could not find suncc %r'%cmd)
out=e.stdout
diff --git a/waflib/Tools/c_preproc.py b/waflib/Tools/c_preproc.py
index 2afeeae..8781b73 100644
--- a/waflib/Tools/c_preproc.py
+++ b/waflib/Tools/c_preproc.py
@@ -653,7 +653,7 @@ class c_parser(object):
elif token=='pragma':
if re_pragma_once.match(line.lower()):
self.ban_includes.add(self.current_file)
- except Exception ,e:
+ except Exception as e:
if Logs.verbose:
Logs.debug('preproc: line parsing failed (%s): %s %s',e,line,traceback.format_exc())
def define_name(self,line):
diff --git a/waflib/Tools/ccroot.py b/waflib/Tools/ccroot.py
index 8b22ad0..9d865bf 100644
--- a/waflib/Tools/ccroot.py
+++ b/waflib/Tools/ccroot.py
@@ -130,6 +130,10 @@ def rm_tgt(cls):
return old(self)
setattr(cls,'run',wrap)
rm_tgt(stlink_task)
+@feature('skip_stlib_link_deps')
+@before_method('process_use')
+def apply_skip_stlib_link_deps(self):
+ self.env.SKIP_STLIB_LINK_DEPS=True
@feature('c','cxx','d','fc','asm')
@after_method('process_source')
def apply_link(self):
@@ -233,7 +237,9 @@ def process_use(self):
y=self.bld.get_tgen_by_name(x)
var=y.tmp_use_var
if var and link_task:
- if var=='LIB'or y.tmp_use_stlib or x in names:
+ if self.env.SKIP_STLIB_LINK_DEPS and isinstance(link_task,stlink_task):
+ pass
+ elif var=='LIB'or y.tmp_use_stlib or x in names:
self.env.append_value(var,[y.target[y.target.rfind(os.sep)+1:]])
self.link_task.dep_nodes.extend(y.link_task.outputs)
tmp_path=y.link_task.outputs[0].parent.path_from(self.get_cwd())
diff --git a/waflib/Tools/compiler_c.py b/waflib/Tools/compiler_c.py
index e62c846..ee607be 100644
--- a/waflib/Tools/compiler_c.py
+++ b/waflib/Tools/compiler_c.py
@@ -21,7 +21,7 @@ def configure(conf):
conf.start_msg('Checking for %r (C compiler)'%compiler)
try:
conf.load(compiler)
- except conf.errors.ConfigurationError ,e:
+ except conf.errors.ConfigurationError as e:
conf.env.revert()
conf.end_msg(False)
debug('compiler_c: %r',e)
diff --git a/waflib/Tools/compiler_cxx.py b/waflib/Tools/compiler_cxx.py
index 018a401..cbd267f 100644
--- a/waflib/Tools/compiler_cxx.py
+++ b/waflib/Tools/compiler_cxx.py
@@ -21,7 +21,7 @@ def configure(conf):
conf.start_msg('Checking for %r (C++ compiler)'%compiler)
try:
conf.load(compiler)
- except conf.errors.ConfigurationError ,e:
+ except conf.errors.ConfigurationError as e:
conf.env.revert()
conf.end_msg(False)
debug('compiler_cxx: %r',e)
diff --git a/waflib/Tools/compiler_d.py b/waflib/Tools/compiler_d.py
index b4d7100..2ca7e26 100644
--- a/waflib/Tools/compiler_d.py
+++ b/waflib/Tools/compiler_d.py
@@ -19,7 +19,7 @@ def configure(conf):
conf.start_msg('Checking for %r (D compiler)'%compiler)
try:
conf.load(compiler)
- except conf.errors.ConfigurationError ,e:
+ except conf.errors.ConfigurationError as e:
conf.env.revert()
conf.end_msg(False)
Logs.debug('compiler_d: %r',e)
diff --git a/waflib/Tools/compiler_fc.py b/waflib/Tools/compiler_fc.py
index 29bb754..8b23a2b 100644
--- a/waflib/Tools/compiler_fc.py
+++ b/waflib/Tools/compiler_fc.py
@@ -20,7 +20,7 @@ def configure(conf):
conf.start_msg('Checking for %r (Fortran compiler)'%compiler)
try:
conf.load(compiler)
- except conf.errors.ConfigurationError ,e:
+ except conf.errors.ConfigurationError as e:
conf.env.revert()
conf.end_msg(False)
Logs.debug('compiler_fortran: %r',e)
diff --git a/waflib/Tools/fc.py b/waflib/Tools/fc.py
index 6c3bc2a..64c479d 100644
--- a/waflib/Tools/fc.py
+++ b/waflib/Tools/fc.py
@@ -15,7 +15,15 @@ def fc_hook(self,node):
return self.create_compiled_task('fc',node)
@conf
def modfile(conf,name):
- return{'lower':name.lower()+'.mod','lower.MOD':name.lower()+'.MOD','UPPER.mod':name.upper()+'.mod','UPPER':name.upper()+'.MOD'}[conf.env.FC_MOD_CAPITALIZATION or'lower']
+ if name.find(':')>=0:
+ separator=conf.env.FC_SUBMOD_SEPARATOR or'@'
+ modpath=name.split(':')
+ modname=modpath[0]+separator+modpath[-1]
+ suffix=conf.env.FC_SUBMOD_SUFFIX or'.smod'
+ else:
+ modname=name
+ suffix='.mod'
+ return{'lower':modname.lower()+suffix.lower(),'lower.MOD':modname.lower()+suffix.upper(),'UPPER.mod':modname.upper()+suffix.lower(),'UPPER':modname.upper()+suffix.upper()}[conf.env.FC_MOD_CAPITALIZATION or'lower']
def get_fortran_tasks(tsk):
bld=tsk.generator.bld
tasks=bld.get_tasks_group(bld.get_group_idx(tsk.generator))
diff --git a/waflib/Tools/fc_config.py b/waflib/Tools/fc_config.py
index aee023c..d0d4c45 100644
--- a/waflib/Tools/fc_config.py
+++ b/waflib/Tools/fc_config.py
@@ -202,10 +202,10 @@ def getoutput(conf,cmd,stdin=False):
else:
env=dict(os.environ)
env['LANG']='C'
- input=stdin and'\n'or None
+ input=stdin and'\n'.encode()or None
try:
out,err=conf.cmd_and_log(cmd,env=env,output=0,input=input)
- except Errors.WafError ,e:
+ except Errors.WafError as e:
if not(hasattr(e,'stderr')and hasattr(e,'stdout')):
raise e
else:
diff --git a/waflib/Tools/fc_scan.py b/waflib/Tools/fc_scan.py
index c07a22d..a688250 100644
--- a/waflib/Tools/fc_scan.py
+++ b/waflib/Tools/fc_scan.py
@@ -5,10 +5,12 @@
import re
INC_REGEX="""(?:^|['">]\s*;)\s*(?:|#\s*)INCLUDE\s+(?:\w+_)?[<"'](.+?)(?=["'>])"""
USE_REGEX="""(?:^|;)\s*USE(?:\s+|(?:(?:\s*,\s*(?:NON_)?INTRINSIC)?\s*::))\s*(\w+)"""
-MOD_REGEX="""(?:^|;)\s*MODULE(?!\s*PROCEDURE)(?:\s+|(?:(?:\s*,\s*(?:NON_)?INTRINSIC)?\s*::))\s*(\w+)"""
+MOD_REGEX="""(?:^|;)\s*MODULE(?!\s+(?:PROCEDURE|SUBROUTINE|FUNCTION))\s+(\w+)"""
+SMD_REGEX="""(?:^|;)\s*SUBMODULE\s*\(([\w:]+)\)\s*(\w+)"""
re_inc=re.compile(INC_REGEX,re.I)
re_use=re.compile(USE_REGEX,re.I)
re_mod=re.compile(MOD_REGEX,re.I)
+re_smd=re.compile(SMD_REGEX,re.I)
class fortran_parser(object):
def __init__(self,incpaths):
self.seen=[]
@@ -30,6 +32,10 @@ class fortran_parser(object):
m=re_mod.search(line)
if m:
mods.append(m.group(1))
+ m=re_smd.search(line)
+ if m:
+ uses.append(m.group(1))
+ mods.append('{0}:{1}'.format(m.group(1),m.group(2)))
return(incs,uses,mods)
def start(self,node):
self.waiting=[node]
diff --git a/waflib/Tools/ifort.py b/waflib/Tools/ifort.py
index b9e95c6..2cbae10 100644
--- a/waflib/Tools/ifort.py
+++ b/waflib/Tools/ifort.py
@@ -189,7 +189,7 @@ echo LIB=%%LIB%%;%%LIBPATH%%
if conf.logger:
conf.logger.error(st)
conf.fatal('ifort: Unicode error - check the code page?')
- except Exception ,e:
+ except Exception as e:
Logs.debug('ifort: get_ifort_version: %r %r %r -> failure %s',compiler,version,target,str(e))
conf.fatal('ifort: cannot run the compiler in get_ifort_version (run with -v to display errors)')
else:
diff --git a/waflib/Tools/javaw.py b/waflib/Tools/javaw.py
index 8b7ab2a..adb4e04 100644
--- a/waflib/Tools/javaw.py
+++ b/waflib/Tools/javaw.py
@@ -5,7 +5,7 @@
import os,shutil
from waflib import Task,Utils,Errors,Node
from waflib.Configure import conf
-from waflib.TaskGen import feature,before_method,after_method
+from waflib.TaskGen import feature,before_method,after_method,taskgen_method
from waflib.Tools import ccroot
ccroot.USELIB_VARS['javac']=set(['CLASSPATH','JAVACFLAGS'])
SOURCE_RE='**/*.java'
@@ -65,11 +65,28 @@ def apply_java(self):
names=[x.srcpath()for x in tsk.srcdir]
if names:
tsk.env.append_value('JAVACFLAGS',['-sourcepath',names])
+@taskgen_method
+def java_use_rec(self,name,**kw):
+ if name in self.tmp_use_seen:
+ return
+ self.tmp_use_seen.append(name)
+ try:
+ y=self.bld.get_tgen_by_name(name)
+ except Errors.WafError:
+ self.uselib.append(name)
+ return
+ else:
+ y.post()
+ if hasattr(y,'jar_task'):
+ self.use_lst.append(y.jar_task.outputs[0].abspath())
+ for x in self.to_list(getattr(y,'use',[])):
+ self.java_use_rec(x)
@feature('javac')
@before_method('propagate_uselib_vars')
@after_method('apply_java')
def use_javac_files(self):
- lst=[]
+ self.use_lst=[]
+ self.tmp_use_seen=[]
self.uselib=self.to_list(getattr(self,'uselib',[]))
names=self.to_list(getattr(self,'use',[]))
get=self.bld.get_tgen_by_name
@@ -81,12 +98,14 @@ def use_javac_files(self):
else:
y.post()
if hasattr(y,'jar_task'):
- lst.append(y.jar_task.outputs[0].abspath())
+ self.use_lst.append(y.jar_task.outputs[0].abspath())
self.javac_task.set_run_after(y.jar_task)
else:
for tsk in y.tasks:
self.javac_task.set_run_after(tsk)
- self.env.append_value('CLASSPATH',lst)
+ if getattr(self,'recurse_use',False)or self.bld.env.RECURSE_JAVA:
+ self.java_use_rec(x)
+ self.env.append_value('CLASSPATH',self.use_lst)
@feature('javac')
@after_method('apply_java','propagate_uselib_vars','use_javac_files')
def set_classpath(self):
diff --git a/waflib/Tools/md5_tstamp.py b/waflib/Tools/md5_tstamp.py
index bb7a772..0d0faa0 100644
--- a/waflib/Tools/md5_tstamp.py
+++ b/waflib/Tools/md5_tstamp.py
@@ -17,7 +17,7 @@ def h_file(self):
else:
if stat.S_ISDIR(st[stat.ST_MODE]):
raise IOError('Not a file')
- ret=Utils.md5(str((st.st_mtime,st.st_size))).digest()
+ ret=Utils.md5(str((st.st_mtime,st.st_size)).encode()).digest()
cache[filename]=(st.st_mtime,ret)
return ret
h_file.__doc__=Node.Node.h_file.__doc__
diff --git a/waflib/Tools/msvc.py b/waflib/Tools/msvc.py
index 522e6e2..662fa61 100644
--- a/waflib/Tools/msvc.py
+++ b/waflib/Tools/msvc.py
@@ -118,7 +118,7 @@ echo LIB=%%LIB%%;%%LIBPATH%%
if conf.logger:
conf.logger.error(st)
conf.fatal('msvc: Unicode error - check the code page?')
- except Exception ,e:
+ except Exception as e:
Logs.debug('msvc: get_msvc_version: %r %r %r -> failure %s',compiler,version,target,str(e))
conf.fatal('msvc: cannot run the compiler in get_msvc_version (run with -v to display errors)')
else:
@@ -304,7 +304,7 @@ def gather_vswhere_versions(conf,versions):
args=[vswhere,'-products','*','-legacy','-format','json']
try:
txt=conf.cmd_and_log(args)
- except Errors.WafError ,e:
+ except Errors.WafError as e:
Logs.debug('msvc: vswhere.exe failed %s',e)
return
if sys.version_info[0]<3:
diff --git a/waflib/Tools/python.py b/waflib/Tools/python.py
index 3b7947f..f41f15c 100644
--- a/waflib/Tools/python.py
+++ b/waflib/Tools/python.py
@@ -211,6 +211,8 @@ def check_python_headers(conf,features='pyembed pyext'):
num='.'.join(env.PYTHON_VERSION.split('.')[:2])
conf.find_program([''.join(pybin)+'-config','python%s-config'%num,'python-config-%s'%num,'python%sm-config'%num],var='PYTHON_CONFIG',msg="python-config",mandatory=False)
if env.PYTHON_CONFIG:
+ if conf.env.HAVE_PYTHON_H:
+ return
all_flags=[['--cflags','--libs','--ldflags']]
if sys.hexversion<0x2070000:
all_flags=[[k]for k in all_flags[0]]
diff --git a/waflib/Tools/waf_unit_test.py b/waflib/Tools/waf_unit_test.py
index af07b44..fde877d 100644
--- a/waflib/Tools/waf_unit_test.py
+++ b/waflib/Tools/waf_unit_test.py
@@ -122,7 +122,7 @@ class utest(Task.Task):
self.ut_exec=shlex.split(ut_cmd%' '.join(self.ut_exec))
return self.exec_command(self.ut_exec)
def exec_command(self,cmd,**kw):
- Logs.debug('runner: %r',cmd)
+ self.generator.bld.log_command(cmd,kw)
if getattr(Options.options,'dump_test_scripts',False):
script_code=SCRIPT_TEMPLATE%{'python':sys.executable,'env':self.get_test_env(),'cwd':self.get_cwd().abspath(),'cmd':cmd}
script_file=self.inputs[0].abspath()+'_run.py'
diff --git a/waflib/Utils.py b/waflib/Utils.py
index a62daab..273ebb0 100644
--- a/waflib/Utils.py
+++ b/waflib/Utils.py
@@ -33,9 +33,14 @@ try:
from hashlib import md5
except ImportError:
try:
- from md5 import md5
+ from hashlib import sha1 as md5
except ImportError:
pass
+else:
+ try:
+ md5().digest()
+ except ValueError:
+ from hashlib import sha1 as md5
try:
import threading
except ImportError:
@@ -49,7 +54,7 @@ except ImportError:
def release(self):
pass
threading.Lock=threading.Thread=Lock
-SIG_NIL='SIG_NIL_SIG_NIL_'
+SIG_NIL='SIG_NIL_SIG_NIL_'.encode()
O644=420
O755=493
rot_chr=['\\','|','/','-']
@@ -134,7 +139,7 @@ class lazy_generator(object):
it=self.it=self.fun(*self.params)
return next(it)
next=__next__
-is_win32=os.sep=='\\'or sys.platform=='win32'
+is_win32=os.sep=='\\'or sys.platform=='win32'or os.name=='nt'
def readf(fname,m='r',encoding='latin-1'):
if sys.hexversion>0x3000000 and not'b'in m:
m+='b'
@@ -331,7 +336,7 @@ def check_dir(path):
if not os.path.isdir(path):
try:
os.makedirs(path)
- except OSError ,e:
+ except OSError as e:
if not os.path.isdir(path):
raise Errors.WafError('Cannot create the folder %r'%path,ex=e)
def check_exe(name,env=None):
@@ -365,7 +370,7 @@ def shell_escape(cmd):
return cmd
return' '.join(repr(x)if re_sh.search(x)else x for x in cmd)
def h_list(lst):
- return md5(repr(lst)).digest()
+ return md5(repr(lst).encode()).digest()
def h_fun(fun):
try:
return fun.code
@@ -521,7 +526,7 @@ def run_prefork_process(cmd,kwargs,cargs):
if not proc:
return run_regular_process(cmd,kwargs,cargs)
proc.stdin.write(obj)
- proc.stdin.write('\n')
+ proc.stdin.write('\n'.encode())
proc.stdin.flush()
obj=proc.stdout.readline()
if not obj:
@@ -575,7 +580,7 @@ def run_regular_process(cmd,kwargs,cargs={}):
out,err=(None,None)
try:
status=proc.wait(**cargs)
- except TimeoutExpired ,e:
+ except TimeoutExpired as e:
if kwargs.get('start_new_session')and hasattr(os,'killpg'):
os.killpg(proc.pid,signal.SIGKILL)
else:
diff --git a/waflib/ansiterm.py b/waflib/ansiterm.py
index 8de767d..1d8bc78 100644
--- a/waflib/ansiterm.py
+++ b/waflib/ansiterm.py
@@ -232,7 +232,7 @@ else:
return struct.unpack("HHHH",fcntl.ioctl(FD,termios.TIOCGWINSZ,struct.pack("HHHH",0,0,0,0)))[1]
try:
fun()
- except Exception ,e:
+ except Exception as e:
pass
else:
get_term_cols=fun
diff --git a/waflib/extras/compat15.py b/waflib/extras/compat15.py
index 9e9a0c6..fb4e578 100644
--- a/waflib/extras/compat15.py
+++ b/waflib/extras/compat15.py
@@ -48,7 +48,7 @@ def cmd_output(cmd,**kw):
try:
p=Utils.subprocess.Popen(cmd,**kw)
output=p.communicate()[0]
- except OSError ,e:
+ except OSError as e:
raise ValueError(str(e))
if p.returncode:
if not silent:
diff --git a/waflib/fixpy2.py b/waflib/fixpy2.py
index 15f55f4..9aa8418 100644
--- a/waflib/fixpy2.py
+++ b/waflib/fixpy2.py
@@ -36,9 +36,9 @@ def subst(*k):
return do_subst
@subst('*')
def r1(code):
- code=code.replace(',e:',',e:')
- code=code.replace("",'')
- return code.replace('','')
+ code=code.replace('as e:',',e:')
+ code=code.replace(".decode(sys.stdout.encoding or'latin-1',errors='replace')",'')
+ return code.replace('.encode()','')
@subst('Runner.py')
def r4(code):
return code.replace('next(self.biter)','self.biter.next()')
diff --git a/waflib/processor.py b/waflib/processor.py
index 1e36c5f..10f7c1b 100755
--- a/waflib/processor.py
+++ b/waflib/processor.py
@@ -38,7 +38,7 @@ def run():
exc.stderr=err
raise exc
ret=proc.returncode
- except Exception ,e:
+ except Exception as e:
exc_type,exc_value,tb=sys.exc_info()
exc_lines=traceback.format_exception(exc_type,exc_value,tb)
trace=str(cmd)+'\n'+''.join(exc_lines)
diff --git a/wscript b/wscript
index 4ed68be..6714aad 100644
--- a/wscript
+++ b/wscript
@@ -1,7 +1,7 @@
#! /usr/bin/env python3
# encoding: utf-8
-VERSION = '0.84.40'
+VERSION = '0.84.41'
APPNAME = 'oregano'
top = '.'