diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3f17eb957..d26fba090 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -201,6 +201,44 @@ jobs: path: dist/release/* if-no-files-found: error + freebsd: + name: FreeBSD x86_64 + needs: version + # GitHub has no FreeBSD runners: build in a FreeBSD VM (see .github/workflows/freebsd.yml). + runs-on: ubuntu-latest + environment: release + timeout-minutes: 180 + env: + PRINTCRAFT_VERSION: ${{ needs.version.outputs.version }} + PRINTCRAFT_BUILD_DATE: ${{ needs.version.outputs.date }} + VERSION_OVERRIDE: ${{ inputs.version }} + steps: + - uses: actions/checkout@v4 + - name: Build and package in a FreeBSD VM (tar.gz) + # vmactions/freebsd-vm v1.5.9, pinned by commit (it runs our build). + uses: vmactions/freebsd-vm@c46abacb49f09938ca4e1702d15d836285d694cc + with: + release: "14.3" + usesh: true + mem: 12288 + envs: "PRINTCRAFT_VERSION PRINTCRAFT_BUILD_DATE VERSION_OVERRIDE" + prepare: | + pkg install -y bash curl git cmake pkgconf llvm19 perl5 \ + libxkbcommon wayland libX11 libXrandr libXi libXcursor mesa-libs gtk3 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable + run: | + set -e + . "$HOME/.cargo/env" + git config --global --add safe.directory "$PWD" + export LIBCLANG_PATH=/usr/local/llvm19/lib CARGO_BUILD_JOBS=4 + if [ -n "$VERSION_OVERRIDE" ]; then cargo xtask version set "$PRINTCRAFT_VERSION"; fi + packaging/freebsd/package.sh + - uses: actions/upload-artifact@v4 + with: + name: release-freebsd-x86_64 + path: dist/release/* + if-no-files-found: error + web: name: Web (wasm) needs: version @@ -236,7 +274,7 @@ jobs: release: name: Draft GitHub Release - needs: [version, macos, windows, linux, web] + needs: [version, macos, windows, linux, freebsd, web] runs-on: ubuntu-latest environment: release permissions: diff --git a/CLAUDE.md b/CLAUDE.md index 49b1c705a..46fb2650d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ # PrintCraft — instructions for agents -PrintCraft is a clean-room, open-source, Rust-native PDF application targeting Adobe Acrobat Pro parity. It runs natively on macOS, Windows and Linux, and on the web via WASM. It is the sibling of `../photocraft` (a Photoshop-class editor) and follows the same conventions. +PrintCraft is a clean-room, open-source, Rust-native PDF application targeting Adobe Acrobat Pro parity. It runs natively on macOS, Windows, Linux and FreeBSD, and on the web via WASM. It is the sibling of `../photocraft` (a Photoshop-class editor) and follows the same conventions. ## Start every session here 1. Read `plan/STATUS.md`: the current milestone, the next unchecked task and any blockers. `ROADMAP.md` holds the milestone estimates and progress; update its table and log at the end of every session. diff --git a/README.md b/README.md index e21dbfdf7..86d9ef598 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,13 @@
The PDF workbench; an open-source, clean-room reimplementation of Adobe Acrobat, rebuilt in pure Rust.
Read, organize, combine, split and secure PDFs in a fast, native app, written in Rust from the ground up.
- macOS · Windows · Linux · the web
+ macOS · Windows · Linux · FreeBSD · the web
-
+