autotools: Remove special handling for autoconf* and automake*
For reasons that are now shrouded in obscurity, autotools.bbclass has long contained a special heuristic to avoid attempting to run autoreconf when building autoconf or automake themselves. However, the wildcard test against PN which is used there is problematic when trying to build another package whose name happens to start with "autoconf", and in any case it is silly to do this test at runtime for every package. The individual recipes for autoconf and automake can just as easily suppress the behaviour that they don't want by providing a custom do_configure() method which just runs configure. (From OE-Core rev: a87db6f8dea71cbb7ead9285ff8af0e28cf75604) Signed-off-by: Phil Blundell <pb@pbcl.net> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
6f32c9ce08
commit
82a99a4cee
|
@ -111,91 +111,83 @@ do_configure[prefuncs] += "autotools_preconfigure"
|
|||
do_configure[postfuncs] += "autotools_postconfigure"
|
||||
|
||||
autotools_do_configure() {
|
||||
case ${PN} in
|
||||
autoconf*)
|
||||
;;
|
||||
automake*)
|
||||
;;
|
||||
*)
|
||||
# WARNING: gross hack follows:
|
||||
# An autotools built package generally needs these scripts, however only
|
||||
# automake or libtoolize actually install the current versions of them.
|
||||
# This is a problem in builds that do not use libtool or automake, in the case
|
||||
# where we -need- the latest version of these scripts. e.g. running a build
|
||||
# for a package whose autotools are old, on an x86_64 machine, which the old
|
||||
# config.sub does not support. Work around this by installing them manually
|
||||
# regardless.
|
||||
( for ac in `find ${S} -name configure.in -o -name configure.ac`; do
|
||||
rm -f `dirname $ac`/configure
|
||||
done )
|
||||
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/
|
||||
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
|
||||
acpaths="$acpaths -I $i"
|
||||
done
|
||||
else
|
||||
acpaths="${acpaths}"
|
||||
fi
|
||||
AUTOV=`automake --version |head -n 1 |sed "s/.* //;s/\.[0-9]\+$//"`
|
||||
automake --version
|
||||
echo "AUTOV is $AUTOV"
|
||||
if [ -d ${STAGING_DATADIR_NATIVE}/aclocal-$AUTOV ]; then
|
||||
acpaths="$acpaths -I${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/"
|
||||
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.
|
||||
if ! echo ${EXTRA_AUTORECONF} | grep -q "aclocal"; then
|
||||
rm -f aclocal.m4
|
||||
fi
|
||||
if [ -e configure.in ]; then
|
||||
CONFIGURE_AC=configure.in
|
||||
else
|
||||
CONFIGURE_AC=configure.ac
|
||||
fi
|
||||
if ! echo ${EXTRA_OECONF} | grep -q "\-\-disable-nls"; then
|
||||
if grep "^[[:space:]]*AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
|
||||
if grep "sed.*POTFILES" $CONFIGURE_AC >/dev/null; then
|
||||
: do nothing -- we still have an old unmodified configure.ac
|
||||
else
|
||||
bbnote Executing glib-gettextize --force --copy
|
||||
echo "no" | glib-gettextize --force --copy
|
||||
fi
|
||||
else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
|
||||
# We'd call gettextize here if it wasn't so broken...
|
||||
cp ${STAGING_DATADIR}/gettext/config.rpath ${AUTOTOOLS_AUXDIR}/
|
||||
if [ -d ${S}/po/ -a ! -e ${S}/po/Makefile.in.in ]; then
|
||||
cp ${STAGING_DATADIR}/gettext/po/Makefile.in.in ${S}/po/
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
mkdir -p m4
|
||||
if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
|
||||
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."
|
||||
cd $olddir
|
||||
# WARNING: gross hack follows:
|
||||
# An autotools built package generally needs these scripts, however only
|
||||
# automake or libtoolize actually install the current versions of them.
|
||||
# This is a problem in builds that do not use libtool or automake, in the case
|
||||
# where we -need- the latest version of these scripts. e.g. running a build
|
||||
# for a package whose autotools are old, on an x86_64 machine, which the old
|
||||
# config.sub does not support. Work around this by installing them manually
|
||||
# regardless.
|
||||
( for ac in `find ${S} -name configure.in -o -name configure.ac`; do
|
||||
rm -f `dirname $ac`/configure
|
||||
done )
|
||||
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/
|
||||
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
|
||||
acpaths="$acpaths -I $i"
|
||||
done
|
||||
else
|
||||
acpaths="${acpaths}"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
AUTOV=`automake --version |head -n 1 |sed "s/.* //;s/\.[0-9]\+$//"`
|
||||
automake --version
|
||||
echo "AUTOV is $AUTOV"
|
||||
if [ -d ${STAGING_DATADIR_NATIVE}/aclocal-$AUTOV ]; then
|
||||
acpaths="$acpaths -I${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/"
|
||||
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.
|
||||
if ! echo ${EXTRA_AUTORECONF} | grep -q "aclocal"; then
|
||||
rm -f aclocal.m4
|
||||
fi
|
||||
if [ -e configure.in ]; then
|
||||
CONFIGURE_AC=configure.in
|
||||
else
|
||||
CONFIGURE_AC=configure.ac
|
||||
fi
|
||||
if ! echo ${EXTRA_OECONF} | grep -q "\-\-disable-nls"; then
|
||||
if grep "^[[:space:]]*AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
|
||||
if grep "sed.*POTFILES" $CONFIGURE_AC >/dev/null; then
|
||||
: do nothing -- we still have an old unmodified configure.ac
|
||||
else
|
||||
bbnote Executing glib-gettextize --force --copy
|
||||
echo "no" | glib-gettextize --force --copy
|
||||
fi
|
||||
else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
|
||||
# We'd call gettextize here if it wasn't so broken...
|
||||
cp ${STAGING_DATADIR}/gettext/config.rpath ${AUTOTOOLS_AUXDIR}/
|
||||
if [ -d ${S}/po/ -a ! -e ${S}/po/Makefile.in.in ]; then
|
||||
cp ${STAGING_DATADIR}/gettext/po/Makefile.in.in ${S}/po/
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
mkdir -p m4
|
||||
if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
|
||||
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."
|
||||
cd $olddir
|
||||
fi
|
||||
if [ -e ${S}/configure ]; then
|
||||
oe_runconf
|
||||
else
|
||||
|
|
|
@ -17,6 +17,10 @@ SRC_URI = "${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.gz \
|
|||
|
||||
inherit autotools
|
||||
|
||||
do_configure() {
|
||||
oe_runconf
|
||||
}
|
||||
|
||||
do_install_append() {
|
||||
rm -rf ${D}${datadir}/emacs
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require autoconf.inc
|
||||
|
||||
PR = "r8"
|
||||
PR = "r9"
|
||||
|
||||
PARALLEL_MAKE = ""
|
||||
|
||||
|
|
|
@ -9,6 +9,10 @@ SRC_URI = "${GNU_MIRROR}/automake/automake-${PV}.tar.gz"
|
|||
|
||||
inherit autotools
|
||||
|
||||
do_configure() {
|
||||
oe_runconf
|
||||
}
|
||||
|
||||
export AUTOMAKE = "${@bb.which('automake', d.getVar('PATH', True))}"
|
||||
|
||||
FILES_${PN} += "${datadir}/automake* ${datadir}/aclocal*"
|
||||
|
|
|
@ -42,7 +42,7 @@ SRC_URI += "${PATHFIXPATCH} \
|
|||
SRC_URI[md5sum] = "d2af8484de94cdee16d89c50aaa1c729"
|
||||
SRC_URI[sha256sum] = "095ffaa3ac887d1eb3511bf13d7f1fc9ec0503c6a06aeae05c93730cdda9a5a0"
|
||||
|
||||
PR = "r0"
|
||||
PR = "r1"
|
||||
|
||||
do_install () {
|
||||
oe_runmake 'DESTDIR=${D}' install
|
||||
|
|
Loading…
Reference in New Issue