]> code.ossystems Code Review - openembedded-core.git/commitdiff
autotools: Remove special handling for autoconf* and automake*
authorPhil Blundell <philb@gnu.org>
Sat, 22 Sep 2012 16:18:08 +0000 (17:18 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 24 Sep 2012 10:17:36 +0000 (11:17 +0100)
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.

Signed-off-by: Phil Blundell <pb@pbcl.net>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/autotools.bbclass
meta/recipes-devtools/autoconf/autoconf.inc
meta/recipes-devtools/autoconf/autoconf_2.69.bb
meta/recipes-devtools/automake/automake.inc
meta/recipes-devtools/automake/automake_1.12.3.bb

index a5997c55e0d0ecbf3a7a090f2097ae8d226d68da..e4e034b62344a5ce4cea156495b0398ac73bb27d 100644 (file)
@@ -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
+       # 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
-                       bbnote Executing autoreconf --verbose --install --force ${EXTRA_AUTORECONF} $acpaths
-                       autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || bbfatal "autoreconf execution failed."
-                       cd $olddir
                fi
-       ;;
-       esac
+               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
index e80a83410e3bb1f803858b197df2cda7ec8a3704..315e7737482865f3c03bffe8c20f659abe29f01c 100644 (file)
@@ -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
 
index 1ec1cb52af771c48682d9fb53d6496a7295ec9ca..2c4c675645b3671499173b52791c9ac28b4c0b75 100644 (file)
@@ -1,6 +1,6 @@
 require autoconf.inc
 
-PR = "r8"
+PR = "r9"
 
 PARALLEL_MAKE = ""
 
index 370cacadfcb2cb03519bf228f3ab8555e1ca9de6..ae743cc58a7f02bac060560871f0e617d4789a49 100644 (file)
@@ -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*"
index 25069d72b54cb80befff283d57e202c3db0d4793..af99dfa2c5e9bf88e975dfd613354fc01bcc0f0f 100644 (file)
@@ -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