| Submitter | Richard Purdie |
|---|---|
| Date | Jan. 30, 2013, 2:01 p.m. |
| Message ID | <61320cb73d2e573199e129ff355494f9ef47a6c2.1359554291.git.richard.purdie@linuxfoundation.org> |
| Download | mbox | patch |
| Permalink | /patch/43711/ |
| State | Accepted |
| Commit | 08a194c13857b02a2febf9b1484b3cdd67a18160 |
| Headers | show |
Comments
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 <richard.purdie@linuxfoundation.org> > --- > 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 \ >
Patch
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 \
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. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> --- meta/classes/package.bbclass | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)