Skip to content

Windows and Linux x64 preview builds - #50

Merged
grawish merged 7 commits into
mainfrom
feat/windows-linux-builds
Oct 15, 2026
Merged

grawish merged 7 commits into
mainfrom
feat/windows-linux-builds

Conversation

@grawish

@grawish grawish commented Oct 15, 2026

Copy link
Copy Markdown
Owner

Requested by Grawish · project thread

Before: Folio only builds and compiles PDFs on Apple silicon Macs. The Windows/Linux work from 5 October sat on an unmerged branch with unpinned Biber downloads, so npm run setup refused to run on either platform.

After: npm run dist:win and npm run dist:linux produce an NSIS installer + zip and an AppImage + .deb + tar.gz, compiling with the same pinned Tectonic 0.17.0, Biber 2.17 and folio-core-v1 bundle as the Mac. Every PR that touches the app or packaging builds and smoke-tests both platforms in CI. Publishing stays a manual workflow_dispatch of Release Windows and Linux previews with tag v0.1.0-preview.6.

How:

  • Carries over the earlier feat/windows-linux commit, rebased on current main (compiler on Linux uses ulimit limits and Tectonic untrusted mode; on Windows it uses untrusted mode, a timer and a process-tree stop).
  • Pins the SourceForge Biber 2.17 Linux/Windows archives by SHA-256. The SHA-1 and MD5 of the downloaded files match what SourceForge publishes.
  • release-desktop.yml now also runs on pull requests (no tag check, no publish), passes the tag through env, and uploads only Folio-* installers.
  • Windows stop never calls taskkill on an already-exited PID, and the Windows exe now gets the Folio icon.
  • Docs: README/REMAINING_WORK/WINDOWS_LINUX describe the previews as built but not yet published.

Apple signing/notarization and the licence audit are untouched.

Local check on Linux x64: typecheck passes; npm test 515 pass / 0 fail / 48 skipped; cross-platform + compiler-queue tests pass. The full template compile and packaging could not run in the dev container (the Tectonic bundle host is blocked there), so the PR workflow is the end-to-end check.

🤖 Generated with Claude Code

https://claude.ai/code/session_012TAwCUAd5eWDctHDVfjKsL


Generated by Claude Code

- Compile on Linux (ulimit-limited, Tectonic untrusted mode) and Windows
  (untrusted mode, wall timer, taskkill tree stop) instead of refusing.
- Prepare per-platform Biber 2.17 runtimes; Windows/Linux expand the PAR
  archive into a persistent per-pin cache. Add scripts/pin-biber.mjs and
  a workflow to record the upstream archive digests.
- Adopt the identical local compiler for projects pinned on another OS.
- electron-builder targets: NSIS + zip (win), AppImage + deb + tar.gz (linux).
- Release workflow builds both, runs cross-platform tests and a native
  compile smoke test, and attaches installers to a GitHub pre-release.
- Bump to 0.1.0-preview.6 and refresh the npm notice lock digest.
SHA-256 recorded from the SourceForge downloads; SHA-1 and MD5 match the
values SourceForge publishes for both files.
- Run the desktop build workflow on PRs that touch the app or packaging,
  without the tag check or publishing.
- Pass the release tag through env and upload only Folio-named installers.
- Skip taskkill once the compiler has exited so a reused PID is never hit.
- Embed the Folio icon in the Windows executable.
- Docs: Biber archives are pinned; previews are not published yet.
@grawish grawish self-assigned this Oct 15, 2026
The Windows runner checked out text files with CRLF, so the pinned
pack-v1 core notices hash no longer matched and runtime:prepare failed.
Folio hashes many shipped text files, so check out LF everywhere.
… URL

Tectonic parses --bundle as a URL first, so D:\...\bundle.zip read as
scheme "d:" and was rejected as an invalid bundle. Windows now passes a
file: URL, which Tectonic maps back to the local path.
…m's paths

compilerEnvironment took a platform argument but joined POSIX paths with
the host path module, so the Linux case produced backslashes when the
cross-platform test ran on Windows.
Tectonic resolves its standard folders through the Windows known-folder
API, which failed with the stripped environment ("Unable to find standard
directories for platform"), so every Windows compile failed. Pass the
account's profile and system-folder variables through; temp files, the
engine cache and the Biber cache stay in Folio's folders.
@grawish
grawish merged commit 61359a1 into main Oct 15, 2026
5 checks passed
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