On 01/30/2013 06:01 AM, Richard Purdie wrote:
The symlink handling code doesn't need to being part of populate_packages
and is logically separate so split it out into a separate function,
package_fixsymlinks.


Not sure why, this patch causes a problem with the hicolor-icon-theme.

The problem I see is:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
ERROR:      0127:        bb.note("adding hicolor-icon-theme dependency to %s" % 
pkg)
ERROR:      0128:        rdepends = d.getVar('RDEPENDS_%s' % pkg, True)
ERROR:  *** 0129:        rdepends = rdepends + ' ' + d.getVar('MLPREFIX') + 
"hicolor-icon-t

In this case the rdepends is a NoneType.

I have a patch on the queue that solves the problem. I changed the lines above to use d.appendVar().

Sau!



Signed-off-by: Richard Purdie <[email protected]>
---
  meta/classes/package.bbclass |   17 ++++++++++++-----
  1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 858afbd..8bf80f5 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -919,7 +919,7 @@ python split_and_strip_files () {
  }

  python populate_packages () {
-    import glob, stat, errno, re, subprocess
+    import glob, re, subprocess

      workdir = d.getVar('WORKDIR', True)
      outdir = d.getVar('DEPLOY_DIR', True)
@@ -1037,10 +1037,17 @@ python populate_packages () {
              package_qa_handle_error("installed_vs_shipped", msg, d)

      bb.build.exec_func("package_name_hook", d)
+}
+populate_packages[dirs] = "${D}"
+
+python package_fixsymlinks () {
+    import errno
+    pkgdest = d.getVar('PKGDEST', True)
+    packages = d.getVar("PACKAGES").split()

      dangling_links = {}
      pkg_files = {}
-    for pkg in package_list:
+    for pkg in packages:
          dangling_links[pkg] = []
          pkg_files[pkg] = []
          inst_root = os.path.join(pkgdest, pkg)
@@ -1059,13 +1066,13 @@ python populate_packages () {
                          target = os.path.join(root[len(inst_root):], target)
                      dangling_links[pkg].append(os.path.normpath(target))

-    for pkg in package_list:
+    for pkg in packages:
          rdepends = bb.utils.explode_dep_versions2(d.getVar('RDEPENDS_' + pkg, True) or 
d.getVar('RDEPENDS', True) or "")

          for l in dangling_links[pkg]:
              found = False
              bb.debug(1, "%s contains dangling link %s" % (pkg, l))
-            for p in package_list:
+            for p in packages:
                  for f in pkg_files[p]:
                      if f == l:
                          found = True
@@ -1079,7 +1086,6 @@ python populate_packages () {
                  bb.note("%s contains dangling symlink to %s" % (pkg, l))
          d.setVar('RDEPENDS_' + pkg, bb.utils.join_deps(rdepends, 
commasep=False))
  }
-populate_packages[dirs] = "${D}"

  PKGDESTWORK = "${WORKDIR}/pkgdata"

@@ -1842,6 +1848,7 @@ PACKAGEFUNCS ?= "package_get_auto_pr \
                  split_and_strip_files \
                  fixup_perms \
                  populate_packages \
+                package_fixsymlinks \
                  package_do_filedeps \
                  package_do_shlibs \
                  package_do_pkgconfig \


_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Reply via email to