[Scons-dev] code fails on scons master with python3
Neal Becker
ndbecker2 at gmail.com
Tue Jun 13 11:07:52 EDT 2017
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
>>
More information about the Scons-dev
mailing list