[Scons-dev] code fails on scons master with python3

Bill Deegan bill at baddogconsulting.com
Tue Jun 13 11:37:48 EDT 2017


The goal would be to add such into a test in the regression suite so it
won't get broken once it's fixed.
(In addition to making it easier to track down the issue and fix it)
Clearly this is not covered by the current tests..

Thanks,
Bill

On Tue, Jun 13, 2017 at 11:33 AM, Bill Deegan <bill at baddogconsulting.com>
wrote:

> 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/16de6026/attachment.html>


More information about the Scons-dev mailing list