autotools-bootstrap: make bootstrap package specific.

The theory behind this bbclass was reasonable, with the primary
goal being to avoid multiple downloads of gnulib, but it neglected
the fact that packages would be shipping a specific version of the
./bootstrap which will support some flags but maybe not all the
latest ones from the latest gnulib/build-aux/bootstrap file.

I attempted to simply update the two pkgs to use the latest copy
of bootstrap from gnulib but this of course triggers the descent
into autoconf hell that we all know and love.  Rather than futzing
with the packages configure.ac and deviating from what the pkg
maintainers intended and tested, we can just let the packages have
independent calls to ./bootstrap with whatever flags are needed.

The goal of this commit is to move the prepend out to the packages
and then delete the class without any real functional change ; i.e.
a purely mechanical change.  Then we can adjust each package to
ensure it will still build with a modern host, in an independent
fashion, while keeping the main advantage of not fetching gnulib
two extra times for netcf and fontforge.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
This commit is contained in:
Paul Gortmaker 2016-05-08 15:08:12 -04:00 committed by Armin Kuster
parent 761a6866c7
commit 3cec94aef8
3 changed files with 38 additions and 26 deletions

View File

@ -16,13 +16,33 @@ DEPENDS += "augeas libnl libxslt libxml2 gnulib"
S = "${WORKDIR}/git"
inherit gettext autotools-bootstrap pkgconfig systemd
inherit gettext autotools pkgconfig systemd
EXTRA_OECONF_append_class-target = " --with-driver=redhat"
PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd", "", d)}"
PACKAGECONFIG[systemd] = "--with-sysinit=systemd,--with-sysinit=initscripts,"
do_configure_prepend() {
currdir=`pwd`
cd ${S}
# avoid bootstrap cloning gnulib on every configure
cat >.gitmodules <<EOF
[submodule "gnulib"]
path = gnulib
url = git://git.sv.gnu.org/gnulib
EOF
cp -rf ${STAGING_DATADIR}/gnulib ${S}
# --force to avoid errors on reconfigure e.g if recipes changed we depend on
# | bootstrap: running: libtoolize --quiet
# | libtoolize: error: 'libltdl/COPYING.LIB' exists: use '--force' to overwrite
# | ...
./bootstrap --force
cd $currdir
}
do_install_append() {
if ${@base_contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}${systemd_unitdir}/system

View File

@ -1,24 +0,0 @@
# Class to inherit when you want to build with autotools after running bootstrap
inherit autotools
DEPENDS += "gnulib"
do_configure_prepend() {
currdir=`pwd`
cd ${S}
# avoid bootstrap cloning gnulib on every configure
cat >.gitmodules <<EOF
[submodule "gnulib"]
path = gnulib
url = git://git.sv.gnu.org/gnulib
EOF
cp -rf ${STAGING_DATADIR}/gnulib ${S}
# --force to avoid errors on reconfigure e.g if recipes changed we depend on
# | bootstrap: running: libtoolize --quiet
# | libtoolize: error: 'libltdl/COPYING.LIB' exists: use '--force' to overwrite
# | ...
./bootstrap --force
cd $currdir
}

View File

@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = " \
DEPENDS = "glib-2.0 pango giflib tiff libxml2 jpeg python libtool uthash"
DEPENDS_append_class-target = " libxi"
inherit autotools-bootstrap pkgconfig pythonnative distro_features_check
inherit autotools pkgconfig pythonnative distro_features_check
REQUIRED_DISTRO_FEATURES_append_class-target = " x11"
@ -24,8 +24,24 @@ do_configure_prepend() {
# uthash sources are expected in uthash/src
currdir=`pwd`
cd ${S}
mkdir -p uthash/src
cp ${STAGING_INCDIR}/ut*.h uthash/src
# avoid bootstrap cloning gnulib on every configure
cat >.gitmodules <<EOF
[submodule "gnulib"]
path = gnulib
url = git://git.sv.gnu.org/gnulib
EOF
cp -rf ${STAGING_DATADIR}/gnulib ${S}
# --force to avoid errors on reconfigure e.g if recipes changed we depend on
# | bootstrap: running: libtoolize --quiet
# | libtoolize: error: 'libltdl/COPYING.LIB' exists: use '--force' to overwrite
# | ...
./bootstrap --force
cd $currdir
}