[OE-core] [PATCH] autotools: Allow recipe-individual configure scripts

Dan McGregor danismostlikely at gmail.com
Thu Nov 5 03:51:17 UTC 2015


On 28 October 2015 at 04:20, Jens Rehsack <rehsack at gmail.com> wrote:
>
>> Am 13.10.2015 um 22:35 schrieb Jens Rehsack <rehsack at gmail.com>:
>>
>>
>> OpenJDK-8 has it's configure script at common/autotools - which will cause
>> the entire assumption of ${S}/configure is regenerated by autoreconf, intltoolize or alike
>> fails heavily.
>>
>> Also - other configure mechanisms can be supported more similar (see how pkgsrc
>> manages different ones ...)
>>
>> Signed-off-by: Jens Rehsack <sno at netbsd.org>
>> ---
>> meta/classes/autotools.bbclass | 43 +++++++++++++++++++++---------------------
>> 1 file changed, 22 insertions(+), 21 deletions(-)
>>
>> diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass
>> index 078f58f..d546a5c 100644
>> --- a/meta/classes/autotools.bbclass
>> +++ b/meta/classes/autotools.bbclass
>> @@ -77,16 +77,20 @@ CONFIGUREOPTS = " --build=${BUILD_SYS} \
>>                 ${@append_libtool_sysroot(d)}"
>> CONFIGUREOPT_DEPTRACK ?= "--disable-dependency-tracking"
>>
>> +AUTOTOOLS_SCRIPT_PATH ?= "${S}"
>> +CONFIGURE_SCRIPT ?= "${AUTOTOOLS_SCRIPT_PATH}/configure"
>> +
>> +AUTOTOOLS_AUXDIR ?= "${AUTOTOOLS_SCRIPT_PATH}"
>>
>> oe_runconf () {
>> -     cfgscript="${S}/configure"
>> +     cfgscript="${CONFIGURE_SCRIPT}"
>>       if [ -x "$cfgscript" ] ; then
>>               bbnote "Running $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} $@"
>>               set +e
>>               ${CACHED_CONFIGUREVARS} $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} "$@"
>>               if [ "$?" != "0" ]; then
>>                       echo "Configure failed. The contents of all config.log files follows to aid debugging"
>> -                     find ${S} -ignore_readdir_race -name config.log -print -exec cat {} \;
>> +                     find ${B} -ignore_readdir_race -name config.log -print -exec cat {} \;
>>                       die "oe_runconf failed"
>>               fi
>>               set -e
>> @@ -95,8 +99,6 @@ oe_runconf () {
>>       fi
>> }
>>
>> -AUTOTOOLS_AUXDIR ?= "${S}"
>> -
>> CONFIGURESTAMPFILE = "${WORKDIR}/configure.sstate"
>>
>> autotools_preconfigure() {
>> @@ -134,7 +136,7 @@ do_configure[postfuncs] += "autotools_postconfigure"
>> ACLOCALDIR = "${B}/aclocal-copy"
>>
>> python autotools_copy_aclocals () {
>> -    s = d.getVar("S", True)
>> +    s = d.getVar("AUTOTOOLS_SCRIPT_PATH", True)
>>     if not os.path.exists(s + "/configure.in") and not os.path.exists(s + "/configure.ac"):
>>         if not d.getVar("AUTOTOOLS_COPYACLOCAL", False):
>>             return
>> @@ -228,13 +230,13 @@ autotools_do_configure() {
>>       ( for ac in `find ${S} -ignore_readdir_race -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
>> +     if [ -e ${AUTOTOOLS_SCRIPT_PATH}/configure.in -o -e ${AUTOTOOLS_SCRIPT_PATH}/configure.ac ]; then
>>               olddir=`pwd`
>> -             cd ${S}
>> +             cd ${AUTOTOOLS_SCRIPT_PATH}
>>               ACLOCAL="aclocal --system-acdir=${ACLOCALDIR}/"
>>               if [ x"${acpaths}" = xdefault ]; then
>>                       acpaths=
>> -                     for i in `find ${S} -ignore_readdir_race -maxdepth 2 -name \*.m4|grep -v 'aclocal.m4'| \
>> +                     for i in `find ${AUTOTOOLS_SCRIPT_PATH} -ignore_readdir_race -maxdepth 2 -name \*.m4|grep -v 'aclocal.m4'| \
>>                               grep -v 'acinclude.m4' | grep -v 'aclocal-copy' | sed -e 's,\(.*/\).*$,\1,'|sort -u`; do
>>                               acpaths="$acpaths -I $i"
>>                       done
>> @@ -265,21 +267,20 @@ autotools_do_configure() {
>>                               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
>> +             elif grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
>>                       # We'd call gettextize here if it wasn't so broken...
>> -                             cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${AUTOTOOLS_AUXDIR}/
>> -                             if [ -d ${S}/po/ ]; then
>> -                                     cp -f ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/po/
>> -                                     if [ ! -e ${S}/po/remove-potcdate.sin ]; then
>> -                                             cp ${STAGING_DATADIR_NATIVE}/gettext/po/remove-potcdate.sin ${S}/po/
>> -                                     fi
>> +                     cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${AUTOTOOLS_AUXDIR}/
>> +                     if [ -d ${S}/po/ ]; then
>> +                             cp -f ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/po/
>> +                             if [ ! -e ${S}/po/remove-potcdate.sin ]; then
>> +                                     cp ${STAGING_DATADIR_NATIVE}/gettext/po/remove-potcdate.sin ${S}/po/
>>                               fi
>> -                             for i in gettext.m4 iconv.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 nls.m4 po.m4 progtest.m4; do
>> -                                     for j in `find ${S} -ignore_readdir_race -name $i | grep -v aclocal-copy`; do
>> -                                             rm $j
>> -                                     done
>> -                             done
>>                       fi
>> +                     for i in gettext.m4 iconv.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 nls.m4 po.m4 progtest.m4; do
>> +                             for j in `find ${S} -ignore_readdir_race -name $i | grep -v aclocal-copy`; do
>> +                                     rm $j
>> +                             done
>> +                     done
>>               fi
>>               mkdir -p m4
>>               if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
>> @@ -290,7 +291,7 @@ autotools_do_configure() {
>>               ACLOCAL="$ACLOCAL" autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || die "autoreconf execution failed."
>>               cd $olddir
>>       fi
>> -     if [ -e ${S}/configure ]; then
>> +     if [ -e ${CONFIGURE_SCRIPT} ]; then
>>               oe_runconf
>>       else
>>               bbnote "nothing to configure"
>> --
>> 1.9.1
>>
>>
>> --
>> Jens Rehsack - rehsack at gmail.com
>
> Is there anything wrong with this patch which prevents it further evaluation?
>
> Since OpenJDK-8 needs this one, because of the weird concept in autotools.bbclass dealing with configure files flying around in ${S}.
>
> Read: This patch fixes a weird behavior of autotools.bbclass which prevents recipes as OpenJDK-8 can be integrated without days of working around poky infrastructure.
>

I don't see anything wrong with this patch; I suspect they're waiting
for the jethro release cycle to end before this gets merged to master.
I do hope it goes to jethro, though.


> Cheers
> --
> Jens Rehsack - rehsack at gmail.com
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list