Commit graph

386 commits

Author SHA1 Message Date
Hanjin Bae
ceb93a5ad6 fix: properly fix graphite2 visibility in overlay port
Previous overlay only set CMAKE_C_FLAGS which gets overridden by
target-level COMPILE_FLAGS. This version:

1. Patches src/CMakeLists.txt to remove -fvisibility=hidden from
   target COMPILE_FLAGS
2. Adds -DGRAPHITE2_EXPORTING so GR2_API macro uses
   visibility("default") instead of visibility("hidden")
3. Stops replacing GRAPHITE2_STATIC check in Types.h with "1"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 22:04:54 +09:00
Hanjin Bae
bc0db1c250
Merge pull request #188 from delibae/fix/vcpkg-graphite2-overlay
fix: vcpkg overlay port for graphite2 with default symbol visibility
2026-06-09 21:45:09 +09:00
Hanjin Bae
eab601ca54 fix: add vcpkg overlay port for graphite2 with default visibility
Root cause: vcpkg's graphite2 compiles with -fvisibility=hidden,
making gr_* symbols invisible in static libs. rust-lld (default on
Rust 1.95+) treats these as hard errors.

Fix: overlay port that rebuilds graphite2 with -fvisibility=default
and CMAKE_C_VISIBILITY_PRESET=default. This exports all symbols
properly while keeping static linking for portable binaries.

Also restore vcpkg-based build (reverts pkg-config switch) and
use Rust stable with default linker (no hacks needed).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 21:45:03 +09:00
Hanjin Bae
344533894b
Merge pull request #187 from delibae/fix/linux-system-packages-no-vcpkg
fix: use system packages instead of vcpkg on Linux
2026-06-09 21:42:17 +09:00
Hanjin Bae
136577261e fix: use system packages instead of vcpkg for Linux tectonic deps
vcpkg's graphite2/ICU static libs have symbol visibility issues that
break with every linker combination (lld, ld.bfd, mold). Switch to
system packages via pkg-config which link dynamically with proper
symbol exports.

Trade-off: Linux binary now depends on system ICU/harfbuzz at runtime,
but this matches how most Linux apps distribute (AppImage bundles
these automatically).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 21:42:10 +09:00
Hanjin Bae
d042aaaf27
Merge pull request #186 from delibae/fix/install-mold-apt
fix: install mold via apt
2026-06-09 21:28:56 +09:00
Hanjin Bae
e9cc511efe fix: add mold to apt install list
Forgot to add mold package to apt-get install after restoring
workflow to v1.1.6 base.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 21:28:50 +09:00
Hanjin Bae
28a8265cb1
Merge pull request #185 from delibae/fix/linux-mold-only
fix: use mold linker on Linux (no other changes)
2026-06-09 21:18:24 +09:00
Hanjin Bae
e862a0615d fix: use mold linker on Linux (handles both hidden symbols and version scripts)
Root cause: ld.bfd can't mix anonymous + named version tags (binutils
bug #13406). lld errors on graphite2 hidden symbols. mold handles both.

Previous mold attempt failed due to also deleting system ICU .so files.
This time, only set RUSTFLAGS without touching system libraries.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 21:18:18 +09:00
Hanjin Bae
ddd7b19aec
Merge pull request #184 from delibae/fix/linux-ubuntu-2404
Some checks are pending
Lint / lint (push) Waiting to run
fix: upgrade Linux build to Ubuntu 24.04 for ld.bfd compat
2026-06-09 17:08:55 +09:00
Hanjin Bae
5e602fed89 fix: upgrade Linux build to Ubuntu 24.04
Ubuntu 22.04's ld.bfd (2.38) can't handle Rust's version scripts.
Ubuntu 24.04's ld.bfd (2.42) supports --undefined-version natively.

Keep the ld.lld→ld wrapper to avoid graphite2 hidden symbol errors.
Use Rust stable instead of pinned 1.94.1.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 17:08:49 +09:00
Hanjin Bae
9e1a03c4b6
Merge pull request #183 from delibae/fix/linux-lld-to-ld-wrapper
fix: replace rust-lld with ld.bfd wrapper on Linux
2026-06-09 15:56:57 +09:00
Hanjin Bae
7d6d7567a1 fix: replace rust-lld with ld.bfd wrapper instead of deleting
Deleting gcc-ld breaks self-contained linker mode. Instead, replace
the ld.lld binary with a shell script that delegates to /usr/bin/ld
(ld.bfd), which handles hidden symbols correctly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 15:56:52 +09:00
Hanjin Bae
79348ef1d9
Merge pull request #182 from delibae/fix/remove-rust-lld-wrapper
fix: remove rust-lld wrapper to use system ld on Linux
2026-06-09 15:49:29 +09:00
Hanjin Bae
b4a4dc3579 fix: remove rust-lld gcc-ld wrapper to force system ld.bfd on Linux
Even with Rust 1.94.1, the sysroot contains gcc-ld/ld.lld which cc
auto-detects and uses. Delete the wrapper directory so cc falls back
to system ld.bfd, which handles vcpkg graphite2's hidden symbols.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 15:49:21 +09:00
Hanjin Bae
4b0bbc49c3
Merge pull request #181 from delibae/fix/linux-rust-cache-key
fix: separate Rust cache for Linux 1.94.1 build
2026-06-09 15:38:42 +09:00
Hanjin Bae
0fd1bee8ef fix: use separate Rust cache key for Linux 1.94.1 build
The shared rust-cache contained rust-lld from Rust 1.96 builds,
which was picked up even when using Rust 1.94.1. Add prefix-key
to force a clean cache for the 1.94.1 toolchain.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 15:38:36 +09:00
Hanjin Bae
c8c443f419
Merge pull request #180 from delibae/fix/pin-rust-1941-linux
fix: pin Rust 1.94.1 on Linux build
2026-06-09 15:03:08 +09:00
Hanjin Bae
e9f62a3cd4 fix: pin Rust 1.94.1 on Linux to match v1.1.6 build environment
Rust 1.95+ introduced two incompatibilities with our vcpkg setup:
1. rust-lld as default linker — errors on graphite2 hidden symbols
2. New version script format — incompatible with ld.bfd

Pin to 1.94.1 (the version used in the successful v1.1.6 build)
instead of working around individual linker issues.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 15:03:03 +09:00
Hanjin Bae
30d9711978
Merge pull request #179 from delibae/fix/disable-rust-lld-linux
fix: disable rust-lld on Linux (graphite2 hidden symbol compat)
2026-06-09 14:23:39 +09:00
Hanjin Bae
1eb662cfc3 fix: disable rust-lld on Linux to fix graphite2 hidden symbol errors
Rust 1.95+ enables rust-lld by default on Linux. rust-lld treats
hidden symbol references (STV_HIDDEN) as hard errors, unlike the
traditional cc/ld.bfd linker used in Rust 1.94 and earlier.

vcpkg's graphite2 static library has gr_* symbols with hidden
visibility, causing link failures. Disable rust-lld with
-Clinker-features=-lld to use cc/ld.bfd as in the successful
v1.1.6 build (Rust 1.94.1).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 14:23:31 +09:00
Hanjin Bae
5208c5d834
Merge pull request #178 from delibae/fix/pin-tectonic-subcrates
fix: commit Cargo.lock with pinned tectonic sub-crates
2026-06-09 13:54:55 +09:00
Hanjin Bae
10a40c5a84 fix: commit Cargo.lock and pin tectonic sub-crate versions
Remove Cargo.lock from .gitignore and commit the lockfile with
tectonic sub-crates pinned to the versions that worked in v1.1.6.

Without a lockfile, cargo resolves latest sub-crate versions which
have breaking API changes incompatible with tectonic 0.15.0.

Workflow restored to v1.1.6 original (no linker hacks needed).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 13:54:47 +09:00
Hanjin Bae
39fbae0919
Merge pull request #177 from delibae/fix/restore-v116-build-setup
fix: restore v1.1.6 build setup — remove Cargo.lock, revert workflow
2026-06-09 13:42:01 +09:00
Hanjin Bae
9cae0a02cf fix: restore v1.1.6 build setup — remove Cargo.lock and revert workflow
The v1.1.6 release built successfully without Cargo.lock committed
(cargo resolves fresh in CI). Our attempts to fix Linux linking by
switching linkers (lld → bfd → mold) and patching graphite2/ICU were
all caused by committing a Cargo.lock that pulled in incompatible
dependency versions.

Restore the workflow to the exact v1.1.6 state and remove Cargo.lock
from git, letting CI resolve dependencies naturally as before.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 13:41:53 +09:00
Hanjin Bae
2df3f940a5
Merge pull request #176 from delibae/fix/linux-remove-system-icu
fix: remove system ICU .so to force vcpkg ICU 78 on Linux
2026-06-09 02:44:20 +09:00
Hanjin Bae
6a7434c5bd fix: remove system ICU shared libs to force vcpkg static ICU
tectonic compiles xetex C++ against vcpkg ICU 78 headers but the
linker finds system libicuuc.so (v70), causing undefined ucnv_*_78
symbols. Remove system ICU .so files to force static linking against
vcpkg's ICU 78.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 02:44:13 +09:00
Hanjin Bae
b60c6fdc05
Merge pull request #175 from delibae/fix/linux-mold-icu-path
fix: prepend vcpkg lib path for mold ICU resolution
2026-06-09 02:35:12 +09:00
Hanjin Bae
5de3942bd2 fix: ensure vcpkg ICU is found first when using mold linker
mold picks up system ICU (version 70) instead of vcpkg ICU (version 78),
causing undefined symbol errors for ucnv_*_78 functions. Add vcpkg
lib path via LIBRARY_PATH and -L flag to ensure correct ICU is linked.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 02:35:06 +09:00
Hanjin Bae
c7a0bfea80
Merge pull request #174 from delibae/fix/linux-use-mold-linker
fix: use mold linker for Linux build
2026-06-09 02:26:24 +09:00
Hanjin Bae
543b193f51 fix: use mold linker for Linux build
ld.bfd handles hidden symbols but fails on Rust's version scripts.
lld handles version scripts but fails on hidden symbols.
mold handles both correctly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 02:26:18 +09:00
Hanjin Bae
4aef12c0b4
Merge pull request #173 from delibae/fix/linux-bfd-version-script
fix: add --undefined-version flag for ld.bfd compat
2026-06-09 02:20:20 +09:00
Hanjin Bae
7c99d567a3 fix: add --undefined-version for ld.bfd version script compat
ld.bfd errors on "anonymous version tag cannot be combined with
other version tags" from Rust-generated symbols.map. The
--undefined-version flag makes this non-fatal.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 02:20:15 +09:00
Hanjin Bae
8004b08a0b
Merge pull request #172 from delibae/fix/linux-use-bfd-linker
fix: use ld.bfd linker for Linux to resolve hidden graphite2 symbols
2026-06-09 02:10:35 +09:00
Hanjin Bae
803ea5f054 fix: use ld.bfd instead of lld for Linux build
rust-lld treats hidden symbol references as hard errors, but ld.bfd
resolves them. vcpkg's graphite2 has STV_HIDDEN on gr_* symbols which
lld refuses to link. Switch to ld.bfd via RUSTFLAGS.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 02:10:29 +09:00
Hanjin Bae
a325a78963
Merge pull request #171 from delibae/fix/linux-grep-exit-code
fix: handle grep no-match exit code in objcopy script
2026-06-09 02:02:02 +09:00
Hanjin Bae
d3be1f0281 fix: prevent grep exit code 1 from aborting objcopy script
grep returns exit 1 when no match found, which aborts the script
under set -e. Wrap with { ... || true; } to prevent this.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 02:01:56 +09:00
Hanjin Bae
5d9264a393
Merge pull request #170 from delibae/fix/linux-objcopy-no-procsubst
fix: use temp file instead of process substitution for objcopy
2026-06-09 01:59:25 +09:00
Hanjin Bae
84bf979885 fix: avoid process substitution in objcopy graphite2 fix
Use a temp file for symbol list instead of <() process substitution,
which fails in GitHub Actions shell. Also add explicit shell: bash.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 01:59:19 +09:00
Hanjin Bae
8e92a1e750
Merge pull request #169 from delibae/fix/linux-objcopy-archive-members
fix: extract archive members before objcopy for graphite2
2026-06-09 01:57:24 +09:00
Hanjin Bae
dd4454d5e1 fix: extract .a archive before objcopy to fix graphite2 symbols
objcopy cannot modify symbols inside .a archives directly. Extract
individual .o files with ar, globalize gr_* symbols in each, then
repack the archive.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 01:57:18 +09:00
Hanjin Bae
56a1981f6f
Merge pull request #168 from delibae/fix/linux-objcopy-graphite2
fix: globalize hidden graphite2 symbols with objcopy on Linux
2026-06-09 01:48:11 +09:00
Hanjin Bae
e1954b6050 fix: use objcopy to globalize hidden graphite2 symbols on Linux
vcpkg builds graphite2 with -fvisibility=hidden, making gr_* API
symbols invisible to the linker. Use objcopy --globalize-symbol to
make them visible again before the Tauri build.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 01:48:05 +09:00
Hanjin Bae
fa9f7b3794
Merge pull request #167 from delibae/fix/linux-graphite2-symlink
fix: symlink system graphite2 into vcpkg path on Linux
2026-06-09 01:42:33 +09:00
Hanjin Bae
750ed00853 fix: symlink system graphite2 into vcpkg path on Linux
tectonic's dep_support requires graphite2 at the vcpkg path.
Replace vcpkg's hidden-visibility graphite2 with symlinks to
the system libgraphite2 (from libgraphite2-dev) which exports
all symbols properly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 01:42:28 +09:00
Hanjin Bae
d47acf5b7c
Merge pull request #166 from delibae/fix/linux-remove-vcpkg-graphite2
fix: use system graphite2 instead of vcpkg on Linux
2026-06-09 01:37:44 +09:00
Hanjin Bae
aaebdafdef fix: remove vcpkg graphite2 to use system library on Linux
vcpkg builds graphite2 with hidden symbol visibility, causing
undefined symbol errors at link time. Remove vcpkg's graphite2
before building so the linker falls back to the system
libgraphite2-dev which exports all symbols properly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 01:37:38 +09:00
Hanjin Bae
38678cf1d9
Merge pull request #165 from delibae/fix/restore-linux-vcpkg-cache
fix: restore Linux vcpkg cache key to v1
2026-06-09 01:28:18 +09:00
Hanjin Bae
5cffbd15ed fix: restore Linux vcpkg cache key to v1
The graphite2 hidden symbol issue is caused by fresh vcpkg builds,
not by tectonic version. The old v1 cache had a working graphite2
build. Restore the cache key to reuse it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 01:28:12 +09:00
Hanjin Bae
5bc587e89a
Merge pull request #164 from delibae/fix/tauri-plugin-versions
fix: update tauri plugin crates to match NPM packages
2026-06-09 01:19:18 +09:00