NovaShell替换为默认shell #3
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Reusable workflow example | ||
on: workflow_call | ||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Cache DragonOS GCC | ||
id: cache-dragonos-gcc | ||
uses: actions/cache@v3 | ||
env: | ||
cache-name: cache-dragonos-gcc | ||
with: | ||
path: | | ||
~/opt | ||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('tools/build_gcc_toolchain.sh') }} | ||
- if: ${{ steps.cache-dragonos-gcc.outputs.cache-hit != 'true' }} | ||
name: build dragonos-gcc | ||
continue-on-error: true | ||
run: bash tools/build_gcc_toolchain.sh -f | ||
- name: Cache build tools | ||
id: cache-build-tools | ||
uses: actions/cache@v3 | ||
env: | ||
cache-name: cache-build-tools | ||
dadk_version: 0.1.2 | ||
with: | ||
path: | | ||
~/.cargo | ||
~/.rustup | ||
~/.bashrc | ||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.dadk_version }}-${{ hashFiles('.github/workflows/cache-toolchain.yml') }} | ||
- if: ${{ steps.cache-build-tools.outputs.cache-hit != 'true' }} | ||
name: Install toolchain | ||
continue-on-error: true | ||
run: | | ||
sudo sh -c "apt update && apt install -y llvm-dev libclang-dev clang gcc-multilib libssl-dev pkg-config" | ||
cargo install cargo-binutils | ||
rustup toolchain install nightly | ||
rustup toolchain install nightly-2023-01-21-x86_64-unknown-linux-gnu | ||
rustup toolchain install nightly-2023-08-15-x86_64-unknown-linux-gnu | ||
rustup default nightly | ||
rustup component add rust-src | ||
rustup component add llvm-tools-preview | ||
rustup target add x86_64-unknown-none | ||
rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu | ||
rustup component add rust-src --toolchain nightly-2023-01-21-x86_64-unknown-linux-gnu | ||
rustup component add rust-src --toolchain nightly-2023-08-15-x86_64-unknown-linux-gnu | ||
rustup component add rustfmt | ||
rustup component add rustfmt --toolchain nightly-2023-01-21-x86_64-unknown-linux-gnu | ||
rustup component add rustfmt --toolchain nightly-2023-08-15-x86_64-unknown-linux-gnu | ||
cargo install dadk --version 0.1.6 | ||
# Create custom Rust toolchain | ||
fork_toolchain_from="nightly-2023-08-15-x86_64-unknown-linux-gnu" | ||
custom_toolchain="nightly-2023-08-15-x86_64-unknown-linux_dragonos-gnu" | ||
custom_toolchain_dir="$(dirname $(rustc --print sysroot))/${custom_toolchain}" | ||
echo "Custom toolchain does not exist, creating..." | ||
rustup toolchain install ${fork_toolchain_from} | ||
rustup component add --toolchain ${fork_toolchain_from} rust-src | ||
rustup target add --toolchain ${fork_toolchain_from} x86_64-unknown-linux-musl | ||
cp -r $(dirname $(rustc --print sysroot))/${fork_toolchain_from} ${custom_toolchain_dir} | ||
self_contained_dir=${custom_toolchain_dir}/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained | ||
cp -f ${self_contained_dir}/crt1.o ${self_contained_dir}/rcrt1.o | ||