Re: code fails on scons master with python3

Neal Becker <[email protected]>
Newsgroups gmane.comp.programming.tools.scons.devel
Message-ID <[email protected]>
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
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.