[oe] e2fsprogs-libs build failure analysis
Denys Dmytriyenko
denis at denix.org
Mon Jul 13 03:57:13 UTC 2009
On Sun, Jul 12, 2009 at 01:34:34PM -0700, Khem Raj wrote:
> 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
Khem,
Have you seen this thread several months ago with the same analysis:
http://thread.gmane.org/gmane.comp.handhelds.openembedded/22376/focus=22556
As I said before, pkgdata/runtime handling needs fixing - if multiple recipes
(or even target vs. native/sdk of the same package, like it was with curl)
provide the identically named .so library (libblkid in this case) during the
build, there may be a conflict in the pkgdata/runtime files.
What are the pkgdata files are used for ultimately? Do they need to contain
PN/PV/PR? That was introduced by the commit mentioned in the thread above...
Should it be reverted?
Lets ask Richard - he made this change in Poky, maybe he has a better fix for
it... :)
--
Denys
> 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
>
>
> _______________________________________________
> 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