Patchwork [1/1] sstate.bbclass: Make sure we don't have an empty fixmepath file

login
register
mail settings
Submitter Mark Hatle
Date May 17, 2012, 8:34 p.m.
Message ID <9e0928b2bbffb04eb4888be4d937e3b432160269.1337286797.git.mark.hatle@windriver.com>
Download mbox | patch
Permalink /patch/27937/
State Accepted
Commit 326563d5a897ae2dba7cfd8d73579d3d979d72c8
Headers show

Comments

Mark Hatle - May 17, 2012, 8:34 p.m.
Jason Wessel noticed that a package without any fixmepath entries would
generate a sed warning about no input files.  This patch resolves that
by ensuring that an empty fixmepath file never gets written into the
sstate archive.  Also we avoid a second message by only doing xargs if
we got input.

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
---
 meta/classes/sstate.bbclass |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)
Richard Purdie - May 18, 2012, 2:32 p.m.
On Thu, 2012-05-17 at 15:34 -0500, Mark Hatle wrote:
> Jason Wessel noticed that a package without any fixmepath entries would
> generate a sed warning about no input files.  This patch resolves that
> by ensuring that an empty fixmepath file never gets written into the
> sstate archive.  Also we avoid a second message by only doing xargs if
> we got input.
> 
> Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
> Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
> ---
>  meta/classes/sstate.bbclass |   17 ++++++++++++-----
>  1 files changed, 12 insertions(+), 5 deletions(-)

Merged to master, thanks.

Richard

Patch

diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 3fc615d..ace4c1f 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -330,20 +330,27 @@  def sstate_hardcode_path(d):
 		sstate_grep_cmd = "grep -l -e '%s'" % (staging_host)
 		sstate_sed_cmd = "sed -i -e 's:%s:FIXMESTAGINGDIRHOST:g'" % (staging_host)
 	
+	fixmefn =  sstate_builddir + "fixmepath"
+
 	sstate_scan_cmd = d.getVar('SSTATE_SCAN_CMD', True)
-	sstate_filelist_cmd = "tee %sfixmepath" % (sstate_builddir)
+	sstate_filelist_cmd = "tee %s" % (fixmefn)
 
 	# fixmepath file needs relative paths, drop sstate_builddir prefix
-	sstate_filelist_relative_cmd = "sed -i -e 's:^%s::g' %sfixmepath" % (sstate_builddir, sstate_builddir)
+	sstate_filelist_relative_cmd = "sed -i -e 's:^%s::g' %s" % (sstate_builddir, fixmefn)
 
 	# Limit the fixpaths and sed operations based on the initial grep search
 	# This has the side effect of making sure the vfs cache is hot
-	sstate_hardcode_cmd = "%s | xargs %s | %s | xargs %s" % (sstate_scan_cmd, sstate_grep_cmd, sstate_filelist_cmd, sstate_sed_cmd)
+	sstate_hardcode_cmd = "%s | xargs %s | %s | xargs --no-run-if-empty %s" % (sstate_scan_cmd, sstate_grep_cmd, sstate_filelist_cmd, sstate_sed_cmd)
 
 	print "Removing hardcoded paths from sstate package: '%s'" % (sstate_hardcode_cmd)
 	os.system(sstate_hardcode_cmd)
-	print "Replacing absolute paths in fixmepath file: '%s'" % (sstate_filelist_relative_cmd)
-	os.system(sstate_filelist_relative_cmd)
+
+        # If the fixmefn is empty, remove it..
+	if os.stat(fixmefn).st_size == 0:
+		os.remove(fixmefn)
+	else:
+		print "Replacing absolute paths in fixmepath file: '%s'" % (sstate_filelist_relative_cmd)
+		os.system(sstate_filelist_relative_cmd)
 
 def sstate_package(ss, d):
     import oe.path