[Scons-users] Command fails if action is simply $SOURCE

Carnë Draug carandraug+dev at gmail.com
Thu Feb 28 14:39:35 EST 2013


On 28 February 2013 19:28, William Deegan <bill at baddogconsulting.com> wrote:

>

> On Feb 28, 2013, at 11:11 AM, Carnë Draug <carandraug+dev at gmail.com> wrote:

>

>> On 28 February 2013 18:56, William Deegan <bill at baddogconsulting.com> wrote:

>>> On Feb 28, 2013, at 10:15 AM, Carnë Draug <carandraug+dev at gmail.com> wrote:

>>>> I'm trying to set a bunch of scripts as commands which are then

>>>> grouped as a single target with Alias. I'm doing something like this

>>>>

>>>> analysis1 = env.Command(target = "result1", source = "script1.pl",

>>>> action = "$SOURCE")

>>>> analysis2 = env.Command(target = "result2", source = "script2.pl",

>>>> action = "$SOURCE")

>>>> analysis3 = env.Command(target = "result3", source = "script3.pl",

>>>> action = "$SOURCE")

>>>>

>>>> env.Alias("analysis", [analysis1, analysis2, analysis3])

>>>>

>>>>

>>>> However, this fails. All I get is:

>>>>

>>>> $scons analysis

>>>> scons: Reading SConscript files ...

>>>> scons: done reading SConscript files.

>>>> scons: Building targets ...

>>>> scons: done building targets.

>>>>

>>>> I can make SCons run the scripts if I set the action to "./$SOURCE",

>>>> "perl $SOURCE", "$SOURCE --" or anything like that. The files should

>>>> have the correct permissions (744). Even if I set $SOURCE to a path, I

>>>> get the same problem so shouldn't be a matter of adding anything to

>>>> the search path.

>>>>

>>>> Is this a bug in SCons or am I doing something wrong? And is there a

>>>> better way to do this?

>>>

>>> Try: "scons --debug=explain analysis"

>>

>> This shows me that SCons recognizes the target as something to build

>> but then does nothing about it:

>>

>> $ scons --debug=explain analysis

>> scons: Reading SConscript files ...

>> scons: done reading SConscript files.

>> scons: Building targets ...

>> scons: building `result1' because it doesn't exist

>> scons: building `result2' because it doesn't exist

>> scons: building `result3' because it doesn't exist

>> scons: done building targets.

>>

>> Nothing is done with the scripts. Just for test, I made the scripts to

>> just print something, or give an error but nothing happens ever.

>>

>>> Also can you paste the output from:

>>> scons --tree=prune analysis

>>

>> scons: Reading SConscript files ...

>> scons: done reading SConscript files.

>> scons: Building targets ...

>> +-analysis

>> +-result1

>> | +-scripts/script1.pl

>> +-result2

>> | +-scripts/script2.pl

>> +-result3

>> +-scripts/script3.pl

>> scons: done building targets.

>>

>> I have attached a tarball with the example, for ease of replication.

>>

>> I have tried to pass the path for the scripts with os.path.join() and

>> os.path.abspath() but none worked.

>

> Try:

> analysis3 = env.Command(target = "result3", source = "script3.pl", action = "${SOURCE.abspath}")


This seems to fix it. The scripts now run as expected. But I guess
this should be fixed on SCons, correct? Is there anything I can do to
help further testing this?

Thank you very much,
Carnë


More information about the Scons-users mailing list