On 2023-11-02 04:34, Kent Overstreet wrote:
On Mon, Oct 30, 2023 at 03:58:14PM +0100, [email protected]
wrote:
From: Janpieter Sollie <[email protected]>
Allow the tests to run on a non-ABI-compatible cpu,
verify code when the architecture isn't physically available.
in the future, bcachefs-tools should be cross-compiled,
and the list of CPU types should be expanded
Signed-off-by: jpsollie <[email protected]>
---
build-test-kernel | 2 +-
lib/common.sh | 11 ++++++++---
lib/libktest.sh | 8 ++++++--
lib/testrunner | 10 +++++++++-
root_image | 8 +++++++-
tests/kconfig.sh | 2 ++
6 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/build-test-kernel b/build-test-kernel
index 72990ba..9121fd1 100755
--- a/build-test-kernel
+++ b/build-test-kernel
@@ -107,7 +107,7 @@ ktest_kernel_source=$(readlink -e
"$ktest_kernel_source")
ktest_kernel_build="$ktest_out/kernel_build.$ktest_arch"
mkdir -p "$ktest_kernel_build"
-if [[ -n $CROSS_COMPILE ]]; then
+if [[ -z ${CROSS_COMPILE:+x} ]]; then
???
This looks like a workaround for test, i.e. [ - [[ behaves better.
Ah, missed that, thx
diff --git a/lib/testrunner b/lib/testrunner
index acbc45f..a8e8d17 100755
--- a/lib/testrunner
+++ b/lib/testrunner
@@ -20,6 +20,10 @@ ktest_out="/host/$ktest_out"
ln -sf $ktest_dir /ktest
ln -sf $ktest_out /ktest-out
+. /ktest/lib/common.sh
+
+parse_arch $(uname -m)
+
# Some home directories are in weird places:
mkdir -p $(dirname $home)
ln -sf /host/$home $home
@@ -92,7 +96,11 @@ for i in "${ktest_make_install[@]}"; do
if [[ -f configure && ! -f Makefile ]]; then
run_quiet "configure $(basename $i)" ./configure
fi
- run_quiet "building $(basename $i)" make -j $ktest_cpus
+ #this won't make me popular - compiling bcachefs tools with rust
support on a emulated machine is too heavy to be useful, so omit it:
+ rustcompile="" && [[ "$(systemd-detect-virt)" == "qemu" ]] &&
rustcompile="NO_RUST=1"
+ #bcachefs tools sometimes seems to use compiled files from
previous runs, even if other architecture, so clean out:
+ [ "bcachefs-tools" == "$(basename $i)" ] && [ "$(objdump -f
bcachefs.o | grep architecture | cut -d' ' -f 2)" == "$(objdump -f
/bin/bash | grep architecture | cut -d' ' -f 2)" ] || make clean
+ run_quiet "building $(basename $i)" make $rustcompile -j
$ktest_cpus
run_quiet "installing $(basename $i)" make -j $ktest_cpus install
popd > /dev/null
Nope, don't put bcachefs-tools specific stuff in testrunner.
This may not be needed anymore, but bcachefs-tools tended to accept code
compiled for another target.
In meantime, the needed functionality can be made using the mount via
fuse2fs to verify the target architecture - so I'll rewrite it that way.
done
diff --git a/root_image b/root_image
index 26c99fe..87add22 100755
--- a/root_image
+++ b/root_image
@@ -118,7 +118,12 @@ PACKAGES+=(cryptsetup)
PACKAGES+=(multipath-tools sg3-utils srptools)
# ZFS support
-PACKAGES+=("linux-headers-generic" dkms zfsutils-linux zfs-dkms)
+PACKAGES+=("linux-headers-generic")
+# unless no other option when cross-compiling, ignore ZFS
+# DKMS needs to cross-compile the module,
+# against a different kernel on a different CPUarchitecture.
+# this has to cause errors
+[ $CROSS_COMPILE == 1 ] || PACKAGES+=(dkms zfsutils-linux zfs-dkms)
CROSS_COMPILE isn't for root_image - not sure what you're trying to do
here.
omit ZFS: during install, the ZFS installer compiles the modules for the
running kernel.
This is the kernel installed on the host, as the installer runs in qemu
user.
Kind regards,
Janpieter Sollie