[OE-core] [PATCH] systemd: use AC_CHECK_TOOL instead of AC_PATH_TOOL when checking objcopy, strings, gperf

Martin Jansa martin.jansa at gmail.com
Thu Apr 18 19:00:43 UTC 2013


On Wed, Apr 17, 2013 at 11:02:15AM +0200, Martin Jansa wrote:
> On Tue, Apr 16, 2013 at 05:59:53PM -0700, Khem Raj wrote:
> > 
> > On Apr 16, 2013, at 2:28 PM, Richard Purdie <richard.purdie at linuxfoundation.org> wrote:
> > 
> > > On Tue, 2013-04-16 at 14:30 +0200, Martin Jansa wrote:
> > >> * with external toolchain I have different HOST_PREFIX and HOST_SYS
> > >>  AC_PATH_TOOL is using HOST_SYS as prefix and fails to find objcopy
> > >>  then it tries objcopy without prefix which is found on host, but
> > >>  that objcopy does not work for arm libs
> > >> * with internal toolchain gperf is not prefixed with HOST_PREFIX, but
> > >>  fallback to "gperf" only finds the one in native sysroot first
> > >> * based on http://lists.linuxtogo.org/pipermail/openembedded-core/2013-April/037985.html
> > >>  Khem suggested to export strings and gperf from bitbake.conf instead
> > >> 
> > >> Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
> > >> ---
> > >> meta/conf/bitbake.conf                             |  2 ++
> > >> ...se-AC_CHECK_TOOL-for-objcopy-strings-and-.patch | 41 ++++++++++++++++++++++
> > >> meta/recipes-core/systemd/systemd_199.bb           |  1 +
> > >> 3 files changed, 44 insertions(+)
> > >> create mode 100644 meta/recipes-core/systemd/systemd/0001-configure-use-AC_CHECK_TOOL-for-objcopy-strings-and-.patch
> > >> 
> > >> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> > >> index cd5d61e..a84ae38 100644
> > >> --- a/meta/conf/bitbake.conf
> > >> +++ b/meta/conf/bitbake.conf
> > >> @@ -455,6 +455,8 @@ export RANLIB = "${HOST_PREFIX}ranlib"
> > >> export STRIP = "${HOST_PREFIX}strip"
> > >> export OBJCOPY = "${HOST_PREFIX}objcopy"
> > >> export OBJDUMP = "${HOST_PREFIX}objdump"
> > >> +export STRINGS = "${HOST_PREFIX}strings"
> > >> +export GPERF = "${HOST_PREFIX}gperf"
> > >> export NM = "${HOST_PREFIX}nm"
> > >> PYTHON = "${@sys.executable}"
> > > 
> > > At this point in the release cycle I'm not adding new global exports to
> > > ever piece of software in the system. I appreciate in theory nothing bad
> > > should happen however the reality is sometimes different :/. I'm taking
> > > a *lot* of risks in including as many changes as I have, I don't want to
> > > add this one too.
> > > 
> > > I'm also not sure its a good idea in general to build up more exports in
> > > bitbake.conf if we haven't yet needed them.
> > > 
> > 
> > We can not be certain we did not need them autoconfed packages will default to one on host
> > so it might be that many recipes have been wrongly using non-cross version of tools and succeeding
> > the build. Problem is there in though. 
> > 
> > I think on master this patch should be considered as such
> > 
> > > I'll take a version of this which does this in the systemd recipe.
> > 
> > For dylan this seems ok
> 
> I have patch moving exports to bitbake.conf in my local tree, I'll send
> it for master after dylan is released.

It was good call to keep it local for systemd in dylan

x86_64-oe-linux-gperf: No such file or directory
in webkit-efl and kconfig-frontends
| sh: 1: x86_64-oe-linux-gperf: not found
| calling gperf failed: 32512 at /home/jenkins/oe/shr-core-branches/shr-core/tmp-eglibc/work/x86_64-oe-linux/webkit-efl/1.9.3+svnr120144-r2/src/Source/WebCore/make-hash-tools.pl line 36.

x86_64-oe-linux-strings: No such file or directory
in tcp-wrappers, interestingly in gcc call:

| x86_64-oe-linux-gcc    -m64
--sysroot=/home/jenkins/oe/shr-core-branches/shr-core/tmp-eglibc/sysroots/qemux86-64
-DFACILITY=LOG_DAEMON -DHOSTS_ACCESS  -DNETGROUP -DUSE_GETDOMAIN
-DDAEMON_UMASK=022 -DREAL_DAEMON_DIR=\"/usr/sbin\" -DPROCESS_OPTIONS
-DKILL_IP_OPTIONS -DSEVERITY=LOG_INFO -DRFC931_TIMEOUT=10
-DHOSTS_DENY=\"/etc/hosts.deny\" -DHOSTS_ALLOW=\"/etc/hosts.allow\"
x86_64-oe-linux-strings  -O2 -pipe -g -feliminate-unused-debug-types
-DSYS_ERRLIST_DEFINED -DHAVE_STRERROR -DHAVE_WEAKSYMS -D_REENTRANT
-DINET6=1 -Dss_family=__ss_family -Dss_len=__ss_len    -o tcpd.o -c
tcpd.c
| x86_64-oe-linux-gcc: error: x86_64-oe-linux-strings: No such file or
directory

> > >> diff --git a/meta/recipes-core/systemd/systemd/0001-configure-use-AC_CHECK_TOOL-for-objcopy-strings-and-.patch b/meta/recipes-core/systemd/systemd/0001-configure-use-AC_CHECK_TOOL-for-objcopy-strings-and-.patch
> > >> new file mode 100644
> > >> index 0000000..d847bbc
> > >> --- /dev/null
> > >> +++ b/meta/recipes-core/systemd/systemd/0001-configure-use-AC_CHECK_TOOL-for-objcopy-strings-and-.patch
> > >> @@ -0,0 +1,41 @@
> > >> +From d6f92bcbbae9a577adb9588c7b2783a5d0bf343d Mon Sep 17 00:00:00 2001
> > >> +From: Martin Jansa <Martin.Jansa at gmail.com>
> > >> +Date: Tue, 16 Apr 2013 14:20:41 +0200
> > >> +Subject: [PATCH] configure: use AC_CHECK_TOOL for objcopy, strings and gperf
> > >> +
> > >> +* using AC_PATH_TOOL does not allow to override it from shell environment
> > >> +  which is useful when cross-compiling
> > >> +* with external toolchain I have different HOST_PREFIX and HOST_SYS
> > >> +  AC_PATH_TOOL is using HOST_SYS as prefix and fails to find objcopy
> > >> +  which is available only as ${TARGET_PREFIX}objcopy then it tries
> > >> +  objcopy without prefix which is found on host, but that objcopy
> > >> +  does not work for !host (e.g. arm when building on x86) libs
> > >> +
> > >> +Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
> > >> +Upstream-Status: Submitted
> > >> +http://lists.freedesktop.org/archives/systemd-devel/2013-April/010468.html
> > >> +
> > >> +---
> > >> + configure.ac | 6 +++---
> > >> + 1 file changed, 3 insertions(+), 3 deletions(-)
> > >> +
> > >> +diff --git a/configure.ac b/configure.ac
> > >> +index 33b0ca9..519f1a9 100644
> > >> +--- a/configure.ac
> > >> ++++ b/configure.ac
> > >> +@@ -86,9 +86,9 @@ GOBJECT_INTROSPECTION_CHECK([1.31.1])
> > >> +    AM_CONDITIONAL([HAVE_INTROSPECTION], [false])
> > >> +    enable_introspection=no])
> > >> + 
> > >> +-AC_PATH_TOOL(OBJCOPY, objcopy)
> > >> +-AC_PATH_TOOL(STRINGS, strings)
> > >> +-AC_PATH_TOOL(GPERF, gperf)
> > >> ++AC_CHECK_TOOL(OBJCOPY, objcopy)
> > >> ++AC_CHECK_TOOL(STRINGS, strings)
> > >> ++AC_CHECK_TOOL(GPERF, gperf)
> > >> + if test -z "$GPERF" ; then
> > >> +         AC_MSG_ERROR([*** gperf not found])
> > >> + fi
> > >> +-- 
> > >> +1.8.1.5
> > >> +
> > >> diff --git a/meta/recipes-core/systemd/systemd_199.bb b/meta/recipes-core/systemd/systemd_199.bb
> > >> index d22df12..e8ad8f5 100644
> > >> --- a/meta/recipes-core/systemd/systemd_199.bb
> > >> +++ b/meta/recipes-core/systemd/systemd_199.bb
> > >> @@ -27,6 +27,7 @@ SRC_URI = "http://www.freedesktop.org/software/systemd/systemd-${PV}.tar.xz \
> > >>            file://0002-readahead-chunk-on-spinning-media.patch \
> > >>            file://0003-readahead-cleanups.patch \
> > >>            file://0013-systemd-sysctl-Handle-missing-etc-sysctl.conf-proper.patch \
> > >> +           file://0001-configure-use-AC_CHECK_TOOL-for-objcopy-strings-and-.patch \
> > >>            file://199-firmware.patch \
> > >>            file://init \
> > >>           "
> > > 
> > > 
> > > 
> > > _______________________________________________
> > > Openembedded-core mailing list
> > > Openembedded-core at lists.openembedded.org
> > > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
> > 
> 
> -- 
> Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com



-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20130418/644853bd/attachment-0002.sig>


More information about the Openembedded-core mailing list