Skip to content

Commit 9e72c4e

Browse files
authored
Migrate development environment to Pixi (#187)
* pixi migration * try remove cache * checkout first * Use separate task for building Python package since it takes a while * Set macos system requirement * print glibc info * try older rustc * 1.76 * 1.76.0 * 1.78? * Try some RUSTFLAGS flags * Try without release * update action version, remove linux special cases * Try adding linux deps * test linux without pixi * v4
1 parent 8f5200c commit 9e72c4e

File tree

7 files changed

+19419
-125
lines changed

7 files changed

+19419
-125
lines changed

.github/workflows/CI.yml

+70-85
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@ on:
77
pull_request:
88

99
jobs:
10-
black-lint:
10+
python-fmt:
1111
runs-on: ubuntu-latest
1212
steps:
13-
- uses: actions/checkout@v2
14-
- uses: psf/black@stable
13+
- name: Check out repository code
14+
uses: actions/checkout@v2
15+
- uses: prefix-dev/[email protected]
1516
with:
16-
options: "--check"
17-
jupyter: true
18-
src: "./vl-convert-python"
17+
pixi-version: v0.28.2
18+
- name: Check cargo fmt compliance
19+
run: pixi run fmt-py-check
1920

2021
rust-fmt-clippy:
2122
runs-on: ubuntu-latest
@@ -24,43 +25,54 @@ jobs:
2425
steps:
2526
- name: Check out repository code
2627
uses: actions/checkout@v2
27-
- name: Install latest stable Rust toolchain
28-
uses: actions-rs/toolchain@v1
28+
- uses: prefix-dev/[email protected]
2929
with:
30-
toolchain: stable
31-
override: true
32-
components: rustfmt, clippy
30+
pixi-version: v0.28.2
3331
- name: Cache rust dependencies
3432
uses: Swatinem/rust-cache@v2
3533
with:
3634
cache-on-failure: True
37-
- name: Install Protoc
38-
uses: arduino/setup-protoc@v2
39-
with:
40-
repo-token: ${{ secrets.GITHUB_TOKEN }}
4135
- name: Check cargo fmt compliance
42-
run: cargo fmt --all -- --check
36+
run: pixi run fmt-rs-check
4337
- name: Check no rustc warnings
44-
run: cargo check --tests
38+
run: pixi run check-rs
4539
- name: Check for clippy warnings
46-
run: cargo clippy
40+
run: pixi run clippy
4741

4842
cargo-bundle-license:
4943
runs-on: ubuntu-latest
5044
steps:
5145
- name: Check out repository code
5246
uses: actions/checkout@v2
53-
- name: Install latest stable Rust toolchain
54-
uses: actions-rs/toolchain@v1
47+
- uses: prefix-dev/[email protected]
5548
with:
56-
toolchain: stable
57-
override: true
58-
- name: Install cargo bundle license
59-
run: cargo install cargo-bundle-licenses
49+
pixi-version: v0.28.2
6050
- name: Check that license is up to date
61-
run: cargo bundle-licenses --format yaml --output CI.yaml --previous thirdparty_rust.yaml --check-previous
51+
run: pixi run bundle-licenses
52+
- name: Check that git detects no file changes
53+
run: git diff --exit-code
6254

6355
codegen-clean:
56+
runs-on: ubuntu-latest
57+
steps:
58+
- name: Check out repository code
59+
uses: actions/checkout@v2
60+
- uses: prefix-dev/[email protected]
61+
with:
62+
pixi-version: v0.28.2
63+
- name: Cache rust dependencies
64+
uses: Swatinem/rust-cache@v2
65+
with:
66+
cache-on-failure: True
67+
- name: Run codegen
68+
run: pixi run vendor
69+
- name: Check that git detects no file changes
70+
run: git diff --exit-code
71+
72+
# Run linux tests without Pixi due to undiagnosed linker issues
73+
# - undefined reference to fcntl64
74+
# - undefined reference to memfd_create
75+
vl-convert-rs-tests-linux:
6476
runs-on: ubuntu-latest
6577
steps:
6678
- name: Check out repository code
@@ -69,57 +81,62 @@ jobs:
6981
uses: actions-rs/toolchain@v1
7082
with:
7183
toolchain: stable
72-
override: true
73-
components: rustfmt
7484
- name: Cache rust dependencies
7585
uses: Swatinem/rust-cache@v2
7686
with:
87+
prefix-key: "v1-rust"
7788
cache-on-failure: True
78-
- name: Install Deno
79-
uses: denoland/setup-deno@v1
89+
- name: Install Protoc
90+
uses: arduino/setup-protoc@v2
8091
with:
81-
deno-version: vx.x.x
82-
- name: Run codegen
83-
run: cargo run
84-
working-directory: vl-convert-vendor
85-
- name: Check that git detects to file changes
86-
run: git diff --exit-code
92+
repo-token: ${{ secrets.GITHUB_TOKEN }}
93+
- name: Install fonts on Linux
94+
if: runner.os == 'Linux'
95+
run: |
96+
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
97+
sudo apt-get install ttf-mscorefonts-installer
98+
- name: Run rs tests
99+
# Run tests on single thread for Deno, which expects this
100+
run: |
101+
cargo test -p vl-convert-rs -- --test-threads=1
102+
- name: Run CLI tests
103+
run: |
104+
cargo test -p vl-convert -- --test-threads=1
105+
- name: Upload test failures
106+
uses: actions/upload-artifact@v4
107+
if: always()
108+
with:
109+
name: failed-images
110+
path: |
111+
vl-convert-rs/tests/vl-specs/failed
87112
88113
vl-convert-rs-tests:
89114
runs-on: ${{ matrix.os }}
90115
strategy:
91116
matrix:
92117
os:
93-
- ubuntu-latest
94118
- windows-2022
95119
- macos-12
96120
steps:
97121
- name: Check out repository code
98122
uses: actions/checkout@v2
99-
- name: Install latest stable Rust toolchain
100-
uses: actions-rs/toolchain@v1
123+
- uses: prefix-dev/[email protected]
101124
with:
102-
toolchain: stable
125+
pixi-version: v0.28.2
103126
- name: Cache rust dependencies
104127
uses: Swatinem/rust-cache@v2
105128
with:
106129
prefix-key: "v1-rust"
107130
cache-on-failure: True
108-
- name: Install Protoc
109-
uses: arduino/setup-protoc@v2
110-
with:
111-
repo-token: ${{ secrets.GITHUB_TOKEN }}
112131
- name: Install fonts on Linux
113132
if: runner.os == 'Linux'
114133
run: |
115134
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
116135
sudo apt-get install ttf-mscorefonts-installer
117136
- name: Run tests
118-
# Run tests on single thread for Deno, which expects this
119-
run: |
120-
cargo test --release -- --test-threads=1
137+
run: pixi run test-rs
121138
- name: Upload test failures
122-
uses: actions/upload-artifact@v2
139+
uses: actions/upload-artifact@v4
123140
if: always()
124141
with:
125142
name: failed-images
@@ -140,53 +157,21 @@ jobs:
140157
steps:
141158
- name: Check out repository code
142159
uses: actions/checkout@v2
143-
- name: Install latest stable Rust toolchain
144-
uses: actions-rs/toolchain@v1
160+
- uses: prefix-dev/[email protected]
145161
with:
146-
toolchain: stable
162+
pixi-version: v0.28.2
147163
- name: Cache rust dependencies
148164
uses: Swatinem/rust-cache@v2
149165
with:
150166
prefix-key: "v1-rust"
151167
cache-on-failure: True
152-
- name: Install Protoc
153-
uses: arduino/setup-protoc@v2
154-
with:
155-
repo-token: ${{ secrets.GITHUB_TOKEN }}
156168
- name: Install fonts on Linux
157169
if: runner.os == 'Linux'
158170
run: |
159171
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
160172
sudo apt-get install ttf-mscorefonts-installer
161-
- name: Display rust version
162-
run: |
163-
rustc --version
164-
- uses: actions/setup-python@v5
165-
with:
166-
python-version: ${{ matrix.options[1] }}
167-
cache: 'pip'
168-
- name: Create Python Environment (Not Windows)
169-
if: runner.os != 'Windows'
170-
run: |
171-
python -m venv venv
172-
source venv/bin/activate
173-
pip install pytest maturin scikit-image pypdfium2
174-
maturin develop --release -m vl-convert-python/Cargo.toml
175-
- name: Create Python Environment (Windows)
176-
if: runner.os == 'Windows'
177-
run: |
178-
python -m venv venv
179-
venv\Scripts\activate
180-
pip install pytest maturin scikit-image pypdfium2
181-
maturin develop --release -m vl-convert-python/Cargo.toml
182-
- name: Run tests (Not Windows)
183-
if: runner.os != 'Windows'
184-
run: |
185-
source venv/bin/activate
186-
pytest vl-convert-python/tests/
187-
- name: Run tests (Windows)
188-
if: runner.os == 'Windows'
189-
run: |
190-
venv\Scripts\activate
191-
pytest vl-convert-python/tests/
173+
- name: Build package
174+
run: pixi run dev-py
175+
- name: Run tests
176+
run: pixi run test-py
192177

.github/workflows/Release.yml

+10-10
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
cp thirdparty_* bin/
3333
zip -r vl-convert_linux-64.zip bin/
3434
- name: Upload artifacts
35-
uses: actions/upload-artifact@v2
35+
uses: actions/upload-artifact@v4
3636
with:
3737
name: vl-convert
3838
path: |
@@ -80,7 +80,7 @@ jobs:
8080
zip -r vl-convert_linux-aarch64.zip bin/
8181
"
8282
- name: Upload executable
83-
uses: actions/upload-artifact@v2
83+
uses: actions/upload-artifact@v4
8484
with:
8585
name: vl-convert
8686
path: |
@@ -116,7 +116,7 @@ jobs:
116116
files: artifacts/
117117
dest: vl-convert_win-64.zip
118118
- name: Upload artifacts
119-
uses: actions/upload-artifact@v2
119+
uses: actions/upload-artifact@v4
120120
with:
121121
name: vl-convert
122122
path: |
@@ -148,7 +148,7 @@ jobs:
148148
cp thirdparty_* bin/
149149
zip -r vl-convert_osx-64.zip bin/
150150
- name: Upload artifacts
151-
uses: actions/upload-artifact@v2
151+
uses: actions/upload-artifact@v4
152152
with:
153153
name: vl-convert
154154
path: |
@@ -180,7 +180,7 @@ jobs:
180180
cp thirdparty_* bin/
181181
zip -r vl-convert_osx-arm64.zip bin/
182182
- name: Upload artifacts
183-
uses: actions/upload-artifact@v2
183+
uses: actions/upload-artifact@v4
184184
with:
185185
name: vl-convert
186186
path: |
@@ -205,7 +205,7 @@ jobs:
205205
curl -LO $PB_REL/download/v24.0/protoc-24.0-linux-x86_64.zip
206206
unzip protoc-24.0-linux-x86_64.zip -d /usr/
207207
- name: Upload wheels
208-
uses: actions/upload-artifact@v2
208+
uses: actions/upload-artifact@v4
209209
with:
210210
name: wheels
211211
path: dist
@@ -239,7 +239,7 @@ jobs:
239239
ls dist/
240240
rename 's/x86_64/aarch64/g' dist/vl_convert_python-*.whl
241241
- name: Upload wheels
242-
uses: actions/upload-artifact@v2
242+
uses: actions/upload-artifact@v4
243243
with:
244244
name: wheels
245245
path: dist
@@ -257,7 +257,7 @@ jobs:
257257
command: build
258258
args: --release -m vl-convert-python/Cargo.toml -o dist --strip
259259
- name: Upload wheels
260-
uses: actions/upload-artifact@v2
260+
uses: actions/upload-artifact@v4
261261
with:
262262
name: wheels
263263
path: dist
@@ -276,7 +276,7 @@ jobs:
276276
command: build
277277
args: --release -m vl-convert-python/Cargo.toml -o dist --strip
278278
- name: Upload wheels
279-
uses: actions/upload-artifact@v2
279+
uses: actions/upload-artifact@v4
280280
with:
281281
name: wheels
282282
path: dist
@@ -295,7 +295,7 @@ jobs:
295295
command: build
296296
args: --release -m vl-convert-python/Cargo.toml -o dist --strip
297297
- name: Upload wheels
298-
uses: actions/upload-artifact@v2
298+
uses: actions/upload-artifact@v4
299299
with:
300300
name: wheels
301301
path: dist

.gitignore

+4-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ __pycache__/
1515
/vl-convert-rs/tests/vl-specs/failed/
1616

1717
.pixi/
18-
pixi.lock
19-
pixi.toml
2018

21-
scratch/
19+
scratch/
20+
21+
# File generated to check for
22+
CI.yaml

0 commit comments

Comments
 (0)