[Scons-users] matching source and target's behavior between func and cmd actions

Bill Deegan bill at baddogconsulting.com
Sun Jun 21 15:33:56 EDT 2020


Re choosing from two env's to use. Just make a function and stick it in
your site_scons/site_init.py
Because what you're describing isn't a builder. It may be a pseudo builder,
or just a python function.. but it's not builder if it needs to select from
two (or more) env's to use.


On Sat, Jun 20, 2020 at 11:13 PM daggs <daggs at gmx.com> wrote:

> Thansk, I'll look it.
>
> yes, I looked at the manpage but unfortunatelythe manpage's len doesn't
> *correlate* with my problematic attention span.
> this results in me missing parts of a doc sometimes. I'll try next time to
> put more effornt in reading the manpage.
>
> Thanks,
>
> Dagg.
>
> *Sent:* Sunday, June 21, 2020 at 7:44 AM
> *From:* "Bill Deegan" <bill at baddogconsulting.com>
> *To:* "SCons users mailing list" <scons-users at scons.org>
> *Cc:* "daggs" <daggs at gmx.com>
> *Subject:* Re: [Scons-users] matching source and target's behavior
> between func and cmd actions
> Go take a look at :
> https://scons.org/doc/production/HTML/scons-man.html#builder_objects
> Search for "generator"
> Likely that's what you want.
> Did you take a read through the manpage first?
> There's lots of useful info there.. :)
>
> On Sat, Jun 20, 2020 at 4:05 PM Gary Granger <granger at ucar.edu> wrote:
>
>> If you want to use different commands or change the string printed when
>> the command executes, that implies you should use different Builder
>> instances, with different Actions or cmdstr or both.  It sounds like you're
>> trying to parameterize a build task within a single python function,
>> instead of using the mechanisms SCons already provides for parameterizing
>> build tasks, namely Builder and Action.  If you really have functionality
>> in the task() function which you want to share across multiple Builder
>> instances, then I would break out the shared functionality into other
>> functions which your Builder tasks then call.  But now I'm just guessing,
>> because I doubt I really understand what you're trying to do from your
>> example.
>> On 6/20/20 11:52 AM, daggs wrote:
>>
>> Greetings Gary,
>>
>> that helps me in this specific case but not in the more general case as I
>> might want to use .dirname or pass the cmd.
>>
>> I thought of using regex replace like this:
>> def task(source, target, env):
>>     print(env['cmd'])
>>     new_cmd = re.sub("\$TARGET", env['cmd'], 'aaa')
>>     print('['+new_cmd+']')
>>
>> but for the following cmd:
>> ${SOURCE}<=>$SOURCE<=>${SOURCES}<=>$SOURCES<=>${TARGET}<=>$TARGET<=>$SOURCES.dirname<=>${SOURCE}.dirname<=>$TARGET.abspath
>> I get this output:
>> [aaa]
>>
>> _______________________________________________
>> 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/20200621/e7482d8a/attachment-0001.html>


More information about the Scons-users mailing list