Make apps test optional

This commit is contained in:
Qingsong Chen 2025-07-17 09:37:02 +00:00 committed by Tate, Hongliang Tian
parent 5ccadb6253
commit 54b1782a2f
5 changed files with 46 additions and 32 deletions

View File

@ -21,6 +21,7 @@ OSTD_TASK_STACK_SIZE_IN_PAGES ?= 64
FEATURES ?=
NO_DEFAULT_FEATURES ?= 0
COVERAGE ?= 0
ENABLE_BASIC_TEST ?= false
# End of global build options.
# GDB debugging and profiling options.
@ -63,13 +64,16 @@ CARGO_OSDK_BUILD_ARGS += --kcmd-args="SYSCALL_TEST_WORKDIR=$(SYSCALL_TEST_WORKDI
CARGO_OSDK_BUILD_ARGS += --kcmd-args="EXTRA_BLOCKLISTS_DIRS=$(EXTRA_BLOCKLISTS_DIRS)"
CARGO_OSDK_BUILD_ARGS += --init-args="/opt/syscall_test/run_syscall_test.sh"
else ifeq ($(AUTO_TEST), test)
ENABLE_BASIC_TEST := true
ifneq ($(SMP), 1)
CARGO_OSDK_BUILD_ARGS += --kcmd-args="BLOCK_UNSUPPORTED_SMP_TESTS=1"
endif
CARGO_OSDK_BUILD_ARGS += --init-args="/test/run_general_test.sh"
else ifeq ($(AUTO_TEST), boot)
ENABLE_BASIC_TEST := true
CARGO_OSDK_BUILD_ARGS += --init-args="/test/boot_hello.sh"
else ifeq ($(AUTO_TEST), vsock)
ENABLE_BASIC_TEST := true
export VSOCK=on
CARGO_OSDK_BUILD_ARGS += --init-args="/test/run_vsock_test.sh"
endif

View File

@ -4,6 +4,7 @@ ARCH ?= x86_64
SMP ?= 1
SYSCALL_TEST_SUITE ?= ltp
SYSCALL_TEST_WORKDIR ?= /tmp
ENABLE_BASIC_TEST ?= false
MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
CUR_DIR := $(patsubst %/,%,$(dir $(MKFILE_PATH)))
BUILD_DIR := $(CUR_DIR)/build
@ -43,6 +44,7 @@ build: $(INITRAMFS_IMAGE) $(EXT2_IMAGE) $(EXFAT_IMAGE)
$(INITRAMFS_IMAGE): $(INITRAMFS)
@nix-build \
--argstr target $(ARCH) \
--arg enableBasicTest $(ENABLE_BASIC_TEST) \
--arg enableBenchmark $(ENABLE_BENCHMARK) \
--arg enableSyscallTest $(ENABLE_SYSCALL_TEST) \
--argstr syscallTestSuite $(SYSCALL_TEST_SUITE) \
@ -56,6 +58,7 @@ $(INITRAMFS_IMAGE): $(INITRAMFS)
$(INITRAMFS):
@nix-build \
--argstr target $(ARCH) \
--arg enableBasicTest $(ENABLE_BASIC_TEST) \
--arg enableBenchmark $(ENABLE_BENCHMARK) \
--arg enableSyscallTest $(ENABLE_SYSCALL_TEST) \
--argstr syscallTestSuite $(SYSCALL_TEST_SUITE) \

View File

@ -1,34 +1,37 @@
{ lib, stdenv, fetchFromGitHub, hostPlatform, glibc, libnl, }:
stdenv.mkDerivation {
pname = "apps";
version = "0.1.0";
src = lib.fileset.toSource {
root = ./../src;
fileset = ./../src/apps;
};
MONGOOSE_DIR = fetchFromGitHub {
{ lib, stdenv, fetchFromGitHub, hostPlatform, glibc, libnl, }: rec {
mongoose_src = fetchFromGitHub {
owner = "cesanta";
repo = "mongoose";
rev = "7.13";
sha256 = "sha256-9XHUE8SVOG/X7SIB52C8EImPx4XZ7B/5Ojwmb0PkiuI";
};
HOST_PLATFORM = "${hostPlatform.system}";
CC = "${stdenv.cc.targetPrefix}cc";
C_FLAGS = "-I${libnl.dev}/include/libnl3";
# FIXME: Excluding `glibc` allows the build to succeed, but causes some tests to fail.
buildInputs = [ glibc glibc.static libnl ];
buildCommand = ''
BUILD_DIR=$(mktemp -d)
mkdir -p $BUILD_DIR
cp -r $src/apps $BUILD_DIR/
package = stdenv.mkDerivation {
pname = "apps";
version = "0.1.0";
src = lib.fileset.toSource {
root = ./../src;
fileset = ./../src/apps;
};
pushd $BUILD_DIR
make --no-print-directory -C apps
popd
MONGOOSE_DIR = "${mongoose_src}";
mkdir -p $out
mv build/initramfs/test/* $out/
'';
HOST_PLATFORM = "${hostPlatform.system}";
CC = "${stdenv.cc.targetPrefix}cc";
C_FLAGS = "-I${libnl.dev}/include/libnl3";
# FIXME: Excluding `glibc` allows the build to succeed, but causes some tests to fail.
buildInputs = [ glibc glibc.static libnl ];
buildCommand = ''
BUILD_DIR=$(mktemp -d)
mkdir -p $BUILD_DIR
cp -r $src/apps $BUILD_DIR/
pushd $BUILD_DIR
make --no-print-directory -C apps
popd
mkdir -p $out
mv build/initramfs/test/* $out/
'';
};
}

View File

@ -1,6 +1,6 @@
{ target ? "x86_64", enableBenchmark ? false, enableSyscallTest ? false
, syscallTestSuite ? "ltp", syscallTestWorkDir ? "/tmp", smp ? 1
, initramfsCompressed ? true, }:
{ target ? "x86_64", enableBasicTest ? false, enableBenchmark ? false
, enableSyscallTest ? false, syscallTestSuite ? "ltp"
, syscallTestWorkDir ? "/tmp", smp ? 1, initramfsCompressed ? true, }:
let
crossSystem.config = if target == "x86_64" then
"x86_64-unknown-linux-gnu"
@ -34,7 +34,8 @@ in rec {
hash = "sha256-F5RPtu/Hh2hDnjm6/0mc0wGqhQtfMNvPP+6/Id9Hcpk";
};
initramfs = pkgs.callPackage ./initramfs.nix {
inherit apps busybox linux_vdso;
inherit busybox linux_vdso;
apps = if enableBasicTest then apps else null;
benchmark = if enableBenchmark then benchmark else null;
syscall = if enableSyscallTest then syscall else null;
};

View File

@ -9,7 +9,8 @@ let
name = "gvisor-libs";
path = "/lib/x86_64-linux-gnu";
};
all_pkgs = [ apps busybox etc linux_vdso ]
all_pkgs = [ busybox etc linux_vdso ]
++ lib.optionals (apps != null) [ apps.package ]
++ lib.optionals (benchmark != null) [ benchmark.package ]
++ lib.optionals (syscall != null) [ syscall.package ];
in stdenv.mkDerivation {
@ -32,10 +33,12 @@ in stdenv.mkDerivation {
cp -r ${linux_vdso}/riscv64-vdso.so $out/usr/lib/x86_64-linux-gnu/vdso64.so
''}
cp -r ${apps}/* $out/test/
cp -r ${etc}/* $out/etc/
${lib.optionalString (apps != null) ''
cp -r ${apps.package}/* $out/test/
''}
${lib.optionalString (benchmark != null) ''
cp -r "${benchmark.package}"/* $out/benchmark/
''}