On Sat, Apr 06, 2013 at 12:10:01AM +0200, Martin Jansa wrote: > I've already tried that, systemd's configure does not respect that. I've patch for systemd which "fixes" this: diff --git a/meta/recipes-core/systemd/systemd_199.bb b/meta/recipes-core/systemd/systemd_199.bb index e574548..2bb9566 100644 --- a/meta/recipes-core/systemd/systemd_199.bb +++ b/meta/recipes-core/systemd/systemd_199.bb @@ -76,6 +76,15 @@ EXTRA_OECONF_append_libc-uclibc = " --disable-myhostname " do_configure_prepend() { export CPP="${HOST_PREFIX}cpp ${TOOLCHAIN_OPTIONS} ${HOST_CC_ARCH}" + # Allow to override them from shell variables with right prefix + # in some cases (external toolchain) HOST_PREFIX is not the same as HOST_SYS + sed -i "s#AC_PATH_TOOL(OBJCOPY,#AC_CHECK_TOOL(OBJCOPY,#g; \ + s#AC_PATH_TOOL(STRINGS,#AC_CHECK_TOOL(STRINGS,#g; \ + s#AC_PATH_TOOL(GPERF,#AC_CHECK_TOOL(GPERF,#g" ${S}/configure.ac + # OBJCOPY is already exported by default + export STRINGS="${HOST_PREFIX}strings" + export GPERF="${HOST_PREFIX}gperf" + sed -i -e 's:=/root:=${ROOT_HOME}:g' units/*.service* } But I'm still looking for some more global solution, what can go wrong when external toolchain overwrites HOST_SYS to match overwritten TARGET_PREFIX? e.g. tcmode-external-sourcery.inc:TARGET_PREFIX = "${CSL_TARGET_SYS}-" bitbake.conf: HOST_ARCH = "${TARGET_ARCH}" HOST_OS = "${TARGET_OS}" HOST_VENDOR = "${TARGET_VENDOR}" HOST_SYS = "${HOST_ARCH}${HOST_VENDOR}-${HOST_OS}" HOST_PREFIX = "${TARGET_PREFIX}" TARGET_ARCH = "${TUNE_ARCH}" TARGET_OS = "linux${LIBCEXTENSION}${ABIEXTENSION}" TARGET_VENDOR = "-oe" TARGET_SYS = "${TARGET_ARCH}${TARGET_VENDOR}${@['-' + d.getVar('TARGET_OS', True), ''][d.getVar('TARGET_OS', True) == ('' or 'custom')]}" TARGET_PREFIX = "${TARGET_SYS}-" So when external-tc changes TARGET_PREFIX, it modifies HOST_PREFIX and both are inconsistent with TARGET_SYS/HOST_SYS which is used by autoconf for AC_PATH_TOOL. > On Sat, Apr 6, 2013 at 12:08 AM, Chris Larson wrote: > > > > > On Fri, Apr 5, 2013 at 2:20 PM, Martin Jansa wrote: > > > >> On Fri, Apr 05, 2013 at 11:20:44AM +0200, Marcin Juszkiewicz wrote: > >> > For last few months I am working on fixing Linaro binary cross > >> > toolchains and their support in OpenEmbedded. Got to point when they > >> > work (both AArch64 and ARMv7a ones) for single packages but problem > >> > starts when I want to create image... > >> > >> Today I got different king of issue with external toolchain. > >> > >> systemd is using AC_PATH_TOOL(OBJCOPY, objcopy) > >> but host prefix in OE is not the same as in binary toolchain (different > >> TARGET_VENDOR) > >> so it looks for configure:14545: checking for > >> arm-foo-linux-gnueabi-objcopy > >> while binary toolchain has only > >> arm-bar-linux-gnueabi-objcopy > >> > >> and because arm-foo-linux-gnueabi-objcopy wasn't found it continues: > >> configure:14588: checking for objcopy > >> configure:14606: found /usr/bin/objcopy > >> and bam a lot later when it tries objcopy from host on some arm lib > >> > >> Interesting that systemd is first recipe in our image where I've noticed > >> issues like this > >> > >> Any idea how to easily resolve this without checking every configure.ac > >> how it's looking for e.g. objcopy? > > > > > > export OBJCOPY in the environment to the one based on TARGET_PREFIX rather > > than TARGET_SYS, and it'll use that. > > -- > > Christopher Larson > > -- Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com