[Scons-users] Mark existing file as up-to-date

Bill Deegan bill at baddogconsulting.com
Thu May 8 18:25:17 EDT 2014


Try: scons --debug=explain to see why SCons thinks it needs to rebuild the
files in question.
It may be that some of the command line arguments are change, but are not
important and thus could be ignored by scons by wrapping them in $( and $)
(See the man page and user guide)

-Bill


On Thu, May 8, 2014 at 5:53 PM, William Blevins <wblevins001 at gmail.com>wrote:


> Can you explain why the build action is changing (IE. The reason scons is

> rebuilding the target in question?

>

> V/R,

> William

> On May 8, 2014 5:33 PM, "Pedro Inácio" <pedromiragaia at gmail.com> wrote:

>

>> I am using SCons for data processing.

>> One of the perks is that, unlike traditional compilation projects, each

>> file in my project might have required several hours to compute.

>> Re-building existing files is, in general, not acceptable.

>>

>> Therefore, the problem is simple to state.

>> While I develop the SCons script, files which have been previously

>> processed, for one reason or another are flagged by SCons as requiring

>> re-build.

>> I would like to tell SCons that the existing files are up-to-date and do

>> not require being rebuilt.

>> How can I do that?

>>

>> This could be easily done with make simply issuing "make --touch",

>> however this is not straightforward with SCons.

>> I have tried to use the Touch factory of SCons to mark existing files as

>> up-to-date, but this does not work.

>>

>> My approach is as follows.

>> I added a custom option '--set-uptodate' which call the Touch factory if

>> the file already exists:

>> (...)

>> if GetOption('set-uptodate') and path.isfile(str(OUT)):

>> # do not recompute the file it already exists

>> Command(OUT,[],Touch("$TARGET")

>> else:

>> # normal build command

>> Command(OUT,IN,"foo $SOURCE > $TARGET")

>> (...)

>>

>> If some files are undesirably flagged as out-of-date, I can issue,

>>

>> scons --set-uptodate (opts) ...

>>

>> which works fine and builds everything without recomputing any existing

>> files.

>>

>> However, the next time I run scons without this option,

>>

>> scons --debug=explain

>>

>> the same files will be flagged as out-of-date with the reason that,

>>

>> scons: rebuilding OUT because build action changed:

>> old: Touch("$TARGET")

>> new: foo $SOURCE > $TARGET

>>

>>

>> Any ideas?

>>

>>

>> _______________________________________________

>> Scons-users mailing list

>> Scons-users at scons.org

>> http://four.pairlist.net/mailman/listinfo/scons-users

>>

>>

> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

> http://four.pairlist.net/mailman/listinfo/scons-users

>

>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://four.pairlist.net/pipermail/scons-users/attachments/20140508/4e6ea915/attachment-0001.html


More information about the Scons-users mailing list