[OE-core] [PATCH] autotools: Allow recipe-individual configure scripts
Jens Rehsack
rehsack at gmail.com
Fri Nov 13 12:17:21 UTC 2015
> Am 05.11.2015 um 04:51 schrieb Dan McGregor <danismostlikely at gmail.com>:
>
> 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.
Ping
--
Jens Rehsack - rehsack at gmail.com
More information about the Openembedded-core
mailing list