[Scons-users] Deleting empty source files

Bill Deegan bill at baddogconsulting.com
Tue Sep 5 16:50:03 EDT 2017


What's in scons --tree=prune for both empty, and blank b.o ?

On Tue, Sep 5, 2017 at 12:42 PM, Petteri Hintsanen <petterih at iki.fi> wrote:

> Hello all,
>
> Today we ran into a somewhat confusing situation with empty source
> files.  Consider the following SConstruct:
>
>     sources = ["a.c", "b.c"]
>     Program("a", sources)
>
> Suppose a.c is simply
>
>     int main() { return 0; }
>
> and b.c is empty (zero bytes).  Running scons builds 'a', as expected:
>
>     $ scons
>     scons: Reading SConscript files ...
>     scons: done reading SConscript files.
>     scons: Building targets ...
>     gcc -o a.o -c a.c
>     gcc -o b.o -c b.c
>     gcc -o a a.o b.o
>     scons: done building targets.
>
> Now delete b.c and run scons again:
>
>     $ rm b.c
>     $ scons
>     scons: Reading SConscript files ...
>     scons: done reading SConscript files.
>     scons: Building targets ...
>     scons: `.' is up to date.
>     scons: done building targets.
>
> So it looks like scons does not catch that b.c has been removed, albeit
> the end result is correct.  But if you have a non-empty b.c, say
> containing a single newline character like after
>
>     $ echo > b.c
>
> then scons will catch the deletion, even though the resulting object
> file will be exactly the same.
>
> I realize that this is a contrived case, and I'm not sure whether it is
> a bug or not, but the behaviour seems somewhat inconsistent.  I would
> expect scons to complain about missing b.c in any case.
>
> This happens with SCons 2.5.1 and Python 2.7.13.
>
> For curiosity's sake I tried the same example with GNU Make 4.1.  It
> behaves differently depending on how you use implicit rules.  With
> Makefile like this:
>
>     objs = a.o b.o
>     a: $(objs)
>
> Make works like SCons, except that it does not care whether b.c has zero
> or more bytes.  But with Makefile like this:
>
>     objs = a.o b.o
>     a: $(objs)
>     a.o: a.c
>     b.o: b.c
>
> Make will complain after removing b.c, even if it has zero bytes.
>
> Best regards,
> Petteri
> _______________________________________________
> 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/20170905/54040617/attachment.html>


More information about the Scons-users mailing list