Skip to content

Commit f53886f

Browse files
committed
lalrpop ci setup
1 parent c3cab9e commit f53886f

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

.github/workflows/ci.yaml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,19 @@ jobs:
101101
env:
102102
RUST_BACKTRACE: full
103103
name: Run rust tests
104+
needs: lalrpop
104105
runs-on: ${{ matrix.os }}
105106
strategy:
106107
matrix:
107108
os: [macos-latest, ubuntu-latest, windows-latest]
108109
fail-fast: false
109110
steps:
110111
- uses: actions/checkout@v2
112+
- name: Cache generated parser
113+
uses: actions/cache@v2
114+
with:
115+
path: parser/python.rs
116+
key: lalrpop-${{ hashFiles('parser/python.lalrpop') }}
111117
- uses: dtolnay/rust-toolchain@stable
112118
- name: Set up the Windows environment
113119
shell: bash
@@ -143,9 +149,15 @@ jobs:
143149

144150
exotic_targets:
145151
name: Ensure compilation on various targets
152+
needs: lalrpop
146153
runs-on: ubuntu-latest
147154
steps:
148155
- uses: actions/checkout@v2
156+
- name: Cache generated parser
157+
uses: actions/cache@v2
158+
with:
159+
path: parser/python.rs
160+
key: lalrpop-${{ hashFiles('parser/python.lalrpop') }}
149161

150162
- uses: dtolnay/rust-toolchain@stable
151163
with:
@@ -200,6 +212,7 @@ jobs:
200212
command: check
201213

202214
snippets_cpython:
215+
needs: lalrpop
203216
env:
204217
RUST_BACKTRACE: full
205218
name: Run snippets and cpython tests
@@ -210,6 +223,12 @@ jobs:
210223
fail-fast: false
211224
steps:
212225
- uses: actions/checkout@v2
226+
- name: Cache generated parser
227+
uses: actions/cache@v2
228+
with:
229+
path: parser/python.rs
230+
key: lalrpop-${{ hashFiles('parser/python.lalrpop') }}
231+
213232
- uses: dtolnay/rust-toolchain@stable
214233
- uses: actions/setup-python@v2
215234
with:
@@ -258,11 +277,45 @@ jobs:
258277
mkdir site-packages
259278
target/release/rustpython --install-pip ensurepip --user
260279
280+
lalrpop:
281+
name: Generate parser with lalrpop
282+
strategy:
283+
matrix:
284+
os: [ubuntu-latest, windows-latest]
285+
runs-on: ${{ matrix.os }}
286+
steps:
287+
- uses: actions/checkout@v2
288+
- name: Cache generated parser
289+
uses: actions/cache@v2
290+
with:
291+
path: parser/python.rs
292+
key: lalrpop-${{ hashFiles('parser/python.lalrpop') }}
293+
- name: Check if cached generated parser exists
294+
id: generated_parser
295+
uses: andstor/file-existence-action@v1
296+
with:
297+
files: "parser/python.rs"
298+
- name: Install lalrpop
299+
if: steps.generated_parser.outputs.files_exists == 'false'
300+
uses: baptiste0928/cargo-install@v1
301+
with:
302+
crate: lalrpop
303+
version: "0.19.8"
304+
- name: Run lalpop
305+
if: steps.generated_parser.outputs.files_exists == 'false'
306+
run: lalrpop parser/python.lalrpop
307+
261308
lint:
262309
name: Check Rust code with rustfmt and clippy
310+
needs: lalrpop
263311
runs-on: ubuntu-latest
264312
steps:
265313
- uses: actions/checkout@v2
314+
- name: Cache generated parser
315+
uses: actions/cache@v2
316+
with:
317+
path: parser/python.rs
318+
key: lalrpop-${{ hashFiles('parser/python.lalrpop') }}
266319
- uses: dtolnay/rust-toolchain@stable
267320
with:
268321
components: rustfmt, clippy
@@ -284,11 +337,18 @@ jobs:
284337
- name: check wasm code with prettier
285338
# prettier doesn't handle ignore files very well: https://github.com/prettier/prettier/issues/8506
286339
run: cd wasm && git ls-files -z | xargs -0 prettier --check -u
340+
287341
miri:
288342
name: Run tests under miri
343+
needs: lalrpop
289344
runs-on: ubuntu-latest
290345
steps:
291346
- uses: actions/checkout@v2
347+
- name: Cache generated parser
348+
uses: actions/cache@v2
349+
with:
350+
path: parser/python.rs
351+
key: lalrpop-${{ hashFiles('parser/python.lalrpop') }}
292352
- uses: dtolnay/rust-toolchain@master
293353
with:
294354
toolchain: nightly
@@ -304,6 +364,11 @@ jobs:
304364
runs-on: ubuntu-latest
305365
steps:
306366
- uses: actions/checkout@v2
367+
- name: Cache generated parser
368+
uses: actions/cache@v2
369+
with:
370+
path: parser/python.rs
371+
key: lalrpop-${{ hashFiles('parser/python.lalrpop') }}
307372
- uses: dtolnay/rust-toolchain@stable
308373
- uses: Swatinem/rust-cache@v1
309374
- name: install wasm-pack
@@ -343,9 +408,15 @@ jobs:
343408

344409
wasm-wasi:
345410
name: Run snippets and cpython tests on wasm-wasi
411+
needs: lalrpop
346412
runs-on: ubuntu-latest
347413
steps:
348414
- uses: actions/checkout@v2
415+
- name: Cache generated parser
416+
uses: actions/cache@v2
417+
with:
418+
path: parser/python.rs
419+
key: lalrpop-${{ hashFiles('parser/python.lalrpop') }}
349420
- uses: dtolnay/rust-toolchain@stable
350421
with:
351422
target: wasm32-wasi

0 commit comments

Comments
 (0)