mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-14 19:27:04 -04:00
Bump to 0.6.0; add a Linux riscv64 release build (#945)
- Cargo.toml: [workspace.package] and the internal path-dependency requirements move to 0.6.0 (they pinned 0.5.0, which `cargo update -w` can't match); Cargo.lock refreshed. - release.yml: new `linux-riscv64` job, ported from GridCraft. Cross-compiles on ubuntu-24.04 against ports.ubuntu.com riscv64 libs (the linux job's -dev packages, :riscv64), builds the tar.gz and the CLI-only tar.gz, smoke-tests pdfcraft-cli under QEMU, and is in the draft release job's needs, so SHA256SUMS covers it. - packaging/linux/package.sh: CROSS_ARCH / CROSS_TARGET / CROSS_COMPILE / EMULATOR support. - README and docs/releasing.md list the riscv64 tarballs (glibc 2.39+). - contributors.json refreshed. Co-authored-by: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
b8ddf71e30
commit
53a5880386
7 files changed
+548
-178
No files matched your search
@@ -247,6 +247,91 @@ jobs:
|
||||
path: dist/release/*
|
||||
if-no-files-found: error
|
||||
|
||||
linux-riscv64:
|
||||
name: Linux riscv64
|
||||
needs: version
|
||||
# Cross-compiled on x86_64 (no hosted RISC-V runners) against the runner's own Ubuntu release
|
||||
# from ports.ubuntu.com, so the binaries need that release's glibc (24.04: 2.39). 22.04's
|
||||
# riscv64 ports lag its amd64 updates, which breaks the multiarch install. tar.gz only (the
|
||||
# app tree and the CLI-only archive); the CLI is smoke-tested under QEMU.
|
||||
runs-on: ubuntu-24.04
|
||||
# No `environment: release`: this job signs nothing, so it gets no release secrets.
|
||||
env:
|
||||
PDFCRAFT_VERSION: ${{ needs.version.outputs.version }}
|
||||
PDFCRAFT_BUILD_DATE: ${{ needs.version.outputs.date }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
# The craft-fonts build input (Japanese fonts): every release embeds it. Bump deliberately.
|
||||
- name: Check out craft-fonts
|
||||
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
||||
with:
|
||||
repository: storytold/craft-fonts
|
||||
ref: 8dcdacd5153e64560d109541a47d806f26f048c0
|
||||
path: craft-fonts
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: riscv64gc-unknown-linux-gnu
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
key: release-linux-riscv64
|
||||
- name: Apply version override
|
||||
if: inputs.version != ''
|
||||
run: cargo xtask version set "$PDFCRAFT_VERSION"
|
||||
- name: Install cross-compilation dependencies
|
||||
run: |
|
||||
. /etc/os-release
|
||||
sudo dpkg --add-architecture riscv64
|
||||
# Pin the existing (archive.ubuntu.com) sources to amd64; riscv64 comes from ports.
|
||||
if [ -f /etc/apt/sources.list.d/ubuntu.sources ]; then
|
||||
sudo sed -i '/^Types: deb/a Architectures: amd64' /etc/apt/sources.list.d/ubuntu.sources
|
||||
fi
|
||||
if [ -f /etc/apt/sources.list ]; then
|
||||
sudo sed -i 's/^deb /deb [arch=amd64] /g' /etc/apt/sources.list
|
||||
sudo sed -i 's/^deb-src /deb-src [arch=amd64] /g' /etc/apt/sources.list
|
||||
fi
|
||||
for suite in "$VERSION_CODENAME" "$VERSION_CODENAME-updates" "$VERSION_CODENAME-security"; do
|
||||
echo "deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports $suite main universe restricted multiverse"
|
||||
done | sudo tee /etc/apt/sources.list.d/riscv64.list
|
||||
sudo apt-get update
|
||||
# The same -dev packages as the linux job, for riscv64; the C toolchain also builds
|
||||
# aws-lc-sys and ring (signing, TLS).
|
||||
sudo apt-get install -y --no-install-recommends \
|
||||
gcc-riscv64-linux-gnu g++-riscv64-linux-gnu binutils-riscv64-linux-gnu libc6-dev-riscv64-cross \
|
||||
libc6-dev:riscv64 qemu-user \
|
||||
libxkbcommon-dev:riscv64 libwayland-dev:riscv64 libx11-dev:riscv64 libxrandr-dev:riscv64 \
|
||||
libxi-dev:riscv64 libgl1-mesa-dev:riscv64
|
||||
- name: Build and package (tar.gz, CLI tar.gz)
|
||||
env:
|
||||
CRAFT_FONTS_DIR: ${{ github.workspace }}/craft-fonts
|
||||
CRAFT_FONTS_REQUIRED: "1"
|
||||
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER: riscv64-linux-gnu-gcc
|
||||
CC_riscv64gc_unknown_linux_gnu: riscv64-linux-gnu-gcc
|
||||
CXX_riscv64gc_unknown_linux_gnu: riscv64-linux-gnu-g++
|
||||
AR_riscv64gc_unknown_linux_gnu: riscv64-linux-gnu-ar
|
||||
PKG_CONFIG_SYSROOT_DIR: /
|
||||
PKG_CONFIG_PATH: /usr/lib/riscv64-linux-gnu/pkgconfig:/usr/share/pkgconfig
|
||||
PKG_CONFIG_ALLOW_CROSS: "1"
|
||||
CROSS_ARCH: riscv64
|
||||
CROSS_TARGET: riscv64gc-unknown-linux-gnu
|
||||
CROSS_COMPILE: riscv64-linux-gnu-
|
||||
EMULATOR: qemu-riscv64
|
||||
QEMU_LD_PREFIX: /usr/riscv64-linux-gnu
|
||||
run: packaging/linux/package.sh --formats "tar cli"
|
||||
- name: Check the packages
|
||||
run: |
|
||||
tar -tzf "dist/release/pdfcraft-$PDFCRAFT_VERSION-linux-riscv64.tar.gz" | grep -E '/bin/pdfcraft$'
|
||||
# The OCR models (#103), where the installed app looks: <bin>/../share/pdfcraft/models.
|
||||
tar -tzf "dist/release/pdfcraft-$PDFCRAFT_VERSION-linux-riscv64.tar.gz" | grep -E '/share/pdfcraft/models/.+\.rten$'
|
||||
cli="dist/release/pdfcraft-cli-$PDFCRAFT_VERSION-linux-riscv64.tar.gz"
|
||||
tar -tzf "$cli" | grep -E '/pdfcraft-cli$'
|
||||
tar -tzf "$cli" | grep -E '/LICENSE-APACHE$'
|
||||
file target/riscv64gc-unknown-linux-gnu/release/pdfcraft | grep -F 'RISC-V'
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: release-linux-riscv64
|
||||
path: dist/release/*.tar.gz
|
||||
if-no-files-found: error
|
||||
|
||||
flatpak:
|
||||
name: Flatpak ${{ matrix.arch }}
|
||||
needs: [version, linux]
|
||||
@@ -379,7 +464,7 @@ jobs:
|
||||
release:
|
||||
name: Draft GitHub Release
|
||||
# Needs the signing jobs, which only run on `release`: a branch dry run never drafts a release.
|
||||
needs: [version, macos, windows, linux, flatpak, freebsd, web]
|
||||
needs: [version, macos, windows, linux, linux-riscv64, flatpak, freebsd, web]
|
||||
runs-on: ubuntu-latest
|
||||
environment: release
|
||||
permissions:
|
||||
|
||||
Generated
+33
-33
@@ -3543,7 +3543,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"eframe",
|
||||
"egui",
|
||||
@@ -3561,7 +3561,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-a11y"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"pdfcraft-content",
|
||||
"pdfcraft-cos",
|
||||
@@ -3572,7 +3572,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-annot"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"hayro-syntax",
|
||||
"pdfcraft-cos",
|
||||
@@ -3583,7 +3583,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-automation"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"image",
|
||||
@@ -3600,7 +3600,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-cli"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"pdfcraft-automation",
|
||||
@@ -3614,18 +3614,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-compare"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-content"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"pdfcraft-cos",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-cos"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"hayro-syntax",
|
||||
"pdfcraft-crypt",
|
||||
@@ -3637,7 +3637,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-create"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"encoding_rs",
|
||||
"hayro-syntax",
|
||||
@@ -3652,7 +3652,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-crypt"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"aes",
|
||||
"md-5",
|
||||
@@ -3664,7 +3664,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-edit"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"hayro-syntax",
|
||||
"pdfcraft-annot",
|
||||
@@ -3678,7 +3678,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-engine"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"icu_properties",
|
||||
@@ -3713,14 +3713,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-export"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"flate2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-filters"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"flate2",
|
||||
"proptest",
|
||||
@@ -3730,7 +3730,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-fonts"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"harfrust",
|
||||
"pdfcraft-cos",
|
||||
@@ -3739,7 +3739,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-forms"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"hayro-syntax",
|
||||
"pdfcraft-content",
|
||||
@@ -3751,18 +3751,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-geom"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-js"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"boa_engine",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-measure"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"pdfcraft-annot",
|
||||
"pdfcraft-content",
|
||||
@@ -3774,14 +3774,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-model"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"pdfcraft-cos",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-ocr"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"ocrs",
|
||||
"pdfcraft-fonts",
|
||||
@@ -3791,7 +3791,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-optimize"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"image",
|
||||
"pdfcraft-annot",
|
||||
@@ -3804,7 +3804,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-organize"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"hayro-syntax",
|
||||
"pdfcraft-content",
|
||||
@@ -3814,14 +3814,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-platform"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"zbus",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-preflight"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"pdfcraft-cos",
|
||||
"pdfcraft-model",
|
||||
@@ -3829,7 +3829,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-print"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"pdfcraft-content",
|
||||
"pdfcraft-cos",
|
||||
@@ -3839,7 +3839,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-redact"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"pdfcraft-annot",
|
||||
"pdfcraft-content",
|
||||
@@ -3853,7 +3853,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-render"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
"flate2",
|
||||
@@ -3871,7 +3871,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-sign"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"aes",
|
||||
"aws-lc-rs",
|
||||
@@ -3905,7 +3905,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-ui-egui"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"arboard",
|
||||
"base64 0.22.1",
|
||||
@@ -3944,7 +3944,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-web"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"eframe",
|
||||
"egui",
|
||||
@@ -3956,7 +3956,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-xfa"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"image",
|
||||
@@ -3970,7 +3970,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pdfcraft-xfdf"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
dependencies = [
|
||||
"pdfcraft-annot",
|
||||
"pdfcraft-cos",
|
||||
|
||||
+31
-31
@@ -5,7 +5,7 @@ exclude = ["vendor"]
|
||||
default-members = ["crates/*", "apps/pdfcraft", "apps/pdfcraft-cli", "xtask"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
edition = "2024"
|
||||
license = "MIT OR Apache-2.0"
|
||||
rust-version = "1.90"
|
||||
@@ -13,36 +13,36 @@ repository = "https://github.com/storytold/pdfcraft"
|
||||
|
||||
[workspace.dependencies]
|
||||
# internal
|
||||
pdfcraft-geom = { path = "crates/geom", version = "0.5.0" }
|
||||
pdfcraft-filters = { path = "crates/filters", version = "0.5.0" }
|
||||
pdfcraft-cos = { path = "crates/cos", version = "0.5.0" }
|
||||
pdfcraft-crypt = { path = "crates/crypt", version = "0.5.0" }
|
||||
pdfcraft-organize = { path = "crates/organize", version = "0.5.0" }
|
||||
pdfcraft-measure = { path = "crates/measure", version = "0.5.0" }
|
||||
pdfcraft-annot = { path = "crates/annot", version = "0.5.0" }
|
||||
pdfcraft-fonts = { path = "crates/fonts", version = "0.5.0" }
|
||||
pdfcraft-model = { path = "crates/model", version = "0.5.0" }
|
||||
pdfcraft-content = { path = "crates/content", version = "0.5.0" }
|
||||
pdfcraft-redact = { path = "crates/redact", version = "0.5.0" }
|
||||
pdfcraft-print = { path = "crates/print", version = "0.5.0" }
|
||||
pdfcraft-xfdf = { path = "crates/xfdf", version = "0.5.0" }
|
||||
pdfcraft-sign = { path = "crates/sign", version = "0.5.0" }
|
||||
pdfcraft-optimize = { path = "crates/optimize", version = "0.5.0" }
|
||||
pdfcraft-a11y = { path = "crates/a11y", version = "0.5.0" }
|
||||
pdfcraft-ocr = { path = "crates/ocr", version = "0.5.0" }
|
||||
pdfcraft-js = { path = "crates/js", version = "0.5.0" }
|
||||
pdfcraft-compare = { path = "crates/compare", version = "0.5.0" }
|
||||
pdfcraft-preflight = { path = "crates/preflight", version = "0.5.0" }
|
||||
pdfcraft-export = { path = "crates/export", version = "0.5.0" }
|
||||
pdfcraft-edit = { path = "crates/edit", version = "0.5.0" }
|
||||
pdfcraft-create = { path = "crates/create", version = "0.5.0" }
|
||||
pdfcraft-forms = { path = "crates/forms", version = "0.5.0" }
|
||||
pdfcraft-xfa = { path = "crates/xfa", version = "0.5.0" }
|
||||
pdfcraft-render = { path = "crates/render", version = "0.5.0" }
|
||||
pdfcraft-engine = { path = "crates/engine", version = "0.5.0" }
|
||||
pdfcraft-platform = { path = "crates/platform", version = "0.5.0" }
|
||||
pdfcraft-ui-egui = { path = "crates/ui-egui", version = "0.5.0" }
|
||||
pdfcraft-automation = { path = "crates/automation", version = "0.5.0", default-features = false }
|
||||
pdfcraft-geom = { path = "crates/geom", version = "0.6.0" }
|
||||
pdfcraft-filters = { path = "crates/filters", version = "0.6.0" }
|
||||
pdfcraft-cos = { path = "crates/cos", version = "0.6.0" }
|
||||
pdfcraft-crypt = { path = "crates/crypt", version = "0.6.0" }
|
||||
pdfcraft-organize = { path = "crates/organize", version = "0.6.0" }
|
||||
pdfcraft-measure = { path = "crates/measure", version = "0.6.0" }
|
||||
pdfcraft-annot = { path = "crates/annot", version = "0.6.0" }
|
||||
pdfcraft-fonts = { path = "crates/fonts", version = "0.6.0" }
|
||||
pdfcraft-model = { path = "crates/model", version = "0.6.0" }
|
||||
pdfcraft-content = { path = "crates/content", version = "0.6.0" }
|
||||
pdfcraft-redact = { path = "crates/redact", version = "0.6.0" }
|
||||
pdfcraft-print = { path = "crates/print", version = "0.6.0" }
|
||||
pdfcraft-xfdf = { path = "crates/xfdf", version = "0.6.0" }
|
||||
pdfcraft-sign = { path = "crates/sign", version = "0.6.0" }
|
||||
pdfcraft-optimize = { path = "crates/optimize", version = "0.6.0" }
|
||||
pdfcraft-a11y = { path = "crates/a11y", version = "0.6.0" }
|
||||
pdfcraft-ocr = { path = "crates/ocr", version = "0.6.0" }
|
||||
pdfcraft-js = { path = "crates/js", version = "0.6.0" }
|
||||
pdfcraft-compare = { path = "crates/compare", version = "0.6.0" }
|
||||
pdfcraft-preflight = { path = "crates/preflight", version = "0.6.0" }
|
||||
pdfcraft-export = { path = "crates/export", version = "0.6.0" }
|
||||
pdfcraft-edit = { path = "crates/edit", version = "0.6.0" }
|
||||
pdfcraft-create = { path = "crates/create", version = "0.6.0" }
|
||||
pdfcraft-forms = { path = "crates/forms", version = "0.6.0" }
|
||||
pdfcraft-xfa = { path = "crates/xfa", version = "0.6.0" }
|
||||
pdfcraft-render = { path = "crates/render", version = "0.6.0" }
|
||||
pdfcraft-engine = { path = "crates/engine", version = "0.6.0" }
|
||||
pdfcraft-platform = { path = "crates/platform", version = "0.6.0" }
|
||||
pdfcraft-ui-egui = { path = "crates/ui-egui", version = "0.6.0" }
|
||||
pdfcraft-automation = { path = "crates/automation", version = "0.6.0", default-features = false }
|
||||
|
||||
# pdf
|
||||
hayro = "0.7.1"
|
||||
|
||||
@@ -455,7 +455,9 @@ Use the MSI for your architecture. Per-user installation overrides are not suppo
|
||||
| Tarball | `pdfcraft-<ver>-linux-x86_64.tar.gz` | `pdfcraft-<ver>-linux-aarch64.tar.gz` | Unpack anywhere |
|
||||
| Command-line tool | `pdfcraft-cli-<ver>-linux-x86_64.tar.gz` | `pdfcraft-cli-<ver>-linux-aarch64.tar.gz` | `pdfcraft-cli` alone (and its opt-in MCP server), for servers, CI and agents |
|
||||
|
||||
Every Linux build needs glibc 2.35 or newer (Ubuntu 22.04+, Debian 12+, Fedora 36+, RHEL 10).
|
||||
RISC-V (riscv64) builds come as tarballs only: `pdfcraft-<ver>-linux-riscv64.tar.gz` and `pdfcraft-cli-<ver>-linux-riscv64.tar.gz`. They are cross-compiled and need glibc 2.39 or newer (Ubuntu 24.04+, Debian 13+).
|
||||
|
||||
Every other Linux build needs glibc 2.35 or newer (Ubuntu 22.04+, Debian 12+, Fedora 36+, RHEL 10).
|
||||
|
||||
### FreeBSD
|
||||
|
||||
|
||||
+374
-105
@@ -2,23 +2,23 @@
|
||||
"schema": 1,
|
||||
"repo": "storytold/pdfcraft",
|
||||
"branch": "main",
|
||||
"head": "49c6e2ec5437a355da4e9dadd9cc2db3476b5cf8",
|
||||
"head_date": "2026-10-10T00:56:13Z",
|
||||
"commits": 493,
|
||||
"head": "b8ddf71e30959dc8a5ca4b66c40b8fcaea68cf76",
|
||||
"head_date": "2026-10-10T21:42:20Z",
|
||||
"commits": 627,
|
||||
"unattributed_commits": 0,
|
||||
"contributors": [
|
||||
{
|
||||
"login": "echelon",
|
||||
"people_entry": true,
|
||||
"github_name": null,
|
||||
"prs": 77,
|
||||
"commits": 258,
|
||||
"lines_added": 221771,
|
||||
"lines_deleted": 11405,
|
||||
"prs": 78,
|
||||
"commits": 261,
|
||||
"lines_added": 224353,
|
||||
"lines_deleted": 11715,
|
||||
"binary_added": 81,
|
||||
"binary_deleted": 25,
|
||||
"first_commit": "2026-09-30T09:17:08Z",
|
||||
"last_commit": "2026-10-09T22:42:23Z"
|
||||
"last_commit": "2026-10-10T18:23:28Z"
|
||||
},
|
||||
{
|
||||
"login": "storybored379",
|
||||
@@ -37,14 +37,14 @@
|
||||
"login": "justinjohn0306",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 3,
|
||||
"commits": 2,
|
||||
"lines_added": 2936,
|
||||
"lines_deleted": 159,
|
||||
"prs": 4,
|
||||
"commits": 3,
|
||||
"lines_added": 3012,
|
||||
"lines_deleted": 161,
|
||||
"binary_added": 1,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-05T11:48:23Z",
|
||||
"last_commit": "2026-10-08T03:02:40Z"
|
||||
"last_commit": "2026-10-10T19:39:15Z"
|
||||
},
|
||||
{
|
||||
"login": "midasdf",
|
||||
@@ -89,14 +89,14 @@
|
||||
"login": "jcl-bit",
|
||||
"people_entry": true,
|
||||
"github_name": null,
|
||||
"prs": 15,
|
||||
"commits": 15,
|
||||
"lines_added": 11099,
|
||||
"lines_deleted": 348,
|
||||
"prs": 16,
|
||||
"commits": 16,
|
||||
"lines_added": 11248,
|
||||
"lines_deleted": 365,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-08T01:12:32Z",
|
||||
"last_commit": "2026-10-09T23:09:23Z"
|
||||
"last_commit": "2026-10-10T10:14:36Z"
|
||||
},
|
||||
{
|
||||
"login": "rutkk",
|
||||
@@ -115,14 +115,14 @@
|
||||
"login": "ShauryaSwarup",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 4,
|
||||
"prs": 2,
|
||||
"commits": 2,
|
||||
"lines_added": 59,
|
||||
"lines_deleted": 1,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-08T01:12:50Z",
|
||||
"last_commit": "2026-10-08T01:12:50Z"
|
||||
"last_commit": "2026-10-10T10:04:44Z"
|
||||
},
|
||||
{
|
||||
"login": "cmoro-deusto",
|
||||
@@ -232,14 +232,14 @@
|
||||
"login": "DWAA1660",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 4,
|
||||
"commits": 4,
|
||||
"lines_added": 1003,
|
||||
"lines_deleted": 55,
|
||||
"prs": 12,
|
||||
"commits": 12,
|
||||
"lines_added": 2199,
|
||||
"lines_deleted": 187,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-08T01:37:28Z",
|
||||
"last_commit": "2026-10-08T16:49:25Z"
|
||||
"last_commit": "2026-10-10T21:39:39Z"
|
||||
},
|
||||
{
|
||||
"login": "pauliusiv123-rgb",
|
||||
@@ -336,14 +336,14 @@
|
||||
"login": "Mawfyy",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 4,
|
||||
"commits": 4,
|
||||
"lines_added": 327,
|
||||
"lines_deleted": 28,
|
||||
"prs": 5,
|
||||
"commits": 5,
|
||||
"lines_added": 458,
|
||||
"lines_deleted": 31,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-08T03:14:45Z",
|
||||
"last_commit": "2026-10-08T20:46:22Z"
|
||||
"last_commit": "2026-10-10T01:26:23Z"
|
||||
},
|
||||
{
|
||||
"login": "ysrdevs",
|
||||
@@ -362,14 +362,14 @@
|
||||
"login": "CQMHV",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 3,
|
||||
"commits": 3,
|
||||
"lines_added": 661,
|
||||
"lines_deleted": 75,
|
||||
"prs": 4,
|
||||
"commits": 4,
|
||||
"lines_added": 745,
|
||||
"lines_deleted": 86,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-08T03:45:02Z",
|
||||
"last_commit": "2026-10-08T17:40:30Z"
|
||||
"last_commit": "2026-10-10T19:46:22Z"
|
||||
},
|
||||
{
|
||||
"login": "neavo",
|
||||
@@ -453,14 +453,14 @@
|
||||
"login": "cyfung1031",
|
||||
"people_entry": true,
|
||||
"github_name": null,
|
||||
"prs": 21,
|
||||
"commits": 21,
|
||||
"lines_added": 66562,
|
||||
"lines_deleted": 205,
|
||||
"prs": 63,
|
||||
"commits": 63,
|
||||
"lines_added": 71877,
|
||||
"lines_deleted": 726,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-08T13:00:21Z",
|
||||
"last_commit": "2026-10-09T18:12:43Z"
|
||||
"last_commit": "2026-10-10T21:17:13Z"
|
||||
},
|
||||
{
|
||||
"login": "XusBadia",
|
||||
@@ -505,14 +505,14 @@
|
||||
"login": "EpsilonLLC",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 326,
|
||||
"lines_deleted": 30,
|
||||
"prs": 2,
|
||||
"commits": 2,
|
||||
"lines_added": 676,
|
||||
"lines_deleted": 103,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-08T17:02:52Z",
|
||||
"last_commit": "2026-10-08T17:02:52Z"
|
||||
"last_commit": "2026-10-10T20:25:24Z"
|
||||
},
|
||||
{
|
||||
"login": "sanyamsingh001",
|
||||
@@ -544,14 +544,14 @@
|
||||
"login": "mlkonrad",
|
||||
"people_entry": true,
|
||||
"github_name": null,
|
||||
"prs": 2,
|
||||
"commits": 2,
|
||||
"lines_added": 3129,
|
||||
"lines_deleted": 206,
|
||||
"prs": 6,
|
||||
"commits": 6,
|
||||
"lines_added": 3847,
|
||||
"lines_deleted": 268,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-08T19:37:10Z",
|
||||
"last_commit": "2026-10-08T22:46:34Z"
|
||||
"last_commit": "2026-10-10T20:41:27Z"
|
||||
},
|
||||
{
|
||||
"login": "Fazmin",
|
||||
@@ -596,14 +596,14 @@
|
||||
"login": "MarekSpodBiedry",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 4,
|
||||
"commits": 4,
|
||||
"lines_added": 773,
|
||||
"lines_deleted": 113,
|
||||
"prs": 15,
|
||||
"commits": 15,
|
||||
"lines_added": 1317,
|
||||
"lines_deleted": 135,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-08T21:29:59Z",
|
||||
"last_commit": "2026-10-09T13:14:55Z"
|
||||
"last_commit": "2026-10-10T19:50:20Z"
|
||||
},
|
||||
{
|
||||
"login": "MaksPV",
|
||||
@@ -778,14 +778,14 @@
|
||||
"login": "LloydNicholson",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 4,
|
||||
"commits": 4,
|
||||
"lines_added": 646,
|
||||
"lines_deleted": 66,
|
||||
"prs": 8,
|
||||
"commits": 8,
|
||||
"lines_added": 1204,
|
||||
"lines_deleted": 119,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-09T16:19:10Z",
|
||||
"last_commit": "2026-10-09T18:44:11Z"
|
||||
"last_commit": "2026-10-10T21:42:20Z"
|
||||
},
|
||||
{
|
||||
"login": "martinjohuber",
|
||||
@@ -804,14 +804,14 @@
|
||||
"login": "bartalos86",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 6,
|
||||
"commits": 6,
|
||||
"lines_added": 3873,
|
||||
"lines_deleted": 176,
|
||||
"prs": 11,
|
||||
"commits": 11,
|
||||
"lines_added": 5353,
|
||||
"lines_deleted": 323,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-09T16:28:06Z",
|
||||
"last_commit": "2026-10-09T22:45:54Z"
|
||||
"last_commit": "2026-10-10T12:32:09Z"
|
||||
},
|
||||
{
|
||||
"login": "dmatviichuk",
|
||||
@@ -895,14 +895,14 @@
|
||||
"login": "tanish2k09",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 2,
|
||||
"commits": 2,
|
||||
"lines_added": 698,
|
||||
"lines_deleted": 3,
|
||||
"prs": 3,
|
||||
"commits": 3,
|
||||
"lines_added": 1078,
|
||||
"lines_deleted": 36,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-09T18:44:37Z",
|
||||
"last_commit": "2026-10-09T18:46:42Z"
|
||||
"last_commit": "2026-10-10T01:26:54Z"
|
||||
},
|
||||
{
|
||||
"login": "thorstenhirsch",
|
||||
@@ -934,27 +934,27 @@
|
||||
"login": "haranishi",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 158,
|
||||
"lines_deleted": 2,
|
||||
"prs": 4,
|
||||
"commits": 4,
|
||||
"lines_added": 875,
|
||||
"lines_deleted": 25,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-09T22:45:11Z",
|
||||
"last_commit": "2026-10-09T22:45:11Z"
|
||||
"last_commit": "2026-10-10T19:54:26Z"
|
||||
},
|
||||
{
|
||||
"login": "Tevinhead",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 312,
|
||||
"lines_deleted": 21,
|
||||
"prs": 5,
|
||||
"commits": 5,
|
||||
"lines_added": 5102,
|
||||
"lines_deleted": 310,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-09T22:52:13Z",
|
||||
"last_commit": "2026-10-09T22:52:13Z"
|
||||
"last_commit": "2026-10-10T21:38:34Z"
|
||||
},
|
||||
{
|
||||
"login": "rschuerer",
|
||||
@@ -1012,14 +1012,274 @@
|
||||
"login": "edurbs",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 2114,
|
||||
"lines_deleted": 5,
|
||||
"prs": 3,
|
||||
"commits": 3,
|
||||
"lines_added": 2517,
|
||||
"lines_deleted": 41,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T00:56:13Z",
|
||||
"last_commit": "2026-10-10T00:56:13Z"
|
||||
"last_commit": "2026-10-10T02:39:36Z"
|
||||
},
|
||||
{
|
||||
"login": "mmmaarian03-crypto",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 2,
|
||||
"commits": 2,
|
||||
"lines_added": 173,
|
||||
"lines_deleted": 40,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T10:04:32Z",
|
||||
"last_commit": "2026-10-10T10:19:07Z"
|
||||
},
|
||||
{
|
||||
"login": "Hathor875",
|
||||
"people_entry": true,
|
||||
"github_name": "Krzysztof Cieślik",
|
||||
"prs": 3,
|
||||
"commits": 3,
|
||||
"lines_added": 92,
|
||||
"lines_deleted": 6,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T10:12:10Z",
|
||||
"last_commit": "2026-10-10T19:11:19Z"
|
||||
},
|
||||
{
|
||||
"login": "oussama-dalhi",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 20,
|
||||
"lines_deleted": 1,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T10:12:57Z",
|
||||
"last_commit": "2026-10-10T10:12:57Z"
|
||||
},
|
||||
{
|
||||
"login": "Toddpe",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 2,
|
||||
"commits": 2,
|
||||
"lines_added": 392,
|
||||
"lines_deleted": 207,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T10:15:06Z",
|
||||
"last_commit": "2026-10-10T10:32:06Z"
|
||||
},
|
||||
{
|
||||
"login": "benimaru327",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 429,
|
||||
"lines_deleted": 0,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T10:23:11Z",
|
||||
"last_commit": "2026-10-10T10:23:11Z"
|
||||
},
|
||||
{
|
||||
"login": "abdelhaqelamraoui",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 2661,
|
||||
"lines_deleted": 42,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T10:36:54Z",
|
||||
"last_commit": "2026-10-10T10:36:54Z"
|
||||
},
|
||||
{
|
||||
"login": "silverhadch",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 2,
|
||||
"commits": 2,
|
||||
"lines_added": 650,
|
||||
"lines_deleted": 62,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T12:19:45Z",
|
||||
"last_commit": "2026-10-10T20:28:29Z"
|
||||
},
|
||||
{
|
||||
"login": "muraa-p",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 7,
|
||||
"commits": 7,
|
||||
"lines_added": 225,
|
||||
"lines_deleted": 24,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T19:06:02Z",
|
||||
"last_commit": "2026-10-10T19:31:35Z"
|
||||
},
|
||||
{
|
||||
"login": "ch0kemeister",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 3,
|
||||
"commits": 3,
|
||||
"lines_added": 147,
|
||||
"lines_deleted": 32,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T19:07:38Z",
|
||||
"last_commit": "2026-10-10T19:50:55Z"
|
||||
},
|
||||
{
|
||||
"login": "Ni-zav",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 41,
|
||||
"lines_deleted": 1,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T19:29:47Z",
|
||||
"last_commit": "2026-10-10T19:29:47Z"
|
||||
},
|
||||
{
|
||||
"login": "snipeTR",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 5,
|
||||
"commits": 5,
|
||||
"lines_added": 495,
|
||||
"lines_deleted": 66,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T19:32:07Z",
|
||||
"last_commit": "2026-10-10T21:10:39Z"
|
||||
},
|
||||
{
|
||||
"login": "gyurix",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 188,
|
||||
"lines_deleted": 5,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T19:47:33Z",
|
||||
"last_commit": "2026-10-10T19:47:33Z"
|
||||
},
|
||||
{
|
||||
"login": "CyberFox-81",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 211,
|
||||
"lines_deleted": 6,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T19:50:06Z",
|
||||
"last_commit": "2026-10-10T19:50:06Z"
|
||||
},
|
||||
{
|
||||
"login": "A-viral-dev",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 7,
|
||||
"lines_deleted": 8,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T19:50:42Z",
|
||||
"last_commit": "2026-10-10T19:50:42Z"
|
||||
},
|
||||
{
|
||||
"login": "taylorandrew07-lab",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 5,
|
||||
"commits": 5,
|
||||
"lines_added": 6295,
|
||||
"lines_deleted": 389,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T20:20:50Z",
|
||||
"last_commit": "2026-10-10T21:01:08Z"
|
||||
},
|
||||
{
|
||||
"login": "80aa08",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 2227,
|
||||
"lines_deleted": 3,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T21:03:47Z",
|
||||
"last_commit": "2026-10-10T21:03:47Z"
|
||||
},
|
||||
{
|
||||
"login": "jay-tau",
|
||||
"people_entry": true,
|
||||
"github_name": "Joel Tony",
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 65,
|
||||
"lines_deleted": 9,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T21:04:14Z",
|
||||
"last_commit": "2026-10-10T21:04:14Z"
|
||||
},
|
||||
{
|
||||
"login": "mitul72",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 293,
|
||||
"lines_deleted": 15,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T21:13:52Z",
|
||||
"last_commit": "2026-10-10T21:13:52Z"
|
||||
},
|
||||
{
|
||||
"login": "joeabouserhal",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 127,
|
||||
"lines_deleted": 12,
|
||||
"binary_added": 1,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T21:21:30Z",
|
||||
"last_commit": "2026-10-10T21:21:30Z"
|
||||
},
|
||||
{
|
||||
"login": "dsskaggs-ai",
|
||||
"people_entry": false,
|
||||
"github_name": null,
|
||||
"prs": 1,
|
||||
"commits": 1,
|
||||
"lines_added": 41,
|
||||
"lines_deleted": 3,
|
||||
"binary_added": 0,
|
||||
"binary_deleted": 0,
|
||||
"first_commit": "2026-10-10T21:39:55Z",
|
||||
"last_commit": "2026-10-10T21:39:55Z"
|
||||
}
|
||||
],
|
||||
"models": [
|
||||
@@ -1028,45 +1288,54 @@
|
||||
"company": "Anthropic",
|
||||
"model": "Claude Opus",
|
||||
"version": "5.5",
|
||||
"commits": 392,
|
||||
"lines_added": 299122,
|
||||
"lines_deleted": 16822
|
||||
"commits": 452,
|
||||
"lines_added": 320722,
|
||||
"lines_deleted": 18683
|
||||
},
|
||||
{
|
||||
"id": "openai/codex",
|
||||
"company": "OpenAI",
|
||||
"model": "Codex",
|
||||
"version": "",
|
||||
"commits": 43,
|
||||
"lines_added": 20596,
|
||||
"lines_deleted": 2467
|
||||
"commits": 52,
|
||||
"lines_added": 28322,
|
||||
"lines_deleted": 3099
|
||||
},
|
||||
{
|
||||
"id": "anthropic/claude-fable/5.1",
|
||||
"company": "Anthropic",
|
||||
"model": "Claude Fable",
|
||||
"version": "5.1",
|
||||
"commits": 9,
|
||||
"lines_added": 1028,
|
||||
"lines_deleted": 112
|
||||
"commits": 13,
|
||||
"lines_added": 1525,
|
||||
"lines_deleted": 217
|
||||
},
|
||||
{
|
||||
"id": "anthropic/claude-opus/5",
|
||||
"company": "Anthropic",
|
||||
"model": "Claude Opus",
|
||||
"version": "5",
|
||||
"commits": 9,
|
||||
"lines_added": 3783,
|
||||
"lines_deleted": 197
|
||||
"commits": 10,
|
||||
"lines_added": 4163,
|
||||
"lines_deleted": 230
|
||||
},
|
||||
{
|
||||
"id": "anthropic/claude-sonnet/5.5",
|
||||
"company": "Anthropic",
|
||||
"model": "Claude Sonnet",
|
||||
"version": "5.5",
|
||||
"commits": 4,
|
||||
"lines_added": 2839,
|
||||
"lines_deleted": 135
|
||||
"commits": 7,
|
||||
"lines_added": 3556,
|
||||
"lines_deleted": 158
|
||||
},
|
||||
{
|
||||
"id": "anthropic/claude-haiku/5.5",
|
||||
"company": "Anthropic",
|
||||
"model": "Claude Haiku",
|
||||
"version": "5.5",
|
||||
"commits": 6,
|
||||
"lines_added": 1813,
|
||||
"lines_deleted": 179
|
||||
},
|
||||
{
|
||||
"id": "anthropic/claude",
|
||||
@@ -1082,9 +1351,9 @@
|
||||
"company": "Anthropic",
|
||||
"model": "Claude Opus",
|
||||
"version": "4.8",
|
||||
"commits": 1,
|
||||
"lines_added": 1632,
|
||||
"lines_deleted": 3
|
||||
"commits": 2,
|
||||
"lines_added": 1708,
|
||||
"lines_deleted": 5
|
||||
},
|
||||
{
|
||||
"id": "anthropic/claude-sonnet/5",
|
||||
|
||||
@@ -50,6 +50,7 @@ published (`gh workflow run release.yml --ref <branch>`).
|
||||
| Windows 11 on ARM64 | `pdfcraft-<v>-windows-arm64.msi`, `pdfcraft-<v>-windows-arm64-portable.zip` | `windows-latest` (cross-compiled) |
|
||||
| Linux x86_64 | `pdfcraft-<v>-linux-x86_64.{AppImage,AppImage.zsync,deb,rpm,tar.gz}`, `pdfcraft-cli-<v>-linux-x86_64.tar.gz` | `ubuntu-22.04` |
|
||||
| Linux aarch64 | `pdfcraft-<v>-linux-aarch64.{AppImage,AppImage.zsync,deb,rpm,tar.gz}`, `pdfcraft-cli-<v>-linux-aarch64.tar.gz` | `ubuntu-22.04-arm` |
|
||||
| Linux riscv64 | `pdfcraft-<v>-linux-riscv64.tar.gz`, `pdfcraft-cli-<v>-linux-riscv64.tar.gz` (glibc 2.39+) | `ubuntu-24.04` (cross-compiled; CLI smoke-tested under QEMU) |
|
||||
| Flatpak x86_64 | `pdfcraft-<v>-linux-x86_64.flatpak` | `ubuntu-24.04` (repackages the Linux tarball) |
|
||||
| Flatpak aarch64 | `pdfcraft-<v>-linux-aarch64.flatpak` | `ubuntu-24.04-arm` (repackages the Linux tarball) |
|
||||
| FreeBSD 14 x86_64 | `pdfcraft-<v>-freebsd-x86_64.tar.gz` | FreeBSD VM on `ubuntu-latest` |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build and package PdfCraft for Linux (<arch> is x86_64 or aarch64):
|
||||
# Build and package PdfCraft for Linux (<arch> is x86_64 or aarch64, or riscv64 when cross-compiling):
|
||||
#
|
||||
# $DIST/pdfcraft-<version>-linux-<arch>.AppImage any distro with glibc >= the build host's
|
||||
# $DIST/pdfcraft-<version>-linux-<arch>.AppImage.zsync delta updates (needs zsyncmake)
|
||||
@@ -8,6 +8,10 @@
|
||||
# $DIST/pdfcraft-<version>-linux-<arch>.tar.gz plain FHS-style tree (bin/, share/)
|
||||
# $DIST/pdfcraft-cli-<version>-linux-<arch>.tar.gz the headless CLI alone (servers, CI, agents)
|
||||
#
|
||||
# Cross-compiling (CI: riscv64, tar only): set CROSS_ARCH (riscv64), CROSS_TARGET (the Rust target),
|
||||
# CROSS_COMPILE (binutils prefix, for strip) and optionally EMULATOR (e.g. qemu-riscv64) to
|
||||
# smoke-test the CLI.
|
||||
#
|
||||
# Usage: packaging/linux/package.sh [--skip-build] [--formats "appimage deb rpm tar cli"]
|
||||
#
|
||||
# Needs: cargo, curl and the network (the OCR models: cargo xtask models); nfpm for deb/rpm (https://nfpm.goreleaser.com); appimagetool for the AppImage
|
||||
@@ -26,13 +30,14 @@ while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--skip-build) SKIP_BUILD=1; shift ;;
|
||||
--formats) FORMATS="$2"; shift 2 ;;
|
||||
-h | --help) sed -n '2,16p' "$0"; exit 0 ;;
|
||||
-h | --help) sed -n '2,20p' "$0"; exit 0 ;;
|
||||
*) echo "unknown argument: $1" >&2; exit 2 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
ARCH="$(uname -m)"
|
||||
ARCH="${CROSS_ARCH:-$(uname -m)}"
|
||||
case "$ARCH" in
|
||||
riscv64) DEB_ARCH=riscv64 ;;
|
||||
x86_64) DEB_ARCH=amd64 ;;
|
||||
aarch64 | arm64) ARCH=aarch64; DEB_ARCH=arm64 ;;
|
||||
*) echo "unsupported architecture $ARCH" >&2; exit 2 ;;
|
||||
@@ -43,9 +48,13 @@ BASENAME="pdfcraft-$VERSION-linux-$ARCH"
|
||||
echo "==> PdfCraft $VERSION for Linux $ARCH ($FORMATS)"
|
||||
|
||||
if [ "$SKIP_BUILD" = 0 ]; then
|
||||
(cd "$ROOT" && cargo build --release --locked -p pdfcraft -p pdfcraft-cli)
|
||||
if [ -n "${CROSS_TARGET:-}" ]; then
|
||||
(cd "$ROOT" && cargo build --release --locked -p pdfcraft -p pdfcraft-cli --target "$CROSS_TARGET")
|
||||
else
|
||||
(cd "$ROOT" && cargo build --release --locked -p pdfcraft -p pdfcraft-cli)
|
||||
fi
|
||||
fi
|
||||
BIN="$CARGO_TARGET_DIR/release"
|
||||
BIN="$CARGO_TARGET_DIR/${CROSS_TARGET:+$CROSS_TARGET/}release"
|
||||
WORK="$CARGO_TARGET_DIR/linux-package"
|
||||
STAGE="$WORK/root"
|
||||
rm -rf "$WORK"
|
||||
@@ -53,7 +62,7 @@ rm -rf "$WORK"
|
||||
# ---- stage an FHS tree (shared by every format) -------------------------------------------------
|
||||
install -Dm755 "$BIN/pdfcraft" "$STAGE/usr/bin/pdfcraft"
|
||||
install -Dm755 "$BIN/pdfcraft-cli" "$STAGE/usr/bin/pdfcraft-cli"
|
||||
strip "$STAGE/usr/bin/pdfcraft" "$STAGE/usr/bin/pdfcraft-cli" 2>/dev/null || true
|
||||
"${CROSS_COMPILE:-}strip" "$STAGE/usr/bin/pdfcraft" "$STAGE/usr/bin/pdfcraft-cli" 2>/dev/null || true
|
||||
install -Dm644 "$HERE/$APP_ID.desktop" "$STAGE/usr/share/applications/$APP_ID.desktop"
|
||||
install -Dm644 "$HERE/$APP_ID.mime.xml" "$STAGE/usr/share/mime/packages/$APP_ID.xml"
|
||||
mkdir -p "$STAGE/usr/share/metainfo"
|
||||
@@ -151,6 +160,10 @@ if has appimage; then
|
||||
fi
|
||||
fi
|
||||
|
||||
"$STAGE/usr/bin/pdfcraft-cli" --version
|
||||
if [ -z "${CROSS_TARGET:-}" ]; then
|
||||
"$STAGE/usr/bin/pdfcraft-cli" --version
|
||||
elif [ -n "${EMULATOR:-}" ]; then
|
||||
"$EMULATOR" "$STAGE/usr/bin/pdfcraft-cli" --version
|
||||
fi
|
||||
echo "==> done"
|
||||
ls -lh "$DIST"
|
||||
Reference in new issue
Block a user