From a5a08543c8cec43d993b2bba0ad6a9357c0a5e04 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 31 May 2013 14:06:24 +0300 Subject: autotools.bbclass: Factor out aclocal copying function Some recipes may need to manually call the aclocal copying functionality so factor this out into a function. Signed-off-by: Richard Purdie Signed-off-by: Cristian Iorga Signed-off-by: Richard Purdie --- meta/classes/autotools.bbclass | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) (limited to 'meta/classes/autotools.bbclass') diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass index b19a871827..66c0f5d10a 100644 --- a/meta/classes/autotools.bbclass +++ b/meta/classes/autotools.bbclass @@ -127,6 +127,26 @@ EXTRACONFFUNCS ??= "" do_configure[prefuncs] += "autotools_preconfigure ${EXTRACONFFUNCS}" do_configure[postfuncs] += "autotools_postconfigure" +ACLOCALDIR = "${B}/aclocal-copy" + +autotools_copy_aclocal () { + # Remove any previous copy of the m4 macros + rm -rf ${ACLOCALDIR}/ + + # The aclocal directory could get modified by other processes + # uninstalling data from the sysroot. See Yocto #861 for details. + # We avoid this by taking a copy here and then files cannot disappear. + # We copy native first, then target. This avoids certain races since cp-noerror + # won't overwrite existing files. + mkdir -p ${ACLOCALDIR}/ + if [ -d ${STAGING_DATADIR_NATIVE}/aclocal ]; then + cp-noerror ${STAGING_DATADIR_NATIVE}/aclocal/ ${ACLOCALDIR}/ + fi + if [ -d ${STAGING_DATADIR}/aclocal -a "${STAGING_DATADIR_NATIVE}/aclocal" != "${STAGING_DATADIR}/aclocal" ]; then + cp-noerror ${STAGING_DATADIR}/aclocal/ ${ACLOCALDIR}/ + fi +} + autotools_do_configure() { # WARNING: gross hack follows: # An autotools built package generally needs these scripts, however only @@ -142,9 +162,8 @@ autotools_do_configure() { if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then olddir=`pwd` cd ${S} - # Remove any previous copy of the m4 macros - rm -rf ${B}/aclocal-copy/ - ACLOCAL="aclocal --system-acdir=${B}/aclocal-copy/" + autotools_copy_aclocal + ACLOCAL="aclocal --system-acdir=${ACLOCALDIR}/" if [ x"${acpaths}" = xdefault ]; then acpaths= for i in `find ${S} -maxdepth 2 -name \*.m4|grep -v 'aclocal.m4'| \ @@ -160,18 +179,6 @@ autotools_do_configure() { if [ -d ${STAGING_DATADIR_NATIVE}/aclocal-$AUTOV ]; then ACLOCAL="$ACLOCAL --automake-acdir=${STAGING_DATADIR_NATIVE}/aclocal-$AUTOV" fi - # The aclocal directory could get modified by other processes - # uninstalling data from the sysroot. See Yocto #861 for details. - # We avoid this by taking a copy here and then files cannot disappear. - # We copy native first, then target. This avoids certain races since cp-noerror - # won't overwrite existing files. - mkdir -p ${B}/aclocal-copy/ - if [ -d ${STAGING_DATADIR_NATIVE}/aclocal ]; then - cp-noerror ${STAGING_DATADIR_NATIVE}/aclocal/ ${B}/aclocal-copy/ - fi - if [ -d ${STAGING_DATADIR}/aclocal -a "${STAGING_DATADIR_NATIVE}/aclocal" != "${STAGING_DATADIR}/aclocal" ]; then - cp-noerror ${STAGING_DATADIR}/aclocal/ ${B}/aclocal-copy/ - fi # autoreconf is too shy to overwrite aclocal.m4 if it doesn't look # like it was auto-generated. Work around this by blowing it away # by hand, unless the package specifically asked not to run aclocal. -- cgit v1.2.3