diff options
-rw-r--r-- | meta/classes/autotools.bbclass | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass index e4e034b623..7c99bbdbac 100644 --- a/meta/classes/autotools.bbclass +++ b/meta/classes/autotools.bbclass @@ -127,10 +127,11 @@ autotools_do_configure() { cd ${S} # Remove any previous copy of the m4 macros rm -rf ${B}/aclocal-copy/ + ACLOCAL="aclocal --system-acdir=${B}/aclocal-copy/" if [ x"${acpaths}" = xdefault ]; then acpaths= for i in `find ${S} -maxdepth 2 -name \*.m4|grep -v 'aclocal.m4'| \ - grep -v 'acinclude.m4' | sed -e 's,\(.*/\).*$,\1,'|sort -u`; do + grep -v 'acinclude.m4' | grep -v 'aclocal-copy' | sed -e 's,\(.*/\).*$,\1,'|sort -u`; do acpaths="$acpaths -I $i" done else @@ -140,16 +141,19 @@ autotools_do_configure() { automake --version echo "AUTOV is $AUTOV" if [ -d ${STAGING_DATADIR_NATIVE}/aclocal-$AUTOV ]; then - acpaths="$acpaths -I${STAGING_DATADIR_NATIVE}/aclocal-$AUTOV" + 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. - if [ -d ${STAGING_DATADIR}/aclocal ]; then - # for scratch build this directory can be empty - # so avoid cp's no files to copy error - cp-noerror ${STAGING_DATADIR}/aclocal ${B}/aclocal-copy/ - acpaths="$acpaths -I ${B}/aclocal-copy/" + # 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 @@ -184,8 +188,8 @@ autotools_do_configure() { bbnote Executing intltoolize --copy --force --automake intltoolize --copy --force --automake fi - bbnote Executing autoreconf --verbose --install --force ${EXTRA_AUTORECONF} $acpaths - autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || bbfatal "autoreconf execution failed." + bbnote Executing ACLOCAL=\"$ACLOCAL\" autoreconf --verbose --install --force ${EXTRA_AUTORECONF} $acpaths + ACLOCAL="$ACLOCAL" autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || bbfatal "autoreconf execution failed." cd $olddir fi if [ -e ${S}/configure ]; then |