From ac2360f1f7195aed8ef225a4617a6bfc00acd1a2 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 18 Dec 2025 06:12:13 +0700 Subject: [PATCH] Add one-liner test run to os-test --- mk/config.mk | 1 + mk/podman.mk | 2 +- recipes/core/redoxerd/recipe.toml | 9 --------- recipes/tests/os-test-bins/recipe.toml | 28 ++++++++++++++++++++++++++ src/bin/cookbook_redoxer.rs | 8 ++++++++ 5 files changed, 38 insertions(+), 10 deletions(-) delete mode 100644 recipes/core/redoxerd/recipe.toml create mode 100644 recipes/tests/os-test-bins/recipe.toml diff --git a/mk/config.mk b/mk/config.mk index 274e2ddf6..3c5d82aa7 100644 --- a/mk/config.mk +++ b/mk/config.mk @@ -120,6 +120,7 @@ endif # Automatic variables ROOT=$(CURDIR) export RUST_COMPILER_RT_ROOT=$(ROOT)/rust/src/llvm-project/compiler-rt +export TESTBIN?= RUNNING_IN_PODMAN=$(shell [ -f /run/.containerenv ] && echo 1 || echo 0) ifeq ($(PODMAN_BUILD),1) ifeq ($(RUNNING_IN_PODMAN),1) diff --git a/mk/podman.mk b/mk/podman.mk index 8f5223ee2..e79ba7518 100644 --- a/mk/podman.mk +++ b/mk/podman.mk @@ -21,7 +21,7 @@ PODMAN_VOLUMES?=--volume $(ROOT):$(CONTAINER_WORKDIR)$(PODMAN_VOLUME_FLAG) --vol PODMAN_ENV?=--env PATH=/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env PODMAN_BUILD=0 PODMAN_CONFIG?=--env ARCH=$(ARCH) --env BOARD=$(BOARD) --env CONFIG_NAME=$(CONFIG_NAME) --env FILESYSTEM_CONFIG=$(FILESYSTEM_CONFIG) --env PREFIX_BINARY=$(PREFIX_BINARY) \ --env CI=$(CI) --env COOKBOOK_MAKE_JOBS=$(COOKBOOK_MAKE_JOBS) --env COOKBOOK_LOGS=$(COOKBOOK_LOGS) --env COOKBOOK_VERBOSE=$(COOKBOOK_VERBOSE) \ - --env REPO_APPSTREAM=$(REPO_APPSTREAM) --env REPO_BINARY=$(REPO_BINARY) --env REPO_NONSTOP=$(REPO_NONSTOP) --env REPO_OFFLINE=$(REPO_OFFLINE) + --env REPO_APPSTREAM=$(REPO_APPSTREAM) --env REPO_BINARY=$(REPO_BINARY) --env REPO_NONSTOP=$(REPO_NONSTOP) --env REPO_OFFLINE=$(REPO_OFFLINE) --env TESTBIN=$(TESTBIN) PODMAN_OPTIONS?=--rm --workdir $(CONTAINER_WORKDIR) --interactive --tty --cap-add SYS_ADMIN --device /dev/fuse --network=host --env TERM=$(TERM) PODMAN_RUN?=podman run $(PODMAN_OPTIONS) $(PODMAN_VOLUMES) $(PODMAN_ENV) $(PODMAN_CONFIG) $(IMAGE_TAG) diff --git a/recipes/core/redoxerd/recipe.toml b/recipes/core/redoxerd/recipe.toml deleted file mode 100644 index 8a49ef48b..000000000 --- a/recipes/core/redoxerd/recipe.toml +++ /dev/null @@ -1,9 +0,0 @@ -[source] -git = "https://gitlab.redox-os.org/redox-os/redoxer.git" - -[build] -template = "custom" -script = """ -COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/daemon" -cookbook_cargo -""" diff --git a/recipes/tests/os-test-bins/recipe.toml b/recipes/tests/os-test-bins/recipe.toml new file mode 100644 index 000000000..5346384ed --- /dev/null +++ b/recipes/tests/os-test-bins/recipe.toml @@ -0,0 +1,28 @@ +[source] +same_as = "../os-test" + +[build] +template = "custom" +script = """ +DYNAMIC_INIT +SRC=${COOKBOOK_SOURCE} +DST=${COOKBOOK_STAGE}/root +if [ -z "$TESTBIN" ]; then +pushd ${SRC} +for file in */*/*.c; do + filename="${file%.*}" + mkdir -p $(dirname $DST/$filename) + # adding "true" because compilation can fail + ${CC} ${CFLAGS} ${LDFLAGS} "$SRC/$file" -o "$DST/$filename" -Wall || true + echo "./$filename" >> $DST/run.sh +done +popd +else + mkdir -p $(dirname $DST/$TESTBIN) + ${CC} ${CFLAGS} ${LDFLAGS} "$SRC/$TESTBIN.c" -o "$DST/$TESTBIN" -Wall +fi + +if [ -n "TESTBIN" ]; then +"${COOKBOOK_REDOXER}" write-exec "$DST/$TESTBIN" +fi +""" diff --git a/src/bin/cookbook_redoxer.rs b/src/bin/cookbook_redoxer.rs index 0a9303900..01bfbb159 100644 --- a/src/bin/cookbook_redoxer.rs +++ b/src/bin/cookbook_redoxer.rs @@ -5,6 +5,14 @@ fn main() { // Ensure all flags go to cargo if args.len() >= 2 { args.insert(2, "--".to_string()); + if args[1] == "write-exec" { + if let Ok(stage_dir) = std::env::var("COOKBOOK_STAGE") { + args.insert(2, format!("{}/root", stage_dir)); + args.insert(2, "--folder".to_string()); + args.insert(2, stage_dir); + args.insert(2, "--root".to_string()); + } + } } redoxer::main(&args); }