[Scons-users] Finding targets which depend on a source file
Bill Deegan
bill at baddogconsulting.com
Wed Nov 18 18:50:01 EST 2015
scons will do what you are asking without you having to explicitly list
them on the command line.
If it's doing the wrong thing, file a bug.
I can't fathom a reason to do what you are asking to do.
Can you supply a reason to your madness so that perhaps we can propose a
way which make sense for scons?
You can use the --tree=prune output as well to see what depends on what.
-Bill
On Wed, Nov 18, 2015 at 3:47 PM, William Blevins <wblevins001 at gmail.com>
wrote:
>
>
> On Wed, Nov 18, 2015 at 11:16 PM, Abhishek Rai <abhishekrai at gmail.com>
> wrote:
>
>> Thanks for the prompt response William.
>>
>> On Wed, Nov 18, 2015 at 3:06 PM, William Blevins <wblevins001 at gmail.com>
>> wrote:
>> >
>> > SCons already only builds targets that are not up-to-date, so what is
>> the point of this script per say? I assume that you are always starting
>> from a fresh repository clone of some kind?
>>
>> Yes. In our git repository, we pull code from the origin several times
>> every day. After each pull, as far as scons goes, several build targets
>> become out of date, causing it to rebuild them when we try to build all
>> targets. In our environment, it's safe to assume that code pulled from
>> origin passes all builds and tests, therefore rebuilding locally is an
>> overkill.
>>
>> >
>> > The SCons paradigm generally maps Targets to Dependencies (Sources), so
>> you would need to work backwards. You might be able to get this
>> information from "scons --dry-run --tree=<option>" with a clever parser,
>> but this will require that SCons scan all the files even though it might
>> not build targets.
>>
>> The --dry-run option unfortunately suffers from the similar limitation -
>> it finds that most targets are out of date, including those unaffected by
>> local changes.
>>
>
> dry-run doesn't execute the build statements, so my point here was to get
> the dependency tree output without compiling. You can then find entries in
> the tree that map to local changes (files shown by git status, etc); this
> of course can give you the final target if you follow the tree to the root.
> You will need a parser for the tree output which shouldn't be too
> complicated, but it might not be efficient either.
>
>
>>
>> >
>> > I am not sure if there is a better way.
>> >
>> > V/R,
>> > William
>>
>> Thanks!
>> Abhishek
>>
>> >
>> > On Wed, Nov 18, 2015 at 10:53 PM, Abhishek Rai <abhishekrai at gmail.com>
>> wrote:
>> >>
>> >> Hello,
>> >>
>> >> Is there any way in scons to list all targets which depend on a given
>> source file?
>> >>
>> >> In the code base that I'm working on, we have a "pre-commit" script
>> which verifies whether the changes in the commit break any targets.
>> Currently, this script tries to build all targets. Of course, some targets
>> may not need rebuilding if the corresponding source files haven't changed
>> since the previous build. But given the dynamic nature of the code base,
>> each run of the pre-commit script ends up building nearly all targets even
>> if that commit affects only a small number of them.
>> >>
>> >> Having the ability to list all targets derived from a given source
>> file will give us the ability to list out these targets first, and then
>> only build those targets as part of the pre-commit workflow.
>> >>
>> >> Thanks!
>> >> Abhishek
>> >>
>> >> _______________________________________________
>> >> Scons-users mailing list
>> >> Scons-users at scons.org
>> >> https://pairlist4.pair.net/mailman/listinfo/scons-users
>> >>
>> >
>> >
>> > _______________________________________________
>> > Scons-users mailing list
>> > Scons-users at scons.org
>> > https://pairlist4.pair.net/mailman/listinfo/scons-users
>> >
>>
>> _______________________________________________
>> Scons-users mailing list
>> Scons-users at scons.org
>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>
>>
>
> _______________________________________________
> 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/20151118/47544ca9/attachment.html>
More information about the Scons-users
mailing list