Fix dependencies of initramfs

This commit is contained in:
Ruihan Li 2024-02-29 23:44:41 +08:00 committed by Tate, Hongliang Tian
parent c15eb2299b
commit 4eff679eac
3 changed files with 34 additions and 17 deletions

View File

@ -35,7 +35,7 @@ jobs:
- name: Ktest Unit Test - name: Ktest Unit Test
id: ktest_unit_test id: ktest_unit_test
run: make update_initramfs && make ktest run: make ktest
# TODO: add component check. # TODO: add component check.

View File

@ -114,8 +114,12 @@ install_osdk:
$(CARGO_OSDK): $(CARGO_OSDK):
@make --no-print-directory install_osdk @make --no-print-directory install_osdk
build: $(CARGO_ODSK) .PHONY: initramfs
initramfs:
@make --no-print-directory -C regression @make --no-print-directory -C regression
.PHONY: build
build: initramfs $(CARGO_OSDK)
@cd kernel && cargo osdk build $(CARGO_OSDK_ARGS) @cd kernel && cargo osdk build $(CARGO_OSDK_ARGS)
.PHONY: tools .PHONY: tools
@ -133,7 +137,7 @@ test:
done done
.PHONY: ktest .PHONY: ktest
ktest: $(CARGO_OSDK) ktest: initramfs $(CARGO_OSDK)
@# Exclude linux-bzimage-setup from ktest since it's hard to be unit tested @# Exclude linux-bzimage-setup from ktest since it's hard to be unit tested
@for dir in $(OSDK_CRATES); do \ @for dir in $(OSDK_CRATES); do \
[ $$dir = "framework/libs/linux-bzimage/setup" ] && continue; \ [ $$dir = "framework/libs/linux-bzimage/setup" ] && continue; \
@ -173,8 +177,3 @@ clean:
@cargo clean @cargo clean
@cd docs && mdbook clean @cd docs && mdbook clean
@make --no-print-directory -C regression clean @make --no-print-directory -C regression clean
.PHONY: update_initramfs
update_initramfs:
@make --no-print-directory -C regression clean
@make --no-print-directory -C regression

View File

@ -5,9 +5,9 @@ CUR_DIR := $(patsubst %/,%,$(dir $(MKFILE_PATH)))
BUILD_DIR := $(CUR_DIR)/build BUILD_DIR := $(CUR_DIR)/build
VDSO_DIR := $(BUILD_DIR)/linux_vdso VDSO_DIR := $(BUILD_DIR)/linux_vdso
INITRAMFS := $(BUILD_DIR)/initramfs INITRAMFS := $(BUILD_DIR)/initramfs
INITRAMFS_FILELIST := $(BUILD_DIR)/initramfs.filelist
INITRAMFS_IMAGE := $(BUILD_DIR)/initramfs.cpio.gz INITRAMFS_IMAGE := $(BUILD_DIR)/initramfs.cpio.gz
EXT2_IMAGE := $(BUILD_DIR)/ext2.img EXT2_IMAGE := $(BUILD_DIR)/ext2.img
SHELL := /bin/bash
INITRAMFS_EMPTY_DIRS := \ INITRAMFS_EMPTY_DIRS := \
$(INITRAMFS)/sbin \ $(INITRAMFS)/sbin \
$(INITRAMFS)/root \ $(INITRAMFS)/root \
@ -25,11 +25,12 @@ INITRAMFS_ALL_DIRS := \
$(INITRAMFS)/regression \ $(INITRAMFS)/regression \
$(INITRAMFS)/benchmark \ $(INITRAMFS)/benchmark \
$(INITRAMFS_EMPTY_DIRS) $(INITRAMFS_EMPTY_DIRS)
SYSCALL_TEST_DIR := $(INITRAMFS)/opt/syscall_test
.PHONY: all .PHONY: all
all: build all: build
$(INITRAMFS)/lib/x86_64-linux-gnu: $(VDSO_DIR) $(INITRAMFS)/lib/x86_64-linux-gnu: | $(VDSO_DIR)
@mkdir -p $@ @mkdir -p $@
@cp -L /lib/x86_64-linux-gnu/libc.so.6 $@ @cp -L /lib/x86_64-linux-gnu/libc.so.6 $@
@cp -L /lib/x86_64-linux-gnu/libstdc++.so.6 $@ @cp -L /lib/x86_64-linux-gnu/libstdc++.so.6 $@
@ -64,11 +65,11 @@ $(INITRAMFS)/bin:
@mkdir -p $@ @mkdir -p $@
@/bin/busybox --install -s $@ @/bin/busybox --install -s $@
$(INITRAMFS)/usr/bin: $(INITRAMFS)/bin $(INITRAMFS)/usr/bin: | $(INITRAMFS)/bin
@mkdir -p $@ @mkdir -p $@
@cp /usr/bin/busybox $@ @cp /usr/bin/busybox $@
# Copy from apps. .PHONY: $(INITRAMFS)/regression
$(INITRAMFS)/regression: $(INITRAMFS)/regression:
@make --no-print-directory -C apps @make --no-print-directory -C apps
@ -82,18 +83,35 @@ $(INITRAMFS)/benchmark:
$(INITRAMFS_EMPTY_DIRS): $(INITRAMFS_EMPTY_DIRS):
@mkdir -p $@ @mkdir -p $@
$(INITRAMFS)/opt/syscall_test: .PHONY: $(SYSCALL_TEST_DIR)
$(SYSCALL_TEST_DIR):
@make --no-print-directory -C syscall_test @make --no-print-directory -C syscall_test
.PHONY: $(INITRAMFS_IMAGE)
$(INITRAMFS_IMAGE): $(INITRAMFS_FILELIST)
@if ! cmp -s $(INITRAMFS_FILELIST) $(INITRAMFS_FILELIST).previous ; then \
echo "Generating the initramfs image..."; \
cp -f $(INITRAMFS_FILELIST) $(INITRAMFS_FILELIST).previous; \
( \
cd $(INITRAMFS); \
# `$(INITRAMFS_FILELIST)` contains files' last modification \
# time in the first column, and files' relative path to \
# `$(INITRAMFS)` in the second column. This prunes the first \
# column and passes the second column to `cpio`. \
cut -d " " -f 2- $(INITRAMFS_FILELIST) | \
cpio -o -H newc | gzip \
) > $@; \
fi
.PHONY: $(INITRAMFS_FILELIST)
# If the BUILD_SYSCALL_TEST variable is set, we should depend on the # If the BUILD_SYSCALL_TEST variable is set, we should depend on the
# sub make output to do incremental building. # sub make output to do incremental building.
ifeq ($(BUILD_SYSCALL_TEST), 1) ifeq ($(BUILD_SYSCALL_TEST), 1)
$(INITRAMFS_IMAGE): $(INITRAMFS_ALL_DIRS) $(INITRAMFS)/opt/syscall_test $(INITRAMFS_FILELIST): | $(INITRAMFS_ALL_DIRS) $(SYSCALL_TEST_DIR)
else else
$(INITRAMFS_IMAGE): $(INITRAMFS_ALL_DIRS) $(INITRAMFS_FILELIST): | $(INITRAMFS_ALL_DIRS)
endif endif
@echo "Generating the initramfs image..." @(cd $(INITRAMFS); find . -printf "%T@ %p\n") > $(INITRAMFS_FILELIST)
@(cd $(INITRAMFS); find . | cpio -o -H newc | gzip) > $@
$(EXT2_IMAGE): $(EXT2_IMAGE):
@dd if=/dev/zero of=$(EXT2_IMAGE) bs=2G count=1 @dd if=/dev/zero of=$(EXT2_IMAGE) bs=2G count=1