[Scons-users] Finding targets which depend on a source file

William Blevins wblevins001 at gmail.com
Wed Nov 18 18:47:58 EST 2015


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20151118/a2172474/attachment.html>


More information about the Scons-users mailing list