All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] ptest-runner: add non-root ptest user for tests to run as
@ 2023-02-27 13:13 Ross Burton
  2023-02-27 13:13 ` [PATCH 2/2] quilt: run tests as ptest user, and let that user write into the tests Ross Burton
  0 siblings, 1 reply; 2+ messages in thread
From: Ross Burton @ 2023-02-27 13:13 UTC (permalink / raw)
  To: openembedded-core; +Cc: nd

Some tests really don't want to be run as root, either because they
expect to get "permission denied" errors occasionally, or have explicit
checks.

Instead of numerous recipes re-inventing user creation in run-ptest,
create a user in the ptest-runner recipe that they can all use.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb b/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb
index 5a1d3299930..ee13e28c7df 100644
--- a/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb
+++ b/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb
@@ -32,3 +32,8 @@ RDEPENDS:${PN}:append:libc-glibc = " libgcc"
 
 # pstree is called by ptest-runner-collect-system-data
 RDEPENDS:${PN}:append = " pstree"
+
+# Create a non-root user that test suites can use easily
+inherit useradd
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --no-create-home --home / --user-group ptest"
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [PATCH 2/2] quilt: run tests as ptest user, and let that user write into the tests
  2023-02-27 13:13 [PATCH 1/2] ptest-runner: add non-root ptest user for tests to run as Ross Burton
@ 2023-02-27 13:13 ` Ross Burton
  0 siblings, 0 replies; 2+ messages in thread
From: Ross Burton @ 2023-02-27 13:13 UTC (permalink / raw)
  To: openembedded-core; +Cc: nd

The tests need to run as a non-root user, but that user also needs to be
able to write into the tests directory to create the work directories.

Use the new ptest user that ptest-runner creates to avoid having to add
a new user, and ensure that the test/ directory is owned by the ptest
group and that group has write access.

This solves the ptest regression where since oe-core 9a287b4 no quilt
tests were actually running.

A better solution would be to allow the tests to create a work directory
in another directory, but that would need work upstream which can happen
later.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 meta/recipes-devtools/quilt/quilt.inc       | 13 ++++++++++++-
 meta/recipes-devtools/quilt/quilt/run-ptest |  6 +-----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/meta/recipes-devtools/quilt/quilt.inc b/meta/recipes-devtools/quilt/quilt.inc
index f7ff958103e..01fc22e9963 100644
--- a/meta/recipes-devtools/quilt/quilt.inc
+++ b/meta/recipes-devtools/quilt/quilt.inc
@@ -61,6 +61,9 @@ do_install:append:class-native () {
     touch ${D}${sysconfdir}/quiltrc
 }
 
+# The tests need to run as a non-root user, so pull in the ptest user
+DEPENDS:append:class-target = "${@bb.utils.contains('PTEST_ENABLED', '1', ' ptest-runner', '', d)}"
+
 do_install_ptest() {
 	install ${WORKDIR}/test.sh ${D}${PTEST_PATH}
     mkdir ${D}${PTEST_PATH}/test
@@ -69,6 +72,14 @@ do_install_ptest() {
     rm -f ${D}${PTEST_PATH}/test/mail.test ${D}${PTEST_PATH}/test/patch-wrapper.test
 }
 
+# ptest.bbclass currently chowns the ptest directory explicitly, so we need to
+# change permission after that has happened so the ptest user can write a
+# temporary directory.
+do_install_ptest_base:append() {
+    chgrp ptest ${D}${PTEST_PATH}/test
+    chmod g+w ${D}${PTEST_PATH}/test
+}
+
 PACKAGES += "guards guards-doc"
 
 FILES:${PN} = "${sysconfdir} ${datadir}/quilt \
@@ -84,5 +95,5 @@ RDEPENDS:${PN}-ptest += "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-overloading \
-                         bash util-linux-getopt \
+                         bash util-linux-getopt ptest-runner \
                         "
diff --git a/meta/recipes-devtools/quilt/quilt/run-ptest b/meta/recipes-devtools/quilt/quilt/run-ptest
index 322508cbe25..f35a756d6b4 100755
--- a/meta/recipes-devtools/quilt/quilt/run-ptest
+++ b/meta/recipes-devtools/quilt/quilt/run-ptest
@@ -1,7 +1,3 @@
 #!/bin/sh
 
-/usr/sbin/adduser --disabled-password --gecos "" quilttest
-
-su -c ./test.sh quilttest
-
-/usr/sbin/deluser quilttest
+su -c ./test.sh ptest
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-02-27 13:13 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-27 13:13 [PATCH 1/2] ptest-runner: add non-root ptest user for tests to run as Ross Burton
2023-02-27 13:13 ` [PATCH 2/2] quilt: run tests as ptest user, and let that user write into the tests Ross Burton

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.