Re: [OE-core] [PATCH] bzip2: Add test suite for bzip2

Randy MacLeod
2020-04-13T19:18:20Z

[-- Attachment #1: Type: text/plain, Size: 30989 bytes --]

On 2020-04-13 1:22 p.m., Rahul Kumar wrote:
> Hi Randy,
>
> Kindly find the attached bzip2 ptest logs file.

Hi Rahul,

Most or even all of the tests that fail are due to:

bzip2: No space left on device

For a [de]compression utility ptest suite, it's certainly reasonable
to add extra space to the test image:
https://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-IMAGE_ROOTFS_EXTRA_SPACE

Make note of what how much extra space is needed in your commit log since
we don't have a way for ptests to declare this and for it to be added
automatically.

It would also be really nice to see a summary of your ptest result
in the long log. For example in my recent update to rsyslog in meta-oe:
1ec13d7d9 rsyslog: 8.1911.0 -> 8.2002.0
...

On qemux86-64/kvm the ptest results with extra filesystem
space and a timeout of 800 seconds are:
1911   2002
TOTAL:   389    408
PASS:    339    357
SKIP:     39     39
XFAIL:     0      0
FAIL:     11     12
XPASS:     0      0
ERROR:     0      0

I probably should have listed the extra space used! oops. :)

> I answered your Question here .
> Kindly take a look and feel free to point out if i am wrong at any
> place and let me know if i missed anything.
> ==========
> > +
> > +modify run-tests script to write PASS/FAIL as expected by the ptest
> infrastructure
> > +
> > +Signed-off-by: Rahul Kumar <rahulk@mvista.com
> <mailto:rahulk@mvista.com>>
> > +---
> > + run-tests.sh | 83
> +++++++++++++++++++++++++++++++-----------------------------
> > + 1 file changed, 43 insertions(+), 40 deletions(-)
> > +
> > +diff --git a/run-tests.sh b/run-tests.sh
> > +index 1ba8c27..1eff62a 100755
> > +--- a/run-tests.sh
> > ++++ b/run-tests.sh
> > +@@ -10,7 +10,7 @@
> > + VALGRIND="valgrind"
> > + VALGRIND_ARGS="-q --error-exitcode=9"
> > + BZIP2="bzip2"
> > +-TESTS_DIR="."
> > ++TESTS_DIR="./bzip2-tests"
>
> Can you explain why you did this? Maybe upstream would accept it ?
>
> Ans:
> we need to parse the TEST_DIR Path because we are running runtest.sh
> script outside the bzip2-tests directory.
> But I figured out a more convenient way for this.
> I will parse the TEST_DIR path during running the runscript.sh.
>
> I can implement this by adding below line in makefile.am
> <http://makefile.am> file.
> ./bzip2-tests/run-tests.sh --tests-dir="$(PWD)/bzip2-tests"
Ah good.
>
> In Next version of patch I will implement it.
>
> ===========
>
> > + IGNORE_MD5=0
> > +
> > + for i in "$@"
> > +@@ -40,21 +40,21 @@ case $i in
> > + esac
> > + done
> > +
> > +-if ! type "valgrind" > /dev/null; then
> > ++if ! type "valgrind" > /dev/null 2>&1; then
> > +   VALGRIND=""
> > +   VALGRIND_ARGS=""
> > + fi
>
> Explanation:
>
>    if ! type "valgrind" > /dev/null;
>    suppose if valgrind is not present in my image at that time it is
> showing
> ./bzip2-tests/run-tests.sh: line 43: type: valgrind: not found
>
>    Since we are displaying a message in script that valgrind is used
> or not.
>
>    So i redirect the output
>    BY Modifying this line with "if ! type "valgrind" > /dev/null 2>&1"
>
> ==========
>
> > + echo "Testing ${BZIP2} in directory ${TESTS_DIR}"
> > + if [ "$VALGRIND" != "" ]; then
> > +-  echo "  using valgrind"
> > ++  echo "Using valgrind: Yes"
> > + else
> > +-  echo "  NOT using valgrind"
> > ++  echo "Using valgrind: No"
> > + fi
> > + if [[ ${IGNORE_MD5} -eq 0 ]]; then
> > +-  echo "  checking md5 sums"
> > ++  echo "Checking md5 sums: Yes"
> > + else
> > +-  echo "  NOT checking md5 sums"
> > ++  echo "Checking md5 sums: No"
> > + fi
> > +
>
> Explanation:
> I Simply modified valgrind and md5sum messages with Yes/No
I is worth seeing if upstream will accept the change, IMO.
>
> ==========
>
> > + # Remove any left over tesfilecopies from previous runs first.
> > +@@ -76,16 +76,16 @@ while IFS= read -r -d '' bzfile; do
> > +   echo "Processing ${bzfile}"
> > +
> > +   # Decompress it.
> > +-  echo "  Decompress..."
> > ++  # echo "  Decompress..."
>
> Explanation:
> Initially for each file It is printing Decompress...
> I think which is not required to display in ptest logs so i comment it
> out.
Does it cause a problem?
We try to minimize our changes so if it's just aesthetic, don't change it.
>
> ==========
> > +   if [[ ${IGNORE_MD5} -ne 1 ]]; then
> > +-    md5sum --check --status ${md5file} < ${file} \
> > +-      || { echo "!!! md5sum doesn't match decompressed file";
> > ++    md5sum -c ${md5file} < ${file} && { echo "PASS: ${bzfile}
> md5sum Matched"; } \
> > ++      || { echo "FAIL: ${bzfile} md5sum Matched";
> > +            badtests=("${badtests[@]}" $"${file} md5sum doesn't match")
> > +            nogood=$[${nogood}+1]; conti
>
> Explanation:
> for md5sum there is no short form option for --status option.
> use of --status is "don't output anything, status code shows success"
>
> md5sum -c ${md5file} < ${copy}
> so i removed the --status option due to this below line is coming in
> ptest log
> -: OK

The discrete md5sum doesn't have a short form of --status and

busybox md5sum only supports '-s'; that's a shame.

I guess we'd need to drop the argument for now but
this is another case where perhaps upstream bzip2 will
accommodate our desire to run the tests with busybox so
it would be nice if you could ask and track the upstream status.

>
> ==========
>
> +   echo "Bad results, look for !!! in the logs above"
> +   printf ' - %s\n' "${badtests[@]}"
> +-  exit 1
> + fi
> +--
>
> Explanation:
> if some test failed then script is returning with exit 1 status due to
> this at the end of ptest below message is printing
> make: *** [Makefile:14: runtest] Error 1
>
> logs wil looks like below if script returning with exit 1 status
>
> PASS: Correctly found data integrity errors in
> ./bzip2-tests/lbzip2/void.bz2.bad during decompress (small)
>
> Correctly found all bad file data integrity errors.
>
> Bad results, look for !!! in the logs above
>  - ./bzip2-tests/commons-compress/zip64support.tar.bz2 bad decompress
> result
>  - ./bzip2-tests/go/regexp/re2-exhaustive.txt.bz2 bad decompress result
>  - ./bzip2-tests/lbzip2/idx899999.bz2 bad decompress result
>  - ./bzip2-tests/lbzip2/ch255.bz2 bad decompress result
>  - ./bzip2-tests/pyflate/45MB-fb.bz2 bad decompress result
>  - ./bzip2-tests/pyflate/45MB-00.bz2 bad decompress result
> make: *** [Makefile:14: runtest] Error 1
>
> ERROR: Exit status is 512
> DURATION: 31
> END: /usr/lib/bzip2/ptest
> 2020-04-13T16:05
> STOP: ptest-runner
> root@qemux86-64:~#
>
> To avoid "make: *** [Makefile:14: runtest] Error 1" messgae
> I removed exit 1 line from the script.
> May be i am wrong please suggest me i should keep it or remove.

I this it's useful information and as long as when you add
additional filesystem space and the test all pass then we
don't need to make the failure cases look nice! ;-)

>
> ==========
>
> >              file://configure.ac <http://configure.ac>;subdir=${BP} \
> >              file://Makefile.am;subdir=${BP} \
> >              file://run-ptest \
> > +
> file://0001-bzip2-modify-run-tests-script.patch;patchdir=${WORKDIR}/git \
> >              "
> > +
> >   SRC_URI[md5sum] = "67e051268d0c475ea773822f7500d0e5"
> >   SRC_URI[sha256sum] =
> "ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269"
> >
> > +SRCREV_bzip2-tests = "8b0198efda1603cf81fa2c7a9bb673dd22ae1661"
> > +
> >   UPSTREAM_CHECK_URI = "https://www.sourceware.org/pub/bzip2/"
> >
> >   PACKAGES =+ "libbz2"
> > @@ -39,7 +48,7 @@ do_install_ptest () {
> >
> >   FILES_libbz2 = "${libdir}/lib*${SOLIBS}"
> >
> > -RDEPENDS_${PN}-ptest += "make"
> > +RDEPENDS_${PN}-ptest += "make bash"
>
> Does it really depend on bash or just a POSIX compliant /bin/sh ?
> If it requires bash, how bad are the scripts and can they be made
> POSIX compliant with the help of:
> https://www.shellcheck.net/
> Ans.
> This script is based on array concept and Arrays are not part of the
> POSIX sh specification.
> so i think we should go with bash script.

Maybe just add a comment above the RDEPENDS so that if
someone wants to get rid of the bash dependency, they know
where to start. Ideally upstream would get rid of the bashisms
but their run-tests.sh does use: #!/bin/bash so this is fine for now.

>
> ==========
>
> > diff --git a/meta/recipes-extended/bzip2/bzip2/Makefile.am
> b/meta/recipes-extended/bzip2/bzip2/Makefile.am
> > index dcf6458..f917b23 100644
> > --- a/meta/recipes-extended/bzip2/bzip2/Makefile.am
> > +++ b/meta/recipes-extended/bzip2/bzip2/Makefile.am
> > @@ -46,6 +46,7 @@ runtest:
> >   else echo "FAIL: sample2 decompress"; fi
> >   @if cmp sample3.tst sample3.ref; then echo "PASS: sample3
> decompress";\
> >   else echo "FAIL: sample3 decompress"; fi
> > + ./bzip2-tests/run-tests.sh
> >
> >   install-ptest:
> >   sed  -n '/^runtest:/,/^install-ptest:/{/^install-ptest:/!p}' \
> > @@ -56,6 +57,7 @@ install-ptest:
> >   cp $(srcdir)/sample1.bz2 $(DESTDIR)/
> >   cp $(srcdir)/sample2.bz2 $(DESTDIR)/
> >   cp $(srcdir)/sample3.bz2 $(DESTDIR)/
> > + cp -rf $(srcdir)/../git $(DESTDIR)/bzip2-tests
> >   ln -s $(bindir)/bzip2 $(DESTDIR)/bzip2
> >
> >   install-exec-hook:
> > diff --git a/meta/recipes-extended/bzip2/bzip2_1.0.8.bb
> <http://bzip2_1.0.8.bb> b/meta/recipes-extended/bzip2/bzip2_1.0.8.bb
> <http://bzip2_1.0.8.bb>
> > index 8e9b779..e8ec5c6 100644
> > --- a/meta/recipes-extended/bzip2/bzip2_1.0.8.bb <http://bzip2_1.0.8.bb>
> > +++ b/meta/recipes-extended/bzip2/bzip2_1.0.8.bb <http://bzip2_1.0.8.bb>
> > @@ -5,16 +5,25 @@ LZ77/LZ78-based compressors, and approaches the
> performance of the PPM family of
> >   HOMEPAGE = "https://sourceware.org/bzip2/"
> >   SECTION = "console/utils"
> >   LICENSE = "bzip2"
> > -LIC_FILES_CHKSUM =
> "file://LICENSE;beginline=4;endline=37;md5=600af43c50f1fcb82e32f19b32df4664"
> > -
> > +LIC_FILES_CHKSUM =
> "file://LICENSE;beginline=4;endline=37;md5=600af43c50f1fcb82e32f19b32df4664
> \
> > +  file://../git/go/LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707 \
> > +
>  file://../git/dotnetzip/License.txt;md5=9cb56871eed4e748c3bc7e8ff352a54f
> \
> > +
>  file://../git/dotnetzip/License.zlib.txt;md5=cc421ccd22eeb2e5db6b79e6de0a029f
> \
> > +
>  file://../git/commons-compress/LICENSE.txt;md5=86d3f3a95c324c9479bd8986968f4327
> \
>
> What's all this additional license info about?
> Please explain in when replying as well as in the long log.
>
> Ans:
> I don't have much knowledge about the licensing part so I populated
> all the licenses which are present in the bzip2-tests source code.
> can you please provide any suggestions on what basis we should take
> the decision of the license population.

You should use:

LICENSE = "GPLv3+"

since the only code is the run-tests.sh script and that
the license given in the script.

The rest of the LICENSE information in the git repo seems
to have been copied from the packages where these compressed
_data_ files came from. Since we are not compiling any source,
we only need to have a LIC_FILES_CHKSUM entry for run-tests.sh.
We are simply using the compressed files as data so we can
ignore the license info. Ideally the upstream repo would remove
the misleading files but IANAL and I don't think it's a problem
for us really. It's probably worth explaining this in a sentence or
two in your commit log.

> ==========
>
> Let me know if I missed anything here.

I think there are a few changes to make for a v2.

Hopefully you will write a commit log that explains the
changes that we have agreed to make.  The idea is
that someone should be able to read the long log and
have a general idea of what the code changes are.

Thanks for working on this ptest addition, it looks like it's
heading in the right direction and almost done now.

../Randy

>
> *Thanks & Regards,*
> Rahul Kumar
> Software Engineer,Linux Solutions Engineering
> Group,Montavista Software LLC
> Email Id: rahulk@mvista.com <mailto:rahulk@mvista.com>
> <https://plus.google.com/+CodeTwoSoftware>
>
>
> On Fri, Apr 3, 2020 at 4:02 AM Randy MacLeod
> <randy.macleod@windriver.com <mailto:randy.macleod@windriver.com>> wrote:
>
> On 2020-04-02 7:10 a.m., Rahul Kumar wrote:
> > [YOCTO #13444]
>
> Thanks for contributing this work Rahul.
>
> It would be good if the long log explained the changes made
> in a sentence or two. I've made some comments and asked
> some questions inline below. I may have gone overboard but
> I hope you get the idea that we'd like to see not just the
> changes but the reason for the changes.
>
> Also, can you present the results of running:
> # ptest-runner bzip2
> on qemux86-64 with kvm enabled in the long log?
> If there are tests that fail or are skipped
> comment on that even it it's to say that you don't know what is wrong.
>
> >
> > Signed-off-by: Rahul Kumar <rahulk@mvista.com
> <mailto:rahulk@mvista.com>>
> > ---
> >   .../bzip2/0001-bzip2-modify-run-tests-script.patch | 220
> +++++++++++++++++++++
> >   meta/recipes-extended/bzip2/bzip2/Makefile.am      |  2 +
> >   meta/recipes-extended/bzip2/bzip2_1.0.8.bb
> <http://bzip2_1.0.8.bb>      |  15 +-
> >   3 files changed, 234 insertions(+), 3 deletions(-)
> >   create mode 100644
> meta/recipes-extended/bzip2/bzip2/0001-bzip2-modify-run-tests-script.patch
> >
> > diff --git
> a/meta/recipes-extended/bzip2/bzip2/0001-bzip2-modify-run-tests-script.patch
> b/meta/recipes-extended/bzip2/bzip2/0001-bzip2-modify-run-tests-script.patch
> > new file mode 100644
> > index 0000000..8ae3c4e
> > --- /dev/null
> > +++
> b/meta/recipes-extended/bzip2/bzip2/0001-bzip2-modify-run-tests-script.patch
> > @@ -0,0 +1,220 @@
> > +From 42e6258485030085285d4b30854bfb94bcf43880 Mon Sep 17
> 00:00:00 2001
> > +From: Rahul Kumar <rahulk@mvista.com <mailto:rahulk@mvista.com>>
> > +Date: Mon, 30 Mar 2020 12:17:00 +0530
> > +Subject: [PATCH] bzip2: modify run-tests script
> > +
> > +Upstream-Status: Inappropriate [ modify run-tests script for
> ptest infrastructure ]
>
> It seems that some of the changes are to make the tests less
> verbose and
> to 'tighten-up' the language and formatting used. Upstream might
> accept
> them, have you checked? If you change the status to Pending I think it
> would be better for now because that would force someone check on the
> progress at some point.
>
> > +
> > +modify run-tests script to write PASS/FAIL as expected by the
> ptest infrastructure
> > +
> > +Signed-off-by: Rahul Kumar <rahulk@mvista.com
> <mailto:rahulk@mvista.com>>
> > +---
> > + run-tests.sh | 83
> +++++++++++++++++++++++++++++++-----------------------------
> > + 1 file changed, 43 insertions(+), 40 deletions(-)
> > +
> > +diff --git a/run-tests.sh b/run-tests.sh
> > +index 1ba8c27..1eff62a 100755
> > +--- a/run-tests.sh
> > ++++ b/run-tests.sh
> > +@@ -10,7 +10,7 @@
> > + VALGRIND="valgrind"
> > + VALGRIND_ARGS="-q --error-exitcode=9"
> > + BZIP2="bzip2"
> > +-TESTS_DIR="."
> > ++TESTS_DIR="./bzip2-tests"
>
> Can you explain why you did this? Maybe upstream would accept it.
>
> > + IGNORE_MD5=0
> > +
> > + for i in "$@"
> > +@@ -40,21 +40,21 @@ case $i in
> > + esac
> > + done
> > +
> > +-if ! type "valgrind" > /dev/null; then
> > ++if ! type "valgrind" > /dev/null 2>&1; then
> > +   VALGRIND=""
> > +   VALGRIND_ARGS=""
> > + fi
> > +
> > + echo "Testing ${BZIP2} in directory ${TESTS_DIR}"
> > + if [ "$VALGRIND" != "" ]; then
> > +-  echo "  using valgrind"
> > ++  echo "Using valgrind: Yes"
> > + else
> > +-  echo "  NOT using valgrind"
> > ++  echo "Using valgrind: No"
> > + fi
> > + if [[ ${IGNORE_MD5} -eq 0 ]]; then
> > +-  echo "  checking md5 sums"
> > ++  echo "Checking md5 sums: Yes"
> > + else
> > +-  echo "  NOT checking md5 sums"
> > ++  echo "Checking md5 sums: No"
> > + fi
> > +
> > + # Remove any left over tesfilecopies from previous runs first.
> > +@@ -76,16 +76,16 @@ while IFS= read -r -d '' bzfile; do
> > +   echo "Processing ${bzfile}"
> > +
> > +   # Decompress it.
> > +-  echo "  Decompress..."
> > ++  # echo "  Decompress..."
>
> Without an explanation in the long log, I can't tell if this
> comment was removed intentionally or perhaps when you were debugging.
> I expect you have a good reason to remove it but an explaination would
> be helpful.
>
> > +   rm -f "${file}"
> > +-  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -k -d -q ${bzfile} \
> > +-    || { echo "!!! bad decompress result $?";
> > ++  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -k -d -q ${bzfile} &&
> { echo "PASS: ${bzfile} Decompress"; } \
> > ++    || { echo "FAIL: ${bzfile} Decompress";
> > +          badtests=("${badtests[@]}" $"${bzfile} bad decompress
> result")
> > +          nogood=$[${nogood}+1]; continue; }
> > +
> > +   if [[ ${IGNORE_MD5} -ne 1 ]]; then
> > +-    md5sum --check --status ${md5file} < ${file} \
> > +-      || { echo "!!! md5sum doesn't match decompressed file";
> > ++    md5sum -c ${md5file} < ${file} && { echo "PASS: ${bzfile}
> md5sum Matched"; } \
> > ++      || { echo "FAIL: ${bzfile} md5sum Matched";
> > +            badtests=("${badtests[@]}" $"${file} md5sum doesn't
> match")
> > +            nogood=$[${nogood}+1]; continue; }
> > +   fi
> > +@@ -93,20 +93,20 @@ while IFS= read -r -d '' bzfile; do
> > +   # Compress and decompress a copy
> > +   mv "${file}" "${copy}"
> > +   rm -f "${bzcopy}"
> > +-  echo "  Recompress..."
> > +-  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -z -q -s ${copy} \
> > +-    || { echo "!!! bad compress result $?";
> > ++  # echo "  Recompress..."
> > ++  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -z -q -s ${copy} && {
> echo "PASS: ${bzfile} Recompress "; } \
> > ++    || { echo "FAIL: ${bzfile} Recompress";
> > +          badtests=("${badtests[@]}" $"${copy} bad result")
> > +          nogood=$[${nogood}+1]; continue; }
> > +-  echo "  Redecompress..."
> > +-  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -d -q -s ${bzcopy} \
> > +-    || { echo "!!! bad (re)decompress result $?";
> > ++  # echo "  Redecompress..."
> > ++  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -d -q -s ${bzcopy} &&
> { echo "PASS: ${bzfile} Redecompress"; } \
> > ++    || { echo "FAIL: ${bzfile} Redecompress";
> > +          badtests=("${badtests[@]}" $"${bzcopy} bad result")
> > +          nogood=$[${nogood}+1]; continue; }
> > +
> > +   if [[ ${IGNORE_MD5} -ne 1 ]]; then
> > +-    md5sum --check --status ${md5file} < ${copy} \
> > +-      || { echo "!!! md5sum doesn't match (re)decompressed file";
> > ++    md5sum -c ${md5file} < ${copy} && { echo "PASS: ${bzfile}
> md5sum Matched"; } \
> > ++      || { echo "FAIL: ${bzfile} md5sum Matched";
> > +            badtests=("${badtests[@]}" $"${copy} md5sum doesn't
> match")
> > +            nogood=$[${nogood}+1]; continue; }
> > +   fi
> > +@@ -114,16 +114,16 @@ while IFS= read -r -d '' bzfile; do
> > +   rm "${copy}"
> > +
> > +   # Now do it all again in "small" mode.
> > +-  echo "  Decompress (small)..."
> > ++  # echo "  Decompress (small)..."
> > +   rm -f "${file}"
> > +-  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -k -d -q -s ${bzfile} \
> > +-    || { echo "!!! bad decompress result $?";
> > ++  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -k -d -q -s ${bzfile}
> &&{ echo "PASS: ${bzfile} Decompress (small)"; } \
> > ++    || { echo "FAIL: ${bzfile} Decompress (small)";
> > +          badtests=("${badtests[@]}" $"${bzfile} bad decompress
> result")
> > +          nogood=$[${nogood}+1]; continue; }
> > +
> > +   if [[ ${IGNORE_MD5} -ne 1 ]]; then
> > +-    md5sum --check --status ${md5file} < ${file} \
> > +-      || { echo "!!! md5sum doesn't match decompressed file";
> > ++    md5sum -c ${md5file} < ${file} > /dev/null 2>&1 && { echo
> "PASS: ${bzfile} Md5sum Matched"; } \
> > ++      || { echo "FAIL: ${bzfile} Md5sum Matched";
> > +            badtests=("${badtests[@]}" $"${file} md5sum doesn't
> match")
> > +            nogood=$[${nogood}+1]; continue; }
> > +   fi
> > +@@ -131,20 +131,20 @@ while IFS= read -r -d '' bzfile; do
> > +   # Compress and decompress a copy
> > +   mv "${file}" "${copy}"
> > +   rm -f "${bzcopy}"
> > +-  echo "  Recompress (small)..."
> > +-  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -z -q -s ${copy} \
> > +-    || { echo "!!! bad compress result $?";
> > ++  # echo "  Recompress (small)..."
> > ++  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -z -q -s ${copy} && {
> echo "PASS: ${bzfile} Recompress (small)"; } \
> > ++    || { echo "FAIL: ${bzfile} Recompress (small)";
> > +          badtests=("${badtests[@]}" $"${copy} bad result")
> > +          nogood=$[${nogood}+1]; continue; }
> > +-  echo "  Redecompress (small)..."
> > +-  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -d -q -s ${bzcopy} \
> > +-    || { echo "!!! bad (re)decompress result $?";
> > ++  # echo "  Redecompress (small)..."
> > ++  ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -d -q -s ${bzcopy} &&
> { echo "PASS: ${bzfile} Redecompress (small)"; } \
> > ++    || { echo "FAIL: ${bzfile} Redecompress (small)";
> > +          badtests=("${badtests[@]}" $"${bzcopy} bad result")
> > +          nogood=$[${nogood}+1]; continue; }
> > +
> > +   if [[ ${IGNORE_MD5} -ne 1 ]]; then
> > +-    md5sum --check --status ${md5file} < ${copy} \
> > +-      || { echo "!!! md5sum doesn't match (re)decompressed file";
> > ++    md5sum -c ${md5file} < ${copy} && { echo "PASS: ${bzfile}
> md5sum Matched"; } \
> > ++      || { echo "FAIL: ${bzfile} md5sum : Miss Matched";
> > +            badtests=("${badtests[@]}" $"${copy} md5sum doesn't
> match")
> > +            nogood=$[${nogood}+1]; continue; }
> > +   fi
> > +@@ -169,14 +169,14 @@ nobad=0
> > + badbad=0
> > + while IFS= read -r -d '' badfile; do
> > +
> > +-  echo "Processing ${badfile}"
> > ++  # echo "Processing ${badfile}"
> > +
> > +-  echo "  Trying to decompress..."
> > ++  # echo "  Trying to decompress..."
> > +   ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -k -d -q ${badfile}
> > +   ret=$?
> > +
> > +   if [[ ${ret} -eq 0 ]]; then
> > +-    echo "!!! badness not detected"
> > ++    echo "FAIL: badness not detected"
> > +     nobad=$[${nobad}+1]
> > +     badtests=("${badtests[@]}" $"${badfile} badness not detected")
> > +     continue
> > +@@ -185,18 +185,20 @@ while IFS= read -r -d '' badfile; do
> > +   # Assumes "normal" badness is detected by exit code 1 or 2.
> > +   # A crash or valgrind issue will be reported with something
> else.
> > +   if [[ ${ret} != 1 ]] && [[ ${ret} != 2 ]]; then
> > +-    echo "!!! baddness caused baddness in ${BZIP2}"
> > ++    echo "FAIL: baddness caused baddness in ${BZIP2}"
> It's 'badness':
> https://www.merriam-webster.com/thesaurus/badness
> > +     badbad=$[${badbad}+1]
> > +     badtests=("${badtests[@]}" $"${badfile} badness caused
> baddness")
> > +     continue
> > ++  else
> > ++    echo "PASS: Correctly found data integrity errors in
> ${badfile} during decompress."
> > +   fi
> > +
> > +-  echo "  Trying to decompress (small)..."
> > ++  # echo "  Trying to decompress (small)..."
> > +   ${VALGRIND} ${VALGRIND_ARGS} ${BZIP2} -k -d -q -s ${badfile}
> > +   ret=$?
> > +
> > +   if [[ ${ret} -eq 0 ]]; then
> > +-    echo "!!! badness not detected"
> > ++    echo "FAIL: badness not detected "
> > +     nobad=$[${nobad}+1]
> > +     badtests=("${badtests[@]}" $"${badfile} badness not detected")
> > +     continue
> > +@@ -205,10 +207,12 @@ while IFS= read -r -d '' badfile; do
> > +   # Assumes "normal" badness is detected by exit code 1 or 2.
> > +   # A crash or valgrind issue will be reported with something
> else.
> > +   if [[ ${ret} != 1 ]] && [[ ${ret} != 2 ]]; then
> > +-    echo "!!! baddness caused baddness in ${BZIP2}"
> > ++    echo "FAIL: baddness caused baddness in ${BZIP2}"
> > +     badbad=$[${badbad}+1]
> > +     badtests=("${badtests[@]}" $"${badfile} badness caused
> baddness")
> > +     continue
> > ++  else
> > ++    echo "PASS: Correctly found data integrity errors in
> ${badfile} during decompress (small)"
> > +   fi
> > +
> > + done < <(find ${TESTS_DIR} -type f -name \*\.bz2.bad -print0)
> > +@@ -234,5 +238,4 @@ if [[ ${results} -eq 0 ]]; then
> > + else
> > +   echo "Bad results, look for !!! in the logs above"
> > +   printf ' - %s\n' "${badtests[@]}"
> > +-  exit 1
> > + fi
> > +--
> > +2.7.4
> > diff --git a/meta/recipes-extended/bzip2/bzip2/Makefile.am
> b/meta/recipes-extended/bzip2/bzip2/Makefile.am
> > index dcf6458..f917b23 100644
> > --- a/meta/recipes-extended/bzip2/bzip2/Makefile.am
> > +++ b/meta/recipes-extended/bzip2/bzip2/Makefile.am
> > @@ -46,6 +46,7 @@ runtest:
> >       else echo "FAIL: sample2 decompress"; fi
> >       @if cmp sample3.tst sample3.ref; then echo "PASS: sample3
> decompress";\
> >       else echo "FAIL: sample3 decompress"; fi
> > +     ./bzip2-tests/run-tests.sh
> >
> >   install-ptest:
> >       sed  -n '/^runtest:/,/^install-ptest:/{/^install-ptest:/!p}' \
> > @@ -56,6 +57,7 @@ install-ptest:
> >       cp $(srcdir)/sample1.bz2        $(DESTDIR)/
> >       cp $(srcdir)/sample2.bz2        $(DESTDIR)/
> >       cp $(srcdir)/sample3.bz2        $(DESTDIR)/
> > +     cp -rf $(srcdir)/../git  $(DESTDIR)/bzip2-tests
> >       ln -s $(bindir)/bzip2           $(DESTDIR)/bzip2
> >
> >   install-exec-hook:
> > diff --git a/meta/recipes-extended/bzip2/bzip2_1.0.8.bb
> <http://bzip2_1.0.8.bb>
> b/meta/recipes-extended/bzip2/bzip2_1.0.8.bb <http://bzip2_1.0.8.bb>
> > index 8e9b779..e8ec5c6 100644
> > --- a/meta/recipes-extended/bzip2/bzip2_1.0.8.bb
> <http://bzip2_1.0.8.bb>
> > +++ b/meta/recipes-extended/bzip2/bzip2_1.0.8.bb
> <http://bzip2_1.0.8.bb>
> > @@ -5,16 +5,25 @@ LZ77/LZ78-based compressors, and approaches
> the performance of the PPM family of
> >   HOMEPAGE = "https://sourceware.org/bzip2/"
> >   SECTION = "console/utils"
> >   LICENSE = "bzip2"
> > -LIC_FILES_CHKSUM =
> "file://LICENSE;beginline=4;endline=37;md5=600af43c50f1fcb82e32f19b32df4664"
> > -
> > +LIC_FILES_CHKSUM =
> "file://LICENSE;beginline=4;endline=37;md5=600af43c50f1fcb82e32f19b32df4664
> \
> > + file://../git/go/LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707 \
> > +
> file://../git/dotnetzip/License.txt;md5=9cb56871eed4e748c3bc7e8ff352a54f
> \
> > +
> file://../git/dotnetzip/License.zlib.txt;md5=cc421ccd22eeb2e5db6b79e6de0a029f
> \
> > +
> file://../git/commons-compress/LICENSE.txt;md5=86d3f3a95c324c9479bd8986968f4327
> \
>
> What's all this additional license info about?
> Please explain in when replying as well as in the long log.
>
> > +                   "
> >   SRC_URI =
> "https://sourceware.org/pub/${BPN}/${BPN}-${PV}.tar.gz
> <https://sourceware.org/pub/$%7BBPN%7D/$%7BBPN%7D-$%7BPV%7D.tar.gz> \
> > +
>  git://sourceware.org/git/bzip2-tests.git;name=bzip2-tests
> <http://sourceware.org/git/bzip2-tests.git;name=bzip2-tests> \
>
> Mention how big this repo is in the long log.
>
> >              file://configure.ac
> <http://configure.ac>;subdir=${BP} \
> >              file://Makefile.am;subdir=${BP} \
> >              file://run-ptest \
> > +
>  file://0001-bzip2-modify-run-tests-script.patch;patchdir=${WORKDIR}/git
> \
> >              "
> > +
> >   SRC_URI[md5sum] = "67e051268d0c475ea773822f7500d0e5"
> >   SRC_URI[sha256sum] =
> "ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269"
> >
> > +SRCREV_bzip2-tests = "8b0198efda1603cf81fa2c7a9bb673dd22ae1661"
> > +
> >   UPSTREAM_CHECK_URI = "https://www.sourceware.org/pub/bzip2/"
> >
> >   PACKAGES =+ "libbz2"
> > @@ -39,7 +48,7 @@ do_install_ptest () {
> >
> >   FILES_libbz2 = "${libdir}/lib*${SOLIBS}"
> >
> > -RDEPENDS_${PN}-ptest += "make"
> > +RDEPENDS_${PN}-ptest += "make bash"
>
> Does it really depend on bash or just a POSIX compliant /bin/sh ?
> If it requires bash, how bad are the scripts and can they be made
> POSIX compliant with the help of:
> https://www.shellcheck.net/
>
> ../Randy
>
> >
> >   PROVIDES_append_class-native = " bzip2-replacement-native"
> >   BBCLASSEXTEND = "native nativesdk"
> >
> >
> >
> >
>
>
> --
> # Randy MacLeod
> # Wind River Linux
>

--
# Randy MacLeod
# Wind River Linux

[-- Attachment #2: Type: text/html, Size: 51241 bytes --]