|
11 | 11 | jobs:
|
12 | 12 | codecov:
|
13 | 13 | name: Collect code coverage data
|
| 14 | + needs: lalrpop |
14 | 15 | runs-on: ubuntu-latest
|
15 | 16 | steps:
|
16 | 17 | - uses: actions/checkout@v2
|
| 18 | + - name: Cache generated parser |
| 19 | + uses: actions/cache@v2 |
| 20 | + with: |
| 21 | + path: compiler/parser/python.rs |
| 22 | + key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }} |
17 | 23 | - uses: dtolnay/rust-toolchain@stable
|
18 | 24 | with:
|
19 | 25 | components: llvm-tools-preview
|
|
49 | 55 |
|
50 | 56 | testdata:
|
51 | 57 | name: Collect regression test data
|
| 58 | + needs: lalrpop |
52 | 59 | runs-on: ubuntu-latest
|
53 | 60 | steps:
|
54 | 61 | - uses: actions/checkout@v2
|
| 62 | + - name: Cache generated parser |
| 63 | + uses: actions/cache@v2 |
| 64 | + with: |
| 65 | + path: compiler/parser/python.rs |
| 66 | + key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }} |
55 | 67 | - uses: dtolnay/rust-toolchain@stable
|
56 | 68 | - name: build rustpython
|
57 | 69 | run: cargo build --release --verbose
|
|
77 | 89 |
|
78 | 90 | whatsleft:
|
79 | 91 | name: Collect what is left data
|
| 92 | + needs: lalrpop |
80 | 93 | runs-on: ubuntu-latest
|
81 | 94 | steps:
|
82 | 95 | - uses: actions/checkout@v2
|
| 96 | + - name: Cache generated parser |
| 97 | + uses: actions/cache@v2 |
| 98 | + with: |
| 99 | + path: compiler/parser/python.rs |
| 100 | + key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }} |
83 | 101 | - uses: dtolnay/rust-toolchain@stable
|
84 | 102 | - name: build rustpython
|
85 | 103 | run: cargo build --release --verbose
|
@@ -108,9 +126,15 @@ jobs:
|
108 | 126 |
|
109 | 127 | benchmark:
|
110 | 128 | name: Collect benchmark data
|
| 129 | + needs: lalrpop |
111 | 130 | runs-on: ubuntu-latest
|
112 | 131 | steps:
|
113 | 132 | - uses: actions/checkout@v2
|
| 133 | + - name: Cache generated parser |
| 134 | + uses: actions/cache@v2 |
| 135 | + with: |
| 136 | + path: compiler/parser/python.rs |
| 137 | + key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }} |
114 | 138 | - uses: dtolnay/rust-toolchain@stable
|
115 | 139 | - uses: actions/setup-python@v2
|
116 | 140 | with:
|
@@ -149,3 +173,35 @@ jobs:
|
149 | 173 | git add ./assets/criterion
|
150 | 174 | git -c user.name="Github Actions" -c user.email="[email protected]" commit -m "Update benchmark results"
|
151 | 175 | git push
|
| 176 | +
|
| 177 | + lalrpop: |
| 178 | + name: Generate parser with lalrpop |
| 179 | + strategy: |
| 180 | + matrix: |
| 181 | + os: [ubuntu-latest, windows-latest] |
| 182 | + runs-on: ${{ matrix.os }} |
| 183 | + steps: |
| 184 | + - uses: actions/checkout@v2 |
| 185 | + - name: Cache generated parser |
| 186 | + uses: actions/cache@v2 |
| 187 | + with: |
| 188 | + path: compiler/parser/python.rs |
| 189 | + key: lalrpop-${{ hashFiles('compiler/parser/python.lalrpop') }} |
| 190 | + - name: Check if cached generated parser exists |
| 191 | + id: generated_parser |
| 192 | + uses: andstor/file-existence-action@v1 |
| 193 | + with: |
| 194 | + files: "compiler/parser/python.rs" |
| 195 | + - if: runner.os == 'Windows' |
| 196 | + name: Force python.lalrpop to be lf # actions@checkout ignore .gitattributes |
| 197 | + run: | |
| 198 | + set file compiler/parser/python.lalrpop; ((Get-Content $file) -join "`n") + "`n" | Set-Content -NoNewline $file |
| 199 | + - name: Install lalrpop |
| 200 | + if: steps.generated_parser.outputs.files_exists == 'false' |
| 201 | + uses: baptiste0928/cargo-install@v1 |
| 202 | + with: |
| 203 | + crate: lalrpop |
| 204 | + version: "0.19.8" |
| 205 | + - name: Run lalrpop |
| 206 | + if: steps.generated_parser.outputs.files_exists == 'false' |
| 207 | + run: lalrpop compiler/parser/python.lalrpop |
0 commit comments