[Scons-users] Possible python 3 issue?

Peter Diener diener at cct.lsu.edu
Wed Oct 16 14:50:16 EDT 2019


Thanks a lot, Bill. That fixes it for me as well. Both in the test case 
and in my larger software project.

I found the code example for finding the module path online when I 
decided to switch to variantdir. I don't remember if the example used 
duplicate=0 or not, so I don't know if the map was necessary in that 
case.

Obviously, I have not done enough python 3 programming to know that 
there was such a subtle difference in the behavior of map.

Cheers,

   Peter

On Wednesday 2019-10-16 13:21, Bill Deegan wrote:

>Date: Wed, 16 Oct 2019 13:21:28
>From: Bill Deegan <bill at baddogconsulting.com>
>Reply-To: SCons users mailing list <scons-users at scons.org>
>To: SCons users mailing list <scons-users at scons.org>
>Subject: Re: [Scons-users] Possible python 3 issue?
>
>Peter,
>
>If you change line 26 in src/SConscript to the following it will work:
>    # Return the list of module paths
>    return list(buildmodpath)
>
>The issue is you're assigning *PATH = map().. which is fine in py27, but in
>py3, you get a view into the map. (It does lazyier evaluation).
>So by wrapping with list() you get a normal list and everything works
>fine...
>
>In fact.. I don't think you actually need the map.. (which you shouldn't as
>with duplicate=0 it'd have to include the build and src versions of the
>paths you specify)
>If I change the return to return modpath, it seems to build fine as well.
>
>-Bill
>
>
>On Wed, Oct 16, 2019 at 10:26 AM Bill Deegan <bill at baddogconsulting.com>
>wrote:
>      so sounds like a scanner issue then.. could it be using
>      get_contents, instead of get_text_contents?
>
>On Wed, Oct 16, 2019 at 9:29 AM Mats Wichmann <mats at wichmann.us>
>wrote:
>      On 10/16/19 10:04 AM, Peter Diener wrote:
>      > Hi,
>      >
>      > I have been successfully using scons 3.1.0 with python
>      2.7.12 to build a
>      > mostly Fortran based software project on Linux (multiple
>      distributions).
>      > I have the source tree separated from the build
>      directory and are
>      > therefore using variantdir and an SConscript file.
>      Recently I tried to
>      > run this with python 3.7.4 and found that it did not
>      work as scons
>      > failed to correctly find the dependencies on module
>      files.
>      >
>      > I was able to reproduce this with a smaller test example
>      that mimics the
>      > setup in my larger software project. I have attached a
>      zip file with
>      > that source tree as well as build log files (in
>      build_log.2.7.12 and
>      > build_log.3.7.4) with all errors and output when
>      building with
>      > scons --tree=all. As can be seen from the build log
>      files, when building
>      > with python 3, scons does not seem to find the
>      dependencies of the main
>      > program on the module files.
>      >
>      > I have also tried with the latest release version of
>      scons 3.1.1 with
>      > the same results. It works with python 2 but not with
>      python 3.
>      >
>      > So my question is: am I doing something wrong in my
>      SConstruct and
>      > SConscript files that just happens to work with python 2
>      and not with
>      > python 3? Or is this a problem with scons and python 3?
>
>      Possibly a bit of both.  There's an existing scons issue
>      that points out
>      some weakness in submodule support (#3366), and given that
>      Fortran isn't
>      the most heavily used language in the scons universe,
>      there may still be
>      untested code paths in the conversion to Python 3, that
>      don't get
>      exercised by what's in the test suite (there are some
>      fairly new tests
>      in that area, which you know since you contributed there
>      :) )
>      _______________________________________________
>      Scons-users mailing list
>      Scons-users at scons.org
>      https://pairlist4.pair.net/mailman/listinfo/scons-users
>
>
>


More information about the Scons-users mailing list