Patchwork [12/16] package.bbclass: Remove empty directories created as part of srcdebug handling

login
register
mail settings
Submitter Richard Purdie
Date Feb. 23, 2012, 1:38 p.m.
Message ID <4661025c2743fe020018d7b97fd6759c571c2733.1330004039.git.richard.purdie@linuxfoundation.org>
Download mbox | patch
Permalink /patch/21729/
State Accepted
Commit 4f4451f7c0f9762092eb3dbc995b4afa2572ceb6
Headers show

Comments

Richard Purdie - Feb. 23, 2012, 1:38 p.m.
We can create directories like /usr/src/debug as part of the debug file
manipulations. If these are going to end up empty, remove them to avoid QA
warnings like:

WARNING: For recipe task-core-x11, the following files/directories were installed but not shipped in any package:
WARNING:   /usr
WARNING:   /usr/src
WARNING:   /usr/src/debug
WARNING: For recipe task-core-console, the following files/directories were installed but not shipped in any package:
WARNING:   /usr
WARNING:   /usr/src
WARNING:   /usr/src/debug

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 meta/classes/package.bbclass |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

Patch

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index f6d6e1a..b579e50 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -251,7 +251,13 @@  def splitfile2(debugsrcdir, d):
     sourcefile = bb.data.expand("${WORKDIR}/debugsources.list", d)
 
     if debugsrcdir:
-       bb.mkdirhier("%s%s" % (dvar, debugsrcdir))
+       nosuchdir = []
+       basepath = dvar
+       for p in debugsrcdir.split("/"):
+           basepath = basepath + "/" + p
+           if not os.path.exists(basepath):
+               nosuchdir.append(basepath)
+       bb.mkdirhier(basepath)
 
        processdebugsrc =  "LC_ALL=C ; sort -z -u '%s' | egrep -v -z '(<internal>|<built-in>)$' | "
        # We need to ignore files that are not actually ours
@@ -268,6 +274,11 @@  def splitfile2(debugsrcdir, d):
               #bb.note("rmdir -p %s" % dir)
               os.system("rmdir -p %s 2>/dev/null" % dir)
 
+       # Also remove debugsrcdir if its empty
+       for p in nosuchdir[::-1]:
+           if not os.listdir(p):
+               os.rmdir(p)
+
 def runstrip(file, elftype, d):
     # Function to strip a single file, called from split_and_strip_files below
     # A working 'file' (one which works on the target architecture)