Can you provide a standalone SConstruct which reproduces? The included is not standalone..
On Tue, Jun 13, 2017 at 11:07 AM, Neal Becker <[email protected]> wrote: > Problem seems to be > RPATH = [Literal(':'.join([ORIGIN + x for x in > ':'.join([MKLPATH]).split(':')]))] > print ("RPATH:", RPATH) > libs3 = [MKLLIB, 'm'] > Default (env.SharedObject (target='mkl'+OBJ_SUFFIX, > source='mkl.cc', > SHLIBPREFIX='', LIBS=libs3)) > Default (env.SharedLibrary (target='mkl'+EXT_SUFFIX, > source='mkl'+OBJ_SUFFIX, SHLIBPREFIX='', LIBS=libs3, RPATH=RPATH)) > > That last line seems to trigger a call to hash(RPATH), which fails - it > seems RPATH is list and not hashable. > > The older version of scons on which my port is based doesn't seem to do > this. If I call hash(RPATH) my version will fail also, but if I don't > intentionally write "hash(RPATH)", the code succeeds. > > But it would seem then that Literal is broken. > > Bill Deegan wrote: > > > Neal, > > > > Could you create a small SConstruct which demonstrates the issue? > > Or even.. a pull request with a fix.. ;) > > > > -Bill > > > > On Tue, Jun 13, 2017 at 10:25 AM, Neal Becker > > <[email protected]> wrote: > > > >> Bill Deegan wrote: > >> > >> > Can you run with --debug=stacktrace and post the output? > >> > > >> > Thanks, > >> > -Bill > >> > > >> > On Tue, Jun 13, 2017 at 8:20 AM, Neal Becker > >> > <[email protected]> wrote: > >> > > >> >> This code is failing: > >> >> RPATH = [Literal(':'.join([ORIGIN + x for x in > >> >> ':'.join([MKLPATH]).split(':')]))] > >> >> > >> >> with error: > >> >> scons: *** [mkl.cpython-35m-x86_64-linux-gnu.so] TypeError > `unhashable > >> >> type: > >> >> 'Literal'' trying to evaluate `${_concat(RPATHPREFIX, RPATH, > >> RPATHSUFFIX, > >> >> __env__)}' > >> >> > >> >> But this code succeeds on my own (old) port of scons to python3 > >> >> > >> >> _______________________________________________ > >> >> Scons-dev mailing list > >> >> [email protected] > >> >> https://pairlist2.pair.net/mailman/listinfo/scons-dev > >> >> > >> scons: *** [mkl.cpython-35m-x86_64-linux-gnu.so] TypeError `unhashable > >> type: > >> 'Literal'' trying to evaluate `${_concat(RPATHPREFIX, RPATH, > RPATHSUFFIX, > >> __env__)}' > >> scons: internal stack trace: > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Job.py", > line > >> 199, in start > >> task.prepare() > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/ > >> Script/Main.py", > >> line 175, in prepare > >> return SCons.Taskmaster.OutOfDateTask.prepare(self) > >> File > >> "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Taskmaster.py", > >> line 176, in prepare > >> self.exception_raise() > >> File > >> "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Taskmaster.py", > >> line 551, in _exception_raise > >> exec("raise exc_value.with_traceback(exc_traceback)") > >> File "<string>", line 1, in <module> > >> File > >> "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Taskmaster.py", > >> line 971, in next_task > >> task.make_ready() > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/ > >> Script/Main.py", > >> line 309, in make_ready > >> SCons.Taskmaster.OutOfDateTask.make_ready(self) > >> File > >> "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Taskmaster.py", > >> line 406, in make_ready_current > >> t.disambiguate().make_ready() > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Node/FS.py", > >> line > >> 3024, in make_ready > >> self.get_binfo() > >> File "/home/nbecker/scons- > >> dev/bootstrap/src/engine/SCons/Node/__init__.py", line 1136, in > get_binfo > >> binfo.bactsig = SCons.Util.MD5signature(executor.get_contents()) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/ > Executor.py", > >> line 467, in get_contents > >> for action in action_list]) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/ > Executor.py", > >> line 467, in <listcomp> > >> for action in action_list]) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Action.py", > >> line > >> 477, in get_contents > >> result = self.get_presig(target, source, env) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Action.py", > >> line > >> 1213, in get_presig > >> return b"".join([bytes(x.get_contents(target, source, env)) for x > in > >> self.list]) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Action.py", > >> line > >> 1213, in <listcomp> > >> return b"".join([bytes(x.get_contents(target, source, env)) for x > in > >> self.list]) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Action.py", > >> line > >> 477, in get_contents > >> result = self.get_presig(target, source, env) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Action.py", > >> line > >> 1054, in get_presig > >> return c.get_presig(self, target, source, env) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Action.py", > >> line > >> 906, in get_presig > >> return env.subst_target_source(cmd, SUBST_SIG, target, source) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/ > >> Environment.py", > >> line 514, in subst > >> return SCons.Subst.scons_subst(string, self, raw, target, source, > >> gvars, > >> lvars, conv) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 558, in scons_subst > >> result = ss.substitute(strSubst, lvars) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 512, in substitute > >> result = _dollar_exps.sub(sub_match, args) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 511, in sub_match > >> return self.conv(self.expand(match.group(1), lvars)) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 477, in expand > >> return self.substitute(s, lv) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 512, in substitute > >> result = _dollar_exps.sub(sub_match, args) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 511, in sub_match > >> return self.conv(self.expand(match.group(1), lvars)) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 477, in expand > >> return self.substitute(s, lv) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 512, in substitute > >> result = _dollar_exps.sub(sub_match, args) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 511, in sub_match > >> return self.conv(self.expand(match.group(1), lvars)) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 477, in expand > >> return self.substitute(s, lv) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 512, in substitute > >> result = _dollar_exps.sub(sub_match, args) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 511, in sub_match > >> return self.conv(self.expand(match.group(1), lvars)) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 451, in expand > >> raise_exception(e, lvars['TARGETS'], s) > >> File "/home/nbecker/scons-dev/bootstrap/src/engine/SCons/Subst.py", > >> line > >> 55, in raise_exception > >> raise SCons.Errors.BuildError(target[0], msg) > >> > >> _______________________________________________ > >> Scons-dev mailing list > >> [email protected] > >> https://pairlist2.pair.net/mailman/listinfo/scons-dev > >> > > > _______________________________________________ > Scons-dev mailing list > [email protected] > https://pairlist2.pair.net/mailman/listinfo/scons-dev >
_______________________________________________ Scons-dev mailing list [email protected] https://pairlist2.pair.net/mailman/listinfo/scons-dev
