[Scons-users] Ignore and Requires

William Blevins wblevins001 at gmail.com
Wed Oct 15 20:49:46 EDT 2014


>
> Requires() re-adds it, but in the special
> Requires way, so the file has to exist but changes to it don't trigger
> a rebuild.


Then what is the way to "Require" and rebuild if it changes?  I hope
require does check.  If it doesn't, then the dependency tree is essentially
neutered.

V/R,
William

On Wed, Oct 15, 2014 at 8:44 PM, Gary Oberbrunner <garyo at oberbrunner.com>
wrote:

> Actually, I think it might work, if I understand what you're doing.
> The revision.cpp file starts as a dependency of the target.  Ignore()
> removes that dependency.  Requires() re-adds it, but in the special
> Requires way, so the file has to exist but changes to it don't trigger
> a rebuild.  I'm not positive about this, haven't tried it myself.
>
> Arvid, the ugly workaround you mention is the accepted method for
> this, because it prevents the revision.cpp file from being in the
> dependency tree in the first place.  But your idea to use Ignore is
> clever; if it does actually work, let's put a testcase into SCons so
> we can make sure it keeps working.
>
> -- Gary
>
> On Wed, Oct 15, 2014 at 8:31 PM, William Blevins <wblevins001 at gmail.com>
> wrote:
> > Arvid,
> >
> > I'm not sure you can achieve this the way you desire.  Your approach
> > fundamentally contradicts the results.  Using Requires makes the
> generated
> > CPP-file an explicit dependency.  You are manually injecting the new
> > CPP-file into the dependency graph.  Since the file new has a different
> > name, methods like checking the md5sum cannot detect the lack of changes;
> > thus, the library will always be linked.
> >
> > Is this a situation where you can use a soft-link to trick SCons into
> > keeping a consistent file name?
> >
> > V/R,
> > William
> >
> > On Wed, Oct 15, 2014 at 5:38 PM, Arvid Rosén <arvid at softube.com> wrote:
> >>
> >> Hi!
> >>
> >> I generate a .cpp file with a revision number. It is compiled and linked
> >> with a lot of other object files. However, I don’t want to re-link if
> only
> >> the revision number has changed.
> >>
> >> I thought order-only dependencies using ”Requires” function would solve
> >> this, but if I state that the final binary ”Requires” the
> revision-object,
> >> the binary is still always re-linked. I guess this is because the
> revision
> >> object file is in the source list of the link command, so it gets added
> as
> >> an implicit dependency. There is a ugly workaround (passing the revision
> >> object as a link flag) in the user guide:
> >> http://www.scons.org/doc/2.3.1/HTML/scons-user.html#idp2498640
> >>
> >> But, can I achieve the same thing by using the Ignore function followed
> by
> >> Requires? It seems to work, but I don’t know if I am guarantied that the
> >> files are built in the right order.
> >>
> >> Cheers,
> >> Arvid
> >> _______________________________________________
> >> 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
> >
>
>
>
> --
> Gary
> _______________________________________________
> 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/20141015/a1d1e142/attachment.html>


More information about the Scons-users mailing list