Skip to contentSkip to conversation

rdepends fixes and QA check: file-rdeps

PATCH In review Robert Yang 2 participants 14 messages Aug 27, 2014 – Sep 3, 2014

lore
Share & tools
lore
#0 lore raw

cover rdepends fixes and QA check: file-rdeps

Hello,

I resent the remaining ones and put all of them in the same thread.

// Robert

The following changes since commit d0be4b37743492fc9c178fd6f9ef73a5eb2fd9c3:

chrpath: Drop warning from darwn builds (2014-08-17 10:01:30 +0100)

are available in the git repository at:

git://git.openembedded.org/openembedded-core-contrib rbt/rdeps
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=rbt/rdeps

Robert Yang (9):
insane.bbclass: add QA check: file-rdeps
ltp: fix RDEPENDS
meta: fix RDEPNEDS for the test related pkgs valgrind/oprofile/systemd: no bashism in run-ptest
run-ptest: fix bashism
lsbtest: no bashism in LSB_Test.sh
sed: add sed to RDEPENDS sed-ptest
bootchart2: no bashism in bootchartd.in
python3-distribute: fix interpreter

 meta/classes/insane.bbclass                        |   73 +++++++++++++++++++-
 meta/recipes-core/libxml/libxml2.inc               |    2 +
 meta/recipes-core/systemd/systemd/run-ptest        |    2 +
 meta/recipes-core/udev/udev.inc                    |    2 +-
 .../bootchart2/bootchartd-no-bashism.patch         |   27 ++++++++
 meta/recipes-devtools/bootchart2/bootchart2_git.bb |    6 +-
 meta/recipes-devtools/insserv/files/run-ptest      |    2 +-
 .../python/python3-distribute_0.6.32.bb            |    2 +
 meta/recipes-devtools/quilt/quilt-0.63.inc         |    2 +-
 meta/recipes-devtools/quilt/quilt/run-ptest        |    2 +-
 meta/recipes-devtools/tcltk/tcl/run-ptest          |    4 +-
 meta/recipes-devtools/valgrind/valgrind/run-ptest  |    3 +-
 meta/recipes-extended/gawk/gawk-4.1.1/run-ptest    |    4 +-
 meta/recipes-extended/lsb/lsbtest/LSB_Test.sh      |    2 +-
 meta/recipes-extended/ltp/ltp_20140422.bb          |    2 +-
 meta/recipes-extended/pam/libpam_1.1.6.bb          |   11 ++-
 meta/recipes-extended/sed/sed_4.2.2.bb             |    2 +-
 meta/recipes-kernel/lttng/lttng-tools_2.5.0.bb     |    2 +-
 meta/recipes-kernel/oprofile/oprofile/run-ptest    |    3 +-
 meta/recipes-support/beecrypt/beecrypt/run-ptest   |    2 +-
 20 files changed, 135 insertions(+), 20 deletions(-)
 create mode 100644 meta/recipes-devtools/bootchart2/bootchart2/bootchartd-no-bashism.patch
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/9 insane.bbclass: add QA check: file-rdeps

The ipk or deb can't depend on file such as "/bin/bash" or "/usr/bin/perl", so it knows nothing about the pkg depends bash or perl, thus there would be dependencies problems when we run "apt-get install/remove <pkg>" on the target, this check can help us find the issues and then fix them manually.

* Benefits:
- Help to fix file rdepends issues for ipk and deb
- Help to fix abnormal rdepends.
- Help to check whether the rdepends is OK or not after build each recipe (don't have to install to the image), for example, a recipe may generate 10 binary packages, only a part of them will be installed to the image by default, we can know whether the rdepends are OK or not for the ones which are installed, but can't know the ones which are not installed, this patch can help check all the 10 binary packages' rdepends.

* Basic designs:
- Get all the RDEPENDS on the chain.

- Get the pkg's FILERPROVIDES from oe.packagedata.read_subpkgdata() and save to set filerdepends.

- Get each RPDEPENDS' FILERPROVIDES, RPROVIDES and FILERPROVIDESFLIST, and save to set rdep_rprovides.

- Do the set "filerdepends -= rdep_rprovides" and QA issue if filerdepends is not null.

[YOCTO #1662]

---
 meta/classes/insane.bbclass |   73 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 72 insertions(+), 1 deletion(-)
meta/classes/insane.bbclass +72 -1
index 3dd2e7f..d5b4317 100644
@@ -29,7 +29,7 @@ QA_SANE = "True"
 WARN_QA ?= "ldflags useless-rpaths rpaths staticdev libdir xorg-driver-abi \
             textrel already-stripped incompatible-license files-invalid \
             installed-vs-shipped compile-host-path install-host-path \
-            pn-overrides infodir build-deps \
+            pn-overrides infodir build-deps file-rdeps \
             "
 ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
             perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
@@ -797,6 +797,76 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
                 error_msg = "%s rdepends on %s, but it isn't a build dependency?" % (pkg, rdepend)
                 sane = package_qa_handle_error("build-deps", error_msg, d)
 
+        if "file-rdeps" not in skip:
+            ignored_file_rdeps = set(['/bin/sh', '/usr/bin/env', 'rtld(GNU_HASH)'])
+            if bb.data.inherits_class('nativesdk', d):
+                ignored_file_rdeps |= set(['/bin/bash', '/usr/bin/perl'])
+            # For Saving the FILERDEPENDS
+            filerdepends = set()
+            rdep_data = oe.packagedata.read_subpkgdata(pkg, d)
+            for key in rdep_data:
+                if key.startswith("FILERDEPENDS_"):
+                    for subkey in rdep_data[key].split():
+                        filerdepends.add(subkey)
+            filerdepends -= ignored_file_rdeps
+
+            if filerdepends:
+                next = rdepends
+                done = rdepends[:]
+                # Find all the rdepends on the dependency chain
+                while next:
+                    new = []
+                    for rdep in next:
+                        rdep_data = oe.packagedata.read_subpkgdata(rdep, d)
+                        sub_rdeps = rdep_data.get("RDEPENDS_" + rdep)
+                        if not sub_rdeps:
+                            continue
+                        for sub_rdep in sub_rdeps.split():
+                            if sub_rdep in done:
+                                continue
+                            if not sub_rdep.startswith('(') and \
+                                    oe.packagedata.has_subpkgdata(sub_rdep, d):
+                                # It's a new rdep
+                                done.append(sub_rdep)
+                                new.append(sub_rdep)
+                    next = new
+
+                # Add the rprovides of itself
+                if pkg not in done:
+                    done.insert(0, pkg)
+
+                # The python is not a package, but python-core provides it, so
+                # skip checking /usr/bin/python if python is in the rdeps, in
+                # case there is a RDEPENDS_pkg = "python" in the recipe.
+                for py in [ d.getVar('MLPREFIX', True) + "python", "python" ]:
+                    if py in done:
+                        filerdepends.discard("/usr/bin/python")
+                        done.remove(py)
+                for rdep in done:
+                    # For Saving the FILERPROVIDES, RPROVIDES and FILES_INFO
+                    rdep_rprovides = set()
+                    rdep_data = oe.packagedata.read_subpkgdata(rdep, d)
+                    for key in rdep_data:
+                        if key.startswith("FILERPROVIDES_") or key.startswith("RPROVIDES_"):
+                            for subkey in rdep_data[key].split():
+                                rdep_rprovides.add(subkey)
+                        # Add the files list to the rprovides
+                        if key == "FILES_INFO":
+                            # Use eval() to make it as a dict
+                            for subkey in eval(rdep_data[key]):
+                                rdep_rprovides.add(subkey)
+                    filerdepends -= rdep_rprovides
+                    if not filerdepends:
+                        # Break if all the file rdepends are met
+                        break
+                    else:
+                        # Clear it for the next loop
+                        rdep_rprovides.clear()
+            if filerdepends:
+                error_msg = "%s requires %s, but no providers in its RDEPENDS" % \
+                            (pkg, ', '.join(str(e) for e in filerdepends))
+                sane = package_qa_handle_error("file-rdeps", error_msg, d)
+
     return sane
 
 def package_qa_check_deps(pkg, pkgdest, skip, d):
@@ -894,6 +964,7 @@ python do_package_qa () {
     for dep in taskdepdata:
         taskdeps.add(taskdepdata[dep][0])
 
+
     g = globals()
     walk_sane = True
     rdepends_sane = True
Signature · 1 line
1.7.9.5
#2 lore raw

Re: [PATCH 1/9] insane.bbclass: add QA check: file-rdeps

Removed a blank line and put this patch to:

git://git.openembedded.org/openembedded-core-contrib rbt/rdeps

// Robert

Quoted 135 lines · Robert Yang

The ipk or deb can't depend on file such as "/bin/bash" or "/usr/bin/perl", so it knows nothing about the pkg depends bash or perl, thus there would be dependencies problems when we run "apt-get install/remove <pkg>" on the target, this check can help us find the issues and then fix them manually.

* Benefits:
- Help to fix file rdepends issues for ipk and deb
- Help to fix abnormal rdepends.
- Help to check whether the rdepends is OK or not after build each recipe (don't have to install to the image), for example, a recipe may generate 10 binary packages, only a part of them will be installed to the image by default, we can know whether the rdepends are OK or not for the ones which are installed, but can't know the ones which are not installed, this patch can help check all the 10 binary packages' rdepends.

* Basic designs:
- Get all the RDEPENDS on the chain.

- Get the pkg's FILERPROVIDES from oe.packagedata.read_subpkgdata() and save to set filerdepends.

- Get each RPDEPENDS' FILERPROVIDES, RPROVIDES and FILERPROVIDESFLIST, and save to set rdep_rprovides.

- Do the set "filerdepends -= rdep_rprovides" and QA issue if filerdepends is not null.

[YOCTO #1662]

---
  meta/classes/insane.bbclass |   73 ++++++++++++++++++++++++++++++++++++++++++-
  1 file changed, 72 insertions(+), 1 deletion(-)
meta/classes/insane.bbclass +72 -1
index 3dd2e7f..d5b4317 100644
@@ -29,7 +29,7 @@ QA_SANE = "True"
  WARN_QA ?= "ldflags useless-rpaths rpaths staticdev libdir xorg-driver-abi \
              textrel already-stripped incompatible-license files-invalid \
              installed-vs-shipped compile-host-path install-host-path \
-            pn-overrides infodir build-deps \
+            pn-overrides infodir build-deps file-rdeps \
              "
  ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
              perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
@@ -797,6 +797,76 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
                  error_msg = "%s rdepends on %s, but it isn't a build dependency?" % (pkg, rdepend)
                  sane = package_qa_handle_error("build-deps", error_msg, d)
 
+        if "file-rdeps" not in skip:
+            ignored_file_rdeps = set(['/bin/sh', '/usr/bin/env', 'rtld(GNU_HASH)'])
+            if bb.data.inherits_class('nativesdk', d):
+                ignored_file_rdeps |= set(['/bin/bash', '/usr/bin/perl'])
+            # For Saving the FILERDEPENDS
+            filerdepends = set()
+            rdep_data = oe.packagedata.read_subpkgdata(pkg, d)
+            for key in rdep_data:
+                if key.startswith("FILERDEPENDS_"):
+                    for subkey in rdep_data[key].split():
+                        filerdepends.add(subkey)
+            filerdepends -= ignored_file_rdeps
+
+            if filerdepends:
+                next = rdepends
+                done = rdepends[:]
+                # Find all the rdepends on the dependency chain
+                while next:
+                    new = []
+                    for rdep in next:
+                        rdep_data = oe.packagedata.read_subpkgdata(rdep, d)
+                        sub_rdeps = rdep_data.get("RDEPENDS_" + rdep)
+                        if not sub_rdeps:
+                            continue
+                        for sub_rdep in sub_rdeps.split():
+                            if sub_rdep in done:
+                                continue
+                            if not sub_rdep.startswith('(') and \
+                                    oe.packagedata.has_subpkgdata(sub_rdep, d):
+                                # It's a new rdep
+                                done.append(sub_rdep)
+                                new.append(sub_rdep)
+                    next = new
+
+                # Add the rprovides of itself
+                if pkg not in done:
+                    done.insert(0, pkg)
+
+                # The python is not a package, but python-core provides it, so
+                # skip checking /usr/bin/python if python is in the rdeps, in
+                # case there is a RDEPENDS_pkg = "python" in the recipe.
+                for py in [ d.getVar('MLPREFIX', True) + "python", "python" ]:
+                    if py in done:
+                        filerdepends.discard("/usr/bin/python")
+                        done.remove(py)
+                for rdep in done:
+                    # For Saving the FILERPROVIDES, RPROVIDES and FILES_INFO
+                    rdep_rprovides = set()
+                    rdep_data = oe.packagedata.read_subpkgdata(rdep, d)
+                    for key in rdep_data:
+                        if key.startswith("FILERPROVIDES_") or key.startswith("RPROVIDES_"):
+                            for subkey in rdep_data[key].split():
+                                rdep_rprovides.add(subkey)
+                        # Add the files list to the rprovides
+                        if key == "FILES_INFO":
+                            # Use eval() to make it as a dict
+                            for subkey in eval(rdep_data[key]):
+                                rdep_rprovides.add(subkey)
+                    filerdepends -= rdep_rprovides
+                    if not filerdepends:
+                        # Break if all the file rdepends are met
+                        break
+                    else:
+                        # Clear it for the next loop
+                        rdep_rprovides.clear()
+            if filerdepends:
+                error_msg = "%s requires %s, but no providers in its RDEPENDS" % \
+                            (pkg, ', '.join(str(e) for e in filerdepends))
+                sane = package_qa_handle_error("file-rdeps", error_msg, d)
+
      return sane
 
  def package_qa_check_deps(pkg, pkgdest, skip, d):
@@ -894,6 +964,7 @@ python do_package_qa () {
      for dep in taskdepdata:
          taskdeps.add(taskdepdata[dep][0])
 
+
      g = globals()
      walk_sane = True
      rdepends_sane = True
#3 lore raw

PATCH 2/9 ltp: fix RDEPENDS

In reply to Robert Yang

Fixed:
/opt/ltp/testcases/bin/aio01 -> libaio
/opt/ltp/testcases/bin/*.sh -> bash
/opt/ltp/testcases/bin/*.py -> python
/opt/ltp/bin/*.awk -> awk

---
 meta/recipes-extended/ltp/ltp_20140422.bb |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-extended/ltp/ltp_20140422.bb +1 -1
index 30761fd..c658bc0 100644
@@ -65,7 +65,7 @@ do_install(){
     find ${D} -type f -print | xargs grep "\!.*\/usr\/bin\/expect" | awk -F":" '{print $1}' | xargs rm -f
 }
 
-RDEPENDS_${PN} = "perl e2fsprogs-mke2fs"
+RDEPENDS_${PN} = "perl e2fsprogs-mke2fs python-core libaio bash gawk"
 
 FILES_${PN}-dbg += "\
     /opt/ltp/runtest/.debug \
Signature · 1 line
1.7.9.5
#4 lore raw

PATCH 3/9 meta: fix RDEPNEDS for the test related pkgs

In reply to Robert Yang

Add bash, python or perl to the ptest pkgs to fix the RDEPENDS issues.

---
 meta/recipes-core/libxml/libxml2.inc           |    2 ++
 meta/recipes-core/udev/udev.inc                |    2 +-
 meta/recipes-extended/pam/libpam_1.1.6.bb      |   11 +++++++++--
 meta/recipes-kernel/lttng/lttng-tools_2.5.0.bb |    2 +-
 4 files changed, 13 insertions(+), 4 deletions(-)
meta/recipes-core/libxml/libxml2.inc +2 -0
index 2dffc5a..10f3d34 100644
@@ -27,6 +27,8 @@ BINCONFIG = "${bindir}/xml2-config"
 
 inherit autotools pkgconfig binconfig-disabled pythonnative ptest
 
+RDEPENDS_${PN}-ptest += "python-core"
+
 RDEPENDS_${PN}-ptest_append_libc-glibc += "eglibc-gconv-ebcdic-us eglibc-gconv-ibm1141"
 
 # We don't DEPEND on binutils for ansidecl.h so ensure we don't use the header
meta/recipes-core/udev/udev.inc +1 -1
index 11204aa..280da10 100644
@@ -31,7 +31,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
            file://init"
 
 inherit autotools pkgconfig update-rc.d ptest
-RDEPENDS_${PN}-ptest += "make"
+RDEPENDS_${PN}-ptest += "make perl"
 
 libexecdir = "${base_libdir}"
 EXTRA_OECONF = "--disable-introspection \
meta/recipes-extended/pam/libpam_1.1.6.bb +9 -2
index c06709f..d7033d0 100644
@@ -72,8 +72,15 @@ libpam_suffix = "suffix${@get_multilib_bit(d)}"
 RPROVIDES_${PN} += "${PN}-${libpam_suffix}"
 RPROVIDES_${PN}-runtime += "${PN}-runtime-${libpam_suffix}"
 
-RDEPENDS_${PN}-runtime = "${PN}-${libpam_suffix} pam-plugin-deny-${libpam_suffix} pam-plugin-permit-${libpam_suffix} pam-plugin-warn-${libpam_suffix} pam-plugin-unix-${libpam_suffix}"
-RDEPENDS_${PN}-xtests = "${PN}-${libpam_suffix} pam-plugin-access-${libpam_suffix} pam-plugin-debug-${libpam_suffix} pam-plugin-cracklib-${libpam_suffix} pam-plugin-pwhistory-${libpam_suffix} pam-plugin-succeed-if-${libpam_suffix} pam-plugin-time-${libpam_suffix} coreutils"
+RDEPENDS_${PN}-runtime = "${PN}-${libpam_suffix} \
+    pam-plugin-deny-${libpam_suffix} pam-plugin-permit-${libpam_suffix} \
+    pam-plugin-warn-${libpam_suffix} pam-plugin-unix-${libpam_suffix} \
+    "
+RDEPENDS_${PN}-xtests = "${PN}-${libpam_suffix} \
+    pam-plugin-access-${libpam_suffix} pam-plugin-debug-${libpam_suffix} \
+    pam-plugin-cracklib-${libpam_suffix} pam-plugin-pwhistory-${libpam_suffix} \
+    pam-plugin-succeed-if-${libpam_suffix} pam-plugin-time-${libpam_suffix} \
+    coreutils bash"
 #RRECOMMENDS_${PN} = "${PN}-runtime-${libpam_suffix}"
 
 python populate_packages_prepend () {
meta/recipes-kernel/lttng/lttng-tools_2.5.0.bb +1 -1
index 14e5f9e..560a243 100644
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=01d7fc4496aacf37d90df90b90b0cac1 \
                     file://lgpl-2.1.txt;md5=0f0d71500e6a57fd24d825f33242b9ca"
 
 DEPENDS = "liburcu popt lttng-ust libxml2"
-RDEPENDS_${PN}-ptest += "make"
+RDEPENDS_${PN}-ptest += "make perl bash"
 
 SRCREV = "8b27cacb277c2cdab791139b08da8eb87ab14a88"
 PV = "v2.5.0"
Signature · 1 line
1.7.9.5
#5 lore raw

PATCH 4/9 valgrind/oprofile/systemd: no bashism in run-ptest

In reply to Robert Yang

There is no bashism in the scripts, so use /bin/sh, and add /bin/sh interpreter for systemd's run-ptest.

---
 meta/recipes-core/systemd/systemd/run-ptest       |    2 ++
 meta/recipes-devtools/valgrind/valgrind/run-ptest |    3 ++-
 meta/recipes-kernel/oprofile/oprofile/run-ptest   |    3 ++-
 3 files changed, 6 insertions(+), 2 deletions(-)
meta/recipes-core/systemd/systemd/run-ptest +2 -0
index 2f6bd93..a2d61c2 100644
@@ -1,3 +1,5 @@
+#!/bin/sh
+
 tar -C test -xJf test/sys.tar.xz
 make test/rules-test.sh.log
 make test/udev-test.pl.log
meta/recipes-devtools/valgrind/valgrind/run-ptest +2 -1
index 7d0584a..f9a72ec 100755
@@ -1,4 +1,5 @@
-#!/bin/bash
+#!/bin/sh
+
 # run-ptest - 'ptest' test infrastructure shell script that
 #   wraps the valgrind regression script vg_regtest. 
 #   Must be run in the /usr/lib/valgrind/ptest directory. 
meta/recipes-kernel/oprofile/oprofile/run-ptest +2 -1
index 583ee1b..4814be6 100644
@@ -1,4 +1,5 @@
-#!/bin/bash
+#!/bin/sh
+
 saved_dir=$PWD
 for dir in */tests ; do
 	cd $dir
Signature · 1 line
1.7.9.5
#6 lore raw

PATCH 5/9 run-ptest: fix bashism

In reply to Robert Yang

These script use /bin/sh as the interpreter, but contains bashism:

    recipes-devtools/insserv/files/run-ptest
    recipes-devtools/quilt/quilt/run-ptest
    recipes-devtools/tcltk/tcl/run-ptest
    recipes-extended/gawk/gawk-4.1.1/run-ptest
    recipes-support/beecrypt/beecrypt/run-ptest

Fixed:

    "==" -> "=" (should be -eq when integer)
    "&>log" -> ">log 2>&1"

And quilt's test scripts requires bash, add bash to RDEPENDS_quilt-ptest

---
 meta/recipes-devtools/insserv/files/run-ptest    |    2 +-
 meta/recipes-devtools/quilt/quilt-0.63.inc       |    2 +-
 meta/recipes-devtools/quilt/quilt/run-ptest      |    2 +-
 meta/recipes-devtools/tcltk/tcl/run-ptest        |    4 ++--
 meta/recipes-extended/gawk/gawk-4.1.1/run-ptest  |    4 ++--
 meta/recipes-support/beecrypt/beecrypt/run-ptest |    2 +-
 6 files changed, 8 insertions(+), 8 deletions(-)
meta/recipes-devtools/insserv/files/run-ptest +1 -1
index 495d155..4a6da30 100644
@@ -11,7 +11,7 @@ output() {
 }
 
 for i in test_simple_sequence test_undetected_loop; \
-  do $i &>/dev/null ; output; \
+  do $i >/dev/null 2>&1; output; \
 done
 
 rm -rf ${tmpdir}
meta/recipes-devtools/quilt/quilt-0.63.inc +1 -1
index f375785..433d6b4 100644
@@ -55,5 +55,5 @@ do_install_ptest() {
 RDEPENDS_${PN}-ptest = "make file sed gawk diffutils findutils ed perl \
                         perl-module-filehandle perl-module-getopt-std \
                         perl-module-posix perl-module-file-temp \
-                        perl-module-text-parsewords \
+                        perl-module-text-parsewords bash \
 "
meta/recipes-devtools/quilt/quilt/run-ptest +1 -1
index 1ea0dae..958a9df 100755
@@ -1,5 +1,5 @@
 #!/bin/sh
 
 ln -sf /bin/ed /usr/bin/ed
-for i in `ls test/*.test |awk -F. '{print $1}' |awk -F/ '{print $2}'`; do make check-$i; if [ $? == 0 ]; then echo PASS: $i.test; else echo FAIL: $i.test; fi; done
+for i in `ls test/*.test |awk -F. '{print $1}' |awk -F/ '{print $2}'`; do make check-$i; if [ $? -eq 0 ]; then echo PASS: $i.test; else echo FAIL: $i.test; fi; done
 rm -f /usr/bin/ed
meta/recipes-devtools/tcltk/tcl/run-ptest +2 -2
index a5d6548..dadba65 100644
@@ -1,8 +1,8 @@
 #!/bin/sh
 
 for i in `ls tests/*.test |awk -F/ '{print $2}'`; \
-    do TCL_LIBRARY=library ./tcltest tests/all.tcl -file $i &>$i.tmp; \
+    do TCL_LIBRARY=library ./tcltest tests/all.tcl -file $i >$i.tmp 2>&1; \
     grep -q "^Files with failing tests:" $i.tmp; \
-    if [ $? == 0 ]; then echo "FAIL: $i"; \
+    if [ $? -eq 0 ]; then echo "FAIL: $i"; \
     else echo "PASS: $i"; rm -f $i.tmp; fi; \
 done
meta/recipes-extended/gawk/gawk-4.1.1/run-ptest +2 -2
index 7d214ea..d23f0bf 100644
@@ -3,8 +3,8 @@
 cd test
 for i in `grep -vE "@|^$|#|Gt-dummy" Maketests |awk -F: '{print $1}'`; \
   do LC_ALL=${GAWKLOCALE:-C} LANG=${GAWKLOCALE:-C} srcdir=`pwd` AWK=gawk CMP=cmp \
-  make -f Maketests $i &>$i.tmp; \
+  make -f Maketests $i >$i.tmp 2>&1; \
   grep -q "Error" $i.tmp; \
-  if [ $? == 0 ]; then echo "FAIL: $i"; \
+  if [ $? -eq 0 ]; then echo "FAIL: $i"; \
   else echo "PASS: $i"; rm -f $i.tmp; fi; \
 done
meta/recipes-support/beecrypt/beecrypt/run-ptest +1 -1
index 5bc7460..2ee294d 100644
@@ -1,5 +1,5 @@
 #!/bin/sh
 
 cd tests
-for i in `ls`; do ./$i; if [ $? == 0 ]; then echo "PASS: $i"; \
+for i in `ls`; do ./$i; if [ $? -eq 0 ]; then echo "PASS: $i"; \
     else echo "FAIL: $i"; fi; done
Signature · 1 line
1.7.9.5
#7 lore raw

PATCH 6/9 lsbtest: no bashism in LSB_Test.sh

In reply to Robert Yang

So use /bin/sh

---
 meta/recipes-extended/lsb/lsbtest/LSB_Test.sh |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-extended/lsb/lsbtest/LSB_Test.sh +1 -1
index ab79985..b9971a1 100644
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 
 # Copyright (C) 2012 Wind River Systems, Inc.
 #
Signature · 1 line
1.7.9.5
#8 lore raw

PATCH 7/9 sed: add sed to RDEPENDS sed-ptest

In reply to Robert Yang

Its test scripts require /bin/sed.

---
 meta/recipes-extended/sed/sed_4.2.2.bb |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-extended/sed/sed_4.2.2.bb +1 -1
index 74ac16b..ea39dae 100644
@@ -14,7 +14,7 @@ SRC_URI[md5sum] = "4111de4faa3b9848a0686b2f260c5056"
 SRC_URI[sha256sum] = "fea0a94d4b605894f3e2d5572e3f96e4413bcad3a085aae7367c2cf07908b2ff"
 
 inherit autotools texinfo update-alternatives gettext ptest
-RDEPENDS_${PN}-ptest += "make locale-base-ru-ru"
+RDEPENDS_${PN}-ptest += "make locale-base-ru-ru ${PN}"
 
 EXTRA_OECONF = "--disable-acl \
                 ${@bb.utils.contains('PTEST_ENABLED', '1', '--enable-regex-tests', '', d)}"
Signature · 1 line
1.7.9.5
#9 lore raw

PATCH 8/9 bootchart2: no bashism in bootchartd.in

In reply to Robert Yang

So use /bin/sh

---
 .../bootchart2/bootchartd-no-bashism.patch         |   27 ++++++++++++++++++++
 meta/recipes-devtools/bootchart2/bootchart2_git.bb |    6 +++--
 2 files changed, 31 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-devtools/bootchart2/bootchart2/bootchartd-no-bashism.patch
meta/recipes-devtools/bootchart2/bootchart2/bootchartd-no-bashism.patch new file +27 -0
new file mode 100644
index 0000000..b013995
@@ -0,0 +1,27 @@
+From ffb5bae5d588aaea6325623462a8070a04767196 Mon Sep 17 00:00:00 2001
+From: Robert Yang <[email protected]>
+Date: Thu, 14 Aug 2014 08:33:28 -0700
+Subject: [PATCH] bootchartd.in: no bashism
+
+No bashism in bootchartd.in, so use /bin/sh.
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <[email protected]>
+---
+ bootchartd.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bootchartd.in b/bootchartd.in
+index a408bab..064f6a4 100755
+--- a/bootchartd.in
++++ b/bootchartd.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # Bootchart logger script
+ # Ziga Mahkovec  <[email protected]>
+-- 
+1.7.9.5
+
meta/recipes-devtools/bootchart2/bootchart2_git.bb +4 -2
index 4116304..04fb901 100644
@@ -91,8 +91,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=44ac4678311254db62edf8fd39cb8124"
 # one commit beyond 1.14.6 for a systemd-related bugfix
 PV = "0.14.6+git${SRCPV}"
 
-SRC_URI = "git://github.com/mmeeks/bootchart.git"
-SRC_URI += "file://bootchartd_stop.sh"
+SRC_URI = "git://github.com/mmeeks/bootchart.git \
+           file://bootchartd_stop.sh \
+           file://bootchartd-no-bashism.patch \
+          "
 
 SRCREV = "b65ed43b0ae832080fb728245de9ef1a4b48d8b5"
 
Signature · 1 line
1.7.9.5
#10 lore raw

Re: [PATCH 8/9] bootchart2: no bashism in bootchartd.in

Would you be okay with me sending this one upstream? I think it's a worthwhile modification.

-Max

Quoted 62 lines · Robert Yang

So use /bin/sh

---
 .../bootchart2/bootchartd-no-bashism.patch         |   27 ++++++++++++++++++++
 meta/recipes-devtools/bootchart2/bootchart2_git.bb |    6 +++--
 2 files changed, 31 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-devtools/bootchart2/bootchart2/bootchartd-no-bashism.patch
meta/recipes-devtools/bootchart2/bootchart2/bootchartd-no-bashism.patch new file +27 -0
new file mode 100644
index 0000000..b013995
@@ -0,0 +1,27 @@
+From ffb5bae5d588aaea6325623462a8070a04767196 Mon Sep 17 00:00:00 2001
+From: Robert Yang <[email protected]>
+Date: Thu, 14 Aug 2014 08:33:28 -0700
+Subject: [PATCH] bootchartd.in: no bashism
+
+No bashism in bootchartd.in, so use /bin/sh.
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <[email protected]>
+---
+ bootchartd.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bootchartd.in b/bootchartd.in
+index a408bab..064f6a4 100755
+--- a/bootchartd.in
++++ b/bootchartd.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # Bootchart logger script
+ # Ziga Mahkovec  <[email protected]>
+-- 
+1.7.9.5
+
meta/recipes-devtools/bootchart2/bootchart2_git.bb +4 -2
index 4116304..04fb901 100644
@@ -91,8 +91,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=44ac4678311254db62edf8fd39cb8124"
 # one commit beyond 1.14.6 for a systemd-related bugfix
 PV = "0.14.6+git${SRCPV}"
 
-SRC_URI = "git://github.com/mmeeks/bootchart.git"
-SRC_URI += "file://bootchartd_stop.sh"
+SRC_URI = "git://github.com/mmeeks/bootchart.git \
+           file://bootchartd_stop.sh \
+           file://bootchartd-no-bashism.patch \
+          "
 
 SRCREV = "b65ed43b0ae832080fb728245de9ef1a4b48d8b5"
 
Signature · 1 line
1.7.9.5
#11 lore raw

Re: [PATCH 8/9] bootchart2: no bashism in bootchartd.in

Quoted 2 lines · Max Eliaser

Would you be okay with me sending this one upstream? I think it's a worthwhile modification.

Yes, of course, thanks for sending.

// Robert

Quoted 70 lines

-Max

Quoted 62 lines · Robert Yang

So use /bin/sh

---
  .../bootchart2/bootchartd-no-bashism.patch         |   27 ++++++++++++++++++++
  meta/recipes-devtools/bootchart2/bootchart2_git.bb |    6 +++--
  2 files changed, 31 insertions(+), 2 deletions(-)

create mode 100644 meta/recipes-devtools/bootchart2/bootchart2/bootchartd-no-bashism.patch

meta/recipes-devtools/bootchart2/bootchart2/bootchartd-no-bashism.patch new file +27 -0
new file mode 100644
index 0000000..b013995
@@ -0,0 +1,27 @@
+From ffb5bae5d588aaea6325623462a8070a04767196 Mon Sep 17 00:00:00 2001
+From: Robert Yang <[email protected]>
+Date: Thu, 14 Aug 2014 08:33:28 -0700
+Subject: [PATCH] bootchartd.in: no bashism
+
+No bashism in bootchartd.in, so use /bin/sh.
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <[email protected]>
+---
+ bootchartd.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bootchartd.in b/bootchartd.in
+index a408bab..064f6a4 100755
+--- a/bootchartd.in
++++ b/bootchartd.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # Bootchart logger script
+ # Ziga Mahkovec  <[email protected]>
+--
+1.7.9.5
+
meta/recipes-devtools/bootchart2/bootchart2_git.bb +4 -3
index 4116304..04fb901 100644
@@ -91,8 +91,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=44ac4678311254db62edf8fd39cb8124"
  # one commit beyond 1.14.6 for a systemd-related bugfix
  PV = "0.14.6+git${SRCPV}"
 
-SRC_URI = "git://github.com/mmeeks/bootchart.git"
-SRC_URI += "file://bootchartd_stop.sh"
+SRC_URI = "git://github.com/mmeeks/bootchart.git \
+           file://bootchartd_stop.sh \
+           file://bootchartd-no-bashism.patch \
+          "
 
  SRCREV = "b65ed43b0ae832080fb728245de9ef1a4b48d8b5"
 
--

1.7.9.5

#12 lore raw

Re: [PATCH 8/9] bootchart2: no bashism in bootchartd.in

I have submitted the pull request, hopefully it gets accepted:
https://github.com/mmeeks/bootchart/pull/58

Quoted 80 lines · Robert Yang
Quoted 2 lines · Max Eliaser

Would you be okay with me sending this one upstream? I think it's a worthwhile modification.

Yes, of course, thanks for sending.

// Robert

Quoted 70 lines

-Max

Quoted 62 lines · Robert Yang

So use /bin/sh

---
  .../bootchart2/bootchartd-no-bashism.patch         |   27 ++++++++++++++++++++
  meta/recipes-devtools/bootchart2/bootchart2_git.bb |    6 +++--
  2 files changed, 31 insertions(+), 2 deletions(-)

create mode 100644 meta/recipes-devtools/bootchart2/bootchart2/bootchartd-no-bashism.patch

meta/recipes-devtools/bootchart2/bootchart2/bootchartd-no-bashism.patch new file +27 -0
new file mode 100644
index 0000000..b013995
@@ -0,0 +1,27 @@
+From ffb5bae5d588aaea6325623462a8070a04767196 Mon Sep 17 00:00:00 2001
+From: Robert Yang <[email protected]>
+Date: Thu, 14 Aug 2014 08:33:28 -0700
+Subject: [PATCH] bootchartd.in: no bashism
+
+No bashism in bootchartd.in, so use /bin/sh.
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <[email protected]>
+---
+ bootchartd.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bootchartd.in b/bootchartd.in
+index a408bab..064f6a4 100755
+--- a/bootchartd.in
++++ b/bootchartd.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # Bootchart logger script
+ # Ziga Mahkovec  <[email protected]>
+--
+1.7.9.5
+
meta/recipes-devtools/bootchart2/bootchart2_git.bb +4 -3
index 4116304..04fb901 100644
@@ -91,8 +91,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=44ac4678311254db62edf8fd39cb8124"
  # one commit beyond 1.14.6 for a systemd-related bugfix
  PV = "0.14.6+git${SRCPV}"
 
-SRC_URI = "git://github.com/mmeeks/bootchart.git"
-SRC_URI += "file://bootchartd_stop.sh"
+SRC_URI = "git://github.com/mmeeks/bootchart.git \
+           file://bootchartd_stop.sh \
+           file://bootchartd-no-bashism.patch \
+          "
 
  SRCREV = "b65ed43b0ae832080fb728245de9ef1a4b48d8b5"
 
--

1.7.9.5

#13 lore raw

PATCH 9/9 python3-distribute: fix interpreter

In reply to Robert Yang

It should use "/usr/bin/env python3" rather than python.

---
 .../python/python3-distribute_0.6.32.bb            |    2 ++
 1 file changed, 2 insertions(+)
meta/recipes-devtools/python/python3-distribute_0.6.32.bb +2 -0
index 573096c..0ef3a87 100644
@@ -37,6 +37,8 @@ do_install_append() {
     rm ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth
     mv ${D}${bindir}/easy_install ${D}${bindir}/easy3_install
     echo "./${SRCNAME}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/setuptools.pth
+    sed -i -e '1s|^#!.*python|#!/usr/bin/env python3|' \
+        ${D}${PYTHON_SITEPACKAGES_DIR}/distribute-${PV}-py${PYTHON_BASEVERSION}.egg/setuptools/tests/test_resources.py
 }
 
 RDEPENDS_${PN} = "\
Signature · 1 line
1.7.9.5