From: Khem Raj Date: Sat, 9 Sep 2023 01:56:02 +0000 (-0700) Subject: libc-test: Run as non-root user X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=585bf4b780a8ad60ba2b33cede4f0092ff61ddfc;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git libc-test: Run as non-root user Some of tests impose rlimit on it before running which wont be imposed when running as root user. Fixes src/regression/pthread_atfork-errno-clobber.c:23: (pid = fork()) == -1 failed: fork succeeded despite rlimit src/regression/pthread_atfork-errno-clobber.c:23: (pid = fork()) == -1 failed: fork succeeded despite rlimit FAIL src/regression/pthread_atfork-errno-clobber-static.exe [status 1] Signed-off-by: Khem Raj Signed-off-by: Alexandre Belloni --- diff --git a/meta/recipes-core/musl/libc-test/run-libc-ptests b/meta/recipes-core/musl/libc-test/run-libc-ptests new file mode 100644 index 00000000000..0b4b687dec7 --- /dev/null +++ b/meta/recipes-core/musl/libc-test/run-libc-ptests @@ -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/run-ptest b/meta/recipes-core/musl/libc-test/run-ptest index 0b4b687dec7..53cd34f506f 100644 --- a/meta/recipes-core/musl/libc-test/run-ptest +++ b/meta/recipes-core/musl/libc-test/run-ptest @@ -1,28 +1,3 @@ #!/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 +chown -R ptest:ptest /opt/libc-test + su -c ./run-libc-ptests ptest diff --git a/meta/recipes-core/musl/libc-test_git.bb b/meta/recipes-core/musl/libc-test_git.bb index e63abe838d2..619a959fd29 100644 --- a/meta/recipes-core/musl/libc-test_git.bb +++ b/meta/recipes-core/musl/libc-test_git.bb @@ -13,6 +13,7 @@ SRCREV = "18e28496adee3d84fefdda6efcb9c5b8996a2398" SRC_URI = " \ git://repo.or.cz/libc-test;branch=master;protocol=https \ file://run-ptest \ + file://run-libc-ptests \ " PV = "0+git" @@ -48,5 +49,9 @@ do_install () { cp -r ${S}/src ${D}${install_path} } +do_install_ptest_base:append() { + install -Dm 0755 ${WORKDIR}/run-libc-ptests ${D}${PTEST_PATH}/run-libc-ptests +} + COMPATIBLE_HOST = "null" COMPATIBLE_HOST:libc-musl = "(.*)"