From b276ec476543594e5072ccc4d0a545d2785bcbc3 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 17 Jul 2020 11:36:33 +0200 Subject: [PATCH 1/4] Update CI script to be consistent with other branches --- .github/workflows/build-code.yml | 121 ++++++++++++++++++++----------- 1 file changed, 77 insertions(+), 44 deletions(-) diff --git a/.github/workflows/build-code.yml b/.github/workflows/build-code.yml index af4adc1c..219ffd97 100644 --- a/.github/workflows/build-code.yml +++ b/.github/workflows/build-code.yml @@ -12,9 +12,8 @@ on: pull_request: jobs: - test: - name: "Test" - + check: + name: Check strategy: matrix: platform: [ @@ -22,55 +21,89 @@ jobs: macos-latest, windows-latest ] - runs-on: ${{ matrix.platform }} - timeout-minutes: 15 - steps: - - name: "Checkout Repository" - uses: actions/checkout@v1 + - name: Checkout Repository + uses: actions/checkout@v2 + - name: Install Rust Toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + - name: Install `rust-src` Rustup Component + run: rustup component add rust-src + - name: Run `cargo check` + uses: actions-rs/cargo@v1 + with: + command: check - - name: Install Rustup - run: | - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly - echo ::add-path::$HOME/.cargo/bin - if: runner.os == 'macOS' - - - name: "Print Rust Version" - run: | - rustc -Vv - cargo -Vv - - - name: "Add thumbv7em-none-eabihf Target" + test: + name: Test + strategy: + matrix: + platform: [ + ubuntu-latest, + macos-latest, + windows-latest + ] + runs-on: ${{ matrix.platform }} + steps: + - name: Install Rust Toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + - name: Install bootimage + run: cargo install bootimage --debug + - name: Checkout Repository + uses: actions/checkout@v2 + - name: "Add thumbv7em-none-eabihf Target" run: rustup target add thumbv7em-none-eabihf - - - name: "Build for thumbv7em-none-eabihf" - run: cargo build --target thumbv7em-none-eabihf - - - name: "Build for Linux" - if: runner.os == 'Linux' - run: cargo rustc -- -C link-arg=-nostartfiles - - - name: "Build for macOS" - if: runner.os == 'macOS' - run: cargo rustc -- -C link-args="-e __start -static -nostartfiles" - - - name: "Build for Windows" - if: runner.os == 'Windows' - run: cargo rustc -- -C link-args="/ENTRY:_start /SUBSYSTEM:console" - + - name: "Build for thumbv7em-none-eabihf" + run: cargo build --target thumbv7em-none-eabihf + - name: "Build for Linux" + if: runner.os == 'Linux' + run: cargo rustc -- -C link-arg=-nostartfiles + - name: "Build for macOS" + if: runner.os == 'macOS' + run: cargo rustc -- -C link-args="-e __start -static -nostartfiles" + - name: "Build for Windows" + if: runner.os == 'Windows' + run: cargo rustc -- -C link-args="/ENTRY:_start /SUBSYSTEM:console" check_formatting: - name: "Check Formatting" + name: Check Formatting runs-on: ubuntu-latest - timeout-minutes: 2 steps: - - uses: actions/checkout@v1 - - name: "Use the latest Rust nightly with rustfmt" - uses: actions-rs/toolchain@v1 - with: - toolchain: nightly + - name: Checkout Repository + uses: actions/checkout@v2 + - name: Install Rust Toolchain + uses: actions-rs/toolchain@v1 + with: profile: minimal + toolchain: nightly components: rustfmt override: true - - run: cargo fmt -- --check + - name: Run `cargo fmt` + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + + clippy: + name: Clippy + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + - name: Install Rust Toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + components: clippy, rust-src + override: true + - name: Run `cargo clippy` + uses: actions-rs/cargo@v1 + with: + command: clippy From 635677d07c5e723cf3119b674d8a7cb245d6cff0 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 17 Jul 2020 11:38:30 +0200 Subject: [PATCH 2/4] Fix workflow syntax --- .github/workflows/build-code.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-code.yml b/.github/workflows/build-code.yml index 219ffd97..ae1c40c5 100644 --- a/.github/workflows/build-code.yml +++ b/.github/workflows/build-code.yml @@ -57,17 +57,17 @@ jobs: run: cargo install bootimage --debug - name: Checkout Repository uses: actions/checkout@v2 - - name: "Add thumbv7em-none-eabihf Target" - run: rustup target add thumbv7em-none-eabihf - - name: "Build for thumbv7em-none-eabihf" + - name: Add thumbv7em-none-eabihf Target + run: rustup target add thumbv7em-none-eabihf + - name: Build for thumbv7em-none-eabihf run: cargo build --target thumbv7em-none-eabihf - - name: "Build for Linux" + - name: Build for Linux if: runner.os == 'Linux' run: cargo rustc -- -C link-arg=-nostartfiles - - name: "Build for macOS" + - name: Build for macOS if: runner.os == 'macOS' run: cargo rustc -- -C link-args="-e __start -static -nostartfiles" - - name: "Build for Windows" + - name: Build for Windows if: runner.os == 'Windows' run: cargo rustc -- -C link-args="/ENTRY:_start /SUBSYSTEM:console" From 3fb4695f6c1fe11a7ff849691a860ad1c3808565 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 17 Jul 2020 11:39:47 +0200 Subject: [PATCH 3/4] Bootimage is not needed for post-01 --- .github/workflows/build-code.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build-code.yml b/.github/workflows/build-code.yml index ae1c40c5..710811a7 100644 --- a/.github/workflows/build-code.yml +++ b/.github/workflows/build-code.yml @@ -53,8 +53,6 @@ jobs: with: profile: minimal toolchain: nightly - - name: Install bootimage - run: cargo install bootimage --debug - name: Checkout Repository uses: actions/checkout@v2 - name: Add thumbv7em-none-eabihf Target From 71d8a438f73ed27dd05f39fb22df350ce958f70f Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 17 Jul 2020 11:48:27 +0200 Subject: [PATCH 4/4] Update Readme for new build-std build instructions --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c51fd532..ac443282 100644 --- a/README.md +++ b/README.md @@ -10,19 +10,21 @@ This repository contains the source code for the [A Minimal Rust Kernel][post] p ## Building -You need a nightly Rust compiler. First you need to install the `cargo-xbuild` and `bootimage` tools: +This project required a nightly version of Rust. You can build the project by running: ``` -cargo install cargo-xbuild bootimage +cargo build ``` -Then you can build the project by running: +To create a bootable disk image from the compiled kernel, you need to install the [`bootimage`] tool: + +[`bootimage`]: https://github.com/rust-osdev/bootimage ``` -cargo xbuild +cargo install bootimage ``` -To create a bootable disk image, run: +After installing, you can create the bootable disk image by running: ``` cargo bootimage @@ -39,10 +41,10 @@ You can run the disk image in [QEMU] through: [QEMU]: https://www.qemu.org/ ``` -cargo xrun +cargo run ``` -Of course [QEMU] needs to be installed for this. +[QEMU] and the [`bootimage`] tool need to be installed for this. You can also write the image to an USB stick for booting it on a real machine. On Linux, the command for this is: