build error; missing dependencies on *every* new applet

Alessandro Rubini rubini-list at gnudd.com
Wed Nov 25 07:34:05 UTC 2009


Denys:
> Anyway. I can easily reproduce it with:
> 
> make distclean
> make allnoconfig
> #sleep 1.2
> sed -i -e "/CONFIG_TRUE/s/.*/CONFIG_TRUE=y/" .config
> make -j<N>
>
> [...]
> 
> Strange thing is that if I add a delay before sed (see "sleep 1.2"),
> it starts to build reliably. I am totally confused.

Good catch.

> What does this tell us? That "make allnoconfig" places timestamps
> a bit in the future, and therefore sed does not make .config newer
> than include/autoconf.h unless we have a pause??!?

No. They simply have the same timestamp and make doesn't trigger the
rule. I'd say it's a bug in make, but the program has been definitely
designed when nobody managed to fulfill a rule in less than one second.

Example:
   tornado% touch --date 08:30 pio.c
   tornado% touch --date 08:30 pio.o
   tornado% ls --full-time -l pio*
   -rw-rw-r-- 1 rubini staff 0 2009-11-25 08:30:00.000000000 +0100 pio.c
   -rw-rw-r-- 1 rubini staff 0 2009-11-25 08:30:00.000000000 +0100 pio.o
   tornado% make pio.o
   make: `pio.o' is up to date.

/alessandro


More information about the busybox mailing list