-
Notifications
You must be signed in to change notification settings - Fork 4
130 lines (108 loc) · 3.23 KB
/
build.yml
File metadata and controls
130 lines (108 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Build
on:
push:
branches:
- "*"
pull_request:
jobs:
check_formatting:
name: "Check Formatting"
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- uses: actions/checkout@v1
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: cargo +nightly fmt -- --check
clippy:
name: "Clippy"
needs: check_formatting
strategy:
fail-fast: false
matrix:
features: [
"",
"noserial",
"qemu",
"noserial,qemu",
"jtag",
"noserial,jtag",
# jtag and qemu together don't make much sense
]
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v1
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ""
- run: cargo install cargo-make # TODO cache this tool
- run: env CLIPPY_FEATURES=${{ matrix.features }} cargo make clippy
test:
name: Test
needs: check_formatting
strategy:
fail-fast: false
matrix:
platform: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.platform }}
timeout-minutes: 30
steps:
- name: "Checkout Repository"
uses: actions/checkout@v1
- name: "Install nightly Rust"
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ""
- name: "Print Rust Version"
run: |
rustc -Vv
cargo -Vv
- name: "Install build tools"
run: cargo install cargo-make cargo-binutils # TODO cache these tools
- name: "Validate rust-lld"
if: runner.os == 'macOS'
run: |
which rust-lld || echo "Not found"
otool -L ~/.cargo/bin/rust-lld
- name: "Print Tools Version"
run: |
cargo make --version
cargo objcopy --version
- name: "Deny Warnings"
run: cargo make build
env:
RUSTFLAGS: "-D warnings"
- name: Install QEMU (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install --fix-missing qemu-system-aarch64
- name: Install QEMU (macOS)
if: runner.os == 'macOS'
run: brew install qemu
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
- name: Install Scoop (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Invoke-WebRequest -UseBasicParsing get.scoop.sh -outfile 'install.ps1'
.\install.ps1 -RunAsAdmin
echo "$HOME\scoop\shims" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Add custom Scoop bucket for QEMU (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
scoop bucket add scoop-for-ci https://github.com/metta-systems/scoop-for-ci
- name: Install QEMU (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: scoop install qemu-1010
- name: "Print QEMU Version"
run: qemu-system-aarch64 --version
- name: "Build kernel"
run: cargo make build
- name: "Run tests"
run: cargo make test