[oe-commits] Robert Yang : sanity.bbclass: check /bin/sh is dash or bash

git at git.openembedded.org git at git.openembedded.org
Fri Jun 26 13:02:10 UTC 2015


Module: openembedded-core.git
Branch: master-next
Commit: ecdfdd7286a2f406655577f2c4d6fcf3fe3de429
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=ecdfdd7286a2f406655577f2c4d6fcf3fe3de429

Author: Robert Yang <liezhi.yang at windriver.com>
Date:   Thu Jun 25 23:23:21 2015 -0700

sanity.bbclass: check /bin/sh is dash or bash

The build would fail when /bin/sh links to ksh or csh, we only test dash
and bash AFAIK.

* When /bin/sh -> csh:
  $ bitbake quilt-native
$ bitbake quilt-native -cfetch
Illegal variable name.
Illegal variable name.
[snip]
uname: extra operand `2'
Try `uname --help' for more information.

* When /bin/sh -> ksh:
  If there are only a few tasks running, for example,
  "bitbake quilt-native", the build would be OK, but it would fail if we
  run "bitbake world" for a while, there would be a lot of "Broken pipe"
  errors:
Exception: CalledProcessError: Command
'cd /path/to/xx; find . -type d -print | tar -cf - -C /path/to/sysroot-destdir -p --files-from - --no-recursion | tar -xf - -C /path/to/xxx'
returned non-zero exit status 2 with output tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
find: `standard output': Broken pipe
find: write error

[YOCTO #7917]

Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 meta/classes/sanity.bbclass | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index d9eff90..2855941 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -835,6 +835,10 @@ def check_sanity_everybuild(status, d):
     if 'vdi' in d.getVar('IMAGE_FSTYPES', True) and 'live' in d.getVar('IMAGE_FSTYPES', True):
         status.addresult("Error, IMAGE_FSTYPES vdi and live can't be built together\n")
 
+    # Check /bin/sh links to dash or bash
+    real_sh = os.path.realpath('/bin/sh')
+    if not real_sh.endswith('/dash') and not real_sh.endswith('/bash'):
+        status.addresult("Error, /bin/sh links to %s, must be dash or bash\n" % real_sh)
 
 def check_sanity(sanity_data):
     class SanityStatus(object):



More information about the Openembedded-commits mailing list