[Bug 214596] make broken on 11.0-Stable unless /usr/obj/prod/110101/D/CORE2/usr/src/make.amd64/bmake exists

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Thu Nov 17 03:23:17 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=214596

            Bug ID: 214596
           Summary: make broken on 11.0-Stable unless
                    /usr/obj/prod/110101/D/CORE2/usr/src/make.amd64/bmake
                    exists
           Product: Base System
           Version: 11.0-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: dewayne at heuristicsystems.com.au

make on 11.0Stable generates either signal 12 or signal 4 after a: make world,
kernel,reboot sequence.  After investigating the cause there is a difference
between make on 10.3S and 11.0S.  Using this command (based on a debug of a
10.3S make) on an 11.0S enables correct function:

# make -m /usr/src/share/mk -f Makefile.inc1 TARGET=amd64 TARGET_ARCH=amd64
MK_META_MODE=no check-old-dirs

This can be identified when comparing the output from 10 and 11 for 
# cd /usr/src; make check-old-files >/tmp/make.log 2>&1

10.3S reveals (note the "test -x"):
.MAKE.PATH_FILEMON = /dev/filemon   # this is a reference, the next line is
relevant
cd /usr/src; PATH=/sbin:/bin:/usr/sbin:/usr/bin MAKE_CMD=make `test -x
/usr/obj/usr/src/make.amd64/bmake && echo /usr/obj/usr/src/make.amd64/bmake ||
echo make`  -m /usr/src/share/mk -f Makefile.inc1  TARGET=amd64
TARGET_ARCH=amd64 MK_META_MODE=no check-old-files
Execute: 'cd /usr/src; PATH=/sbin:/bin:/usr/sbin:/usr/bin MAKE_CMD=make `test
-x /usr/obj/usr/src/make.amd64/bmake && echo /usr/obj/usr/src/make.amd64/bmake
|| echo make`  -m /usr/src/share/mk -f Makefile.inc1  TARGET=amd64
TARGET_ARCH=amd64 MK_META_MODE=no check-old-files'

while on 11.0
.MAKE.PATH_FILEMON = /dev/filemon
cd /usr/src; PATH=/sbin:/bin:/usr/sbin:/usr/bin MAKE_CMD=make
/usr/obj/usr/src/make.amd64/bmake -m /usr/src/share/mk -f Makefile.inc1 
TARGET=amd64 TARGET_ARCH=amd64 MK_META_MODE=no check-old-files
Execute: 'cd /usr/src; PATH=/sbin:/bin:/usr/sbin:/usr/bin MAKE_CMD=make
/usr/obj/usr/src/make.amd64/bmake -m /usr/src/share/mk -f Makefile.inc1 
TARGET=amd64 TARGET_ARCH=amd64 MK_META_MODE=no check-old-files'

Use case 
1. When building on one system and installing onto another, make fails
2. When building a suite of machines for multiple platforms (which is what we
typically do), there is NO /usr/obj.  For example when we bulid systems we
have:
/usr/obj/prod/110101/D/CORE2/usr/src/make.amd64/bmake
which isn't found even on the machine that the "system" is built. At least the
DESTDIR could be referenced to find bmake or better use the code from 10.3S

In short - when there is NO /usr/obj/usr/src/make.amd64/bmake
that's right.  When there is no /usr/obj/usr/src/make.amd64/bmake, make breaks.
And after a full install and everything works and we remove /usr/obj prior to a
rebuild (our typical behaviour), make barfs.

How we go to the discovery of this new feature:
1. Following the instructions in /usr/src/Makefile (for 11.0S source) on a 10.3
system
1a. make buildworld    # - ok
1b. make buildkernel   # - ok 
1c. installkernel # - seems ok except for kldxref
...
install -T release -o root -g wheel -m 555   g_mouse.ko /boot/kernel/
--- afterinstall ---
kldxref /boot/kernel
kldxref: unknown metadata record 4 in file atp.ko
kldxref: unknown metadata record 4 in file atp.ko
...
reboot

2. Reboots to standalone # Umm, not ok.
sh - signal 12
# cd /usr/src/; make installworld
signal 12

3. Reboot standalone and fiddle. Reboots to multiuser
# cd /usr/src/; make installworld
signal 4

Ok - rebuild on a separate 10.3S machine, tar the files and copy to the host. 

This now works and kldxref /boot/kernel does its job.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list