Skip to contentSkip to conversation

autotools: cleanup

PATCH In review Chris Larson 3 participants 9 messages Feb 8, 2011

lore
Share & tools
lore
#0 lore raw

PATCH 1/4 autotools: cleanup

From: Chris Larson <[email protected]>

---
 classes/autotools.bbclass |   60 +++++++++++++++++---------------------------
 1 files changed, 23 insertions(+), 37 deletions(-)
classes/autotools.bbclass +23 -37
index c8cb0e9..4d7a66b 100644
@@ -17,7 +17,7 @@ def autotools_deps(d):
 		if (not oe.utils.inherits(d, 'native', 'nativesdk', 'cross',
 		                          'sdk') and
 		    not d.getVar('INHIBIT_DEFAULT_DEPS', True)):
-                    deps += 'libtool-cross '
+			deps += 'libtool-cross '
 
 	return deps + 'gnu-config-native '
 
@@ -110,22 +110,13 @@ oe_runconf () {
 
 autotools_do_configure() {
 	case ${PN} in
-	autoconf*)
-	;;
-	automake*)
+	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 )
+		find ${S} -name configure.in -o -name configure.ac | \
+			while read fn; do
+				rm -f `dirname $fn`/configure
+			done
 		if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then
 			olddir=`pwd`
 			cd ${S}
@@ -138,9 +129,7 @@ autotools_do_configure() {
 			else
 				acpaths="${acpaths}"
 			fi
-			AUTOV=`automake --version |head -n 1 |sed "s/.* //;s/\.[0-9]\+$//"`
-			automake --version
-			echo "AUTOV is $AUTOV"
+			AUTOV=`automake --version | head -n 1 | sed "s/.* //;s/\.[0-9]\+$//"`
 			install -d ${STAGING_DATADIR}/aclocal
 			install -d ${STAGING_DATADIR}/aclocal-$AUTOV
 			acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
@@ -151,34 +140,31 @@ autotools_do_configure() {
 				rm -f aclocal.m4
 			fi
 			if [ -e configure.in ]; then
-			  CONFIGURE_AC=configure.in
+				CONFIGURE_AC=configure.in
 			else
-			  CONFIGURE_AC=configure.ac
+				CONFIGURE_AC=configure.ac
 			fi
-			if grep -q "^[[:space:]]*AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC; then
-			  if grep -q "sed.*POTFILES" $CONFIGURE_AC; then
-			    : do nothing -- we still have an old unmodified configure.ac
-			  else
-			    oenote Executing glib-gettextize --force --copy
-			    echo "no" | glib-gettextize --force --copy
-			  fi
-			else if grep -q "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC; then
-			  if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
-			    cp ${STAGING_DATADIR}/gettext/config.rpath ${S}/
-			  else
-			    oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
-			  fi
+			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
+					echo "no" | glib-gettextize --force --copy
+				fi
+			else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
+				if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
+					cp ${STAGING_DATADIR}/gettext/config.rpath ${S}/
+				else
+					oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
+				fi
 			fi
 
 			fi
 			for aux in m4 `sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC`; do
 				mkdir -p ${aux}
 			done
-			oenote Executing autoreconf --verbose --install --force ${EXTRA_AUTORECONF} $acpaths
 			autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
-			if grep -q "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC; then
-			  oenote Executing intltoolize --copy --force --automake
-			  intltoolize --copy --force --automake
+			if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
+				intltoolize --copy --force --automake
 			fi
 			cd $olddir
 		fi
Signature · 1 line
1.7.2.3
#1 lore raw

PATCH 2/4 autotools: split out a oe_autoreconf function

From: Chris Larson <[email protected]>

This functionality logically belongs in its own function, and it makes it easier to explicitly run against subdirs in certain cases.

---
 classes/autotools.bbclass |   96 +++++++++++++++++++++++---------------------
 1 files changed, 50 insertions(+), 46 deletions(-)
classes/autotools.bbclass +50 -46
index 4d7a66b..9744589 100644
@@ -108,6 +108,55 @@ oe_runconf () {
 	fi
 }
 
+oe_autoreconf () {
+	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]\+$//"`
+	install -d ${STAGING_DATADIR}/aclocal
+	install -d ${STAGING_DATADIR}/aclocal-$AUTOV
+	acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
+	# 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 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
+			echo "no" | glib-gettextize --force --copy
+		fi
+	else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
+		if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
+			cp ${STAGING_DATADIR}/gettext/config.rpath ${S}/
+		else
+			oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
+		fi
+	fi
+
+	fi
+	for aux in m4 `sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC`; do
+		mkdir -p ${aux}
+	done
+	autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
+	if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
+		intltoolize --copy --force --automake
+	fi
+}
+
 autotools_do_configure() {
 	case ${PN} in
 	autoconf*|automake*)
@@ -120,52 +169,7 @@ autotools_do_configure() {
 		if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then
 			olddir=`pwd`
 			cd ${S}
-			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]\+$//"`
-			install -d ${STAGING_DATADIR}/aclocal
-			install -d ${STAGING_DATADIR}/aclocal-$AUTOV
-			acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
-			# 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 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
-					echo "no" | glib-gettextize --force --copy
-				fi
-			else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
-				if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
-					cp ${STAGING_DATADIR}/gettext/config.rpath ${S}/
-				else
-					oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
-				fi
-			fi
-
-			fi
-			for aux in m4 `sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC`; do
-				mkdir -p ${aux}
-			done
-			autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
-			if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
-				intltoolize --copy --force --automake
-			fi
+			oe_autoreconf
 			cd $olddir
 		fi
 	;;
Signature · 1 line
1.7.2.3
Acked-by on v1 2/4
#2 lore raw

Re: [PATCH 2/4] autotools: split out a oe_autoreconf function

Quoted 6 lines · Chris Larson

From: Chris Larson <[email protected]>

This functionality logically belongs in its own function, and it makes it easier to explicitly run against subdirs in certain cases.

Quoted 127 lines

---
 classes/autotools.bbclass |   96 +++++++++++++++++++++++---------------------

 1 files changed, 50 insertions(+), 46 deletions(-)
classes/autotools.bbclass +0 -0
index 4d7a66b..9744589 100644
@@ -108,6 +108,55 @@ oe_runconf () {

       fi
 }

classes/autotools.bbclass +49 -0
+oe_autoreconf () {
+       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]\+$//"`
+       install -d ${STAGING_DATADIR}/aclocal
+       install -d ${STAGING_DATADIR}/aclocal-$AUTOV
+       acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
+       # 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 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
+                       echo "no" | glib-gettextize --force --copy
+               fi
+       else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
+               if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
+                       cp ${STAGING_DATADIR}/gettext/config.rpath ${S}/
+               else
+                       oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
+               fi
+       fi
+
+       fi
+       for aux in m4 `sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC`; do
+               mkdir -p ${aux}
+       done
+       autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
+       if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
+               intltoolize --copy --force --automake
+       fi
+}
+

 autotools_do_configure() {
       case ${PN} in
       autoconf*|automake*)

classes/autotools.bbclass +0 -0
@@ -120,52 +169,7 @@ autotools_do_configure() {

               if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then
                       olddir=pwd
                       cd ${S}
-                       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]\+$//"
-                       install -d ${STAGING_DATADIR}/aclocal
-                       install -d ${STAGING_DATADIR}/aclocal-$AUTOV
-                       acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
-                       # 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 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
-                                       echo "no" | glib-gettextize --force --copy
-                               fi
-                       else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
-                               if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
-                                       cp ${STAGING_DATADIR}/gettext/config.rpath ${S}/
-                               else
-                                       oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
-                               fi
-                       fi
-
-                       fi
-                       for aux in m4 sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC; do
-                               mkdir -p ${aux}
-                       done
-                       autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
-                       if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
-                               intltoolize --copy --force --automake
-                       fi
+                       oe_autoreconf
                       cd $olddir
               fi
       ;;
--
1.7.2.3

_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel

#3 lore raw

PATCH 3/4 autotools: symlink where we can

In reply to Chris Larson

From: Chris Larson <[email protected]>

---
 classes/autotools.bbclass |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
classes/autotools.bbclass +4 -4
index 9744589..a88a4d1 100644
@@ -137,11 +137,11 @@ oe_autoreconf () {
 		if grep "sed.*POTFILES" $CONFIGURE_AC >/dev/null; then
 			: do nothing -- we still have an old unmodified configure.ac
 		else
-			echo "no" | glib-gettextize --force --copy
+			echo "no" | glib-gettextize --force
 		fi
 	else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
 		if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
-			cp ${STAGING_DATADIR}/gettext/config.rpath ${S}/
+			ln -sf ${STAGING_DATADIR}/gettext/config.rpath ${S}/
 		else
 			oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
 		fi
@@ -151,9 +151,9 @@ oe_autoreconf () {
 	for aux in m4 `sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC`; do
 		mkdir -p ${aux}
 	done
-	autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
+	autoreconf -Wcross --verbose --install --symlink --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
 	if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
-		intltoolize --copy --force --automake
+		intltoolize --force --automake
 	fi
 }
 
Signature · 1 line
1.7.2.3
Acked-by on v1 3/4
#4 lore raw

Re: [PATCH 3/4] autotools: symlink where we can

Quoted 3 lines · Chris Larson

From: Chris Larson <[email protected]>

now that we will have symlinks will it have any impact on source package generation ?
otherwise

Quoted 43 lines

---
 classes/autotools.bbclass |    8 ++++----

 1 files changed, 4 insertions(+), 4 deletions(-)
classes/autotools.bbclass +0 -0
index 9744589..a88a4d1 100644
@@ -137,11 +137,11 @@ oe_autoreconf () {

               if grep "sed.*POTFILES" $CONFIGURE_AC >/dev/null; then
                       : do nothing -- we still have an old unmodified configure.ac
               else
-                       echo "no" | glib-gettextize --force --copy
+                       echo "no" | glib-gettextize --force
               fi
       else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
               if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
-                       cp ${STAGING_DATADIR}/gettext/config.rpath ${S}/
+                       ln -sf ${STAGING_DATADIR}/gettext/config.rpath ${S}/
               else
                       oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed. fi

classes/autotools.bbclass +0 -0
@@ -151,9 +151,9 @@ oe_autoreconf () {

       for aux in m4 sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC; do mkdir -p ${aux}
       done
-       autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
+       autoreconf -Wcross --verbose --install --symlink --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed." if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
-               intltoolize --copy --force --automake
+               intltoolize --force --automake
       fi
 }

--
1.7.2.3

_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel

#5 lore raw

Re: [PATCH 3/4] autotools: symlink where we can

Quoted 10 lines · Khem Raj
Quoted 3 lines · Chris Larson

From: Chris Larson <[email protected]>

now that we will have symlinks will it have any impact on source package generation ?
otherwise

Good point, I'll look into it, thanks.

Signature · 5 lines
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics
#6 lore raw

PATCH 4/4 autotools: split up into multiple files

In reply to Chris Larson

From: Chris Larson <[email protected]>

Split up autotools.bbclass into:

classes/autotools/configure.bbclass
To be inherited if one wants ./configure and config.{sub,guess} updating, but not autoreconf execution

classes/autotools/bootstrap.bbclass
Autoreconf execution

classes/autotools/staging.inc
Holds the old autotools staging utility functions

autotools.bbclass still exists, and simply inherits classes/autotools/bootstrap.bbclass.

---
 classes/autotools.bbclass           |  238 +----------------------------------
 classes/autotools/bootstrap.bbclass |  101 +++++++++++++++
 classes/autotools/configure.bbclass |  118 +++++++++++++++++
 classes/autotools/staging.inc       |   36 ++++++
 4 files changed, 256 insertions(+), 237 deletions(-)
 create mode 100644 classes/autotools/bootstrap.bbclass
 create mode 100644 classes/autotools/configure.bbclass
 create mode 100644 classes/autotools/staging.inc
classes/autotools.bbclass +1 -237
index a88a4d1..6f30a9e 100644
@@ -1,237 +1 @@
-# use autotools_stage_all for native packages
-AUTOTOOLS_NATIVE_STAGE_INSTALL = "1"
-
-def autotools_deps(d):
-	if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1):
-		return ''
-
-	pn = bb.data.getVar('PN', d, 1)
-	deps = ''
-
-	if pn in ['autoconf-native', 'automake-native', 'help2man-native']:
-		return deps
-	deps += 'autoconf-native automake-native help2man-native '
-
-	if pn not in ['libtool', 'libtool-native', 'libtool-cross']:
-		deps += 'libtool-native '
-		if (not oe.utils.inherits(d, 'native', 'nativesdk', 'cross',
-		                          'sdk') and
-		    not d.getVar('INHIBIT_DEFAULT_DEPS', True)):
-			deps += 'libtool-cross '
-
-	return deps + 'gnu-config-native '
-
-EXTRA_OEMAKE = ""
-
-DEPENDS_prepend = "${@autotools_deps(d)}"
-DEPENDS_virtclass-native_prepend = "${@autotools_deps(d)}"
-DEPENDS_virtclass-nativesdk_prepend = "${@autotools_deps(d)}"
-
-inherit siteinfo
-
-def _autotools_get_sitefiles(d):
-    if oe.utils.inherits(d, 'native', 'nativesdk'):
-        return
-
-    sitedata = siteinfo_data(d)
-    for path in d.getVar("BBPATH", True).split(":"):
-        for element in sitedata:
-            filename = os.path.join(path, "site", element)
-            if os.path.exists(filename):
-                yield filename
-
-# Space separated list of shell scripts with variables defined to supply test
-# results for autoconf tests we cannot run at build time.
-export CONFIG_SITE = "${@' '.join(_autotools_get_sitefiles(d))}"
-
-acpaths = "default"
-EXTRA_AUTORECONF = "--exclude=autopoint"
-
-def autotools_set_crosscompiling(d):
-	if not bb.data.inherits_class('native', d):
-		return " cross_compiling=yes"
-	return ""
-
-def append_libtool_sysroot(d):
-	if bb.data.getVar('LIBTOOL_HAS_SYSROOT', d, 1) == "yes":
-		if bb.data.getVar('BUILD_SYS', d, 1) == bb.data.getVar('HOST_SYS', d, 1):
-			return '--with-libtool-sysroot'
-		else:
-			return '--with-libtool-sysroot=${STAGING_DIR_HOST}'
-	return ''
-
-def distro_imposed_configure_flags(d):
-	distro_features = bb.data.getVar('DISTRO_FEATURES', d, True) or ""
-	distro_features = distro_features.split()
-	flags = set()
-	features = (('largefile', 'largefile'),
-		('ipv6'     , 'ipv6'),
-		('nls'      , 'nls'))
-
-	for knob, cfgargs in features:
-		if isinstance(cfgargs, basestring):
-			cfgargs = [cfgargs]
-		en_or_dis = knob in distro_features and "enable" or "disable"
-		for flg in cfgargs:
-			flags.add("--%s-%s" % (en_or_dis, flg))
-	return " ".join(flags)
-
-# EXTRA_OECONF_append = "${@autotools_set_crosscompiling(d)}"
-
-CONFIGUREOPTS = " --build=${BUILD_SYS} \
-		  --host=${HOST_SYS} \
-		  --target=${TARGET_SYS} \
-		  --prefix=${prefix} \
-		  --exec_prefix=${exec_prefix} \
-		  --bindir=${bindir} \
-		  --sbindir=${sbindir} \
-		  --libexecdir=${libexecdir} \
-		  --datadir=${datadir} \
-		  --sysconfdir=${sysconfdir} \
-		  --sharedstatedir=${sharedstatedir} \
-		  --localstatedir=${localstatedir} \
-		  --libdir=${libdir} \
-		  --includedir=${includedir} \
-		  --oldincludedir=${oldincludedir} \
-		  --infodir=${infodir} \
-		  --mandir=${mandir} \
-		  ${@append_libtool_sysroot(d)} \
-		  ${@distro_imposed_configure_flags(d)} \
-		"
-
-oe_runconf () {
-	if [ -x ${S}/configure ] ; then
-		${S}/configure \
-		${CONFIGUREOPTS} ${EXTRA_OECONF} "$@"
-	else
-		oefatal "no configure script found"
-	fi
-}
-
-oe_autoreconf () {
-	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]\+$//"`
-	install -d ${STAGING_DATADIR}/aclocal
-	install -d ${STAGING_DATADIR}/aclocal-$AUTOV
-	acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
-	# 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 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
-			echo "no" | glib-gettextize --force
-		fi
-	else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
-		if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
-			ln -sf ${STAGING_DATADIR}/gettext/config.rpath ${S}/
-		else
-			oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
-		fi
-	fi
-
-	fi
-	for aux in m4 `sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC`; do
-		mkdir -p ${aux}
-	done
-	autoreconf -Wcross --verbose --install --symlink --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
-	if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
-		intltoolize --force --automake
-	fi
-}
-
-autotools_do_configure() {
-	case ${PN} in
-	autoconf*|automake*)
-	;;
-	*)
-		find ${S} -name configure.in -o -name configure.ac | \
-			while read fn; do
-				rm -f `dirname $fn`/configure
-			done
-		if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then
-			olddir=`pwd`
-			cd ${S}
-			oe_autoreconf
-			cd $olddir
-		fi
-	;;
-	esac
-	if [ -e ${S}/configure ]; then
-		oe_runconf $@
-	else
-		oenote "nothing to configure"
-	fi
-}
-
-autotools_do_install() {
-	oe_runmake 'DESTDIR=${D}' install
-}
-
-PACKAGE_PREPROCESS_FUNCS += "${@['autotools_prepackage_lamangler',''][bb.data.getVar('LIBTOOL_HAS_SYSROOT', d, 1) == "yes"]}"
-autotools_prepackage_lamangler () {
-        for i in `find ${PKGD} -name "*.la"` ; do \
-            sed -i -e 's:${STAGING_LIBDIR}:${libdir}:g;' \
-                   -e 's:${D}::g;' \
-                   -e 's:-I${WORKDIR}\S*: :g;' \
-                   -e 's:-L${WORKDIR}\S*: :g;' \
-                   $i
-	done
-}
-
-# STAGE_TEMP_PREFIX is used for a speedup by packaged-staging
-STAGE_TEMP="${WORKDIR}/temp-staging"
-STAGE_TEMP_PREFIX = ""
-
-autotools_stage_includes() {
-	if [ "${INHIBIT_AUTO_STAGE_INCLUDES}" != "1" ]
-	then
-		rm -rf ${STAGE_TEMP}
-		mkdir -p ${STAGE_TEMP}
-		make DESTDIR="${STAGE_TEMP}" install
-		cp -pPR ${STAGE_TEMP}/${includedir}/* ${STAGING_INCDIR}
-		rm -rf ${STAGE_TEMP}
-	fi
-}
-
-autotools_stage_dir() {
- 	sysroot_stage_dir $1 ${STAGE_TEMP_PREFIX}$2
-}
-
-autotools_stage_libdir() {
-	sysroot_stage_libdir $1 ${STAGE_TEMP_PREFIX}$2
-}
-
-autotools_stage_all() {
-	if [ "${INHIBIT_AUTO_STAGE}" = "1" ]
-	then
-		return
-	fi
-	rm -rf ${STAGE_TEMP}
-	mkdir -p ${STAGE_TEMP}
-	oe_runmake DESTDIR="${STAGE_TEMP}" install
-	rm -rf ${STAGE_TEMP}/${mandir} || true
-	rm -rf ${STAGE_TEMP}/${infodir} || true
-	sysroot_stage_dirs ${STAGE_TEMP} ${STAGE_TEMP_PREFIX}
-	rm -rf ${STAGE_TEMP}
-}
-
-EXPORT_FUNCTIONS do_configure do_install
-
+inherit autotools/bootstrap
classes/autotools/bootstrap.bbclass new file +101 -0

101 lines not on this page · raw message

classes/autotools/configure.bbclass new file +118 -0

118 lines not on this page · raw message

classes/autotools/staging.inc new file +36 -0
new file mode 100644
index 0000000..6fa45cb
@@ -0,0 +1,36 @@
+# STAGE_TEMP_PREFIX is used for a speedup by packaged-staging
+STAGE_TEMP="${WORKDIR}/temp-staging"
+STAGE_TEMP_PREFIX = ""
+
+autotools_stage_includes() {
+	if [ "${INHIBIT_AUTO_STAGE_INCLUDES}" != "1" ]
+	then
+		rm -rf ${STAGE_TEMP}
+		mkdir -p ${STAGE_TEMP}
+		make DESTDIR="${STAGE_TEMP}" install
+		cp -pPR ${STAGE_TEMP}/${includedir}/* ${STAGING_INCDIR}
+		rm -rf ${STAGE_TEMP}
+	fi
+}
+
+autotools_stage_dir() {
+	sysroot_stage_dir $1 ${STAGE_TEMP_PREFIX}$2
+}
+
+autotools_stage_libdir() {
+	sysroot_stage_libdir $1 ${STAGE_TEMP_PREFIX}$2
+}
+
+autotools_stage_all() {
+	if [ "${INHIBIT_AUTO_STAGE}" = "1" ]
+	then
+		return
+	fi
+	rm -rf ${STAGE_TEMP}
+	mkdir -p ${STAGE_TEMP}
+	oe_runmake DESTDIR="${STAGE_TEMP}" install
+	rm -rf ${STAGE_TEMP}/${mandir} || true
+	rm -rf ${STAGE_TEMP}/${infodir} || true
+	sysroot_stage_dirs ${STAGE_TEMP} ${STAGE_TEMP_PREFIX}
+	rm -rf ${STAGE_TEMP}
+}
Signature · 1 line
1.7.2.3
Acked-by on v1 4/4
#7 lore raw

Re: [PATCH 4/4] autotools: split up into multiple files

Quoted 11 lines · Chris Larson

From: Chris Larson <[email protected]>

Split up autotools.bbclass into:

   classes/autotools/configure.bbclass
       To be inherited if one wants ./configure and config.{sub,guess} updating, but not autoreconf execution

   classes/autotools/bootstrap.bbclass
       Autoreconf execution

Quoted 7 lines

   classes/autotools/staging.inc
       Holds the old autotools staging utility functions

autotools.bbclass still exists, and simply inherits classes/autotools/bootstrap.bbclass.

Quoted 535 lines

---
 classes/autotools.bbclass           |  238 +---------------------------------- classes/autotools/bootstrap.bbclass |  101 +++++++++++++++ classes/autotools/configure.bbclass |  118 +++++++++++++++++ classes/autotools/staging.inc       |   36 ++++++

 4 files changed, 256 insertions(+), 237 deletions(-)

 create mode 100644 classes/autotools/bootstrap.bbclass create mode 100644 classes/autotools/configure.bbclass create mode 100644 classes/autotools/staging.inc

classes/autotools.bbclass +1 -237
index a88a4d1..6f30a9e 100644
@@ -1,237 +1 @@
-# use autotools_stage_all for native packages
-AUTOTOOLS_NATIVE_STAGE_INSTALL = "1"
-
-def autotools_deps(d):
-       if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1):
-               return ''
-
-       pn = bb.data.getVar('PN', d, 1)
-       deps = ''
-
-       if pn in ['autoconf-native', 'automake-native', 'help2man-native']:
-               return deps
-       deps += 'autoconf-native automake-native help2man-native '
-
-       if pn not in ['libtool', 'libtool-native', 'libtool-cross']:
-               deps += 'libtool-native '
-               if (not oe.utils.inherits(d, 'native', 'nativesdk', 'cross',
-                                         'sdk') and
-                   not d.getVar('INHIBIT_DEFAULT_DEPS', True)):
-                       deps += 'libtool-cross '
-
-       return deps + 'gnu-config-native '
-
-EXTRA_OEMAKE = ""
-
-DEPENDS_prepend = "${@autotools_deps(d)}"
-DEPENDS_virtclass-native_prepend = "${@autotools_deps(d)}"
-DEPENDS_virtclass-nativesdk_prepend = "${@autotools_deps(d)}"
-
-inherit siteinfo
-
-def _autotools_get_sitefiles(d):
-    if oe.utils.inherits(d, 'native', 'nativesdk'):
-        return
-
-    sitedata = siteinfo_data(d)
-    for path in d.getVar("BBPATH", True).split(":"):
-        for element in sitedata:
-            filename = os.path.join(path, "site", element)
-            if os.path.exists(filename):
-                yield filename
-
-# Space separated list of shell scripts with variables defined to supply test
-# results for autoconf tests we cannot run at build time.
-export CONFIG_SITE = "${@' '.join(_autotools_get_sitefiles(d))}"
-
-acpaths = "default"
-EXTRA_AUTORECONF = "--exclude=autopoint"
-
-def autotools_set_crosscompiling(d):
-       if not bb.data.inherits_class('native', d):
-               return " cross_compiling=yes"
-       return ""
-
-def append_libtool_sysroot(d):
-       if bb.data.getVar('LIBTOOL_HAS_SYSROOT', d, 1) == "yes":
-               if bb.data.getVar('BUILD_SYS', d, 1) == bb.data.getVar('HOST_SYS', d, 1):
-                       return '--with-libtool-sysroot'
-               else:
-                       return '--with-libtool-sysroot=${STAGING_DIR_HOST}'
-       return ''
-
-def distro_imposed_configure_flags(d):
-       distro_features = bb.data.getVar('DISTRO_FEATURES', d, True) or ""
-       distro_features = distro_features.split()
-       flags = set()
-       features = (('largefile', 'largefile'),
-               ('ipv6'     , 'ipv6'),
-               ('nls'      , 'nls'))
-
-       for knob, cfgargs in features:
-               if isinstance(cfgargs, basestring):
-                       cfgargs = [cfgargs]
-               en_or_dis = knob in distro_features and "enable" or "disable"
-               for flg in cfgargs:
-                       flags.add("--%s-%s" % (en_or_dis, flg))
-       return " ".join(flags)
-
-# EXTRA_OECONF_append = "${@autotools_set_crosscompiling(d)}"
-
-CONFIGUREOPTS = " --build=${BUILD_SYS} \
-                 --host=${HOST_SYS} \
-                 --target=${TARGET_SYS} \
-                 --prefix=${prefix} \
-                 --exec_prefix=${exec_prefix} \
-                 --bindir=${bindir} \
-                 --sbindir=${sbindir} \
-                 --libexecdir=${libexecdir} \
-                 --datadir=${datadir} \
-                 --sysconfdir=${sysconfdir} \
-                 --sharedstatedir=${sharedstatedir} \
-                 --localstatedir=${localstatedir} \
-                 --libdir=${libdir} \
-                 --includedir=${includedir} \
-                 --oldincludedir=${oldincludedir} \
-                 --infodir=${infodir} \
-                 --mandir=${mandir} \
-                 ${@append_libtool_sysroot(d)} \
-                 ${@distro_imposed_configure_flags(d)} \
-               "
-
-oe_runconf () {
-       if [ -x ${S}/configure ] ; then
-               ${S}/configure \
-               ${CONFIGUREOPTS} ${EXTRA_OECONF} "$@"
-       else
-               oefatal "no configure script found"
-       fi
-}
-
-oe_autoreconf () {
-       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]\+$//"`
-       install -d ${STAGING_DATADIR}/aclocal
-       install -d ${STAGING_DATADIR}/aclocal-$AUTOV
-       acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
-       # 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 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
-                       echo "no" | glib-gettextize --force
-               fi
-       else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
-               if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
-                       ln -sf ${STAGING_DATADIR}/gettext/config.rpath ${S}/
-               else
-                       oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
-               fi
-       fi
-
-       fi
-       for aux in m4 `sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC`; do
-               mkdir -p ${aux}
-       done
-       autoreconf -Wcross --verbose --install --symlink --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
-       if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
-               intltoolize --force --automake
-       fi
-}
-
-autotools_do_configure() {
-       case ${PN} in
-       autoconf*|automake*)
-       ;;
-       *)
-               find ${S} -name configure.in -o -name configure.ac | \
-                       while read fn; do
-                               rm -f `dirname $fn`/configure
-                       done
-               if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then
-                       olddir=`pwd`
-                       cd ${S}
-                       oe_autoreconf
-                       cd $olddir
-               fi
-       ;;
-       esac
-       if [ -e ${S}/configure ]; then
-               oe_runconf $@
-       else
-               oenote "nothing to configure"
-       fi
-}
-
-autotools_do_install() {
-       oe_runmake 'DESTDIR=${D}' install
-}
-
-PACKAGE_PREPROCESS_FUNCS += "${@['autotools_prepackage_lamangler',''][bb.data.getVar('LIBTOOL_HAS_SYSROOT', d, 1) == "yes"]}"
-autotools_prepackage_lamangler () {
-        for i in `find ${PKGD} -name "*.la"` ; do \
-            sed -i -e 's:${STAGING_LIBDIR}:${libdir}:g;' \
-                   -e 's:${D}::g;' \
-                   -e 's:-I${WORKDIR}\S*: :g;' \
-                   -e 's:-L${WORKDIR}\S*: :g;' \
-                   $i
-       done
-}
-
-# STAGE_TEMP_PREFIX is used for a speedup by packaged-staging
-STAGE_TEMP="${WORKDIR}/temp-staging"
-STAGE_TEMP_PREFIX = ""
-
-autotools_stage_includes() {
-       if [ "${INHIBIT_AUTO_STAGE_INCLUDES}" != "1" ]
-       then
-               rm -rf ${STAGE_TEMP}
-               mkdir -p ${STAGE_TEMP}
-               make DESTDIR="${STAGE_TEMP}" install
-               cp -pPR ${STAGE_TEMP}/${includedir}/* ${STAGING_INCDIR}
-               rm -rf ${STAGE_TEMP}
-       fi
-}
-
-autotools_stage_dir() {
-       sysroot_stage_dir $1 ${STAGE_TEMP_PREFIX}$2
-}
-
-autotools_stage_libdir() {
-       sysroot_stage_libdir $1 ${STAGE_TEMP_PREFIX}$2
-}
-
-autotools_stage_all() {
-       if [ "${INHIBIT_AUTO_STAGE}" = "1" ]
-       then
-               return
-       fi
-       rm -rf ${STAGE_TEMP}
-       mkdir -p ${STAGE_TEMP}
-       oe_runmake DESTDIR="${STAGE_TEMP}" install
-       rm -rf ${STAGE_TEMP}/${mandir} || true
-       rm -rf ${STAGE_TEMP}/${infodir} || true
-       sysroot_stage_dirs ${STAGE_TEMP} ${STAGE_TEMP_PREFIX}
-       rm -rf ${STAGE_TEMP}
-}
-
-EXPORT_FUNCTIONS do_configure do_install
-
+inherit autotools/bootstrap
classes/autotools/bootstrap.bbclass new file +101 -0
new file mode 100644
index 0000000..f992aa3
@@ -0,0 +1,101 @@
+inherit autotools/configure
+
+def autotools_deps(d):
+       if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1):
+               return ''
+
+       pn = bb.data.getVar('PN', d, 1)
+       deps = ''
+
+       if pn in ['autoconf-native', 'automake-native', 'help2man-native']:
+               return deps
+       deps += 'autoconf-native automake-native help2man-native '
+
+       if pn not in ['libtool', 'libtool-native', 'libtool-cross']:
+               deps += 'libtool-native '
+               if (not oe.utils.inherits(d, 'native', 'nativesdk', 'cross',
+                                         'sdk') and
+                   not d.getVar('INHIBIT_DEFAULT_DEPS', True)):
+                       deps += 'libtool-cross '
+
+       return deps
+
+DEPENDS_prepend = "${@autotools_deps(d)}"
+DEPENDS_virtclass-native_prepend = "${@autotools_deps(d)}"
+DEPENDS_virtclass-nativesdk_prepend = "${@autotools_deps(d)}"
+
+acpaths = "default"
+EXTRA_AUTORECONF = "--exclude=autopoint"
+
+oe_autoreconf () {
+       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]\+$//"`
+       install -d ${STAGING_DATADIR}/aclocal
+       install -d ${STAGING_DATADIR}/aclocal-$AUTOV
+       acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
+       # 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 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
+                       echo "no" | glib-gettextize --force
+               fi
+       else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
+               if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
+                       ln -sf ${STAGING_DATADIR}/gettext/config.rpath ${S}/
+               else
+                       oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
+               fi
+       fi
+
+       fi
+       for aux in m4 `sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC`; do
+               mkdir -p ${aux}
+       done
+       autoreconf -Wcross --verbose --install --symlink --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
+       if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
+               intltoolize --force --automake
+       fi
+}
+
+autotools_do_configure() {
+       case ${PN} in
+       autoconf*|automake*)
+       ;;
+       *)
+               find ${S} -name configure.in -o -name configure.ac | \
+                       while read fn; do
+                               rm -f `dirname $fn`/configure
+                       done
+               if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then
+                       olddir=`pwd`
+                       cd ${S}
+                       oe_autoreconf
+                       cd $olddir
+               fi
+       ;;
+       esac
+       if [ -e ${S}/configure ]; then
+               oe_runconf $@
+       else
+               oenote "nothing to configure"
+       fi
+}
classes/autotools/configure.bbclass new file +118 -0
new file mode 100644
index 0000000..8f93d9c
@@ -0,0 +1,118 @@
+# use autotools_stage_all for native packages
+AUTOTOOLS_NATIVE_STAGE_INSTALL = "1"
+
+DEPENDS_prepend = "${@['gnu-config-native ', ''][bool(d.getVar('INHIBIT_AUTOTOOLS_DEPS', 1))]}"
+EXTRA_OEMAKE = ""
+
+inherit siteinfo
+
+def _autotools_get_sitefiles(d):
+    if oe.utils.inherits(d, 'native', 'nativesdk'):
+        return
+
+    sitedata = siteinfo_data(d)
+    for path in d.getVar("BBPATH", True).split(":"):
+        for element in sitedata:
+            filename = os.path.join(path, "site", element)
+            if os.path.exists(filename):
+                yield filename
+
+# Space separated list of shell scripts with variables defined to supply test
+# results for autoconf tests we cannot run at build time.
+export CONFIG_SITE = "${@' '.join(_autotools_get_sitefiles(d))}"
+
+def autotools_set_crosscompiling(d):
+       if not bb.data.inherits_class('native', d):
+               return " cross_compiling=yes"
+       return ""
+
+def append_libtool_sysroot(d):
+       if bb.data.getVar('LIBTOOL_HAS_SYSROOT', d, 1) == "yes":
+               if bb.data.getVar('BUILD_SYS', d, 1) == bb.data.getVar('HOST_SYS', d, 1):
+                       return '--with-libtool-sysroot'
+               else:
+                       return '--with-libtool-sysroot=${STAGING_DIR_HOST}'
+       return ''
+
+def distro_imposed_configure_flags(d):
+       distro_features = bb.data.getVar('DISTRO_FEATURES', d, True) or ""
+       distro_features = distro_features.split()
+       flags = set()
+       features = (('largefile', 'largefile'),
+               ('ipv6'     , 'ipv6'),
+               ('nls'      , 'nls'))
+
+       for knob, cfgargs in features:
+               if isinstance(cfgargs, basestring):
+                       cfgargs = [cfgargs]
+               en_or_dis = knob in distro_features and "enable" or "disable"
+               for flg in cfgargs:
+                       flags.add("--%s-%s" % (en_or_dis, flg))
+       return " ".join(flags)
+
+CONFIGUREOPTS = " --build=${BUILD_SYS} \
+                 --host=${HOST_SYS} \
+                 --target=${TARGET_SYS} \
+                 --prefix=${prefix} \
+                 --exec_prefix=${exec_prefix} \
+                 --bindir=${bindir} \
+                 --sbindir=${sbindir} \
+                 --libexecdir=${libexecdir} \
+                 --datadir=${datadir} \
+                 --sysconfdir=${sysconfdir} \
+                 --sharedstatedir=${sharedstatedir} \
+                 --localstatedir=${localstatedir} \
+                 --libdir=${libdir} \
+                 --includedir=${includedir} \
+                 --oldincludedir=${oldincludedir} \
+                 --infodir=${infodir} \
+                 --mandir=${mandir} \
+                 ${@append_libtool_sysroot(d)} \
+                 ${@distro_imposed_configure_flags(d)} \
+               "
+
+oe_runconf () {
+       if [ -x ${S}/configure ] ; then
+               ${S}/configure \
+               ${CONFIGUREOPTS} ${EXTRA_OECONF} "$@"
+       else
+               oefatal "no configure script found"
+       fi
+}
+
+autotools_do_configure () {
+       if [ -e ${S}/configure ]; then
+               find ${S} -name config.guess -exec \
+                   ln -sf ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess "{}" \;
+               find ${S} -name config.sub -exec \
+                   ln -sf ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub "{}" \;
+               oe_runconf $@
+       else
+               oenote "nothing to configure"
+       fi
+}
+
+autotools_do_install() {
+       oe_runmake 'DESTDIR=${D}' install
+}
+
+do_configure () {
+    autotools_do_configure
+}
+
+do_install () {
+    autotools_do_install
+}
+
+PACKAGE_PREPROCESS_FUNCS += "${@['autotools_prepackage_lamangler',''][bb.data.getVar('LIBTOOL_HAS_SYSROOT', d, 1) == "yes"]}"
+autotools_prepackage_lamangler () {
+        for i in `find ${PKGD} -name "*.la"` ; do \
+            sed -i -e 's:${STAGING_LIBDIR}:${libdir}:g;' \
+                   -e 's:${D}::g;' \
+                   -e 's:-I${WORKDIR}\S*: :g;' \
+                   -e 's:-L${WORKDIR}\S*: :g;' \
+                   $i
+       done
+}
+
+require classes/autotools/staging.inc
classes/autotools/staging.inc new file +36 -1
new file mode 100644
index 0000000..6fa45cb
@@ -0,0 +1,36 @@
+# STAGE_TEMP_PREFIX is used for a speedup by packaged-staging
+STAGE_TEMP="${WORKDIR}/temp-staging"
+STAGE_TEMP_PREFIX = ""
+
+autotools_stage_includes() {
+       if [ "${INHIBIT_AUTO_STAGE_INCLUDES}" != "1" ]
+       then
+               rm -rf ${STAGE_TEMP}
+               mkdir -p ${STAGE_TEMP}
+               make DESTDIR="${STAGE_TEMP}" install
+               cp -pPR ${STAGE_TEMP}/${includedir}/* ${STAGING_INCDIR}
+               rm -rf ${STAGE_TEMP}
+       fi
+}
+
+autotools_stage_dir() {
+       sysroot_stage_dir $1 ${STAGE_TEMP_PREFIX}$2
+}
+
+autotools_stage_libdir() {
+       sysroot_stage_libdir $1 ${STAGE_TEMP_PREFIX}$2
+}
+
+autotools_stage_all() {
+       if [ "${INHIBIT_AUTO_STAGE}" = "1" ]
+       then
+               return
+       fi
+       rm -rf ${STAGE_TEMP}
+       mkdir -p ${STAGE_TEMP}
+       oe_runmake DESTDIR="${STAGE_TEMP}" install
+       rm -rf ${STAGE_TEMP}/${mandir} || true
+       rm -rf ${STAGE_TEMP}/${infodir} || true
+       sysroot_stage_dirs ${STAGE_TEMP} ${STAGE_TEMP_PREFIX}
+       rm -rf ${STAGE_TEMP}
+}
--

1.7.2.3

_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel

Acked-by on v1 1/4
#8 lore raw
In reply to Chris Larson
Quoted 3 lines · Chris Larson

From: Chris Larson <[email protected]>

You got rid of some oenotes I dont know why but looks ok

Quoted 116 lines

---
 classes/autotools.bbclass |   60 +++++++++++++++++---------------------------

 1 files changed, 23 insertions(+), 37 deletions(-)
classes/autotools.bbclass +0 -0
index c8cb0e9..4d7a66b 100644
@@ -17,7 +17,7 @@ def autotools_deps(d):
                if (not oe.utils.inherits(d, 'native', 'nativesdk', 'cross',

                                         'sdk') and not d.getVar('INHIBIT_DEFAULT_DEPS', True)):
-                    deps += 'libtool-cross '
+                       deps += 'libtool-cross '

       return deps + 'gnu-config-native '

classes/autotools.bbclass +0 -0
@@ -110,22 +110,13 @@ oe_runconf () {
 
  autotools_do_configure() {

       case ${PN} in
-       autoconf*)
-       ;;
-       automake*)
+       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 )
+               find ${S} -name configure.in -o -name configure.ac | \
+                       while read fn; do
+                               rm -f dirname $fn/configure
+                       done
               if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then olddir=pwd
                       cd ${S}

classes/autotools.bbclass +0 -0
@@ -138,9 +129,7 @@ autotools_do_configure() {

                       else
                               acpaths="${acpaths}"
                       fi
-                       AUTOV=automake --version |head -n 1 |sed "s/.* //;s/\.[0-9]\+$//"
-                       automake --version
-                       echo "AUTOV is $AUTOV"
+                       AUTOV=automake --version | head -n 1 | sed "s/.* //;s/\.[0-9]\+$//" install -d ${STAGING_DATADIR}/aclocal
                       install -d ${STAGING_DATADIR}/aclocal-$AUTOV
                       acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"

classes/autotools.bbclass +0 -0
@@ -151,34 +140,31 @@ autotools_do_configure() {

                               rm -f aclocal.m4
                       fi
                       if [ -e configure.in ]; then
-                         CONFIGURE_AC=configure.in
+                               CONFIGURE_AC=configure.in
                       else
-                         CONFIGURE_AC=configure.ac
+                               CONFIGURE_AC=configure.ac
                       fi
-                       if grep -q "^[[:space:]]*AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC; then
-                         if grep -q "sed.*POTFILES" $CONFIGURE_AC; then
-                           : do nothing -- we still have an old unmodified configure.ac
-                         else
-                           oenote Executing glib-gettextize --force --copy
-                           echo "no" | glib-gettextize --force --copy
-                         fi
-                       else if grep -q "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC; then
-                         if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
-                           cp ${STAGING_DATADIR}/gettext/config.rpath ${S}/
-                         else
-                           oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
-                         fi
+                       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
+                                       echo "no" | glib-gettextize --force --copy
+                               fi
+                       else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
+                               if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
+                                       cp ${STAGING_DATADIR}/gettext/config.rpath ${S}/
+                               else
+                                       oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
+                               fi
                       fi

                       fi
                       for aux in m4 sed -n -e '/^[[:space:]]*AC_CONFIG_MACRO_DIR/s|[^(]*([[]*\([^])]*\)[]]*)|\1|p' $CONFIGURE_AC; do mkdir -p ${aux}
                       done
-                       oenote Executing autoreconf --verbose --install --force ${EXTRA_AUTORECONF} $acpaths autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed."
-                       if grep -q "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC; then
-                         oenote Executing intltoolize --copy --force --automake
-                         intltoolize --copy --force --automake
+                       if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
+                               intltoolize --copy --force --automake
                       fi
                       cd $olddir
               fi
--
1.7.2.3

_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel