[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