diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53a2ab8..5e9c77a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,7 +180,7 @@ jobs: bundle exec rake test build-plutobook-macos: - runs-on: macos-14 + runs-on: macos-15 steps: - uses: actions/checkout@v4 @@ -198,9 +198,9 @@ jobs: id: plutobook-cache-macos with: path: tmp/plutobook-ci-install - key: plutobook-v0.20.0-${{ runner.os }}-${{ hashFiles('.github/workflows/ci.yml') }} + key: plutobook-v0.20.0-macos-15-${{ runner.arch }}-${{ hashFiles('.github/workflows/ci.yml') }} restore-keys: | - plutobook-v0.20.0-${{ runner.os }}- + plutobook-v0.20.0-macos-15-${{ runner.arch }}- - name: Build PlutoBook if: steps.plutobook-cache-macos.outputs.cache-hit != 'true' @@ -227,7 +227,7 @@ jobs: test-macos: needs: build-plutobook-macos - runs-on: macos-14 + runs-on: macos-15 env: PAGE_PRINT_PLUTOBOOK_PREFIX: ${{ github.workspace }}/tmp/plutobook-ci-install @@ -238,7 +238,13 @@ jobs: - uses: actions/checkout@v4 - name: Install test dependencies - run: brew install poppler + run: | + brew update + # Match the shared libraries used by build-plutobook-macos. + brew install pkg-config cairo freetype harfbuzz fontconfig expat icu4c poppler + + - name: Configure Homebrew pkg-config paths + run: echo "PKG_CONFIG_PATH=$(brew --prefix icu4c)/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV" - uses: actions/download-artifact@v4 with: diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 8cf18f2..34c68dd 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -19,7 +19,7 @@ on: jobs: source: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 @@ -38,7 +38,7 @@ jobs: path: page_print-*.gem linux: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 @@ -46,7 +46,10 @@ jobs: - name: Build native Linux gem run: | docker run --rm -v "$PWD:/work" -w /work ruby:3.2-bullseye bash -lc ' - apt-get update && apt-get install -y --no-install-recommends \ + # Keep the Bullseye glibc baseline; its packages are now archived. + sed -i -e "s|http://deb.debian.org/debian-security|https://archive.debian.org/debian-security|g" \ + -e "s|http://deb.debian.org/debian|https://archive.debian.org/debian|g" /etc/apt/sources.list && \ + apt-get -o APT::Update::Error-Mode=any update && apt-get install -y --no-install-recommends \ build-essential \ ca-certificates \ git \ @@ -84,7 +87,7 @@ jobs: path: pkg/page_print-*-x86_64-linux.gem darwin-arm64: - runs-on: macos-14 + runs-on: macos-15 steps: - uses: actions/checkout@v4 @@ -123,7 +126,7 @@ jobs: name: Publish needs: [source, linux, darwin-arm64] if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 environment: release permissions: id-token: write diff --git a/README.md b/README.md index 8f36e48..3401570 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ bundle install PagePrint requires Ruby 3.2 or newer. Native gems with vendored PlutoBook libraries are published for: - `x86_64-linux` -- `arm64-darwin` (Apple Silicon) +- `arm64-darwin` (Apple Silicon, macOS 15 or newer) Other platforms build from source and require PlutoBook development headers and libraries. See [Installing on other platforms](docs/production.md#installing-on-other-platforms). diff --git a/docs/production.md b/docs/production.md index 0f57537..342f698 100644 --- a/docs/production.md +++ b/docs/production.md @@ -23,7 +23,7 @@ PagePrint requires Ruby 3.2 or newer. | Platform | Installation | | --- | --- | | `x86_64-linux` | Native gem with vendored PlutoBook libraries; the Ruby extension is compiled against the local Ruby | -| `arm64-darwin` | Native gem with vendored PlutoBook libraries; the Ruby extension is compiled against the local Ruby | +| `arm64-darwin` (macOS 15 or newer) | Native gem with vendored PlutoBook libraries; the Ruby extension is compiled against the local Ruby | | Other platforms | Source build using an installed PlutoBook | The published native gems disable PlutoBook's optional curl, TurboJPEG, and WebP features to keep the bundled dependency set smaller. PagePrint uses its own Ruby resource fetcher boundary and does not expose PlutoBook's optional network fetcher.