Pewarta Proxy

📋 Server Request & Proxy Logs

Loading active proxy settings...
Developed by Khairul Adha (adhexa.id)
Mengambil log server...

⚙️ Pengaturan Proxy Target

Skip to content

ci: ship a verified Windows ARM64 binary - #264

Merged
jasdeepkhalsa merged 2 commits into
masterfrom
fix/win32-arm64-binary
Oct 12, 2026
Merged

jasdeepkhalsa merged 2 commits into
masterfrom
fix/win32-arm64-binary

Conversation

@jasdeepkhalsa

Copy link
Copy Markdown
Member

Releases had no dbdiff-win32-arm64.exe, even though the README listed one, and @dbdiff/cli-win32-arm64 shipped without a binary. On Windows on ARM, npm fell back to the PHAR, which needs PHP installed.

Why there's no native build: static-php-cli can't build PHP for Windows ARM64. It hard-codes the x64 Windows SDK and x64 prebuilt libraries, and its maintainer has said the target isn't planned.

What this does instead: Windows 11 on ARM runs x64 programs through its built-in x64 emulation, so Windows on ARM now gets the x64 build. A new job proves it works on GitHub's windows-11-arm runner first:

  • It checks the machine really is ARM64.
  • It runs the shared smoke test against the x64 .exe.
  • Only after that does the .exe become the win32-arm64 artifact.

Where the ARM64 job runs

  • release.yml: verify-win32-arm64. The GitHub release and npm publish now wait for it, so dbdiff-win32-arm64.exe is a release asset and @dbdiff/cli-win32-arm64 carries the binary. The PHAR-fallback exemption is gone, so a missing ARM64 binary now blocks the release like any other platform.
  • release-dry-run.yml: the same job, plus win32-arm64 in the summary tables.
  • binary-check.yml (every PR): the x64 job hands its .exe to a new Windows ARM64 binary job. That job also runs the npm wrapper under native ARM64 Node and checks it resolves @dbdiff/cli-win32-arm64. It is skipped by the existing skip-windows-binary label.

New: scripts/smoke-windows-binary.ps1, used by the Windows x64 and ARM64 jobs:

  • --version and --help run.
  • The pgsql and mysql drivers are present.
  • A real schema-and-data diff of the basic_schema_data SQLite fixtures, from both an absolute drive-letter URL (sqlite:///C:/…) and a relative one. It checks the expected statements are there and that both URL forms give the same diff.

Fix found along the way

  • sqlite:///C:/data/app.db reached PDO as /C:/data/app.db, which Windows can't open.
  • On Windows, a drive path is now kept as written. Paths on other systems are unchanged.
  • Unit tests cover both forms.

Docs: the README and npm README tables, and the ARM64 package description, now say the ARM64 binary is the x64 build run under emulation.

Verified locally

  • DsnParserTest passes on PHP 8.3, 8.4 and 8.5.
  • actionlint passes on all workflows.
  • The smoke script passes under PowerShell against the rc.25 Linux binary, and exits 1 when the diff is wrong.
  • The Windows and ARM64 runs happen in this PR's CI.

🤖 Generated with Claude Code

jasdeepkhalsa and others added 2 commits October 11, 2026 23:33
sqlite:///C:/data/app.db reached PDO as /C:/data/app.db, which Windows
cannot open. On Windows a drive path is now kept as written.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
static-php-cli cannot build PHP for Windows ARM64, so Windows on ARM gets
the x64 build, which Windows 11 runs under its built-in x64 emulation. A
new job proves it on a windows-11-arm runner before it becomes the
win32-arm64 release asset and npm package, in the release, the release
dry run and on every PR. The shared smoke test also runs a real SQLite
diff from both a drive-letter and a relative URL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@github-actions github-actions Bot added bug dependencies Pull requests that update a dependency file mysql Related to Mysql php Pull requests that update php code postgres Related to Postgres sqlite Related to Sqlite labels Oct 11, 2026
@jasdeepkhalsa
jasdeepkhalsa merged commit 61d9eeb into master Oct 12, 2026
81 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug dependencies Pull requests that update a dependency file mysql Related to Mysql php Pull requests that update php code postgres Related to Postgres sqlite Related to Sqlite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant