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

Jens Rehsack rehsack at gmail.com
Wed Oct 28 10:20:58 UTC 2015


> 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.

Cheers
-- 
Jens Rehsack - rehsack at gmail.com




More information about the Openembedded-core mailing list