1
1
name : Release LLVM
2
-
3
2
on :
4
3
workflow_dispatch :
5
4
inputs :
9
8
description : llvm version in "x.x.x" format, e.g. "18.1.8"
10
9
11
10
concurrency :
12
- group : ${{ github.workflow }}-${{ github.ref }}
11
+ group : ${{ github.workflow }}-${{ github.event.pull_request.number || github. ref }}
13
12
cancel-in-progress : true
14
13
15
14
env :
16
15
CARGO_TERM_COLOR : always
17
16
18
17
jobs :
19
- create-release :
20
- runs-on : ubuntu-latest
18
+ create-release-draft :
19
+ runs-on : ubuntu-24.04
21
20
permissions :
22
21
contents : write
23
22
outputs :
@@ -27,145 +26,107 @@ jobs:
27
26
run : |
28
27
echo "version=llvm-${{ inputs.llvm_version }}-revive.${GITHUB_SHA:0:7}" >> $GITHUB_OUTPUT
29
28
30
- - name : create release
29
+ - name : Create Release
31
30
uses : softprops/action-gh-release@v2
32
31
with :
33
- name : " LLVM binaries release: ${{ steps.resolve-version.outputs.version }}"
34
- body : " This release includes binaries of LLVM, used to compile revive itself "
35
- make_latest : " false "
32
+ name : ${{ steps.resolve-version.outputs.version }}
33
+ body : " LLVM is a dependency of revive. The LLVM releases are used by our CI to build revive. "
34
+ draft : true
36
35
tag_name : ${{ steps.resolve-version.outputs.version }}
37
36
38
- build-macos :
37
+ build :
39
38
strategy :
40
39
matrix :
41
- os : [macos-14, macos-13 ]
40
+ target : [x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl, wasm32-unknown-emscripten, aarch64-apple-darwin, x86_64-apple-darwin, x86_64-pc-windows-msvc ]
42
41
include :
43
- - os : macos-13
44
- arch : x64
45
- - os : macos-14
46
- arch : arm64
47
- needs : create-release
48
- runs-on : ${{ matrix.os }}
49
- name : " build-macos-${{ matrix.arch }}"
42
+ - target : x86_64-unknown-linux-gnu
43
+ builder-arg : gnu
44
+ host : linux
45
+ runner : parity-large
46
+ - target : x86_64-unknown-linux-musl
47
+ builder-arg : musl
48
+ host : linux
49
+ runner : parity-large
50
+ - target : wasm32-unknown-emscripten
51
+ builder-arg : emscripten
52
+ host : linux
53
+ runner : parity-large
54
+ - target : aarch64-apple-darwin
55
+ builder-arg : gnu
56
+ host : macos
57
+ runner : macos-14
58
+ - target : x86_64-apple-darwin
59
+ builder-arg : gnu
60
+ host : macos
61
+ runner : macos-13
62
+ - target : x86_64-pc-windows-msvc
63
+ builder-arg : gnu
64
+ host : windows
65
+ runner : windows-2022
66
+ needs : create-release-draft
67
+ runs-on : ${{ matrix.runner }}
50
68
env :
51
69
RUST_LOG : trace
52
70
permissions :
53
71
contents : write # for uploading assets to release
54
72
steps :
55
73
- uses : actions/checkout@v4
56
-
57
- - name : install macos deps
58
- run : |
59
- brew install ninja
60
-
61
- - name : versions
62
- run : |
63
- rustup show
64
- cargo --version
65
- cmake --version
66
- echo "bash:" && bash --version
67
- echo "ninja:" && ninja --version
68
- echo "clang:" && clang --version
69
-
70
- - name : Build LLVM
71
- run : |
72
- make install-llvm
73
-
74
- - name : clean
75
- # check removed files
76
- run : |
77
- cd target-llvm/gnu/target-final/bin/
78
- rm diagtool llvm-libtool-darwin llvm-lipo llvm-pdbutil llvm-dwarfdump llvm-nm llvm-readobj llvm-cfi-verify \
79
- sancov llvm-debuginfo-analyzer llvm-objdump llvm-profgen llvm-extract llvm-jitlink llvm-c-test llvm-gsymutil llvm-dwp \
80
- dsymutil llvm-dwarfutil llvm-exegesis lli clang-rename bugpoint clang-extdef-mapping clang-refactor c-index-test \
81
- llvm-reduce llvm-lto clang-linker-wrapper llc llvm-lto2
82
-
83
- - name : package artifacts
84
- run : |
85
- tar -czf "${{ needs.create-release.outputs.version }}-macos-${{ matrix.arch }}.tar.gz" target-llvm/gnu/target-final
86
-
87
- - name : upload archive to release
88
- uses : softprops/action-gh-release@v2
74
+ - uses : actions-rust-lang/setup-rust-toolchain@v1
89
75
with :
90
- make_latest : " false"
91
- tag_name : ${{ needs.create-release.outputs.version }}
92
- files : |
93
- ${{ needs.create-release.outputs.version }}-macos-${{ matrix.arch }}.tar.gz
94
-
95
-
96
- build-linux-all :
97
- needs : create-release
98
- runs-on : parity-large
99
- env :
100
- RUST_LOG : trace
101
- permissions :
102
- contents : write # for uploading assets to release
103
- steps :
104
- - uses : actions/checkout@v4
76
+ # without this it will override our rust flags
77
+ rustflags : " "
78
+ cache-key : ${{ matrix.target }}
105
79
106
- - name : install linux deps
80
+ - name : Install Dependencies
81
+ if : ${{ matrix.host == 'linux' }}
107
82
run : |
108
83
sudo apt-get update && sudo apt-get install -y cmake ninja-build curl git libssl-dev pkg-config clang lld musl
109
84
110
- - uses : actions-rust-lang/setup-rust-toolchain@v1
111
- with :
112
- toolchain : stable
113
- components : rust-src
114
- target : wasm32-unknown-emscripten
115
- rustflags : " "
116
-
117
- - name : versions
85
+ - name : Install Dependencies
86
+ if : ${{ matrix.host == 'macos' }}
118
87
run : |
119
- rustup show
120
- cargo --version
121
- cmake --version
122
- echo "bash:" && bash --version
123
- echo "ninja:" && ninja --version
124
- echo "clang:" && clang --version
88
+ brew install ninja
125
89
126
- - name : Build host LLVM
90
+ - name : Install LLVM Builder
127
91
run : |
128
- make install- llvm
92
+ cargo install --path crates/ llvm-builder
129
93
130
- - name : Build gnu LLVM
94
+ - name : Clone LLVM
131
95
run : |
132
- revive-llvm clone
133
- revive-llvm build --llvm-projects lld --llvm-projects clang
96
+ revive-llvm --target-env ${{ matrix.builder-arg }} clone
134
97
135
- - name : Build musl LLVM
98
+ - name : Build LLVM
99
+ if : ${{ matrix.target != 'wasm32-unknown-emscripten' }}
136
100
run : |
137
- revive-llvm --target-env musl build --llvm-projects lld --llvm-projects clang
101
+ revive-llvm --target-env ${{ matrix.builder-arg }} build --llvm-projects lld --llvm-projects clang
138
102
139
- - name : Build emscripten LLVM
103
+ - name : Build LLVM
104
+ if : ${{ matrix.target == 'wasm32-unknown-emscripten' }}
140
105
run : |
141
- revive-llvm --target-env emscripten clone
142
106
source emsdk/emsdk_env.sh
143
- revive-llvm --target-env emscripten build --llvm-projects lld
107
+ revive-llvm --target-env ${{ matrix.builder-arg }} build --llvm-projects lld
144
108
145
- - name : clean
146
- # check removed files
109
+ - name : Remove Unnecessary Binaries
110
+ shell : bash
147
111
run : |
148
- for target in gnu emscripten musl; do
149
- cd target- llvm/${target}/target-final/bin/
150
- rm -rf diagtool llvm-libtool-darwin llvm-lipo llvm-pdbutil llvm-dwarfdump llvm-nm llvm-readobj llvm-cfi-verify \
151
- sancov llvm-debuginfo-analyzer llvm-objdump llvm-profgen llvm-extract llvm-jitlink llvm-c-test llvm-gsymutil llvm-dwp \
152
- dsymutil llvm-dwarfutil llvm-exegesis lli clang-rename bugpoint clang-extdef-mapping clang-refactor c-index-test \
153
- llvm-reduce llvm-lto clang-linker-wrapper llc llvm-lto2 llvm-otool llvm-readelf
154
- cd -
155
- done
156
-
157
- - name : package artifacts
112
+ cd target-llvm/${{ matrix.builder-arg }}/target-final/bin/
113
+ rm -f diagtool* llvm-libtool-darwin* llvm-lipo* llvm-pdbutil* llvm-dwarfdump* llvm-nm* llvm-readobj* llvm-cfi-verify* \
114
+ sancov* llvm-debuginfo-analyzer* llvm-objdump* llvm-profgen* llvm-extract* llvm-jitlink* llvm-c-test* llvm-gsymutil* llvm-dwp* \
115
+ dsymutil* llvm-dwarfutil* llvm-exegesis* lli clang-rename* bugpoint* clang-extdef-mapping* clang-refactor* c-index-test* \
116
+ llvm-reduce* llvm-lto* clang-linker-wrapper* llc* llvm-lto2* llvm-otool* llvm-readelf* \
117
+ clang-repl* clang-check* clang-scan-deps*
118
+ cd -
119
+
120
+ - name : Package Artifact
121
+ shell : bash
158
122
run : |
159
- tar -czf "${{ needs.create-release.outputs.version }}-x86_64-linux-gnu-linux.tar.gz" target-llvm/gnu/target-final
160
- tar -czf "${{ needs.create-release.outputs.version }}-x86_64-linux-musl.tar.gz" target-llvm/musl/target-final
161
- tar -czf "${{ needs.create-release.outputs.version }}-wasm32-unknown-emscripten.tar.gz" target-llvm/emscripten/target-final
123
+ mv target-llvm/${{ matrix.builder-arg }}/target-final/ llvm-${{ matrix.target }}
124
+ tar -czf "${{ needs.create-release-draft.outputs.version }}-${{ matrix.target }}.tar.gz" llvm-${{ matrix.target }}
162
125
163
- - name : upload archive to release
126
+ - name : Add Artifact to Release
164
127
uses : softprops/action-gh-release@v2
165
128
with :
166
- make_latest : " false "
167
- tag_name : ${{ needs.create-release.outputs.version }}
129
+ tag_name : ${{ needs.create-release-draft.outputs.version }}
130
+ draft : true
168
131
files : |
169
- ${{ needs.create-release.outputs.version }}-x86_64-linux-gnu-linux.tar.gz
170
- ${{ needs.create-release.outputs.version }}-x86_64-linux-musl.tar.gz
171
- ${{ needs.create-release.outputs.version }}-wasm32-unknown-emscripten.tar.gz
132
+ ${{ needs.create-release-draft.outputs.version }}-${{ matrix.target }}.tar.gz
0 commit comments