Skip to content

fix: install relay after imagick and skip its load check on arm64 - #38

Open
ma-04 wants to merge 2 commits into
flywp:mainfrom
ma-04:fix/relay_arm64_qemu
Open

ma-04 wants to merge 2 commits into
flywp:mainfrom
ma-04:fix/relay_arm64_qemu

Conversation

@ma-04

@ma-04 ma-04 commented Oct 1, 2026

Copy link
Copy Markdown
Member

Problem

Every PHP build in Build, Test, and Push Docker images has failed since August (e.g. run 36811543849). The arm64 half of the multi-platform push fails at:

Downloading relay v0.50.2 (aarch64) ...
Fatal error: Unable to start relay module in Unknown on line 0

The failing PHP version changes from run to run because fail-fast cancels the rest of the matrix.

Relay's arm64 build won't start under QEMU user-mode emulation, which CI uses for linux/arm64. It fails with QEMU 10.2.3 and 7.0 and with relay.maxmemory=0. On native arm64 it loads fine.

Fix

  • Move relay out of the main install-php-extensions list into its own step after imagick. While relay is enabled, any later php call under QEMU crashes, and the imagick step runs php.
  • On aarch64 only, install relay with IPE_SKIP_CHECK=1. amd64 keeps the load check.

Testing

Test Result
amd64 build of 8.2 + php-structure-test.yaml 22/22 pass (includes "Relay PHP extension is enabled")
Native arm64 builds of 8.2 and 7.4 relay 0.50.2 and imagick load
arm64 build of 8.2 under QEMU on an x86 host (same as CI) builds
That QEMU-built image run on a native arm64 host Relay Support => enabled, Relay\Relay class present

Only 8.2 (both architectures) and 7.4 (native arm64) were built in full.

Follow-up idea

Building arm64 on native ubuntu-24.04-arm runners would avoid QEMU entirely and cut build time a lot. That would mean a per-arch build plus a manifest-merge job, so it's out of scope here.

ma-04 added 2 commits October 1, 2026 11:39
Relay's arm64 build cannot start under QEMU user-mode emulation, which CI
uses for linux/arm64. Since August every scheduled build failed at the
install-php-extensions relay load check. Relay loads fine on native arm64.

Install relay in its own step after imagick, so no later build step runs
php with relay enabled, and skip the load check on aarch64 only.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant