asterinas/test/initramfs/Makefile

192 lines
5.2 KiB
Makefile
Raw Normal View History

# SPDX-License-Identifier: MPL-2.0
2025-08-19 08:56:19 +00:00
OSDK_TARGET_ARCH ?= x86_64
2025-07-04 08:37:47 +00:00
SMP ?= 1
2025-07-17 12:52:24 +00:00
VERBOSE ?= 1
2025-07-04 08:37:47 +00:00
SYSCALL_TEST_SUITE ?= ltp
SYSCALL_TEST_WORKDIR ?= /tmp
2026-02-10 08:20:49 +00:00
ENABLE_REGRESSION_TEST ?= false
2025-12-15 06:25:32 +00:00
# Specify platform macros when building regression tests (supported: asterinas, linux).
# - asterinas: Define both `__asterinas__` and `__linux__`. Tests may fail in Linux.
# - linux: Define only `__linux__`. Tests may fail in Asterinas.
BASIC_TEST_PLATFORM ?= asterinas
DNS_SERVER ?= none
2025-07-17 09:40:41 +00:00
# Set Nix's cached tarballs to be live for a longer period of time (30 days) to avoid network traffics.
# Nix's default value is rather small (1 hour or 3600 seconds).
NIXPKGS_CACHE_TTL := 2592000 # In seconds
2023-05-29 05:29:53 +00:00
MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
CUR_DIR := $(patsubst %/,%,$(dir $(MKFILE_PATH)))
BUILD_DIR := $(CUR_DIR)/build
INITRAMFS := $(BUILD_DIR)/initramfs
INITRAMFS_SKIP_GZIP ?= 0
ifeq ($(INITRAMFS_SKIP_GZIP),1)
INITRAMFS_IMAGE := $(BUILD_DIR)/initramfs.cpio
2025-07-04 08:37:47 +00:00
INITRAMFS_COMPRESSED := false
else
INITRAMFS_IMAGE := $(BUILD_DIR)/initramfs.cpio.gz
2025-07-04 08:37:47 +00:00
INITRAMFS_COMPRESSED := true
endif
2023-09-18 03:47:17 +00:00
EXT2_IMAGE := $(BUILD_DIR)/ext2.img
2024-03-18 07:58:37 +00:00
EXFAT_IMAGE := $(BUILD_DIR)/exfat.img
2025-07-04 08:37:47 +00:00
# Include benchmark, if BENCHMARK is set.
ifeq ($(BENCHMARK), none)
2025-07-04 08:37:47 +00:00
ENABLE_BENCHMARK = false
else
ENABLE_BENCHMARK = true
endif
2025-07-04 08:37:47 +00:00
# Include syscall_test, if BUILD_SYSCALL_TEST is set.
ifeq ($(BUILD_SYSCALL_TEST), 1)
ENABLE_SYSCALL_TEST = true
else
ENABLE_SYSCALL_TEST = false
endif
2025-07-17 12:52:24 +00:00
# Decreases the level of verbosity of diagnostic messages from Nix.
ifeq ($(VERBOSE), 0)
NIX_QUIET = --quiet -Q
endif
2024-02-23 03:50:27 +00:00
.PHONY: all
all: build
2025-07-04 08:37:47 +00:00
.PHONY: build
2025-08-19 08:56:19 +00:00
ifeq ($(OSDK_TARGET_ARCH), loongarch64)
build: $(EXT2_IMAGE) $(EXFAT_IMAGE)
@echo "For loongarch, we generate a fake initramfs to successfully test or build."
@touch $(INITRAMFS_IMAGE)
else
2025-07-04 08:37:47 +00:00
build: $(INITRAMFS_IMAGE) $(EXT2_IMAGE) $(EXFAT_IMAGE)
endif
2024-02-29 15:44:41 +00:00
.PHONY: $(INITRAMFS_IMAGE)
2025-07-04 08:37:47 +00:00
$(INITRAMFS_IMAGE): $(INITRAMFS)
@nix-build \
2025-07-17 09:40:41 +00:00
--tarball-ttl $(NIXPKGS_CACHE_TTL) \
2025-08-19 08:56:19 +00:00
--argstr target $(OSDK_TARGET_ARCH) \
2026-02-10 08:20:49 +00:00
--arg enableRegressionTest $(ENABLE_REGRESSION_TEST) \
2025-12-15 06:25:32 +00:00
--argstr basicTestPlatform $(BASIC_TEST_PLATFORM) \
2025-07-04 08:37:47 +00:00
--arg enableBenchmark $(ENABLE_BENCHMARK) \
--arg enableSyscallTest $(ENABLE_SYSCALL_TEST) \
--argstr syscallTestSuite $(SYSCALL_TEST_SUITE) \
--argstr syscallTestWorkDir $(SYSCALL_TEST_WORKDIR) \
--argstr dnsServer ${DNS_SERVER} \
2025-07-04 08:37:47 +00:00
--arg initramfsCompressed $(INITRAMFS_COMPRESSED) \
--arg smp $(SMP) \
--out-link $@ \
nix -A initramfs-image
.PHONY: $(INITRAMFS)
$(INITRAMFS):
@nix-build \
2025-07-17 09:40:41 +00:00
--tarball-ttl $(NIXPKGS_CACHE_TTL) \
2025-08-19 08:56:19 +00:00
--argstr target $(OSDK_TARGET_ARCH) \
2026-02-10 08:20:49 +00:00
--arg enableRegressionTest $(ENABLE_REGRESSION_TEST) \
2025-12-15 06:25:32 +00:00
--argstr basicTestPlatform $(BASIC_TEST_PLATFORM) \
2025-07-04 08:37:47 +00:00
--arg enableBenchmark $(ENABLE_BENCHMARK) \
--arg enableSyscallTest $(ENABLE_SYSCALL_TEST) \
--argstr syscallTestSuite $(SYSCALL_TEST_SUITE) \
--argstr syscallTestWorkDir $(SYSCALL_TEST_WORKDIR) \
--argstr dnsServer ${DNS_SERVER} \
2025-07-04 08:37:47 +00:00
--arg smp $(SMP) \
--out-link $@ \
nix -A initramfs
2023-05-29 05:29:53 +00:00
2025-07-17 12:52:24 +00:00
# Prebuild x86_64 packages
x86_64_pkgs:
@nix-build \
nix/default.nix \
--tarball-ttl $(NIXPKGS_CACHE_TTL) \
$(NIX_QUIET) \
--argstr target x86_64 \
--arg enableBenchmark true \
--arg enableSyscallTest true \
--out-link /nix/var/nix/gcroots/auto/x86_64-pkgs \
-A busybox \
2026-02-10 08:20:49 +00:00
-A regression.package \
2025-07-17 12:52:24 +00:00
-A benchmark.fio \
-A benchmark.hackbench \
-A benchmark.iperf3 \
-A benchmark.lmbench \
-A benchmark.memcached \
-A benchmark.nginx \
-A benchmark.redis \
-A benchmark.schbench \
-A benchmark.sqlite-speedtest1 \
-A benchmark.sysbench \
-A syscall.ltp
# Prebuild riscv64 packages
# Note: This may cause GitHub Runner ResourceExhausted errors when publish nix docker image.
# If such errors occur, try building each package individually and clear the build cache.
riscv64_pkgs:
@nix-build \
nix/default.nix \
--tarball-ttl $(NIXPKGS_CACHE_TTL) \
$(NIX_QUIET) \
--argstr target riscv64 \
--arg enableBenchmark false \
2025-07-17 12:52:24 +00:00
--arg enableSyscallTest true \
--out-link /nix/var/nix/gcroots/auto/riscv64-pkgs \
-A busybox \
2026-02-10 08:20:49 +00:00
-A regression.package \
2025-07-17 12:52:24 +00:00
-A syscall.ltp
general_pkgs:
@nix-build \
nix/default.nix \
--tarball-ttl $(NIXPKGS_CACHE_TTL) \
$(NIX_QUIET) \
--out-link /nix/var/nix/gcroots/auto/general \
2026-02-10 08:20:49 +00:00
-A regression.mongoose_src
2025-07-17 12:52:24 +00:00
install_host_pkgs:
@nix-env \
--file nix/default.nix \
--tarball-ttl $(NIXPKGS_CACHE_TTL) \
--install \
-A apacheHttpd \
-A iperf3 \
-A libmemcached \
-A lmbench \
-A redis
nix_gc:
@nix-collect-garbage -d
# This target is used to accelerate CI workflows, e.g., `benchmark_x86` and `benchmark_x86_tdx`.
initramfs_pkgs:
@nix-build \
nix/default.nix \
--tarball-ttl $(NIXPKGS_CACHE_TTL) \
$(NIX_QUIET) \
--argstr target x86_64 \
--arg enableBenchmark true \
--out-link /nix/var/nix/gcroots/auto/x86_64-initramfs-with-benchmark \
-A initramfs-image
2023-09-18 03:47:17 +00:00
$(EXT2_IMAGE):
@mkdir -p $(BUILD_DIR)
2023-09-18 03:47:17 +00:00
@dd if=/dev/zero of=$(EXT2_IMAGE) bs=2G count=1
@mke2fs $(EXT2_IMAGE)
2024-03-18 07:58:37 +00:00
$(EXFAT_IMAGE):
@mkdir -p $(BUILD_DIR)
2024-03-18 07:58:37 +00:00
@fallocate -l 64M $(EXFAT_IMAGE)
@mkfs.exfat $(EXFAT_IMAGE)
.PHONY: format
format:
2026-02-10 08:20:49 +00:00
@$(MAKE) --no-print-directory -C src/regression format
2025-07-04 08:37:47 +00:00
@nixfmt nix
.PHONY: check
check:
2026-02-10 08:20:49 +00:00
@$(MAKE) --no-print-directory -C src/regression check
2025-12-05 11:47:20 +00:00
@nixfmt --check nix
2024-02-23 03:50:27 +00:00
.PHONY: clean
clean:
@rm -rf $(BUILD_DIR)