diff mbox series

[v3] libc-test: add libc testsuite for musl

Message ID 20221108034233.3452233-1-chase.qi@linaro.org
State New
Headers show
Series [v3] libc-test: add libc testsuite for musl | expand

Commit Message

Chase Qi Nov. 8, 2022, 3:42 a.m. UTC
libc-test is a collection of unit test to measure the correctness and
robustness of a C/POSIX standard library implementation. It is developed
as part of the musl project.

Signed-off-by: Chase Qi <chase.qi@linaro.org>
---
 .../distro/include/ptest-packagelists.inc     |  1 +
 meta/recipes-core/musl/libc-test/run-ptest    | 28 ++++++++++
 meta/recipes-core/musl/libc-test_git.bb       | 51 +++++++++++++++++++
 3 files changed, 80 insertions(+)
 create mode 100644 meta/recipes-core/musl/libc-test/run-ptest
 create mode 100644 meta/recipes-core/musl/libc-test_git.bb

Comments

Alexandre Belloni Nov. 8, 2022, 7:50 p.m. UTC | #1
Hello,

This fails with:
The following recipes do not have a maintainer assigned to them. Please add an entry to meta/conf/distro/include/maintainers.inc file.
libc-test (/home/pokybuild/yocto-worker/oe-selftest-centos/build/meta/recipes-core/musl/libc-test_git.bb)

On 08/11/2022 03:42:33+0000, Chase Qi wrote:
> libc-test is a collection of unit test to measure the correctness and
> robustness of a C/POSIX standard library implementation. It is developed
> as part of the musl project.
> 
> Signed-off-by: Chase Qi <chase.qi@linaro.org>
> ---
>  .../distro/include/ptest-packagelists.inc     |  1 +
>  meta/recipes-core/musl/libc-test/run-ptest    | 28 ++++++++++
>  meta/recipes-core/musl/libc-test_git.bb       | 51 +++++++++++++++++++
>  3 files changed, 80 insertions(+)
>  create mode 100644 meta/recipes-core/musl/libc-test/run-ptest
>  create mode 100644 meta/recipes-core/musl/libc-test_git.bb
> 
> diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
> index 32b0e5297a..3c9ff43bd9 100644
> --- a/meta/conf/distro/include/ptest-packagelists.inc
> +++ b/meta/conf/distro/include/ptest-packagelists.inc
> @@ -105,6 +105,7 @@ PTESTS_SLOW = "\
>  
>  PTESTS_SLOW:remove:riscv64 = "valgrind-ptest"
>  PTESTS_PROBLEMS:append:riscv64 = "valgrind-ptest"
> +PTESTS_SLOW:append:libc-musl = " libc-test-ptest"
>  
>  #    ruby-ptest \ # Timeout
>  #    lz4-ptest \ # Needs a rewrite
> diff --git a/meta/recipes-core/musl/libc-test/run-ptest b/meta/recipes-core/musl/libc-test/run-ptest
> new file mode 100644
> index 0000000000..0b4b687dec
> --- /dev/null
> +++ b/meta/recipes-core/musl/libc-test/run-ptest
> @@ -0,0 +1,28 @@
> +#!/bin/sh
> +
> +set -e
> +
> +cd /opt/libc-test
> +make cleanall
> +make run || true
> +
> +echo ""
> +echo "--- ptest result ---"
> +# libc-test runs tests by module(e.g. src/api) and generates sub-module test
> +# report(e.g. src/api/REPORT) first. After all tests finish, it generates the
> +# consolidated report file src/REPORT.
> +report="/opt/libc-test/src/REPORT"
> +if ! [ -f "${report}" ]; then
> +    echo "${report} not found!"
> +    echo "FAIL: libc-test"
> +    exit 1
> +# libc-test prints error on failure and prints nothing on success.
> +elif grep -q '^FAIL src.*\.exe.*' "${report}"; then
> +    # Print test failure in ptest format.
> +    # e.g. "FAIL src/api/main.exe [status 1]" -> "FAIL: api_main"
> +    grep '^FAIL src.*\.exe.*' "${report}" \
> +        | sed 's|^FAIL src/|FAIL: |;s|/|_|;s|\.exe.*\]||'
> +    exit 1
> +else
> +    echo "PASS: libc-test"
> +fi
> diff --git a/meta/recipes-core/musl/libc-test_git.bb b/meta/recipes-core/musl/libc-test_git.bb
> new file mode 100644
> index 0000000000..b5bfc6e34c
> --- /dev/null
> +++ b/meta/recipes-core/musl/libc-test_git.bb
> @@ -0,0 +1,51 @@
> +SUMMARY = "Musl libc unit tests"
> +HOMEPAGE = "https://wiki.musl-libc.org/libc-test.html"
> +DESCRIPTION = "libc-test is a collection of unit tests to measure the \
> +correctness and robustness of a C/POSIX standard library implementation. It is \
> +developed as part of the musl project."
> +SECTION = "tests"
> +LICENSE = "MIT"
> +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=43ed1245085be90dc934288117d55a3b"
> +
> +inherit ptest
> +
> +SRCREV = "18e28496adee3d84fefdda6efcb9c5b8996a2398"
> +SRC_URI = " \
> +    git://repo.or.cz/libc-test;branch=master \
> +    file://run-ptest \
> +"
> +
> +PV = "0+git${SRCPV}"
> +
> +S = "${WORKDIR}/git"
> +
> +# libc-test 'make' or 'make run' command is designed to build and run tests. It
> +# reports both build and test failures. The commands should be run on target.
> +do_compile() {
> +    :
> +}
> +
> +RDEPENDS:${PN} = " \
> +    bash \
> +    grep \
> +    musl \
> +    packagegroup-core-buildessential \
> +"
> +
> +RDEPENDS:${PN}-ptest = " \
> +     ${PN} \
> +     sed \
> +"
> +
> +install_path = "/opt/${PN}"
> +FILES:${PN} += "${install_path}/*"
> +
> +do_install () {
> +    install -d ${D}${install_path}/
> +    cp ${S}/Makefile ${D}${install_path}
> +    cp ${S}/config.mak.def ${D}${install_path}/config.mak
> +    cp -r ${S}/src ${D}${install_path}
> +}
> +
> +COMPATIBLE_HOST = "null"
> +COMPATIBLE_HOST:libc-musl = "(.*)"
> -- 
> 2.25.1
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#172948): https://lists.openembedded.org/g/openembedded-core/message/172948
> Mute This Topic: https://lists.openembedded.org/mt/94883839/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Chase Qi Nov. 9, 2022, 6:50 a.m. UTC | #2
Hi Alexandre,

On Wed, 9 Nov 2022 at 03:50, Alexandre Belloni
<alexandre.belloni@bootlin.com> wrote:
>
> Hello,
>
> This fails with:
> The following recipes do not have a maintainer assigned to them. Please add an entry to meta/conf/distro/include/maintainers.inc file.
> libc-test (/home/pokybuild/yocto-worker/oe-selftest-centos/build/meta/recipes-core/musl/libc-test_git.bb)
>

Thanks for pointing this out. I have sent v4. I added myself as the
maintainer of the recipe. I am fine to change it to any of the oe-core
core maintainers if that makes more sense.

- Chase

> On 08/11/2022 03:42:33+0000, Chase Qi wrote:
> > libc-test is a collection of unit test to measure the correctness and
> > robustness of a C/POSIX standard library implementation. It is developed
> > as part of the musl project.
> >
> > Signed-off-by: Chase Qi <chase.qi@linaro.org>
> > ---
> >  .../distro/include/ptest-packagelists.inc     |  1 +
> >  meta/recipes-core/musl/libc-test/run-ptest    | 28 ++++++++++
> >  meta/recipes-core/musl/libc-test_git.bb       | 51 +++++++++++++++++++
> >  3 files changed, 80 insertions(+)
> >  create mode 100644 meta/recipes-core/musl/libc-test/run-ptest
> >  create mode 100644 meta/recipes-core/musl/libc-test_git.bb
> >
> > diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
> > index 32b0e5297a..3c9ff43bd9 100644
> > --- a/meta/conf/distro/include/ptest-packagelists.inc
> > +++ b/meta/conf/distro/include/ptest-packagelists.inc
> > @@ -105,6 +105,7 @@ PTESTS_SLOW = "\
> >
> >  PTESTS_SLOW:remove:riscv64 = "valgrind-ptest"
> >  PTESTS_PROBLEMS:append:riscv64 = "valgrind-ptest"
> > +PTESTS_SLOW:append:libc-musl = " libc-test-ptest"
> >
> >  #    ruby-ptest \ # Timeout
> >  #    lz4-ptest \ # Needs a rewrite
> > diff --git a/meta/recipes-core/musl/libc-test/run-ptest b/meta/recipes-core/musl/libc-test/run-ptest
> > new file mode 100644
> > index 0000000000..0b4b687dec
> > --- /dev/null
> > +++ b/meta/recipes-core/musl/libc-test/run-ptest
> > @@ -0,0 +1,28 @@
> > +#!/bin/sh
> > +
> > +set -e
> > +
> > +cd /opt/libc-test
> > +make cleanall
> > +make run || true
> > +
> > +echo ""
> > +echo "--- ptest result ---"
> > +# libc-test runs tests by module(e.g. src/api) and generates sub-module test
> > +# report(e.g. src/api/REPORT) first. After all tests finish, it generates the
> > +# consolidated report file src/REPORT.
> > +report="/opt/libc-test/src/REPORT"
> > +if ! [ -f "${report}" ]; then
> > +    echo "${report} not found!"
> > +    echo "FAIL: libc-test"
> > +    exit 1
> > +# libc-test prints error on failure and prints nothing on success.
> > +elif grep -q '^FAIL src.*\.exe.*' "${report}"; then
> > +    # Print test failure in ptest format.
> > +    # e.g. "FAIL src/api/main.exe [status 1]" -> "FAIL: api_main"
> > +    grep '^FAIL src.*\.exe.*' "${report}" \
> > +        | sed 's|^FAIL src/|FAIL: |;s|/|_|;s|\.exe.*\]||'
> > +    exit 1
> > +else
> > +    echo "PASS: libc-test"
> > +fi
> > diff --git a/meta/recipes-core/musl/libc-test_git.bb b/meta/recipes-core/musl/libc-test_git.bb
> > new file mode 100644
> > index 0000000000..b5bfc6e34c
> > --- /dev/null
> > +++ b/meta/recipes-core/musl/libc-test_git.bb
> > @@ -0,0 +1,51 @@
> > +SUMMARY = "Musl libc unit tests"
> > +HOMEPAGE = "https://wiki.musl-libc.org/libc-test.html"
> > +DESCRIPTION = "libc-test is a collection of unit tests to measure the \
> > +correctness and robustness of a C/POSIX standard library implementation. It is \
> > +developed as part of the musl project."
> > +SECTION = "tests"
> > +LICENSE = "MIT"
> > +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=43ed1245085be90dc934288117d55a3b"
> > +
> > +inherit ptest
> > +
> > +SRCREV = "18e28496adee3d84fefdda6efcb9c5b8996a2398"
> > +SRC_URI = " \
> > +    git://repo.or.cz/libc-test;branch=master \
> > +    file://run-ptest \
> > +"
> > +
> > +PV = "0+git${SRCPV}"
> > +
> > +S = "${WORKDIR}/git"
> > +
> > +# libc-test 'make' or 'make run' command is designed to build and run tests. It
> > +# reports both build and test failures. The commands should be run on target.
> > +do_compile() {
> > +    :
> > +}
> > +
> > +RDEPENDS:${PN} = " \
> > +    bash \
> > +    grep \
> > +    musl \
> > +    packagegroup-core-buildessential \
> > +"
> > +
> > +RDEPENDS:${PN}-ptest = " \
> > +     ${PN} \
> > +     sed \
> > +"
> > +
> > +install_path = "/opt/${PN}"
> > +FILES:${PN} += "${install_path}/*"
> > +
> > +do_install () {
> > +    install -d ${D}${install_path}/
> > +    cp ${S}/Makefile ${D}${install_path}
> > +    cp ${S}/config.mak.def ${D}${install_path}/config.mak
> > +    cp -r ${S}/src ${D}${install_path}
> > +}
> > +
> > +COMPATIBLE_HOST = "null"
> > +COMPATIBLE_HOST:libc-musl = "(.*)"
> > --
> > 2.25.1
> >
>
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#172948): https://lists.openembedded.org/g/openembedded-core/message/172948
> > Mute This Topic: https://lists.openembedded.org/mt/94883839/3617179
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
>
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
diff mbox series

Patch

diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 32b0e5297a..3c9ff43bd9 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -105,6 +105,7 @@  PTESTS_SLOW = "\
 
 PTESTS_SLOW:remove:riscv64 = "valgrind-ptest"
 PTESTS_PROBLEMS:append:riscv64 = "valgrind-ptest"
+PTESTS_SLOW:append:libc-musl = " libc-test-ptest"
 
 #    ruby-ptest \ # Timeout
 #    lz4-ptest \ # Needs a rewrite
diff --git a/meta/recipes-core/musl/libc-test/run-ptest b/meta/recipes-core/musl/libc-test/run-ptest
new file mode 100644
index 0000000000..0b4b687dec
--- /dev/null
+++ b/meta/recipes-core/musl/libc-test/run-ptest
@@ -0,0 +1,28 @@ 
+#!/bin/sh
+
+set -e
+
+cd /opt/libc-test
+make cleanall
+make run || true
+
+echo ""
+echo "--- ptest result ---"
+# libc-test runs tests by module(e.g. src/api) and generates sub-module test
+# report(e.g. src/api/REPORT) first. After all tests finish, it generates the
+# consolidated report file src/REPORT.
+report="/opt/libc-test/src/REPORT"
+if ! [ -f "${report}" ]; then
+    echo "${report} not found!"
+    echo "FAIL: libc-test"
+    exit 1
+# libc-test prints error on failure and prints nothing on success.
+elif grep -q '^FAIL src.*\.exe.*' "${report}"; then
+    # Print test failure in ptest format.
+    # e.g. "FAIL src/api/main.exe [status 1]" -> "FAIL: api_main"
+    grep '^FAIL src.*\.exe.*' "${report}" \
+        | sed 's|^FAIL src/|FAIL: |;s|/|_|;s|\.exe.*\]||'
+    exit 1
+else
+    echo "PASS: libc-test"
+fi
diff --git a/meta/recipes-core/musl/libc-test_git.bb b/meta/recipes-core/musl/libc-test_git.bb
new file mode 100644
index 0000000000..b5bfc6e34c
--- /dev/null
+++ b/meta/recipes-core/musl/libc-test_git.bb
@@ -0,0 +1,51 @@ 
+SUMMARY = "Musl libc unit tests"
+HOMEPAGE = "https://wiki.musl-libc.org/libc-test.html"
+DESCRIPTION = "libc-test is a collection of unit tests to measure the \
+correctness and robustness of a C/POSIX standard library implementation. It is \
+developed as part of the musl project."
+SECTION = "tests"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=43ed1245085be90dc934288117d55a3b"
+
+inherit ptest
+
+SRCREV = "18e28496adee3d84fefdda6efcb9c5b8996a2398"
+SRC_URI = " \
+    git://repo.or.cz/libc-test;branch=master \
+    file://run-ptest \
+"
+
+PV = "0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+# libc-test 'make' or 'make run' command is designed to build and run tests. It
+# reports both build and test failures. The commands should be run on target.
+do_compile() {
+    :
+}
+
+RDEPENDS:${PN} = " \
+    bash \
+    grep \
+    musl \
+    packagegroup-core-buildessential \
+"
+
+RDEPENDS:${PN}-ptest = " \
+     ${PN} \
+     sed \
+"
+
+install_path = "/opt/${PN}"
+FILES:${PN} += "${install_path}/*"
+
+do_install () {
+    install -d ${D}${install_path}/
+    cp ${S}/Makefile ${D}${install_path}
+    cp ${S}/config.mak.def ${D}${install_path}/config.mak
+    cp -r ${S}/src ${D}${install_path}
+}
+
+COMPATIBLE_HOST = "null"
+COMPATIBLE_HOST:libc-musl = "(.*)"