Add one-liner test run to os-test

This commit is contained in:
Wildan M 2025-12-18 06:12:13 +07:00
parent a3f3edc0ef
commit ac2360f1f7
No known key found for this signature in database
GPG Key ID: 01AC53185C679C79
5 changed files with 38 additions and 10 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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
"""

View File

@ -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
"""

View File

@ -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);
}