On Tue, Feb 8, 2011 at 8:16 AM, Chris Larson <[email protected]> wrote: > 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. > > Signed-off-by: Chris Larson <[email protected]>
Acked-by: Khem Raj <[email protected]> > --- > 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 > > diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass > index a88a4d1..6f30a9e 100644 > --- a/classes/autotools.bbclass > +++ b/classes/autotools.bbclass > @@ -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 > diff --git a/classes/autotools/bootstrap.bbclass > b/classes/autotools/bootstrap.bbclass > new file mode 100644 > index 0000000..f992aa3 > --- /dev/null > +++ b/classes/autotools/bootstrap.bbclass > @@ -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 > +} > diff --git a/classes/autotools/configure.bbclass > b/classes/autotools/configure.bbclass > new file mode 100644 > index 0000000..8f93d9c > --- /dev/null > +++ b/classes/autotools/configure.bbclass > @@ -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 > diff --git a/classes/autotools/staging.inc b/classes/autotools/staging.inc > new file mode 100644 > index 0000000..6fa45cb > --- /dev/null > +++ b/classes/autotools/staging.inc > @@ -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 > _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
