[Scons-users] Problem upgrading from 3.0.1 to 3.1.2

Daniel Moody dmoody256 at gmail.com
Fri May 15 12:34:35 EDT 2020


I was able to reproduce this with near latest scons and python3.6 with this
simple SConstruct:

SConstruct:

import os

class TestPathIssue(object):

    def __init__(self, thing, makePathsRelative = True, debug = False):
        pass

    def __call__(self, target, source, env, for_signature):
        def FakeClass(object):
            pass

        # simulate the exception

        fake = FakeClass()
        os.path.splitdrive(fake)

env = Environment()
env["TESTCLASS"] = TestPathIssue
env["CCCOM"] = "$CC $_CCCOMCOM $CCFLAGS -o ${TESTCLASS('$TARGET')} -c
${TESTCLASS('$SOURCES')}"

env.Program(target='foo', source='foo.c')


foo.c:

#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
        argv[argc++] = "--";
        printf("foo.c");
        exit (0);
}


resulted in:

python3.6 ../scons/scripts/scons.py --debug=stacktrace
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o <SCons.Script.TestPathIssue object at 0x7fa562bfada0> -c
<SCons.Script.TestPathIssue object at 0x7fa562bfaa90>
sh: 1: Syntax error: end of file unexpected
scons: *** [foo.o] Error 2

my example also fails in python2.7 however, which indicates that there is
something different in behavior with your call method between python2 and
python3. But that's probably another issue in itself, there is still an
issue here in my example where the exception silently passes through. I
traced TypeErrors in Subst.py and found its failing into this incorrect
assumption here:
https://github.com/SCons/scons/blob/4795a9988303cabc0abf774f6f4f77bf2519a5f8/SCons/Subst.py#L429-L431

except TypeError:

# This probably indicates that it's a callable
# object that doesn't match our calling arguments
# (like an Action).

which is where the __call__ methods exception got ignored. If this comment
is a correct assumption, then it should also be assumed that any __call__
method implemented by the user should be catching its own exceptions, and
handling them or rethrowing them as a more specific exception.






On Fri, May 15, 2020 at 1:24 AM Steve Hill (Wireless) via Scons-users <
scons-users at scons.org> wrote:

> >> I'm sort of gradually drifting over to msys2 instead as a result
>
> Me too - haven't used Cygwin for years but this toolchain uses its own
> version...
>
> Back on topic, is it by design that SCons will silently ignore an
> exception raised during execution of a callable in this scenario? I
> normally follow the 'fail quickly and fail loud' approach to this sort of
> unexpected behaviour...
>
> S.
>
> -----Original Message-----
> From: Scons-users <scons-users-bounces at scons.org> On Behalf Of Mats
> Wichmann
> Sent: 14 May 2020 17:44
> To: scons-users at scons.org
> Subject: Re: [Scons-users] Problem upgrading from 3.0.1 to 3.1.2
>
> On 5/14/20 10:39 AM, Steve Hill (Wireless) via Scons-users wrote:
> >>> who's calling os.path.splitdrive?  is that scons, or you?
> >
> > Me, in the Cygwinify class (as I have, in some - but not all - cases, to
> change C:\ to /cygdrive/c/ if it is an absolute path...). I really hate
> this particular toolchain.
>
> Yeah... the git-for-windows stuff has proved nicer, and I'm sort of
> gradually drifting over to msys2 instead as a result - the special
> /cygdrive/ prefix has always been an irritant for me. Not that I'm not
> letting the discussion drift off-topic here  :)
>
>
>
> ===
> > who's calling os.path.splitdrive?  is that scons, or you?
> >
> > as a Python library function, it won't know about SCons defined
> datatypes, though CmdStringHolder is just a specialization of
> collections.UserString...
> >
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
>
> https://urldefense.com/v3/__https://pairlist4.pair.net/mailman/listinfo/scons-users__;!!Aa6LgkyVeQ!4XSRL_pTX7Ag1XqtIWZ7VKsvbRTB4dDZ2q-vSSPNyJVGMYNSlb3RajVKCTxqJTDT8GMSTqZs$
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20200515/36a004db/attachment.html>


More information about the Scons-users mailing list