On Wed, Apr 03, 2013 at 12:14:33PM +0200, Martin Jansa wrote:
> * when PACKAGE_ARCH is changed e.g. from MACHINE_ARCH to TUNE_PKGARCH
>   get_subpkgedata_fn is still reading old MACHINE_ARCH directory instead of 
> newer with TUNE_PKGARCH

This is too strict in some cases, e.g.:

ERROR: More then one pkgdata dir found for pkg 'opkg-collateral'
(
'/OE/shr-core/tmp-eglibc/pkgdata/cortexa8-vfp-neon-oe-linux-gnueabi/runtime/opkg-collateral',
'/OE/shr-core/tmp-eglibc/pkgdata/armv5te-oe-linux-gnueabi/runtime/opkg-collateral'),
returning first

Why do we need to look in all pkgdatadirs? Why not just PACKAGE_ARCH?

> ---
>  meta/lib/oe/packagedata.py | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/lib/oe/packagedata.py b/meta/lib/oe/packagedata.py
> index 62fd718..2533700 100644
> --- a/meta/lib/oe/packagedata.py
> +++ b/meta/lib/oe/packagedata.py
> @@ -34,11 +34,18 @@ def get_subpkgedata_fn(pkg, d):
>      dirs = all_pkgdatadirs(d)
>  
>      pkgdata = d.expand('${TMPDIR}/pkgdata/')
> +    found = None
>      for dir in dirs:
>          fn = pkgdata + dir + pkg
>          if os.path.exists(fn):
> -            return fn
> -    return d.expand('${PKGDATA_DIR}/runtime/%s' % pkg)
> +         if found:
> +                bb.error("More then one pkgdata dir found for pkg '%s' 
> ('%s', '%s'), returning first" % (pkg, found, fn))
> +                continue
> +            found = fn
> +    if found:
> +        return found
> +    else:
> +        return d.expand('${PKGDATA_DIR}/runtime/%s' % pkg)
>  
>  def has_subpkgdata(pkg, d):
>      return os.access(get_subpkgedata_fn(pkg, d), os.R_OK)
> @@ -68,6 +75,7 @@ def read_subpkgdata_dict(pkg, d):
>      return ret
>  
>  def _pkgmap(d):
> +    import bb
>      """Return a dictionary mapping package to recipe name."""
>  
>      target_os = d.getVar("TARGET_OS", True)
> @@ -85,6 +93,7 @@ def _pkgmap(d):
>              continue
>  
>          for pn in filter(lambda f: not 
> os.path.isdir(os.path.join(pkgdatadir, f)), files):
> +            bb.warn("Trying path '%s'" % os.path.join(pkgdatadir, pn))
>              try:
>                  pkgdata = read_pkgdatafile(os.path.join(pkgdatadir, pn))
>              except OSError:
> -- 
> 1.8.1.5
> 

-- 
Martin 'JaMa' Jansa     jabber: martin.ja...@gmail.com

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Reply via email to