On 2024/3/29 17:08, Eduard Zingerman wrote:
On Thu, 2024-03-28 at 12:49 +0000, Pu Lehui wrote:
Patch 1 is to enable cross platform testing for local vmtest. The
remaining patch adds local vmtest support for riscv64. It relies on
commit [0] [1] for better regression.
We can now perform cross platform testing for riscv64 bpf using the
following command:
PLATFORM=riscv64 CROSS_COMPILE=riscv64-linux-gnu- \
tools/testing/selftests/bpf/vmtest.sh -- \
./test_progs -d \
\"$(cat tools/testing/selftests/bpf/DENYLIST.riscv64 \
| cut -d'#' -f1 \
| sed -e 's/^[[:space:]]*//' \
-e 's/[[:space:]]*$//' \
| tr -s '\n' ','\
)\"
The test platform is x86_64 architecture, and the versions of relevant
components are as follows:
QEMU: 8.2.0
CLANG: 17.0.6 (align to BPF CI)
OpenSBI: 1.3.1 (default by QEMU)
ROOTFS: ubuntu jammy (generated by [2])
Link: https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/commit/?id=ea6873118493 [0]
Link: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/commit/?id=443574b033876c85 [1]
Link: https://github.com/libbpf/ci/blob/main/rootfs/mkrootfs_debian.sh [2]
Hello,
I wanted to do a test run for this patch-set but did not figure out
how to build rootfs for riscv64 system.
I modified mkrootfs_debian.sh as below, but build command fails:
$ ./rootfs/mkrootfs_debian.sh -d jammy -a riscv64 -m http://de.archive.ubuntu.com/ubuntu
...
E: Couldn't download http://de.archive.ubuntu.com/ubuntu/dists/jammy/main/binary-riscv64/Packages
Apparently jammy does not have binaries built for riscv64, or I'm failing to find correct mirror.
Could you please provide some instructions on how to prepare rootfs?
Hi Eduard, We need the mirror repository of ubuntu-ports, you could try
http://de.ports.ubuntu.com/.
Thanks,
Eduard
--
diff --git a/rootfs/mkrootfs_debian.sh b/rootfs/mkrootfs_debian.sh
index dfe957e..1d5b769 100755
--- a/rootfs/mkrootfs_debian.sh
+++ b/rootfs/mkrootfs_debian.sh
@@ -16,6 +16,7 @@ CPUTABLE="${CPUTABLE:-/usr/share/dpkg/cputable}"
deb_arch=$(dpkg --print-architecture)
distro="bullseye"
+mirror=""
function usage() {
echo "Usage: $0 [-a | --arch architecture] [-h | --help]
@@ -25,6 +26,7 @@ By default build an image for the architecture of the host running the script.
-a | --arch: architecture to build the image for. Default (${deb_arch})
-d | --distro: distribution to build. Default (${distro})
+ -m | --mirror: mirror for distribution to build. Default (${mirror})
"
}
@@ -44,7 +46,7 @@ function qemu_static() {
# Given a Debian architecture find the location of the matching
# qemu-${gnu_arch}-static binary.
gnu_arch=$(debian_to_gnu "${1}")
- echo "qemu-${gnu_arch}-static"
+ echo "qemu-${gnu_arch}"
}
function check_requirements() {
@@ -95,7 +97,7 @@ function check_requirements() {
fi
}
-TEMP=$(getopt -l "arch:,distro:,help" -o "a:d:h" -- "$@")
+TEMP=$(getopt -l "arch:,distro:,mirror:,help" -o "a:d:m:h" -- "$@")
if [ $? -ne 0 ]; then
usage
fi
@@ -113,6 +115,10 @@ while true; do
distro="$2"
shift 2
;;
+ --mirror | -m)
+ mirror="$2"
+ shift 2
+ ;;
--help | -h)
usage
exit
@@ -162,7 +168,8 @@ debootstrap --include="$packages" \
--arch="${deb_arch}" \
"$@" \
"${distro}" \
- "$root"
+ "$root" \
+ "${mirror}"
qemu=$(which $(qemu_static ${deb_arch}))