From 54b1782a2fb9d756be5b097acf8861007861130c Mon Sep 17 00:00:00 2001 From: Qingsong Chen Date: Thu, 17 Jul 2025 09:37:02 +0000 Subject: [PATCH] Make apps test optional --- Makefile | 4 ++++ test/Makefile | 3 +++ test/nix/apps.nix | 53 ++++++++++++++++++++++-------------------- test/nix/default.nix | 9 +++---- test/nix/initramfs.nix | 9 ++++--- 5 files changed, 46 insertions(+), 32 deletions(-) diff --git a/Makefile b/Makefile index b23546966..40f324c41 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/test/Makefile b/test/Makefile index de1ebb084..fabb9aaf5 100644 --- a/test/Makefile +++ b/test/Makefile @@ -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) \ diff --git a/test/nix/apps.nix b/test/nix/apps.nix index 1aa4f326d..fce8a0ea9 100644 --- a/test/nix/apps.nix +++ b/test/nix/apps.nix @@ -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/ + ''; + }; } diff --git a/test/nix/default.nix b/test/nix/default.nix index b537e1ee0..37e5cc7ff 100644 --- a/test/nix/default.nix +++ b/test/nix/default.nix @@ -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; }; diff --git a/test/nix/initramfs.nix b/test/nix/initramfs.nix index 8e55a95e9..4cfc045a4 100644 --- a/test/nix/initramfs.nix +++ b/test/nix/initramfs.nix @@ -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/ ''}