Is cross-world building broken?

From: Adrian Chadd <adrian_at_freebsd.org>
Date: Tue, 27 Nov 2012 01:50:54 -0800
Hiya,

I'm having trouble doing a cross-build with -HEAD. It's possible this
has been like this for a while. It's dying really, really early on
when doing a build of the make utility. It looks like it's trying to
link the make utility against a library inside the DESTDIR root,
rather than the system libc path.

Before people say "but but tinderbox works!" I've taken a quick peek
at the tinderbox output and it doesn't look like it sets DESTDIR. I
definitely set DESTDIR here; I have a bunch of different installroots
based on what platform I'm building for.

LIBC is defined as:

Global:LIBC = ${DESTDIR}${LIBDIR}/libc.a

.. and that's likely being evaluated deep in the bowels of make somewhere.

The build script in question:

        env CROSS_BUILD_TESTING=YES                             \
            MAKEOBJDIRPREFIX=${X_MAKEOBJDIRPREFIX}              \
            make ${BUILD_FLAGS}                                 \
            TARGET=${TARGET}                                    \
            TARGET_ARCH=${TARGET_ARCH}                          \
            ${X_TARGET_CPUTYPE}                                 \
            KERNCONF=${KERNCONF} DESTDIR=${X_DESTDIR}           \
            KODIR=/boot/kernel.${KERNCONF}/                     \
            KMODDIR=/boot/kernel.${KERNCONF}/                   \
            __MAKE_CONF=${X_DESTDIR}/../make.conf.${BUILDNAME}  \
            SRCCONF=${X_DESTDIR}/../src.conf.${BUILDNAME}       \
            LOCAL_DIRS="${LOCAL_DIRS}"                          \
            ${X_LOCAL_TOOL_DIRS}                                \
            $1                                                  \

The snippet from make -dA:

#
# parents: all
make            : arch.o buf.o cond.o dir.o for.o hash.o hash_tables.o
job.o lst.o main.o make.o parse.o proc.o shell.o str.o suff.o targ.o
util.o var.o /home/adrian/work/freebsd/svn/src/../root/armeb/usr/lib/libc.a
        ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
        _at_[ -z "${CTFMERGE}" -o -n "${NO_CTF}" ] ||  (${ECHO}
${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS} &&  ${CTFMERGE}
${CTFFLAGS} -o ${.TARGET} ${OBJS})


The output:


lucy# ../../build/trunk/build/bin/build cambria buildworld buildkernel
installworld installkernel
*** Configuration file  : cambria
*** Platform            : armeb
*** Target              : buildworld
MAKEOBJDIRPREFIX: /home/adrian/work/freebsd/svn/src/../obj/armeb/

--------------------------------------------------------------
>>> Building an up-to-date make(1)
--------------------------------------------------------------
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/main.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/shell.c
make: don't know how to make
/home/adrian/work/freebsd/svn/src/../root/armeb/usr/lib/libc.a. Stop
*** Error code 2

Stop in /usr/home/adrian/work/freebsd/svn/src.
*** Error code 1

Stop in /usr/home/adrian/work/freebsd/svn/src.
lucy# rm -rf ../root
lucy# rm -rf ../obj
lucy# ../../build/trunk/build/bin/build cambria buildworld
*** Configuration file  : cambria
*** Platform            : armeb
*** Target              : buildworld
MAKEOBJDIRPREFIX: /home/adrian/work/freebsd/svn/src/../obj/armeb/

--------------------------------------------------------------
>>> Building an up-to-date make(1)
--------------------------------------------------------------
/home/adrian/work/freebsd/svn/src/../obj/armeb//usr/home/adrian/work/freebsd/svn/src/make.i386/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
created for /usr/home/adrian/work/freebsd/svn/src/usr.bin/make
rm -f .depend
mkdep -f .depend -a
-I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\"
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/arch.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/buf.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/cond.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/dir.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/for.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/hash.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/hash_tables.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/job.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/lst.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/main.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/make.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/parse.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/proc.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/shell.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/str.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/suff.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/targ.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/util.c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/var.c
echo make: /home/adrian/work/freebsd/svn/src/../root/armeb/usr/lib/libc.a
 >> .depend
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/arch.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/buf.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/cond.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/dir.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/for.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/hash.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/hash_tables.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/job.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/lst.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/main.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/make.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/parse.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/proc.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/shell.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/str.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/suff.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/targ.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/util.c
cc -O2 -pipe -I/usr/home/adrian/work/freebsd/svn/src/usr.bin/make
-DMAKE_VERSION=\"10201205300\" -DDEFSHELLNAME=\"sh\" -std=gnu99
-fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -c
/usr/home/adrian/work/freebsd/svn/src/usr.bin/make/var.c
make: don't know how to make
/home/adrian/work/freebsd/svn/src/../root/armeb/usr/lib/libc.a. Stop
*** Error code 2

Stop in /usr/home/adrian/work/freebsd/svn/src.
*** Error code 1

Stop in /usr/home/adrian/work/freebsd/svn/src.
lucy#
Received on Tue Nov 27 2012 - 08:50:55 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:32 UTC