[Scons-users] Dependencie with Sconscripts and builder's environment

Dirk Bächle tshortik at gmx.de
Wed Oct 12 03:12:58 EDT 2016


Hi Albert,

On 12.10.2016 01:27, Albert Arquer wrote:
> Hi Dirk,
>
> sorry for all the questions but I am not that experienced in python.
>
> I have been looking around the scons sources and I have found the get_presig function implemented in FunctionAction.
>
> However my question is, how can I overrinde this class from my sconscripts? Modifying the scons libraries is not an option...
>

okay...what you basically need is the knowledge that functions are first-class objects in Python. So you can assign them and treat 
them in the same way as normal variables. So, in your SConscript you do

     import SCons.Action
     import SCons.Builder

     def myBuildMethod():
         ...

     # Create Action
     myFuncAct = SCons.Action.Action(myBuildMethod)
     # Get at the original presig function
     origPresig = myFuncAct.get_presig

     # Define our own version of it, where we append the variable of interest
     def wrappedPresig():
         return origPresig + env.subst("$COMMAND")

     # Set this as our new presig method
     myFuncAct.get_presig = wrappedPresig

     # Now create a proper Builder with our monkey-patched presig function
     myBuilder = SCons.Builder.Builder(myFuncAct)


, all from the top of my head and untested. ;)
I hope this helps you further already, but other Python experts might chime in on this as well.

Best regards,

Dirk



More information about the Scons-users mailing list