Message ID | 20250122-nolibc-config-v1-5-a697db968b49@weissschuh.net (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | selftests/nolibc: test kernel configuration cleanups | expand |
Hi Thomas! On Wed, Jan 22, 2025 at 07:41:48PM +0100, Thomas Weißschuh wrote: > @@ -173,7 +170,7 @@ test_arch() { > exit 1 > esac > printf '%-15s' "$arch:" > - swallow_output "${MAKE[@]}" CFLAGS_EXTRA="$CFLAGS_EXTRA" "$test_target" V=1 > + swallow_output "${MAKE[@]}" CFLAGS_EXTRA="$CFLAGS_EXTRA" defconfig "$test_target" V=1 Just a question, are you certain that dependencies between $test_target and defconfig are always properly handled ? I'm asking because "make -j" is something valid, and we wouldn't want defconfig to run in parallel with test_target. For real sequencing (and making sure targets run in the correct order), I normally prefer to run them one at a time. Here you could simply prepend the defconfig line before the original one and get these guarantees (and also make them explicit). That's also less edit when copy-pasting from the terminal to the shell when trying to debug. Just my few cents ;-) Willy
Hi Willy! On 2025-01-22 19:52:06+0100, Willy Tarreau wrote: > On Wed, Jan 22, 2025 at 07:41:48PM +0100, Thomas Weißschuh wrote: > > @@ -173,7 +170,7 @@ test_arch() { > > exit 1 > > esac > > printf '%-15s' "$arch:" > > - swallow_output "${MAKE[@]}" CFLAGS_EXTRA="$CFLAGS_EXTRA" "$test_target" V=1 > > + swallow_output "${MAKE[@]}" CFLAGS_EXTRA="$CFLAGS_EXTRA" defconfig "$test_target" V=1 > > Just a question, are you certain that dependencies between $test_target > and defconfig are always properly handled ? I'm asking because "make -j" > is something valid, and we wouldn't want defconfig to run in parallel > with test_target. "make -j" is not only valid but used by run-tests.sh always. The sequencing is explicitly enforced in patch 4. > For real sequencing (and making sure targets run in the > correct order), I normally prefer to run them one at a time. Here you could > simply prepend the defconfig line before the original one and get these > guarantees (and also make them explicit). That's also less edit when > copy-pasting from the terminal to the shell when trying to debug. Sounds fine to me, too. That would remove the need for patch 4, but I'd like to keep it anyways. Thomas
On Wed, Jan 22, 2025 at 08:00:28PM +0100, Thomas Weißschuh wrote: > Hi Willy! > > On 2025-01-22 19:52:06+0100, Willy Tarreau wrote: > > On Wed, Jan 22, 2025 at 07:41:48PM +0100, Thomas Weißschuh wrote: > > > @@ -173,7 +170,7 @@ test_arch() { > > > exit 1 > > > esac > > > printf '%-15s' "$arch:" > > > - swallow_output "${MAKE[@]}" CFLAGS_EXTRA="$CFLAGS_EXTRA" "$test_target" V=1 > > > + swallow_output "${MAKE[@]}" CFLAGS_EXTRA="$CFLAGS_EXTRA" defconfig "$test_target" V=1 > > > > Just a question, are you certain that dependencies between $test_target > > and defconfig are always properly handled ? I'm asking because "make -j" > > is something valid, and we wouldn't want defconfig to run in parallel > > with test_target. > > "make -j" is not only valid but used by run-tests.sh always. > The sequencing is explicitly enforced in patch 4. I learned something today, I didn't know about order-only rules. > > For real sequencing (and making sure targets run in the > > correct order), I normally prefer to run them one at a time. Here you could > > simply prepend the defconfig line before the original one and get these > > guarantees (and also make them explicit). That's also less edit when > > copy-pasting from the terminal to the shell when trying to debug. > > Sounds fine to me, too. > That would remove the need for patch 4, but I'd like to keep it anyways. Agreed! Willy
diff --git a/tools/testing/selftests/nolibc/run-tests.sh b/tools/testing/selftests/nolibc/run-tests.sh index 9c5160c5388122deeeb59ecfced7633000d69b10..664f92e1c5500f726ab33247321b96e8602ce185 100755 --- a/tools/testing/selftests/nolibc/run-tests.sh +++ b/tools/testing/selftests/nolibc/run-tests.sh @@ -158,9 +158,6 @@ test_arch() { MAKE=(make -j"${nproc}" XARCH="${arch}" CROSS_COMPILE="${cross_compile}" LLVM="${llvm}" O="${build_dir}") mkdir -p "$build_dir" - if [ "$test_mode" = "system" ] && [ ! -f "${build_dir}/.config" ]; then - swallow_output "${MAKE[@]}" defconfig - fi case "$test_mode" in 'system') test_target=run @@ -173,7 +170,7 @@ test_arch() { exit 1 esac printf '%-15s' "$arch:" - swallow_output "${MAKE[@]}" CFLAGS_EXTRA="$CFLAGS_EXTRA" "$test_target" V=1 + swallow_output "${MAKE[@]}" CFLAGS_EXTRA="$CFLAGS_EXTRA" defconfig "$test_target" V=1 cp run.out run.out."${arch}" "${MAKE[@]}" report | grep passed }
Avoid using a stale test kernel configuration by always synchronizing it to the current source tree. kbuild is smart enough to avoid spurious rebuilds. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> --- tools/testing/selftests/nolibc/run-tests.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)