Bug #408

make buildkernel not -j >1 safe?

Added by TGEN over 7 years ago. Updated over 7 years ago.

Status:ClosedStart date:
Priority:LowDue date:
Assignee:-% Done:

0%

Category:-
Target version:-

Description

It appears a `make buildkernel` is not safe for more than one parallel
make. The fast scrolling output didn't make things very clear, but I
highly suspect there is no proper .ORDER -ing of the mkdep phase. Where
it normally is busy for a couple of seconds doing that, it now rushes
right along. I'm not enough of a Makefile guru to fix that though, I fear.

Cheers,
--
Thomas E. Spanjaard

History

#1 Updated by qhwt+dfly over 7 years ago

I hope kern.fwd.mk rev 1.6 fixes your problem.

Cheers.

#2 Updated by TGEN over 7 years ago

Alas, it doesn't. The exact error is:

./aicasm.nx -nostdinc -I. -Iinclude -I/usr/home/tgen/work/current/sys
-I/usr/home/tgen/work/current/sys/../include
-I/usr/home/tgen/obj/usr/home/tgen/work/current/sys/DORADO
-I"/usr/home/tgen/work/current/sys/dev/acpica5"
-I"/usr/home/tgen/work/current/sys/contrib/dev/acpica-unix-20050309/include"
-I/usr/home/tgen/work/current/sys/contrib/ipfilter
-I/usr/home/tgen/work/current/sys/bus/cam/scsi
-I/usr/home/tgen/work/current/sys/dev/disk/aic7xxx -o aic7xxx_seq.h -r
aic7xxx_reg.h -p aic7xxx_reg_print.c -i
/usr/home/tgen/work/current/sys/dev/disk/aic7xxx/aic7xxx_osm.h
/usr/home/tgen/work/current/sys/dev/disk/aic7xxx/aic7xxx.seq
In file included from
/usr/home/tgen/work/current/sys/../include/stdint.h:32,
from /usr/home/tgen/work/current/sys/sys/types.h:50,
from /usr/home/tgen/work/current/sys/sys/param.h:77,
from
/usr/home/tgen/work/current/sys/machine/pc32/i386/genassym.c:41:
/usr/home/tgen/work/current/sys/sys/stdint.h:12:28: machine/stdint.h: No
such file or directory

Is this perhaps done before the fwd phase, or part of it?

Cheers,
--
Thomas E. Spanjaard

#3 Updated by TGEN over 7 years ago

It seems the BEFORE_DEPEND stuff is done too soon. Perhaps the .ORDER in
kern.fwd.mk should read something like this:

.ORDER: ${_MACHINE_FWD}/include/machine ${_FWDHDRS} assym.s ${_LHDRS}

Would that be possible?

Cheers,
--
Thomas E. Spanjaard

#4 Updated by TGEN over 7 years ago

.ORDER: ${_MACHINE_FWD}/include/machine ${_FWDHDRS} ${_LHDRS}
${BEFORE_DEPEND} \
genassym.o

Only fixes the BEFORE_DEPEND stuff, but not genassym.o.

genassym.o: $S/machine/$P/$M/genassym.c forwarding-headers

Fixes the latter. I'll try some more things later on, but this appears
to work. I'll see what the minimum required is (maybe just the
additional dependency on the forwarding-headers target for genassym.o is
enough), and then commit that if no objections arise.

Cheers,
--
Thomas E. Spanjaard

#5 Updated by TGEN over 7 years ago

Pardon me, but I was mistaken here. BEFORE_DEPEND are not a problem, it
was just that the output on console was confusing.

This is enough. I'll commit right away.

Cheers,
--
Thomas E. Spanjaard

#6 Updated by qhwt+dfly over 7 years ago

Good catch!

Thanks.

#7 Updated by sepherosa over 7 years ago

The fix has been committed.

Also available in: Atom PDF