[oe] [patch] autotools: detect missing depends for aclocal packages
Holger Hans Peter Freyther
holger+oe at freyther.de
Wed Aug 12 09:35:14 UTC 2009
On Thursday 04 June 2009 18:18:03 Phil Blundell wrote:
> On Thu, 2009-06-04 at 17:13 +0300, Ihar Hrachyshka wrote:
> > -DEPENDS = "gmp-native"
> > +DEPENDS = "gmp-native gettext-native"
>
> For laughs, here's a small patch to detect this kind of thing
> automatically in at least some cases.
>
> p.
Signed-Off-by: Holger Freyther <zecke at selfish.org>
>
> --
>
> diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass
> index e43b289..214da3c 100644
> --- a/classes/autotools.bbclass
> +++ b/classes/autotools.bbclass
> @@ -67,6 +67,49 @@ oe_runconf () {
> fi
> }
>
> +python autotools_do_check_aclocal() {
> + frags = bb.data.expand('${T}/acfragments', d)
> + bb.note(frags)
> + if os.path.exists(frags):
> + pcproviders = {}
> + needed = []
> + f = open(frags, "r")
> + import re
> + sr = re.compile("aclocal: saw macro (.*)")
> + fr = re.compile("aclocal: found macro (.*) in .*/(.*).m4")
> + for l in f.readlines():
> + l = l.rstrip()
> + m = sr.match(l)
> + if m:
> + if not m.group(1) in needed:
> + needed.append(m.group(1))
> + else:
> + m = fr.match(l)
> + if m:
> + pcproviders[m.group(1)] =
> m.group(2) + f.close()
> + needed_pkgs = []
> + for n in needed:
> + if not pcproviders.has_key(n):
> + continue
> + fn =
> bb.data.expand("${STAGING_DIR}/${HOST_SYS}/acdeps/%s.m4" % pcproviders[n],
> d) + if os.path.exists(fn):
> + f = open(fn, "r")
> + p = f.readline().rstrip()
> + f.close()
> + if not p in needed_pkgs:
> + needed_pkgs.append(p)
> + deps = bb.data.getVar("DEPENDS", d, True).split()
> + lost = []
> + for n in needed_pkgs:
> + if not n in deps:
> + lost.append(n)
> + if lost:
> + bb.note("possibly missing dependencies: %s" % "
> ".join(lost)) +}
> +
> +addtask check_aclocal after do_configure
> +
> autotools_do_configure() {
> case ${PN} in
> autoconf*)
> @@ -126,6 +169,8 @@ autotools_do_configure() {
> oenote Executing intltoolize --copy --force --automake
> intltoolize --copy --force --automake
> fi
> + oenote Extracting list of required m4 fragments
> + aclocal --output=/dev/null --verbose 2>&1 | egrep
> '(^aclocal: found macro)|(^aclocal: saw macro)' > ${T}/acfragments || true
> oenote Executing autoreconf --verbose --install --force ${EXTRA_AUTORECONF}
> $acpaths mkdir -p m4
> autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF}
> $acpaths || oefatal "autoreconf execution failed." @@ -239,8 +284,14 @@
> autotools_stage_all() {
> rm -rf ${STAGE_TEMP}/${mandir} || true
> rm -rf ${STAGE_TEMP}/${infodir} || true
> autotools_stage_dir ${STAGE_TEMP}/${datadir} ${STAGING_DATADIR}
> + if [ -d ${STAGE_TEMP}/${datadir}/aclocal ]; then
> + mkdir -p ${STAGING_DIR}/${HOST_SYS}/acdeps
> + for i in `find ${STAGE_TEMP}/${datadir}/aclocal/ -name
> '*.m4'`; do + echo ${PN} >
> ${STAGING_DIR}/${HOST_SYS}/acdeps/`basename $i` + done
> + fi
> rm -rf ${STAGE_TEMP}
> }
>
> -EXPORT_FUNCTIONS do_configure do_install
> +EXPORT_FUNCTIONS do_configure do_install do_check_aclocal
>
>
>
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
More information about the Openembedded-devel
mailing list