[Scons-dev] code fails on scons master with python3
Bill Deegan
bill at baddogconsulting.com
Tue Jun 13 11:33:41 EDT 2017
Can you provide a standalone SConstruct which reproduces?
The included is not standalone..
On Tue, Jun 13, 2017 at 11:07 AM, Neal Becker <ndbecker2 at gmail.com> 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
> > <ndbecker2 at gmail.com> 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
> >> > <ndbecker2 at gmail.com> 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
> >> >> Scons-dev at scons.org
> >> >> 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
> >> Scons-dev at scons.org
> >> https://pairlist2.pair.net/mailman/listinfo/scons-dev
> >>
>
>
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/scons-dev/attachments/20170613/5293f1f7/attachment-0001.html>
More information about the Scons-dev
mailing list