[oe] [meta-oe][PATCH] libmxml: Use autotools bbclass and cleanup the recipe a bit.

Christopher Larson kergoth at gmail.com
Wed Aug 21 19:48:05 UTC 2019


EXTRA_AUTORECONF = “--exclude=autopoint,autoheader"
On Aug 21, 2019, 12:12 PM -0700, Piotr Tworek <tworaz at tworaz.net>, wrote:
> The package does use autotools based build systemd but it comes with a
> bit of a twist. It explicitly disallows running autoheader on the source
> tree. Unfortunately this is what autoreconf invoked by autotools bbclass
> does. Still, there is an easy fix for this. When AUTOHEADER env variable
> is defined this is what autoreconf will invoke instead of autoheader
> binary found in PATH. If we set it to /bin/true we'll esentially satisfy
> mxml requirements without having to patch autotools bbclass.
>
> This patch also adds PACKAGECONFIG option allowing the user to toggle
> threading support in the library. Not sure how useful it is, but upstream
> does offer such option, it works, and its not a lot of work to expose it
> via PACKAGECONFIG.
>
> Another improvement is related to package optimization handling.
> mxml has a nasty habit of disregarding optimization flags passed by the
> user. It always appends -Os -g to CFLAGS in its configure script. Its
> a bit suprising to find out DEBUG_BUILD=1 in local.conf has no impact on
> libraries produced by mxml recipe. This can be fixed with a simple sed
> script.
>
> Sed is also used to enable verbose compilation output. Having full
> compiler invocations visible in the logs is generally useful, but
> more importantly it allows some of the QA checks to their work.
>
> While doing this cleanup I've also renamed the recipe from libxml_git.bb
> to libxml_3.0.bb. The git keyword suggests this recipe is for some
> random git snapshot, while in reality its for latest stable upstream
> release of the package. Fortunately for us upstream also tags releases
> in git so we can use those tags to fetch correct version of the sources.
>
> Last but not least this patch removes the bin package. Current versions of
> mxml no longer provide any tools. The package was empty.
>
> Signed-off-by: Piotr Tworek <tworaz at tworaz.net>
> ---
> .../recipes-support/libmxml/libmxml_3.0.bb | 35 +++++++++++++++
> .../recipes-support/libmxml/libmxml_git.bb | 44 -------------------
> 2 files changed, 35 insertions(+), 44 deletions(-)
> create mode 100644 meta-oe/recipes-support/libmxml/libmxml_3.0.bb
> delete mode 100644 meta-oe/recipes-support/libmxml/libmxml_git.bb
>
> diff --git a/meta-oe/recipes-support/libmxml/libmxml_3.0.bb b/meta-oe/recipes-support/libmxml/libmxml_3.0.bb
> new file mode 100644
> index 000000000..cc83e19c9
> --- /dev/null
> +++ b/meta-oe/recipes-support/libmxml/libmxml_3.0.bb
> @@ -0,0 +1,35 @@
> +DESCRIPTION = "Tiny XML Library"
> +LICENSE = "Apache-2.0"
> +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
> +HOMEPAGE = "https://www.msweet.org/mxml/"
> +BUGTRACKER = "https://github.com/michaelrsweet/mxml/issues"
> +
> +SRC_URI = "git://github.com/michaelrsweet/mxml.git"
> +SRCREV = "v${PV}"
> +S = "${WORKDIR}/git"
> +
> +inherit autotools
> +
> +PACKAGECONFIG ??= "threads"
> +PACKAGECONFIG[threads] = "--enable-threads,--disable-threads"
> +
> +# Package does not support out of tree builds.
> +B = "${S}"
> +
> +do_configure_prepend() {
> + # Respect optimization CFLAGS specified by OE.
> + sed -e 's/-Os -g//' -i ${S}/configure.ac
> +
> + # Enable verbose compilation output. This is required for extra QA checks to work.
> + sed -e '/.SILENT:/d' -i ${S}/Makefile.in
> +
> + # The package uses autotools but it explicitly states it does not
> + # support running autoheader. The following export should make sure
> + # autoreconf used by autotools.bbclass invokes /bin/true instead
> + export AUTOHEADER=$(which true)
> +}
> +
> +do_install() {
> + # Package uses DSTROOT instread of standard DESTDIR to specify install location.
> + oe_runmake install DSTROOT=${D}
> +}
> diff --git a/meta-oe/recipes-support/libmxml/libmxml_git.bb b/meta-oe/recipes-support/libmxml/libmxml_git.bb
> deleted file mode 100644
> index b17fc67e0..000000000
> --- a/meta-oe/recipes-support/libmxml/libmxml_git.bb
> +++ /dev/null
> @@ -1,44 +0,0 @@
> -DESCRIPTION = "Tiny XML Library"
> -LICENSE = "Apache-2.0"
> -LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
> -HOMEPAGE = "https://www.msweet.org/mxml/"
> -BUGTRACKER = "https://github.com/michaelrsweet/mxml/issues"
> -
> -SRC_URI = "git://github.com/michaelrsweet/mxml.git"
> -SRCREV = "c7755b6992a2afdd34dde47fc9be97f1237cfded"
> -S = "${WORKDIR}/git"
> -# v3.0
> -PV = "3.0"
> -
> -CONFIGUREOPTS = " --prefix=${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} \
> - --host=${TARGET_SYS} \
> - --build=${BUILD_SYS} \
> - ${PACKAGECONFIG_CONFARGS} \
> - "
> -
> -do_configure() {
> - install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
> - install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
> - ./configure ${CONFIGUREOPTS} --enable-shared
> -}
> -
> -do_install () {
> - export DSTROOT=${D}
> - oe_runmake install
> -}
> -
> -PACKAGES += " ${PN}-bin "
> -FILES_${PN} = "${libdir}/*"
> -FILES_${PN}-bin = "${bindir}/*"
> --
> 2.21.0
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel


More information about the Openembedded-devel mailing list