autotools: break up into multiple files
PATCH 1/4 autotools: break up into multiple files
From: Chris Larson <[email protected]>
Split up most of autotools.bbclass into:
- classes/autotools/configure.inc
- classes/autotools/bootstrap.inc
- classes/autotools/staging.inc
--- classes/autotools.bbclass | 243 ++++----------------------------------- classes/autotools/bootstrap.inc | 70 +++++++++++ classes/autotools/configure.inc | 91 +++++++++++++++ classes/autotools/staging.inc | 36 ++++++ 4 files changed, 222 insertions(+), 218 deletions(-) create mode 100644 classes/autotools/bootstrap.inc create mode 100644 classes/autotools/configure.inc create mode 100644 classes/autotools/staging.inc
classes/autotools.bbclass +25 -218
@@ -1,237 +1,44 @@ -# use autotools_stage_all for native packages -AUTOTOOLS_NATIVE_STAGE_INSTALL = "1" +require classes/autotools/staging.inc +require classes/autotools/bootstrap.inc +require classes/autotools/configure.inc def autotools_deps(d): - if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1): - return '' + if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1): + return '' - pn = bb.data.getVar('PN', d, 1) - deps = '' + 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 in ['autoconf-native', 'automake-native', 'help2man-native']: + return deps - 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 ' + deps += 'autoconf-native automake-native help2man-native ' - return deps + 'gnu-config-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 ' -EXTRA_OEMAKE = "" + return deps + 'gnu-config-native ' DEPENDS_prepend = "${@autotools_deps(d)}" DEPENDS_virtclass-native_prepend = "${@autotools_deps(d)}" DEPENDS_virtclass-nativesdk_prepend = "${@autotools_deps(d)}" -inherit siteinfo +autotools_do_configure () { + autotools_do_bootstrap -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 + 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} + oe_runmake 'DESTDIR=${D}' install } EXPORT_FUNCTIONS do_configure do_install -
classes/autotools/bootstrap.inc new file +70 -0
70 lines not on this page · raw message
classes/autotools/configure.inc new file +91 -0
91 lines not on this page · raw message
classes/autotools/staging.inc new file +36 -0
@@ -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
PATCH 2/4 autotools: shift deps into AUTOTOOLS_DEPENDS
From: Chris Larson <[email protected]>
--- classes/autotools.bbclass | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)
classes/autotools.bbclass +6 -4
@@ -21,11 +21,13 @@ def autotools_deps(d): not d.getVar('INHIBIT_DEFAULT_DEPS', True)): deps += 'libtool-cross ' - return deps + 'gnu-config-native ' + return deps + ' gnu-config-native' -DEPENDS_prepend = "${@autotools_deps(d)}" -DEPENDS_virtclass-native_prepend = "${@autotools_deps(d)}" -DEPENDS_virtclass-nativesdk_prepend = "${@autotools_deps(d)}" +AUTOTOOLS_DEPENDS = "${@autotools_deps(d)}" + +DEPENDS_prepend = "${AUTOTOOLS_DEPENDS} " +DEPENDS_virtclass-native_prepend = "${AUTOTOOLS_DEPENDS} " +DEPENDS_virtclass-nativesdk_prepend = "${AUTOTOOLS_DEPENDS} " autotools_do_configure () { autotools_do_bootstrap
Signature · 1 line
1.7.2.3
Re: [PATCH 2/4] autotools: shift deps into AUTOTOOLS_DEPENDS
Quoted 3 lines · Chris Larson
From: Chris Larson <[email protected]>
Signed-off-by Chris Larson <[email protected]>
Quoted 34 lines
--- classes/autotools.bbclass | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)classes/autotools.bbclass +6
-4@@ -21,11 +21,13 @@ def autotools_deps(d): not d.getVar('INHIBIT_DEFAULT_DEPS', True)): deps += 'libtool-cross ' - return deps + 'gnu-config-native ' + return deps + ' gnu-config-native' -DEPENDS_prepend = "${@autotools_deps(d)}" -DEPENDS_virtclass-native_prepend = "${@autotools_deps(d)}" -DEPENDS_virtclass-nativesdk_prepend = "${@autotools_deps(d)}" +AUTOTOOLS_DEPENDS = "${@autotools_deps(d)}" + +DEPENDS_prepend = "${AUTOTOOLS_DEPENDS} " +DEPENDS_virtclass-native_prepend = "${AUTOTOOLS_DEPENDS} " +DEPENDS_virtclass-nativesdk_prepend = "${AUTOTOOLS_DEPENDS} " autotools_do_configure () { autotools_do_bootstrapSignature · 7 lines
1.7.2.3 _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
Signature · 1 line
-Khem
PATCH 3/4 autotools: add INHIBIT_AUTOTOOLS_BOOTSTRAP
In reply to Chris LarsonFrom: Chris Larson <[email protected]>
Setting this variable to a true value (obeying the semantics of the 'boolean' type in oe.types) will result in not running autoreconf, and not depending on the things which the autoreconf requires. Note that the config.guess/config.sub files are still updated when using INHIBIT_AUTOTOOLS_BOOTSTRAP, and these are updated directly via a find+ln rather than through gnu-configize usage in order to avoid the dependency upon autoconf/automake (gnu-configize is included with gnu-config, but requires the perl modules from the other recipes).
--- classes/autotools.bbclass | 29 ++++++++++++++++++++++------- 1 files changed, 22 insertions(+), 7 deletions(-)
classes/autotools.bbclass +22 -7
@@ -2,26 +2,31 @@ require classes/autotools/staging.inc require classes/autotools/bootstrap.inc require classes/autotools/configure.inc +INHIBIT_AUTOTOOLS_BOOTSTRAP ?= "false" +INHIBIT_AUTOTOOLS_BOOTSTRAP[type] = "boolean" + def autotools_deps(d): if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1): return '' - pn = bb.data.getVar('PN', d, 1) - deps = '' + deps = 'gnu-config-native' + if oe.data.typed_value('INHIBIT_AUTOTOOLS_BOOTSTRAP', d): + return deps + pn = bb.data.getVar('PN', d, 1) if pn in ['autoconf-native', 'automake-native', 'help2man-native']: return deps - deps += 'autoconf-native automake-native help2man-native ' + deps += ' autoconf-native automake-native help2man-native' if pn not in ['libtool', 'libtool-native', 'libtool-cross']: - deps += 'libtool-native ' + deps += ' libtool-native' 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' + return deps AUTOTOOLS_DEPENDS = "${@autotools_deps(d)}"
@@ -29,8 +34,18 @@ DEPENDS_prepend = "${AUTOTOOLS_DEPENDS} " DEPENDS_virtclass-native_prepend = "${AUTOTOOLS_DEPENDS} " DEPENDS_virtclass-nativesdk_prepend = "${AUTOTOOLS_DEPENDS} " +_INHIBITED = "${@base_ifelse(oe.data.typed_value('INHIBIT_AUTOTOOLS_BOOTSTRAP', \ + d), \ + 'y', 'n')}" autotools_do_configure () { - autotools_do_bootstrap + if [ "${_INHIBITED}" = "n" ]; then + autotools_do_bootstrap + else + 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 "{}" \; + fi if [ -e ${S}/configure ]; then oe_runconf $@
Signature · 1 line
1.7.2.3
Re: [PATCH 3/4] autotools: add INHIBIT_AUTOTOOLS_BOOTSTRAP
Quoted 11 lines · Chris Larson
From: Chris Larson <[email protected]>
Setting this variable to a true value (obeying the semantics of the 'boolean' type in oe.types) will result in not running autoreconf, and not depending on the things which the autoreconf requires. Note that the config.guess/config.sub files are still updated when using
INHIBIT_AUTOTOOLS_BOOTSTRAP, and these are updated directly via a find+ln rather than through gnu-configize usage in order to avoid the dependency upon autoconf/automake (gnu-configize is included with gnu-config, but requires the perl modules from the other recipes).
Quoted 1 line
Signed-off-by Chris Larson <[email protected]>
Quoted 74 lines
--- classes/autotools.bbclass | 29 ++++++++++++++++++++++------- 1 files changed, 22 insertions(+), 7 deletions(-)classes/autotools.bbclass +22
-7@@ -2,26 +2,31 @@ require classes/autotools/staging.inc require classes/autotools/bootstrap.inc require classes/autotools/configure.inc +INHIBIT_AUTOTOOLS_BOOTSTRAP ?= "false" +INHIBIT_AUTOTOOLS_BOOTSTRAP[type] = "boolean" + def autotools_deps(d): if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1): return '' - pn = bb.data.getVar('PN', d, 1) - deps = '' + deps = 'gnu-config-native' + if oe.data.typed_value('INHIBIT_AUTOTOOLS_BOOTSTRAP', d): + return deps + pn = bb.data.getVar('PN', d, 1) if pn in ['autoconf-native', 'automake-native', 'help2man-native']: return deps - deps += 'autoconf-native automake-native help2man-native ' + deps += ' autoconf-native automake-native help2man-native' if pn not in ['libtool', 'libtool-native', 'libtool-cross']: - deps += 'libtool-native ' + deps += ' libtool-native' 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' + return deps AUTOTOOLS_DEPENDS = "${@autotools_deps(d)}"@@ -29,8 +34,18 @@ DEPENDS_prepend = "${AUTOTOOLS_DEPENDS} " DEPENDS_virtclass-native_prepend = "${AUTOTOOLS_DEPENDS} " DEPENDS_virtclass-nativesdk_prepend = "${AUTOTOOLS_DEPENDS} " +_INHIBITED = "${@base_ifelse(oe.data.typed_value('INHIBIT_AUTOTOOLS_BOOTSTRAP', \ + d), \ + 'y', 'n')}" autotools_do_configure () { - autotools_do_bootstrap + if [ "${_INHIBITED}" = "n" ]; then + autotools_do_bootstrap + else + 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 "{}" \; + fi if [ -e ${S}/configure ]; then oe_runconf $@Signature · 7 lines
1.7.2.3 _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
Signature · 1 line
-Khem
PATCH 4/4 autotools: avoid special casing autoconf/automake/help2man
In reply to Chris LarsonFrom: Chris Larson <[email protected]>
--- classes/autotools.bbclass | 6 +----- recipes/autoconf/autoconf.inc | 3 ++- recipes/automake/automake.inc | 4 +--- recipes/help2man/help2man_1.36.4.bb | 6 +----- recipes/help2man/help2man_1.38.2.bb | 6 +----- 5 files changed, 6 insertions(+), 19 deletions(-)
classes/autotools.bbclass +1 -5
@@ -13,13 +13,9 @@ def autotools_deps(d): if oe.data.typed_value('INHIBIT_AUTOTOOLS_BOOTSTRAP', d): return deps - pn = bb.data.getVar('PN', d, 1) - 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']: + if d.getVar('BPN', True) != 'libtool': deps += ' libtool-native' if (not oe.utils.inherits(d, 'native', 'nativesdk', 'cross', 'sdk') and
recipes/autoconf/autoconf.inc +2 -1
@@ -5,8 +5,9 @@ HOMEPAGE = "http://www.gnu.org/software/autoconf/" SECTION = "devel" DEPENDS += "m4-native perl-native" RDEPENDS_${PN} = "m4 perl gnu-config" -DEPENDS_virtclass-native = "m4-native gnu-config-native perl-native" +DEPENDS_virtclass-native = "m4-native perl-native" RDEPENDS_${PN}_virtclass-native = "m4-native gnu-config-native perl-native" +INHIBIT_AUTOTOOLS_BOOTSTRAP_virtclass-native = "true" INC_PR = "r13"
recipes/automake/automake.inc +1 -3
@@ -28,6 +28,7 @@ RDEPENDS_automake += "\ perl-module-strict \ perl-module-text-parsewords \ perl-module-vars " +INHIBIT_AUTOTOOLS_BOOTSTRAP_virtclass-native = "true" SRC_URI = "${GNU_MIRROR}/automake/automake-${PV}.tar.bz2;name=automake" INC_PR = "r4" AUTOMAKE_API = "${@".".join(bb.data.getVar("PV",d,1).split(".")[0:2])}"
@@ -36,9 +37,6 @@ inherit autotools FILES_${PN} += "${datadir}/automake* ${datadir}/aclocal*" -do_configure_append() { -} - do_install_append () { autotools_do_install # replace paths to STAGING_BINDIR_NATIVE/perl with ${bindir}/perl
recipes/help2man/help2man_1.36.4.bb +1 -5
@@ -5,6 +5,7 @@ LICENSE = "GPLv2" DEPENDS = "gettext-native perl-native liblocale-gettext-perl-native" DEPENDS_virtclass-native = "perl-native autoconf-native automake-native" RDEPENDS_${PN} = "gettext perl liblocale-gettext-perl" +INHIBIT_AUTOTOOLS_BOOTSTRAP = "true" TARGET_CC_ARCH += "${LDFLAGS}"
@@ -16,11 +17,6 @@ BBCLASSEXTEND = "native" PR = "r3" -# We don't want to reconfigure things -do_configure() { - oe_runconf -} - do_install_append () { # Make sure we use /usr/bin/env perl sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2man
recipes/help2man/help2man_1.38.2.bb +1 -5
@@ -5,6 +5,7 @@ DEPENDS = "gettext-native perl-native liblocale-gettext-perl-native" DEPENDS_virtclass-native = "perl-native autoconf-native automake-native" RDEPENDS_${PN} = "gettext perl liblocale-gettext-perl" RDEPENDS_${PN}_virtclass-native = "" +INHIBIT_AUTOTOOLS_BOOTSTRAP = "true" PR = "r2" SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
@@ -18,11 +19,6 @@ EXTRA_OECONF = "--disable-nls" BBCLASSEXTEND = "native" -# We don't want to reconfigure things -do_configure() { - oe_runconf -} - do_install_append () { # Make sure we use /usr/bin/env perl sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2man
Signature · 1 line
1.7.2.3
Re: [PATCH 4/4] autotools: avoid special casing autoconf/automake/help2man
Quoted 3 lines · Chris Larson
From: Chris Larson <[email protected]>
Signed-off-by Chris Larson <[email protected]>
we need to document INHIBIT_AUTOTOOLS_BOOTSTRAP
Quoted 120 lines
--- classes/autotools.bbclass | 6 +----- recipes/autoconf/autoconf.inc | 3 ++- recipes/automake/automake.inc | 4 +--- recipes/help2man/help2man_1.36.4.bb | 6 +----- recipes/help2man/help2man_1.38.2.bb | 6 +----- 5 files changed, 6 insertions(+), 19 deletions(-)classes/autotools.bbclass +1
-5@@ -13,13 +13,9 @@ def autotools_deps(d): if oe.data.typed_value('INHIBIT_AUTOTOOLS_BOOTSTRAP', d): return deps - pn = bb.data.getVar('PN', d, 1) - 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']: + if d.getVar('BPN', True) != 'libtool': deps += ' libtool-native' if (not oe.utils.inherits(d, 'native', 'nativesdk', 'cross', 'sdk') andrecipes/autoconf/autoconf.inc +2
-1@@ -5,8 +5,9 @@ HOMEPAGE = "http://www.gnu.org/software/autoconf/" SECTION = "devel" DEPENDS += "m4-native perl-native" RDEPENDS_${PN} = "m4 perl gnu-config" -DEPENDS_virtclass-native = "m4-native gnu-config-native perl-native" +DEPENDS_virtclass-native = "m4-native perl-native" RDEPENDS_${PN}_virtclass-native = "m4-native gnu-config-native perl-native" +INHIBIT_AUTOTOOLS_BOOTSTRAP_virtclass-native = "true" INC_PR = "r13"recipes/automake/automake.inc +1
-3@@ -28,6 +28,7 @@ RDEPENDS_automake += "\ perl-module-strict \ perl-module-text-parsewords \ perl-module-vars " +INHIBIT_AUTOTOOLS_BOOTSTRAP_virtclass-native = "true" SRC_URI = "${GNU_MIRROR}/automake/automake-${PV}.tar.bz2;name=automake" INC_PR = "r4" AUTOMAKE_API = "${@".".join(bb.data.getVar("PV",d,1).split(".")[0:2])}"@@ -36,9 +37,6 @@ inherit autotools FILES_${PN} += "${datadir}/automake* ${datadir}/aclocal*" -do_configure_append() { -} - do_install_append () { autotools_do_install # replace paths to STAGING_BINDIR_NATIVE/perl with ${bindir}/perlrecipes/help2man/help2man_1.36.4.bb +1
-5@@ -5,6 +5,7 @@ LICENSE = "GPLv2" DEPENDS = "gettext-native perl-native liblocale-gettext-perl-native" DEPENDS_virtclass-native = "perl-native autoconf-native automake-native" RDEPENDS_${PN} = "gettext perl liblocale-gettext-perl" +INHIBIT_AUTOTOOLS_BOOTSTRAP = "true" TARGET_CC_ARCH += "${LDFLAGS}"@@ -16,11 +17,6 @@ BBCLASSEXTEND = "native" PR = "r3" -# We don't want to reconfigure things -do_configure() { - oe_runconf -} - do_install_append () { # Make sure we use /usr/bin/env perl sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2manrecipes/help2man/help2man_1.38.2.bb +1
-5@@ -5,6 +5,7 @@ DEPENDS = "gettext-native perl-native liblocale-gettext-perl-native" DEPENDS_virtclass-native = "perl-native autoconf-native automake-native" RDEPENDS_${PN} = "gettext perl liblocale-gettext-perl" RDEPENDS_${PN}_virtclass-native = "" +INHIBIT_AUTOTOOLS_BOOTSTRAP = "true" PR = "r2" SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"@@ -18,11 +19,6 @@ EXTRA_OECONF = "--disable-nls" BBCLASSEXTEND = "native" -# We don't want to reconfigure things -do_configure() { - oe_runconf -} - do_install_append () { # Make sure we use /usr/bin/env perl sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2manSignature · 7 lines
1.7.2.3 _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
Signature · 1 line
-Khem
Quoted 9 lines · Chris Larson
From: Chris Larson <[email protected]>
Split up most of autotools.bbclass into:
- classes/autotools/configure.inc
- classes/autotools/bootstrap.inc
- classes/autotools/staging.incSigned-off-by Chris Larson <[email protected]>
Quoted 500 lines
--- classes/autotools.bbclass | 243 ++++----------------------------------- classes/autotools/bootstrap.inc | 70 +++++++++++ classes/autotools/configure.inc | 91 +++++++++++++++ classes/autotools/staging.inc | 36 ++++++ 4 files changed, 222 insertions(+), 218 deletions(-) create mode 100644 classes/autotools/bootstrap.inc create mode 100644 classes/autotools/configure.inc create mode 100644 classes/autotools/staging.incclasses/autotools.bbclass +25
-218@@ -1,237 +1,44 @@ -# use autotools_stage_all for native packages -AUTOTOOLS_NATIVE_STAGE_INSTALL = "1" +require classes/autotools/staging.inc +require classes/autotools/bootstrap.inc +require classes/autotools/configure.inc def autotools_deps(d): - if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1): - return '' + if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1): + return '' - pn = bb.data.getVar('PN', d, 1) - deps = '' + 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 in ['autoconf-native', 'automake-native', 'help2man-native']: + return deps - 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 ' + deps += 'autoconf-native automake-native help2man-native ' - return deps + 'gnu-config-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 ' -EXTRA_OEMAKE = "" + return deps + 'gnu-config-native ' DEPENDS_prepend = "${@autotools_deps(d)}" DEPENDS_virtclass-native_prepend = "${@autotools_deps(d)}" DEPENDS_virtclass-nativesdk_prepend = "${@autotools_deps(d)}" -inherit siteinfo +autotools_do_configure () { + autotools_do_bootstrap -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 + 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} + oe_runmake 'DESTDIR=${D}' install } EXPORT_FUNCTIONS do_configure do_install -classes/autotools/bootstrap.inc new file +70
-0@@ -0,0 +1,70 @@ +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_bootstrap() { + 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 +}classes/autotools/configure.inc new file +91
-0@@ -0,0 +1,91 @@ +# use autotools_stage_all for native packages +AUTOTOOLS_NATIVE_STAGE_INSTALL = "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 +} + +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 +}classes/autotools/staging.inc new file +36
-0@@ -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 · 7 lines
1.7.2.3 _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
Signature · 1 line
-Khem