On Tue, Sep 12, 2006 at 01:53:28PM +0200, [LoN]Kamikaze
wrote:> Last time I built a kernel on Releng_6 (only a couple of days ago)
> everything was fine with "-j 4".
> Now buildkernel stops, this is an example:
>
> ===> sound/driver/als4000 (depend)
> awk -f @/tools/makeobjops.awk @/kern/device_if.m -h
> machine -> /usr/src/sys/i386/include
> awk: can't open file @/tools/makeobjops.awk
> source line number 1 source file @/tools/makeobjops.awk
> context is
> >>> <<<
> *** Error code 2
> @ -> /usr/src/sys
> 1 error
> ...
>
> Where it stops is random (I suppose it sometimes is accidentally
> built in the right order), but the error is always similar.
>
This puzzled me for a while, since kmod.mk has mechanisms that
try to ensure `@' is built before it's accessed. What the
implementation is missing is anti-footshooting measures. I bet
your /usr/src/sys/modules/ has some stray `@' symlinks possibly
left from compiling modules manually without creating object
directories, and forgetting to run "make clean" afterwards.
Here's how I can reproduce the behavior you're seeing:
: # pwd
: /usr/src/sys/modules/sound/driver/als4000
: # make -s cleandir
: # make -s cleandir
: # make @
: @ -> /usr/src/sys
: # make obj
: /usr/obj/usr/src/sys/modules/sound/driver/als4000 created for
/usr/src/sys/modules/sound/driver/als4000
: # make device_if.h
: awk -f @/tools/makeobjops.awk @/kern/device_if.m -h
: awk: can't open file @/tools/makeobjops.awk
: source line number 1 source file @/tools/makeobjops.awk
: context is
: >>> <<<
: *** Error code 2
:
: Stop in /usr/src/sys/modules/sound/driver/als4000.
Fix:
cd /usr/src/sys/modules && make cleandir && make cleandir
Cheers,
--
Ruslan Ermilov
ru@FreeBSD.org
FreeBSD committer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url :
http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20060912/40731b95/attachment.pgp