Date: Thu, 10 May 2012 12:39:17 -0700 From: Jeff Kletsky <jeff+freebsd@wagsky.com> To: freebsd-stable@freebsd.org Subject: Two build problems -- "make memstick" and "make release" with -DWITHOUT_CLANG Message-ID: <4FAC1965.7070800@wagsky.com>
index | next in thread | raw e-mail
I'm trying to do bisection to locate when a specific bug appeared and can replicate the issue when I boot from a memstick and use the LiveCD option. This keeps any questions of "upgrade or install" out of the picture. Unfortunately, I've run into a couple problems. After reading the new build(7) and release(7) information, I built everything locally then tried # cd /usr/src/release # make memstick At first, I attributed the hours of 100% CPU time for bsdtar to my reasonably slow Atom 330 box. After a day, I decided that wasn't the issue. Looking at the results, the files were being put in /usr/src/release, not under /usr/obj/ somewhere, as I would have expected. I believe that the process encountered a filesystem loop when copying the source for the memstick. If you look at the output of the make process, the first few lines are: mkdir /usr/src/release/dist mkdir /usr/src/release/dist mkdir -p /usr/src/release/dist/usr cd /usr/src/release/.. && make TARGET_ARCH=amd64 TARGET=amd64 distributeworld DISTDIR=/usr/src/release/dist mkdir -p /usr/src/release/dist/usr mkdir: /usr/src/release/dist: File exists cd /usr/src/release/.. && make TARGET_ARCH=amd64 TARGET=amd64 distributekernel packagekernel DISTDIR=/usr/src/release/dist ln -fs /usr/ports /usr/src/release/dist/usr/ports ln -fs /usr/src/release/.. /usr/src/release/dist/usr/src It looks like that last ln -fs creates a loop, which eventually results in tar output of: a usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/sys/dev/e1000/e1000_osdep.c a usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/release/dist/usr/src/sys/dev/e1000/e1000_osdep.h Running # cd /usr/src/release # make -n -p memstick indicates that .OBJDIR is set to /usr/src/release (and is set to /usr/obj/usr/src when make is executed in /usr/src). # cd /usr/src # make memstick tells me that "memstick" isn't a recognized target. I've tried setting MAKEOBJDIR in the environment, but that didn't change the value of .OBJDIR reported by make. So that is question #1 -- How can I build a memstick from an already-compiled tree? === I can successfully # cd /usr/src/release # ./generate_release.sh stable/9 /usr/release/stable-9 or the like, but a build with clang enabled takes me close to three hours. Since the issue isn't clang-related, I'd like to be able to build without clang to the point of having a bootable memstick. release(7) suggests that the environment variable MAKE_FLAGS could be used to pass flags, however # cd /usr/src/release # export MAKE_FLAGS='-DWITHOUT_CLANG' # ./generate_release.sh stable/9@226702 /usr/release/stable-9 ends up failing. >>> World build started on Wed May 9 06:59:00 PDT 2012 >>> Rebuilding the temporary build tree >>> stage 1.1: legacy release compatibility shims [...] Checked out revision 226702. -------------------------------------------------------------- >>> World build started on Wed May 9 08:15:36 PDT 2012 -------------------------------------------------------------- -------------------------------------------------------------- >>> Rebuilding the temporary build tree -------------------------------------------------------------- rm -rf /usr/obj/usr/release/226702/usr/src/tmp rm -rf /usr/obj/usr/release/226702/usr/src/lib32 [...] >>> World build completed on Wed May 9 09:40:48 PDT 2012 >>> Making hierarchy >>> Installing everything starts off nicely, but then eventually dies with ===> usr.bin/clang (install) ===> usr.bin/clang/clang (install) install -s -o root -g wheel -m 555 clang /usr/release/226702/usr/bin install: clang: No such file or directory *** Error code 71 (plus the remaining errors up the chain) I'm guessing that -DWITHOUT_CLANG isn't being passed to the installworld process. Which leads to the second question -- how can I "clean-build" a memstick (or ISO) without having to build clang? While I understand the need to get clang vetted out, for the purposes of bisection, cutting an hour or two off of each of my builds is very desirable. Thanks! Jeffhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4FAC1965.7070800>
