[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