[oe] e2fsprogs-libs build failure analysis

Khem Raj raj.khem at gmail.com
Sun Jul 12 20:34:34 UTC 2009


Hi

Like many others I was also getting this problem reported on this mailing list in past 

http://article.gmane.org/gmane.comp.handhelds.openembedded/24445/match=e2fsprogs+libs

I looked a bit into this and the problem is that PN gets overwritten when 
do_package_write_ipk -> read_subpackage_metadata 

this loop below reads the subpkgdata also reads PV PN and PR which are then overwritten
by bb.data.setVar(key, sdata[key], d)

       for pkg in bb.data.getVar('PACKAGES', d, 1).split():
                sdata = read_subpkgdata(pkg, d)
                for key in sdata.keys():
                        bb.data.setVar(key, sdata[key], d)


when this loop exits the last subpackage it read is build/eglibc/omap5912osk/pkgdata/armv5te-angstrom-linux-gnueabi/runtime/libblkid

which says that PN is util-linux-ng
and this value of PN is updated last into the bb.data for e2fsprogs-libs
so when do_package_ipk () is called it wants to get WORKDIR

workdir = bb.data.getVar('WORKDIR', d, 1)

but WORKDIR consits of PN PV and PR so it calculates it wrongly

So I think problem is caused because of emitting PV, PN and PR into pkgdata files
which is then read and updated into bb.data

I added a workaround in base.bbclass

diff --git a/classes/base.bbclass b/classes/base.bbclass
index bc50c67..5eefdb7 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -1090,7 +1090,9 @@ def read_pkgdata(pn, d):
 python read_subpackage_metadata () {
        import bb
        data = read_pkgdata(bb.data.getVar('PN', d, 1), d)
-
+       pn = bb.data.getVar('PN', d, 1)
+       pv = bb.data.getVar('PV', d, 1)
+       pr = bb.data.getVar('PR', d, 1)
        for key in data.keys():
                bb.data.setVar(key, data[key], d)

@@ -1098,6 +1100,9 @@ python read_subpackage_metadata () {
                sdata = read_subpkgdata(pkg, d)
                for key in sdata.keys():
                        bb.data.setVar(key, sdata[key], d)
+       bb.data.setVar('PN', pn, d)
+       bb.data.setVar('PV', pv, d)
+       bb.data.setVar('PR', pr, d)
 }


and it works now but I feel this is not the right fix. 

util-linux-ng.inc has

PACKAGES_DYNAMIC = "libblkid*"

and e2fsprogs-libs.inc has

do_stage () {
        for i in libcom_err libss libuuid libblkid; do
                oe_libinstall -a -C lib $i ${STAGING_LIBDIR}
.....
}

probably this also needs some thought.

Thanks

-Khem


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20090712/946f7fe0/attachment-0002.sig>


More information about the Openembedded-devel mailing list