Patchwork package.bbclass: fix spurious 'installed but not shipped' warning

login
register
mail settings
Submitter Tom Zanussi
Date Sept. 16, 2011, 3:28 p.m.
Message ID <1316186907.2384.90.camel@elmorro>
Download mbox | patch
Permalink /patch/11593/
State New, archived
Headers show

Comments

Tom Zanussi - Sept. 16, 2011, 3:28 p.m.
For packages that have files installed that aren't in a subdirectory,
the following build WARNING is emitted (this for initramfs-live-boot
as an example):

WARNING: For recipe initramfs-live-boot, the following files were
 installed but not shipped in any package:
WARNING:   init

The problem is that the filenames added to the 'seen' array are always
added with a path separator at the beginning of the filename, but when
the package dir is walked for comparison, any files at the top-level
will be missing the beginning path separator and the comparison will
fail despite the fact that the file was actually packaged.  This
because the remainder between the dirname and the dvar base name is
used in the path join and in the case of files at the top-level, the
remainder is the empty string, where it should be '/' for comparison
purposes.

Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
---
 meta/classes/package.bbclass |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
Otavio Salvador - Sept. 16, 2011, 3:46 p.m.
On Fri, Sep 16, 2011 at 12:28, Tom Zanussi <tom.zanussi@intel.com> wrote:
> Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>

Acked-by: Otavio Salvador <otavio@ossystems.com.br>

I've seen this very ofthen in our internal images so this is a very welcome fix.
Richard Purdie - Sept. 16, 2011, 4:24 p.m.
On Fri, 2011-09-16 at 10:28 -0500, Tom Zanussi wrote:
> For packages that have files installed that aren't in a subdirectory,
> the following build WARNING is emitted (this for initramfs-live-boot
> as an example):
> 
> WARNING: For recipe initramfs-live-boot, the following files were
>  installed but not shipped in any package:
> WARNING:   init
> 
> The problem is that the filenames added to the 'seen' array are always
> added with a path separator at the beginning of the filename, but when
> the package dir is walked for comparison, any files at the top-level
> will be missing the beginning path separator and the comparison will
> fail despite the fact that the file was actually packaged.  This
> because the remainder between the dirname and the dvar base name is
> used in the path join and in the case of files at the top-level, the
> remainder is the empty string, where it should be '/' for comparison
> purposes.
> 
> Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
> ---
>  meta/classes/package.bbclass |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)

Good fix, merged to master, thanks.

Richard

Patch

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 73e8f63..3dbe308 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -936,8 +936,11 @@  python populate_packages () {
 
 	unshipped = []
 	for root, dirs, files in os.walk(dvar):
+		dir = root[len(dvar):]
+		if not dir:
+			dir = os.sep
 		for f in files:
-			path = os.path.join(root[len(dvar):], f)
+			path = os.path.join(dir, f)
 			if ('.' + path) not in seen:
 				unshipped.append(path)