Implement make install and test targets
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
target
|
||||
/build
|
||||
/config.toml
|
||||
/sysroot
|
||||
.gitlab-ci-local/
|
||||
|
||||
+13
-34
@@ -1,8 +1,3 @@
|
||||
image: "redoxos/redoxer:latest"
|
||||
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
|
||||
workflow:
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "redox-os"'
|
||||
@@ -12,14 +7,12 @@ stages:
|
||||
- build
|
||||
- cross-build
|
||||
- test
|
||||
- other-features
|
||||
# TODO: benchmarks and profiling (maybe manually enabled for relevant MRs)?
|
||||
|
||||
x86_64:
|
||||
stage: build
|
||||
script:
|
||||
- mkdir -p target/${ARCH}
|
||||
- redoxer env make BUILD=target/${ARCH}
|
||||
- redoxer env make
|
||||
variables:
|
||||
ARCH: "x86_64"
|
||||
|
||||
@@ -27,64 +20,50 @@ aarch64:
|
||||
stage: cross-build
|
||||
image: "redoxos/redoxer:aarch64"
|
||||
script:
|
||||
- mkdir -p target/${ARCH}
|
||||
- redoxer env make BUILD=target/${ARCH}
|
||||
- redoxer env make
|
||||
variables:
|
||||
ARCH: "aarch64"
|
||||
|
||||
i586:
|
||||
stage: cross-build
|
||||
script:
|
||||
- mkdir -p target/${ARCH}
|
||||
- TARGET=${ARCH}-unknown-redox redoxer env make BUILD=target/${ARCH}
|
||||
- TARGET=${ARCH}-unknown-redox redoxer env make
|
||||
variables:
|
||||
ARCH: "i586"
|
||||
|
||||
riscv64gc:
|
||||
stage: cross-build
|
||||
script:
|
||||
- mkdir -p target/${ARCH}
|
||||
- TARGET=${ARCH}-unknown-redox redoxer env make BUILD=target/${ARCH}
|
||||
- TARGET=${ARCH}-unknown-redox redoxer env make
|
||||
variables:
|
||||
ARCH: "riscv64gc"
|
||||
|
||||
fmt:
|
||||
stage: build
|
||||
script:
|
||||
- rustup component add rustfmt
|
||||
- rustfmt --check
|
||||
- redoxer env cargo fmt --check
|
||||
|
||||
x86_64:boot:
|
||||
stage: test
|
||||
needs: [x86_64]
|
||||
script:
|
||||
- mkdir -p target/${ARCH}
|
||||
- export COOKBOOK_SOURCE_IDENT=$CI_COMMIT_SHA
|
||||
- redoxer env make BUILD=target/${ARCH}
|
||||
- timeout -s KILL 9m redoxer exec --folder target/${ARCH}/:/usr/lib/boot uname -a
|
||||
variables:
|
||||
ARCH: "x86_64"
|
||||
- redoxer env make test
|
||||
|
||||
x86_64:relibc:
|
||||
stage: test
|
||||
needs: [x86_64]
|
||||
# TODO: remove
|
||||
allow_failure: true
|
||||
script:
|
||||
- redoxer pkg relibc-tests-bins
|
||||
- export COOKBOOK_SOURCE_IDENT=$CI_COMMIT_SHA
|
||||
- mkdir -p target/${TARGET}/sysroot/{usr/lib/boot,root} target/${TARGET}/root
|
||||
- redoxer env make BUILD=target/${TARGET}/sysroot/usr/lib/boot
|
||||
- (cd target/${TARGET}/sysroot && mv home/user/relibc-tests/* root/)
|
||||
- timeout -s KILL 9m redoxer exec --folder target/${TARGET}/sysroot/:/ make run
|
||||
# It is fine if failing sometimes
|
||||
allow_failure: true
|
||||
variables:
|
||||
TARGET: "x86_64-unknown-redox"
|
||||
- timeout -s KILL 9m redoxer env make test-relibc
|
||||
|
||||
profiling-compile:
|
||||
stage: other-features
|
||||
allow_failure: true
|
||||
x86_64:profiling:
|
||||
stage: build
|
||||
needs: [x86_64]
|
||||
script:
|
||||
make check
|
||||
- make check
|
||||
variables:
|
||||
ARCH: "x86_64"
|
||||
KERNEL_CHECK_FEATURES: profiling
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
.PHONY: all check
|
||||
|
||||
SOURCE:=$(dir $(realpath $(lastword $(MAKEFILE_LIST))))
|
||||
BUILD?=$(CURDIR)
|
||||
export RUST_TARGET_PATH=$(SOURCE)/targets
|
||||
|
||||
ifeq ($(TARGET),)
|
||||
@@ -10,6 +9,9 @@ else
|
||||
ARCH?=$(shell echo "$(TARGET)" | cut -d - -f1)
|
||||
endif
|
||||
|
||||
BUILD?=$(CURDIR)/build/$(ARCH)
|
||||
DESTDIR?=./sysroot
|
||||
|
||||
ifeq ($(ARCH),riscv64gc)
|
||||
override ARCH:=riscv64
|
||||
GNU_TARGET=riscv64-unknown-redox
|
||||
@@ -20,6 +22,7 @@ else
|
||||
GNU_TARGET=$(ARCH)-unknown-redox
|
||||
endif
|
||||
|
||||
OBJCOPY?=$(GNU_TARGET)-objcopy
|
||||
|
||||
all: $(BUILD)/kernel $(BUILD)/kernel.sym
|
||||
|
||||
@@ -30,7 +33,10 @@ TARGET_SPEC=$(RUST_TARGET_PATH)/$(ARCH)-unknown-kernel.json
|
||||
|
||||
KERNEL_CARGO_FEATURES?=
|
||||
|
||||
$(BUILD)/kernel.all: $(LD_SCRIPT) $(LOCKFILE) $(MANIFEST) $(TARGET_SPEC) $(shell find $(SOURCE) -name "*.rs" -type f)
|
||||
$(BUILD):
|
||||
mkdir -p "$@"
|
||||
|
||||
$(BUILD)/kernel.all: $(LD_SCRIPT) $(LOCKFILE) $(MANIFEST) $(TARGET_SPEC) $(shell find $(SOURCE) -name "*.rs" -type f) | $(BUILD)
|
||||
cargo rustc \
|
||||
--bin kernel \
|
||||
--manifest-path "$(MANIFEST)" \
|
||||
@@ -45,13 +51,13 @@ $(BUILD)/kernel.all: $(LD_SCRIPT) $(LOCKFILE) $(MANIFEST) $(TARGET_SPEC) $(shell
|
||||
--emit link="$(BUILD)/kernel.all"
|
||||
|
||||
$(BUILD)/kernel.sym: $(BUILD)/kernel.all
|
||||
$(GNU_TARGET)-objcopy \
|
||||
$(OBJCOPY) \
|
||||
--only-keep-debug \
|
||||
"$(BUILD)/kernel.all" \
|
||||
"$(BUILD)/kernel.sym"
|
||||
|
||||
$(BUILD)/kernel: $(BUILD)/kernel.all
|
||||
$(GNU_TARGET)-objcopy \
|
||||
$(OBJCOPY) \
|
||||
--strip-debug \
|
||||
"$(BUILD)/kernel.all" \
|
||||
"$(BUILD)/kernel"
|
||||
@@ -66,3 +72,29 @@ check:
|
||||
-Z build-std=core,alloc -Zbuild-std-features=compiler-builtins-mem \
|
||||
-Z json-target-spec \
|
||||
--features=$(KERNEL_CHECK_FEATURES)
|
||||
|
||||
clean:
|
||||
rm -rf build sysroot target config.toml
|
||||
|
||||
install: all
|
||||
@mkdir -pv "$(DESTDIR)/usr/lib/boot/"
|
||||
cp -v $(BUILD)/kernel.all "$(DESTDIR)/usr/lib/boot/"
|
||||
cp -v $(BUILD)/kernel.sym "$(DESTDIR)/usr/lib/boot/"
|
||||
cp -v $(BUILD)/kernel "$(DESTDIR)/usr/lib/boot/"
|
||||
|
||||
# test if booting
|
||||
# to ensure it's using this kernel, set COOKBOOK_SOURCE_IDENT env before build
|
||||
test: all
|
||||
$(MAKE) install
|
||||
REDOXER_SYSROOT=$(DESTDIR) redoxer exec uname -a
|
||||
|
||||
# test with interactive gui
|
||||
test-gui: all
|
||||
$(MAKE) install
|
||||
REDOXER_SYSROOT=$(DESTDIR) redoxer exec --gui ion
|
||||
|
||||
# test with relibc tests
|
||||
test-relibc: all
|
||||
$(MAKE) install
|
||||
REDOXER_SYSROOT=$(DESTDIR) redoxer pkg relibc-tests-bins
|
||||
REDOXER_SYSROOT=$(DESTDIR) redoxer exec relibc-tests-runner
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@ static IDLE_CONTEXTS: Mutex<L2, VecDeque<WeakContextRef>> = Mutex::new(VecDeque:
|
||||
pub struct RunContextData {
|
||||
// queue: VecDeque<WeakContextRef>,
|
||||
queue: BTreeMap<(u64, Reverse<u64>, u32), (u64, u64, WeakContextRef)>, // ((vd, rem_slice, ctxt_id), (vtime, weight, context))
|
||||
timers: BTreeSet<(u128, WeakContextRef)>, // (wake, context)
|
||||
timers: BTreeSet<(u128, WeakContextRef)>, // (wake, context)
|
||||
count: usize,
|
||||
v: u64,
|
||||
total_weight: u64,
|
||||
|
||||
@@ -389,9 +389,7 @@ pub fn switch(token: &mut CleanLockToken) -> SwitchResult {
|
||||
}
|
||||
}
|
||||
|
||||
fn wakeup_contexts(
|
||||
token: &mut CleanLockToken,
|
||||
) -> SmallVec<[WeakContextRef; 16]> {
|
||||
fn wakeup_contexts(token: &mut CleanLockToken) -> SmallVec<[WeakContextRef; 16]> {
|
||||
// TODO: Optimise this somehow
|
||||
let mut wakeups = SmallVec::new();
|
||||
let current_context = context::current();
|
||||
|
||||
Reference in New Issue
Block a user