Reduce MSRV #578
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous integration | |
on: [push, pull_request] | |
env: | |
KRILLA_THRESHOLD: "200" | |
VISREG: "" | |
RUSTFLAGS: "-Dwarnings" | |
RUSTDOCFLAGS: "-Dwarnings" | |
jobs: | |
pdfium: | |
name: PDFium | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cache PDFium binary | |
id: cache-pdfium | |
uses: actions/cache@v4 | |
with: | |
path: pdfium | |
key: pdfium-binary-v1 | |
- name: Clone sitro repo | |
if: steps.cache-pdfium.outputs.cache-hit != 'true' | |
run: | | |
git clone https://github.com/LaurenzV/sitro | |
- name: Build pdfium | |
if: steps.cache-pdfium.outputs.cache-hit != 'true' | |
run: | | |
cd sitro/src/pdfium | |
cargo build --release | |
- name: Finish | |
if: steps.cache-pdfium.outputs.cache-hit != 'true' | |
run: mv sitro/target/release/pdfium pdfium | |
mupdf: | |
name: MuPDF | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cache MuPDF | |
id: cache-mupdf | |
uses: actions/cache@v4 | |
with: | |
path: mutool | |
key: mupdf-binary-v2 | |
- name: Download MuPDF | |
if: steps.cache-mupdf.outputs.cache-hit != 'true' | |
run: | | |
curl -LO https://mupdf.com/downloads/archive/mupdf-1.25.1-source.tar.gz | |
tar -xvzf ./mupdf-1.25.1-source.tar.gz | |
- name: Build MuPDF | |
if: steps.cache-mupdf.outputs.cache-hit != 'true' | |
run: | | |
cd mupdf-1.25.1-source | |
make HAVE_X11=no HAVE_GLUT=no | |
- name: Finish | |
if: steps.cache-mupdf.outputs.cache-hit != 'true' | |
run: mv mupdf-1.25.1-source/build/release/mutool mutool | |
gs: | |
name: gs | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cache GhostScript | |
id: cache-gs | |
uses: actions/cache@v4 | |
with: | |
path: gs | |
key: gs-binary-v2 | |
- name: Download GhostScript | |
if: steps.cache-gs.outputs.cache-hit != 'true' | |
run: | | |
curl -LO https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10040/ghostscript-10.04.0.tar.gz | |
tar -xvzf ./ghostscript-10.04.0.tar.gz | |
- name: Build GhostScript | |
if: steps.cache-gs.outputs.cache-hit != 'true' | |
run: | | |
cd ghostscript-10.04.0 | |
./configure | |
make | |
- name: Finish | |
if: steps.cache-gs.outputs.cache-hit != 'true' | |
run: mv ghostscript-10.04.0/bin/gs gs | |
tests: | |
name: Tests | |
runs-on: ubuntu-latest | |
needs: [pdfium, mupdf, gs] | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Get Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Get Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- uses: actions/cache@v4 | |
with: | |
path: pdfium | |
key: pdfium-binary-v1 | |
- uses: actions/cache@v4 | |
with: | |
path: mutool | |
key: mupdf-binary-v2 | |
- uses: actions/cache@v4 | |
with: | |
path: gs | |
key: gs-binary-v2 | |
- uses: awalsh128/cache-apt-pkgs-action@latest | |
with: | |
packages: poppler-utils | |
version: 1.0 | |
- name: Download the pdfium library | |
run: | | |
curl -LO https://github.com/bblanchon/pdfium-binaries/releases/download/chromium%2F5880/pdfium-linux-x64.tgz | |
mkdir pdfium-linux-x64 | |
tar -xvzf ./pdfium-linux-x64.tgz -C pdfium-linux-x64 | |
sudo mv ./pdfium-linux-x64/lib/libpdfium.so /usr/lib | |
rm -r pdfium-linux-x64.tgz | |
rm -r pdfium-linux-x64 | |
- name: Get pdfbox | |
run: | | |
curl -LO https://dlcdn.apache.org/pdfbox/3.0.3/pdfbox-app-3.0.3.jar | |
mv pdfbox-app-3.0.3.jar pdfbox.jar | |
ls . | |
- name: Clone sitro | |
run: | | |
git clone https://github.com/LaurenzV/sitro | |
- name: npm install | |
run: | | |
cd sitro/src/pdfjs | |
npm i | |
- name: Setup | |
run: | | |
sudo chmod +x pdfium | |
sudo chmod +x mutool | |
echo "POPPLER_BIN=pdftoppm" >> $GITHUB_ENV | |
echo "GHOSTSCRIPT_BIN=$(pwd)/gs" >> $GITHUB_ENV | |
echo "PDFIUM_BIN=$(pwd)/pdfium" >> $GITHUB_ENV | |
echo "PDFBOX_BIN=$(pwd)/pdfbox.jar" >> $GITHUB_ENV | |
echo "PDFJS_BIN=$(pwd)/sitro/src/pdfjs/pdfjs_render.mjs" >> $GITHUB_ENV | |
echo "MUPDF_BIN=$(pwd)/mutool" >> $GITHUB_ENV | |
- name: Build | |
run: cargo build | |
- name: Run tests | |
run: cargo test --workspace -- --nocapture | |
- name: Upload artifacts | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ./assets/diffs | |
checks: | |
name: Check clippy, formatting, and documentation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- uses: taiki-e/install-action@cargo-hack | |
- run: cargo clippy | |
- run: cargo fmt --check --all | |
- run: cargo doc --workspace --no-deps | |
- run: RUSTFLAGS=-Awarnings cargo hack check --each-feature |