Subject: Re: toolchain/28414: -current Makefiles don't honor MAKEOBJDIRPREFIX
To: None <peter@boku.net>
From: James Chacon <jmc@NetBSD.org>
List: netbsd-bugs
Date: 12/01/2004 18:28:22
On Wed, Nov 24, 2004 at 06:57:01PM +0000, peter@boku.net wrote:
> >Number: 28414
> >Category: toolchain
> >Synopsis: -current Makefiles don't honor MAKEOBJDIRPREFIX
> >Confidential: no
> >Severity: non-critical
> >Priority: low
> >Responsible: toolchain-manager
> >State: open
> >Class: sw-bug
> >Submitter-Id: net
> >Arrival-Date: Wed Nov 24 18:57:01 +0000 2004
> >Originator: Peter Eisch
> >Release: Current
> >Organization:
> >Environment:
> NetBSD gvlsite 2.0G NetBSD 2.0G (PETER-FW) #4: Sat Sep 4 14:42:02 CDT 2004 peter@gvlsite:/builds/current/i386/obj/builds/current/src/sys/arch/i386/compile/PETER-FW i386
>
> >Description:
> When cross-building -current on i386, after building i386 I proceed to build sparc64. This build fails with:
>
> ===> build.sh command: /builds/current/src/build.sh -j 4 -u -o -U -x -M
> /builds/current/sparc64/obj -m sparc64 -D /
> builds/current/sparc64/dest -R /builds/current/sparc64/release -N 1 -T
> /builds/current/sparc64/tools kernel=PETER-F
> W releasekernel=PETER-FW release
How did you build your i386 build? If you didn't use objdirs there, it won't
matter if you use -M on sparc64 as .o's in the source directory always have
priority over any others. i.e. .o's sprinklked through your source tree and
you will lose.
James
> ===> build.sh started: Tue Nov 23 23:06:25 CST 2004
> ===> MACHINE: sparc64
> ===> MACHINE_ARCH: sparc64
> ===> TOOLDIR path: /builds/current/sparc64/tools
> ===> DESTDIR path: /builds/current/sparc64/dest
> ===> RELEASEDIR path: /builds/current/sparc64/release
> ===> makewrapper: /builds/current/sparc64/tools/bin/nbmake-sparc64
> ===> Updated /builds/current/sparc64/tools/bin/nbmake-sparc64
> ===> Building kernel without building new tools
> ===> Building kernel: PETER-FW
> ===> Build directory:
> /builds/current/sparc64/obj/builds/current/src/sys/arch/sparc64/compile/PETE
> R-FW
> Build directory is
> /builds/current/sparc64/obj/builds/current/src/sys/arch/sparc64/compile/PETE
> R-FW
> Don't forget to run "make depend"
> depending the kern library objects
> depending the compat library objects
> ...
> (Kernel builds fine)
> ...
> --- getent ---
> link getent/getent
> --- dependall-gzip ---
> dependall ===> usr.bin/gzip
> --- dependall-getent ---
> /builds/current/sparc64/tools/lib/gcc-lib/sparc64--netbsd/3.3.3/../../../../
> sparc64--netbsd/bin/ld: getent.o: Reloc
> ations in generic ELF (EM: 3)
> getent.o: could not read symbols: File in wrong format
> collect2: ld returned 1 exit status
> *** [getent] Error code 1
> 1 error
>
> nbmake: stopped in /builds/current/src/usr.bin/getent
> *** [dependall] Error code 2
> 1 error
>
> nbmake: stopped in /builds/current/src/usr.bin/getent
> *** [dependall-getent] Error code 2
> --- dependall-head ---
> dependall ===> usr.bin/head
> --- dependall-fstat ---
> --- fstat ---
> link fstat/fstat
> --- dependall-head ---
> --- dependall ---
> --- head ---
> link head/head
> --- dependall-gzip ---
> --- dependall ---
> --- gzip ---
> link gzip/gzip
> 1 error
>
> nbmake: stopped in /builds/current/src/usr.bin
>
> *** Failed target: dependall-usr.bin
> *** Failed command: _makedirtarget() { dir="$1"; shift; target="$1"; shift;
> case "${dir}" in /*) this="${dir}/"; re al="${dir}" ;; .) this="";
> real="/builds/current/src" ;; *) this="${dir}/";
> real="/builds/current/src/${dir}" ;; es
> ac; show=${this:-.}; echo "${target} ===> ${show%/}${1:+ (with: $@)}"; cd
> "${real}" && /builds/current/sparc64/tool
> s/bin/nbmake _THISDIR_="${this}" "$@" ${target}; }; _makedirtarget usr.bin
> dependall
> *** Error code 2
>
> Stop.
> nbmake: stopped in /builds/current/src
> *** [do-build] Error code 1
> 1 error
>
> nbmake: stopped in /builds/current/src
>
> *** Failed target: build
> *** Failed command: _makedirtarget() { dir="$1"; shift; target="$1"; shift;
> case "${dir}" in /*) this="${dir}/"; re
> al="${dir}" ;; .) this=""; real="/builds/current/src" ;; *) this="${dir}/";
> real="/builds/current/src/${dir}" ;; es
> ac; show=${this:-.}; echo "${target} ===> ${show%/}${1:+ (with: $@)}"; cd
> "${real}" && /builds/current/sparc64/tool
> s/bin/nbmake _THISDIR_="${this}" "$@" ${target}; }; _makedirtarget .
> do-build
> *** Error code 2
>
> Stop.
> nbmake: stopped in /builds/current/src
> *** [release] Error code 1
>
> nbmake: stopped in /builds/current/src
>
>
> -------
>
> Looking in src I find:
>
> gvlsite: {3} find . -name '*.o'
> ./gnu/usr.sbin/sendmail/editmap/editmap.o
> ./gnu/usr.sbin/sendmail/libmilter/comm.o
> ./gnu/usr.sbin/sendmail/libmilter/engine.o
> ./gnu/usr.sbin/sendmail/libmilter/errstring.o
> ./gnu/usr.sbin/sendmail/libmilter/handler.o
> ./gnu/usr.sbin/sendmail/libmilter/listener.o
> ./gnu/usr.sbin/sendmail/libmilter/main.o
> ./gnu/usr.sbin/sendmail/libmilter/signal.o
> ./gnu/usr.sbin/sendmail/libmilter/sm_gethost.o
> ./gnu/usr.sbin/sendmail/libmilter/smfi.o
> ./gnu/usr.sbin/sendmail/libmilter/strl.o
> ./gnu/usr.sbin/sendmail/libsm/strcasecmp.o
> ./gnu/usr.sbin/sendmail/libsm/assert.o
> ./gnu/usr.sbin/sendmail/libsm/cf.o
> ./gnu/usr.sbin/sendmail/libsm/clock.o
> ./gnu/usr.sbin/sendmail/libsm/clrerr.o
> ./gnu/usr.sbin/sendmail/libsm/config.o
> ./gnu/usr.sbin/sendmail/libsm/debug.o
> ./gnu/usr.sbin/sendmail/libsm/errstring.o
> ./gnu/usr.sbin/sendmail/libsm/exc.o
> ./gnu/usr.sbin/sendmail/libsm/fclose.o
> ./gnu/usr.sbin/sendmail/libsm/feof.o
> ./gnu/usr.sbin/sendmail/libsm/ferror.o
> ./gnu/usr.sbin/sendmail/libsm/fflush.o
> ./gnu/usr.sbin/sendmail/libsm/fget.o
> ./gnu/usr.sbin/sendmail/libsm/findfp.o
> ./gnu/usr.sbin/sendmail/libsm/flags.o
> ./gnu/usr.sbin/sendmail/libsm/fopen.o
> ./gnu/usr.sbin/sendmail/libsm/fpos.o
> ./gnu/usr.sbin/sendmail/libsm/fprintf.o
> ./gnu/usr.sbin/sendmail/libsm/fpurge.o
> ./gnu/usr.sbin/sendmail/libsm/fput.o
> ./gnu/usr.sbin/sendmail/libsm/fread.o
> ./gnu/usr.sbin/sendmail/libsm/fscanf.o
> ./gnu/usr.sbin/sendmail/libsm/fseek.o
> ./gnu/usr.sbin/sendmail/libsm/fvwrite.o
> ./gnu/usr.sbin/sendmail/libsm/fwalk.o
> ./gnu/usr.sbin/sendmail/libsm/fwrite.o
> ./gnu/usr.sbin/sendmail/libsm/get.o
> ./gnu/usr.sbin/sendmail/libsm/heap.o
> ./gnu/usr.sbin/sendmail/libsm/ldap.o
> ./gnu/usr.sbin/sendmail/libsm/makebuf.o
> ./gnu/usr.sbin/sendmail/libsm/match.o
> ./gnu/usr.sbin/sendmail/libsm/mbdb.o
> ./gnu/usr.sbin/sendmail/libsm/mpeix.o
> ./gnu/usr.sbin/sendmail/libsm/niprop.o
> ./gnu/usr.sbin/sendmail/libsm/path.o
> ./gnu/usr.sbin/sendmail/libsm/put.o
> ./gnu/usr.sbin/sendmail/libsm/refill.o
> ./gnu/usr.sbin/sendmail/libsm/rewind.o
> ./gnu/usr.sbin/sendmail/libsm/rpool.o
> ./gnu/usr.sbin/sendmail/libsm/setvbuf.o
> ./gnu/usr.sbin/sendmail/libsm/shm.o
> ./gnu/usr.sbin/sendmail/libsm/signal.o
> ./gnu/usr.sbin/sendmail/libsm/smstdio.o
> ./gnu/usr.sbin/sendmail/libsm/snprintf.o
> ./gnu/usr.sbin/sendmail/libsm/sscanf.o
> ./gnu/usr.sbin/sendmail/libsm/stdio.o
> ./gnu/usr.sbin/sendmail/libsm/strdup.o
> ./gnu/usr.sbin/sendmail/libsm/strerror.o
> ./gnu/usr.sbin/sendmail/libsm/strexit.o
> ./gnu/usr.sbin/sendmail/libsm/string.o
> ./gnu/usr.sbin/sendmail/libsm/stringf.o
> ./gnu/usr.sbin/sendmail/libsm/strio.o
> ./gnu/usr.sbin/sendmail/libsm/strl.o
> ./gnu/usr.sbin/sendmail/libsm/strrevcmp.o
> ./gnu/usr.sbin/sendmail/libsm/strto.o
> ./gnu/usr.sbin/sendmail/libsm/syslogio.o
> ./gnu/usr.sbin/sendmail/libsm/test.o
> ./gnu/usr.sbin/sendmail/libsm/ungetc.o
> ./gnu/usr.sbin/sendmail/libsm/vasprintf.o
> ./gnu/usr.sbin/sendmail/libsm/vfprintf.o
> ./gnu/usr.sbin/sendmail/libsm/vfscanf.o
> ./gnu/usr.sbin/sendmail/libsm/vprintf.o
> ./gnu/usr.sbin/sendmail/libsm/wbuf.o
> ./gnu/usr.sbin/sendmail/libsm/vsnprintf.o
> ./gnu/usr.sbin/sendmail/libsm/vsprintf.o
> ./gnu/usr.sbin/sendmail/libsm/vsscanf.o
> ./gnu/usr.sbin/sendmail/libsm/wsetup.o
> ./gnu/usr.sbin/sendmail/libsm/xtrap.o
> ./gnu/usr.sbin/sendmail/libsmdb/smndbm.o
> ./gnu/usr.sbin/sendmail/libsmdb/smdb.o
> ./gnu/usr.sbin/sendmail/libsmdb/smdb1.o
> ./gnu/usr.sbin/sendmail/libsmdb/smdb2.o
> ./gnu/usr.sbin/sendmail/libsmutil/lockfile.o
> ./gnu/usr.sbin/sendmail/libsmutil/cf.o
> ./gnu/usr.sbin/sendmail/libsmutil/debug.o
> ./gnu/usr.sbin/sendmail/libsmutil/err.o
> ./gnu/usr.sbin/sendmail/libsmutil/safefile.o
> ./gnu/usr.sbin/sendmail/libsmutil/snprintf.o
> ./gnu/usr.sbin/sendmail/mailstats/mailstats.o
> ./gnu/usr.sbin/sendmail/makemap/makemap.o
> ./gnu/usr.sbin/sendmail/praliases/praliases.o
> ./gnu/usr.sbin/sendmail/sendmail/alias.o
> ./gnu/usr.sbin/sendmail/sendmail/arpadate.o
> ./gnu/usr.sbin/sendmail/sendmail/bf.o
> ./gnu/usr.sbin/sendmail/sendmail/collect.o
> ./gnu/usr.sbin/sendmail/sendmail/conf.o
> ./gnu/usr.sbin/sendmail/sendmail/control.o
> ./gnu/usr.sbin/sendmail/sendmail/convtime.o
> ./gnu/usr.sbin/sendmail/sendmail/daemon.o
> ./gnu/usr.sbin/sendmail/sendmail/deliver.o
> ./gnu/usr.sbin/sendmail/sendmail/domain.o
> ./gnu/usr.sbin/sendmail/sendmail/envelope.o
> ./gnu/usr.sbin/sendmail/sendmail/err.o
> ./gnu/usr.sbin/sendmail/sendmail/headers.o
> ./gnu/usr.sbin/sendmail/sendmail/macro.o
> ./gnu/usr.sbin/sendmail/sendmail/main.o
> ./gnu/usr.sbin/sendmail/sendmail/map.o
> ./gnu/usr.sbin/sendmail/sendmail/mci.o
> ./gnu/usr.sbin/sendmail/sendmail/milter.o
> ./gnu/usr.sbin/sendmail/sendmail/mime.o
> ./gnu/usr.sbin/sendmail/sendmail/parseaddr.o
> ./gnu/usr.sbin/sendmail/sendmail/queue.o
> ./gnu/usr.sbin/sendmail/sendmail/readcf.o
> ./gnu/usr.sbin/sendmail/sendmail/recipient.o
> ./gnu/usr.sbin/sendmail/sendmail/sasl.o
> ./gnu/usr.sbin/sendmail/sendmail/savemail.o
> ./gnu/usr.sbin/sendmail/sendmail/sfsasl.o
> ./gnu/usr.sbin/sendmail/sendmail/shmticklib.o
> ./gnu/usr.sbin/sendmail/sendmail/sm_resolve.o
> ./gnu/usr.sbin/sendmail/sendmail/srvrsmtp.o
> ./gnu/usr.sbin/sendmail/sendmail/stab.o
> ./gnu/usr.sbin/sendmail/sendmail/stats.o
> ./gnu/usr.sbin/sendmail/sendmail/sysexits.o
> ./gnu/usr.sbin/sendmail/sendmail/timers.o
> ./gnu/usr.sbin/sendmail/sendmail/tls.o
> ./gnu/usr.sbin/sendmail/sendmail/trace.o
> ./gnu/usr.sbin/sendmail/sendmail/usersmtp.o
> ./gnu/usr.sbin/sendmail/sendmail/util.o
> ./gnu/usr.sbin/sendmail/sendmail/version.o
> ./gnu/usr.sbin/sendmail/smrsh/smrsh.o
> ./lib/csu/i386_elf/crtend.o
> ./lib/csu/i386_elf/crtendS.o
> ./lib/csu/i386_elf/crtbeginS.o
> ./lib/csu/i386_elf/crtbegin.o
> ./regress/lib/libutil/sockaddr_snprintf/sockaddr_snprintf.o
> ./usr.bin/kdump/ioctl.o
> ./usr.bin/getent/getent.o
> gvlsite: {4}
>
>
> Which likely explains the issue.
> >How-To-Repeat:
> Use build args like:
>
> ===> build.sh command: /builds/current/src/build.sh -j 4 -u -o -U -x -M /builds/current/sparc64/obj -m sparc64 -D /builds/current/sparc64/dest -R /builds/current/sparc64/release -N 1 -T /builds/current/sparc64/tools kernel=PETER-FW releasekernel=PETER-FW release
>
>
> (the kernel args are inconsequential, of course)
>
> >Fix:
> Workaround:
>
> Prior to doing build, run a command to remove the lingering .o's:
>
> /bin/rm -f `find /builds/current/src -name '*.o'`
>
>
>