Mark Millard
2016-Jul-10 21:29 UTC
amd64 -> armv6 [and powerpc64] -r302331 -> -r302412 re-cross-build (update): got "sh: ./make_keys: Exec format error" again for init_ketry.h in ncursesw
On 2016-Jul-8, at 12:23 AM, Mark Millard <markmi at dsl-only.net> wrote --but with a few []'d notes added:> [Before the below cross build/update attempt I updated my amd64 from -r302331 -> -r302412.] > > Summary: It appears that WITHOUT_META_MODE= still needs to be forced for cross compiles at least sometimes in order to avoid "Exec format error". man src.conf only mentions WITHOUT_META_MODE= in one place: > >> WITH_DIRDEPS_BUILD > . . . >> WITH_META_MODE (unless WITHOUT_META_MODE is set explicitly) > . . . >> This must be set in the environment, make command line, or >> /etc/src-env.conf, not /etc/src.conf. > > > In attempting to update my cross build (amd64 -> armv6 [or powerpc64]) from -r302331 to -r302412 it failed with [armv6 example]: > >> --- init_keytry.h --- >> sh: ./make_keys: Exec format error >> *** [init_keytry.h] Error code 126 >> >> make[4]: stopped in /usr/src/lib/ncurses/ncursesw >> .ERROR_TARGET='init_keytry.h' >> .ERROR_META_FILE='/usr/obj/clang/arm.armv6/usr/src/lib/ncurses/ncursesw/init_keytry.h.meta' >> .MAKE.LEVEL='4' >> MAKEFILE='' >> .MAKE.MODE='meta missing-filemon=yes missing-meta=yes silent=yes verbose' >> .CURDIR='/usr/src/lib/ncurses/ncursesw' >> .MAKE='make' >> .OBJDIR='/usr/obj/clang/arm.armv6/usr/src/lib/ncurses/ncursesw' >> .TARGETS='all' >> DESTDIR='/usr/obj/clang/arm.armv6/usr/src/tmp' >> LD_LIBRARY_PATH='' >> MACHINE='arm' >> MACHINE_ARCH='armv6' >> MAKEOBJDIRPREFIX='/usr/obj/clang/arm.armv6' >> MAKESYSPATH='/usr/src/share/mk' >> MAKE_VERSION='20160606' >> PATH='/usr/obj/clang/arm.armv6/usr/src/tmp/legacy/usr/sbin:/usr/obj/clang/arm.armv6/usr/src/tmp/legacy/usr/bin:/usr/obj/clang/arm.armv6/usr/src/tmp/legacy/bin:/usr/obj/clang/arm.armv6/usr/src/tmp/usr/sbin:/usr/obj/clang/arm.armv6/usr/src/tmp/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin' >> SRCTOP='/usr/src' >> OBJTOP='/usr/obj/clang/arm.armv6/usr/src' >> .MAKE.MAKEFILES='/usr/src/share/mk/sys.mk /usr/src/share/mk/local.sys.env.mk /usr/src/share/mk/src.sys.env.mk /root/src.configs/src.conf.rpi2-clang-bootstrap.amd64-host /usr/src/share/mk/bsd.mkopt.mk /root/src.configs/make.conf /usr/src/share/mk/local.sys.mk /usr/src/share/mk/src.sys.mk /etc/src.conf /usr/src/lib/ncurses/ncursesw/Makefile /usr/src/lib/ncurses/ncursesw/../ncurses/Makefile /usr/src/share/mk/src.opts.mk /usr/src/share/mk/bsd.own.mk /usr/src/share/mk/bsd.opts.mk /usr/src/share/mk/bsd.cpu.mk /usr/src/share/mk/bsd.compiler.mk /usr/src/share/mk/bsd.compiler.mk /usr/src/lib/ncurses/ncursesw/../config.mk /usr/src/share/mk/bsd.lib.mk /usr/src/share/mk/bsd.init.mk /usr/src/share/mk/local.init.mk /usr/src/share/mk/src.init.mk /usr/src/lib/ncurses/ncursesw/../Makefile.inc /usr/src/lib/ncurses/ncursesw/../../Makefile.inc /usr/src/share/mk/bsd.libnames.mk /usr/src/share/mk/src.libnames.mk /usr/src/share/mk/bsd.symver.mk /usr/src/share/mk/bsd.nls.mk /usr/src/share/mk/bsd.files.mk /usr/src/share/mk/bsd.incs.mk /usr/src/share/mk/bsd.confs.mk /usr/src/share/mk/bsd.links.mk /usr/src/share/mk/bsd.dep.mk /usr/src/share/mk/bsd.clang-analyze.mk /usr/src/share/mk/bsd.obj.mk /usr/src/share/mk/bsd.subdir.mk /usr/src/share/mk/bsd.sys.mk' >> .PATH='. /usr/src/lib/ncurses/ncursesw /usr/src/lib/ncurses/ncursesw/../ncurses /usr/src/lib/ncurses/ncursesw/../../../contrib/ncurses/include /usr/src/lib/ncurses/ncursesw/../../../contrib/ncurses/ncurses/base /usr/src/lib/ncurses/ncursesw/../../../contrib/ncurses/ncurses/tinfo /usr/src/lib/ncurses/ncursesw/../../../contrib/ncurses/ncurses/tty /usr/src/lib/ncurses/ncursesw/../../../contrib/ncurses/ncurses/widechar /usr/src/lib/ncurses/ncursesw/../../../contrib/ncurses/ncurses/trace /usr/src/lib/ncurses/ncursesw/../../../contrib/ncurses/man' >> 1 error > > again. > > This was based on: > >> # more ~/sys_build_scripts.amd64-host/make_rpi2_nodebug_clang_bootstrap-amd64-host.sh >> kldload -n filemon && \ >> script ~/sys_typescripts/typescript_make_rpi2_nodebug_clang_bootstrap-amd64-host-$(date +%Y-%m-%d:%H:%M:%S) \ >> env __MAKE_CONF="/root/src.configs/make.conf" SRC_ENV_CONF="/root/src.configs/src.conf.rpi2-clang-bootstrap.amd64-host" \ >> WITH_META_MODE=yes \ >> MAKEOBJDIRPREFIX="/usr/obj/clang" \ >> make $* > > and. . . > >> # more ~/src.configs/src.conf.rpi2-clang-bootstrap.amd64-host >> TO_TYPE=armv6 >> # >> KERNCONF=RPI2-NODBG >> TARGET=arm >> .if ${.MAKE.LEVEL} == 0 >> TARGET_ARCH=${TO_TYPE} >> .export TARGET_ARCH >> .endif >> # >> WITH_CROSS_COMPILER>> WITHOUT_SYSTEM_COMPILER>> # >> #CPUTYPE=soft >> WITH_LIBCPLUSPLUS>> WITH_BINUTILS_BOOTSTRAP>> WITH_CLANG_BOOTSTRAP>> WITH_CLANG>> WITH_CLANG_IS_CC>> WITH_CLANG_FULL>> WITH_CLANG_EXTRAS>> WITH_LLDB>> # >> WITH_BOOT>> WITHOUT_LIB32>> WITHOUT_LIBSOFT>> # >> WITHOUT_ELFTOOLCHAIN_BOOTSTRAP>> WITHOUT_GCC_BOOTSTRAP>> WITHOUT_GCC>> WITHOUT_GCC_IS_CC>> WITHOUT_GNUCXX>> # >> NO_WERROR>> #WERROR>> MALLOC_PRODUCTION>> # >> WITH_DEBUG_FILES>> # >> XCFLAGS+= -march=armv7-a -mcpu=cortex-a7 >> XCXXFLAGS+= -march=armv7-a -mcpu=cortex-a7 > > make.conf was empty. > > The earlier -r302331 cross build had WITH_LIBSOFT= in use. -r302412 is my first testing of WITHOUT_LIBSOFT= after rebuilding all ports to avoid libsoft. [Does not apply to the powerpc64 example.]I should have mentioned the alternative of keeping WITH_META_MODE=yes but doing a cleanworld before doing a separate buildworld. This is generally handier if one is to keep using WITH_META_MODE=yes . ==Mark Millard markmi at dsl-only.net