diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 981deef6..c4e66bbb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,9 @@ jobs: - uses: r7kamura/rust-problem-matchers@v1.1.0 - name: "Run `cargo check`" run: cargo check --all-targets --all + - name: "Check test kernels" + run: cargo check --all + working-directory: tests/test_kernels - name: "Check docs.rs build" run: cargo check env: @@ -89,6 +92,8 @@ jobs: - uses: actions/checkout@v3 - uses: r7kamura/rust-problem-matchers@v1.1.0 - run: cargo fmt --all -- --check + - run: cargo fmt --all -- --check + working-directory: tests/test_kernels clippy: name: Clippy @@ -99,6 +104,8 @@ jobs: - uses: Swatinem/rust-cache@v2 - uses: r7kamura/rust-problem-matchers@v1.1.0 - run: cargo clippy --all --all-targets + - run: cargo clippy --all + working-directory: tests/test_kernels semver-checks: name: Semver Checks diff --git a/Cargo.lock b/Cargo.lock index 78bc7d77..632880e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -764,15 +764,6 @@ dependencies = [ "x86_64", ] -[[package]] -name = "test_kernel_lto" -version = "0.1.0" -dependencies = [ - "bootloader_api", - "uart_16550", - "x86_64", -] - [[package]] name = "test_kernel_map_phys_mem" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index a854ef63..3b0c9a4d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,3 @@ -cargo-features = ["profile-rustflags"] - [package] name = "bootloader" description = "An experimental x86_64 bootloader that works on both BIOS and UEFI systems." @@ -19,17 +17,8 @@ members = [ "bios/stage-*", "bios/common", "tests/runner", - "tests/test_kernels/default_settings", - "tests/test_kernels/map_phys_mem", - "tests/test_kernels/higher_half", - "tests/test_kernels/pie", - "tests/test_kernels/lto", - "tests/test_kernels/ramdisk", - "tests/test_kernels/min_stack", - "tests/test_kernels/lower_memory_free", - "tests/test_kernels/write_usable_memory", ] -exclude = ["examples/basic", "examples/test_framework"] +exclude = ["examples/basic", "examples/test_framework", "tests/test_kernels/*"] [workspace.package] # don't forget to update `workspace.dependencies` below @@ -110,23 +99,6 @@ inherits = "release" debug = true overflow-checks = true -[profile.lto] -inherits = "release" -lto = true - -[profile.test.package.test_kernel_higher_half] -rustflags = [ - "-C", - "link-args=--image-base 0xFFFF800000000000", - "-C", - "relocation-model=pic", - "-C", - "code-model=large", -] - -[profile.test.package.test_kernel_min_stack] -opt-level = 2 - [build-dependencies] llvm-tools = "0.1.1" diff --git a/tests/lto.rs b/tests/lto.rs index 00cfe60f..5c259236 100644 --- a/tests/lto.rs +++ b/tests/lto.rs @@ -6,9 +6,9 @@ use bootloader_test_runner::run_test_kernel; fn basic_boot() { // build test kernel manually to force-enable link-time optimization let mut cmd = Command::new(std::env::var("CARGO").unwrap_or_else(|_| "cargo".into())); + cmd.current_dir("tests/test_kernels"); cmd.arg("build"); cmd.arg("-p").arg("test_kernel_lto"); - cmd.arg("--target").arg("x86_64-unknown-none"); cmd.arg("--profile").arg("lto"); let status = cmd.status().unwrap(); assert!(status.success()); diff --git a/tests/test_kernels/.cargo/config.toml b/tests/test_kernels/.cargo/config.toml index 9766b811..412c4a33 100644 --- a/tests/test_kernels/.cargo/config.toml +++ b/tests/test_kernels/.cargo/config.toml @@ -1,2 +1,3 @@ [build] target-dir = "../../target" +target = "x86_64-unknown-none" diff --git a/tests/test_kernels/Cargo.lock b/tests/test_kernels/Cargo.lock new file mode 100644 index 00000000..408c7bb2 --- /dev/null +++ b/tests/test_kernels/Cargo.lock @@ -0,0 +1,141 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" + +[[package]] +name = "bootloader_api" +version = "0.11.9" + +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "test_kernel_default_settings" +version = "0.1.0" +dependencies = [ + "bootloader_api", + "uart_16550", + "x86_64", +] + +[[package]] +name = "test_kernel_higher_half" +version = "0.1.0" +dependencies = [ + "bootloader_api", + "uart_16550", + "x86_64", +] + +[[package]] +name = "test_kernel_lower_memory_free" +version = "0.1.0" +dependencies = [ + "bootloader_api", + "uart_16550", + "x86_64", +] + +[[package]] +name = "test_kernel_lto" +version = "0.1.0" +dependencies = [ + "bootloader_api", + "uart_16550", + "x86_64", +] + +[[package]] +name = "test_kernel_map_phys_mem" +version = "0.1.0" +dependencies = [ + "bootloader_api", + "uart_16550", + "x86_64", +] + +[[package]] +name = "test_kernel_min_stack" +version = "0.1.0" +dependencies = [ + "bootloader_api", + "uart_16550", + "x86_64", +] + +[[package]] +name = "test_kernel_pie" +version = "0.1.0" +dependencies = [ + "bootloader_api", + "uart_16550", + "x86_64", +] + +[[package]] +name = "test_kernel_ramdisk" +version = "0.1.0" +dependencies = [ + "bootloader_api", + "uart_16550", + "x86_64", +] + +[[package]] +name = "test_kernel_write_usable_memory" +version = "0.1.0" +dependencies = [ + "bootloader_api", + "uart_16550", + "x86_64", +] + +[[package]] +name = "uart_16550" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614ff2a87880d4bd4374722268598a970bbad05ced8bf630439417347254ab2e" +dependencies = [ + "bitflags 1.3.2", + "rustversion", + "x86_64", +] + +[[package]] +name = "volatile" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442887c63f2c839b346c192d047a7c87e73d0689c9157b00b53dcc27dd5ea793" + +[[package]] +name = "x86_64" +version = "0.14.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c101112411baafbb4bf8d33e4c4a80ab5b02d74d2612331c61e8192fc9710491" +dependencies = [ + "bit_field", + "bitflags 2.8.0", + "rustversion", + "volatile", +] diff --git a/tests/test_kernels/Cargo.toml b/tests/test_kernels/Cargo.toml new file mode 100644 index 00000000..f9216bf8 --- /dev/null +++ b/tests/test_kernels/Cargo.toml @@ -0,0 +1,38 @@ +cargo-features = ["profile-rustflags"] + +[workspace] +resolver = "2" +members = [ + "default_settings", + "map_phys_mem", + "higher_half", + "pie", + "lto", + "ramdisk", + "min_stack", + "lower_memory_free", + "write_usable_memory", +] + +[profile.release] +panic = "abort" +lto = false +debug = true +overflow-checks = true + +[profile.lto] +inherits = "release" +lto = true + +[profile.test.package.test_kernel_higher_half] +rustflags = [ + "-C", + "link-args=--image-base 0xFFFF800000000000", + "-C", + "relocation-model=pic", + "-C", + "code-model=large", +] + +[profile.test.package.test_kernel_min_stack] +opt-level = 2