[Scons-dev] Python3 problem under Solaris
Mats Wichmann
mats at wichmann.us
Mon Nov 25 18:12:27 EST 2019
On 11/25/19 3:34 PM, Rob Boehne wrote:
> I’m porting to SPARC Solaris a project that uses Scons in Python3 – (we
> use it widely on Sparc & Intel Solaris with python 2.7) and I’m seeing
> what appears to be a Python3 porting problem when an Environment object
> is created:
>
> (python-env-lhasa)
> robb at lhasa:/devlocal/robb/apdfl-18box/pdfl18_all/DevTests (sparc_stuff)$
> scons BUILD_64_BIT=true STAGE=Debug TESTS=smoke
>
> scons: Reading SConscript files ...
>
> Building for Debug
>
> TypeError: cannot use a string pattern on a bytes-like object:
>
> File "/devlocal/robb/apdfl-18box/pdfl18_all/DevTests/SConstruct",
> line 538:
>
> OS_LEVEL='')
>
> File
> "/devlocal/robb/apdfl-18box/python-env-lhasa/lib/python3.7/site-packages/scons/SCons/Environment.py",
> line 992:
>
> apply_tools(self, tools, toolpath)
>
> File
> "/devlocal/robb/apdfl-18box/python-env-lhasa/lib/python3.7/site-packages/scons/SCons/Environment.py",
> line 107:
>
> env.Tool(tool)
>
> File
> "/devlocal/robb/apdfl-18box/python-env-lhasa/lib/python3.7/site-packages/scons/SCons/Environment.py",
> line 1799:
>
> tool(self)
>
> File
> "/devlocal/robb/apdfl-18box/python-env-lhasa/lib/python3.7/site-packages/scons/SCons/Tool/__init__.py",
> line 303:
>
> self.generate(env, *args, **kw)
>
> File
> "/devlocal/robb/apdfl-18box/python-env-lhasa/lib/python3.7/site-packages/scons/SCons/Tool/default.py",
> line 40:
>
> for t in SCons.Tool.tool_list(env['PLATFORM'], env):
>
> File
> "/devlocal/robb/apdfl-18box/python-env-lhasa/lib/python3.7/site-packages/scons/SCons/Tool/__init__.py",
> line 1288:
>
> cxx_compiler = FindTool(cxx_compilers, env) or cxx_compilers[0]
>
> File
> "/devlocal/robb/apdfl-18box/python-env-lhasa/lib/python3.7/site-packages/scons/SCons/Tool/__init__.py",
> line 1174:
>
> if t.exists(env):
>
> File
> "/devlocal/robb/apdfl-18box/python-env-lhasa/lib/python3.7/site-packages/scons/SCons/Tool/suncxx.py",
> line 139:
>
> path, cxx, shcxx, version = get_cppc(env)
>
> File
> "/devlocal/robb/apdfl-18box/python-env-lhasa/lib/python3.7/site-packages/scons/SCons/Tool/suncxx.py",
> line 115:
>
> path, version = get_package_info(package, pkginfo, pkgchk)
>
> File
> "/devlocal/robb/apdfl-18box/python-env-lhasa/lib/python3.7/site-packages/scons/SCons/Tool/suncxx.py",
> line 79:
>
> version_match = version_re.search(pkginfo_contents)
>
> (python-env-lhasa)
> robb at lhasa:/devlocal/robb/apdfl-18box/pdfl18_all/DevTests (sparc_stuff)$
>
> I corrected this by specifying encoding=’utf-8’ to the two
> subprocess.Popen() calls in SCons/Tool/suncxx.py
>
> And I **think** that should be fine for Python 2.7 as well.
>
> I haven’t done any SCons development in a long while, but here is a
> diff. It should be fairly obvious if this is the right fix.
there's a similar fix that recently went in as commit b907ebd6, which is
in master but not released.
I'd personally prefer to run subprocess.Popen with text=True (or for the
brief period we still support Python 2.7, universal_newlines instead).
Since we *know* we're going to talk to a command that's going to speak
text to us - we're going to ask it to tell us the version number, only -
it sounds better to let Python handle it rather than let the stdout pipe
be opened in binary mode and then have to fuss with encodings.
More information about the Scons-dev
mailing list