Files
thoughtsync/desktop/packaging/arch/README.md
T
bvandeusenandClaude Opus 5 85ca7c2a2d
CI & Build / Python lint (push) Successful in 2s
CI & Build / TypeScript typecheck (push) Successful in 7s
CI & Build / Python tests (push) Successful in 8s
CI & Build / Build & push image (push) Successful in 17s
Desktop (Tauri) / Tauri desktop (Linux) (push) Successful in 3m28s
desktop: drop the redundant deb depends, correct the pacman docs
Follow-up to 8a8b2b1, driven by what run 2872's new checks actually printed.

The .deb verification did its job on its first run: tauri already infers
exactly libwebkit2gtk-4.1-0 + libgtk-3-0, so declaring the same two in
tauri.conf.json produced a control file listing each of them twice. Removed
the declaration — verify.sh is the real guard, and it fails the build if
inference ever stops covering what the binary links.

The pacman step revealed ci-tauri carries neither zstd nor bsdtar, so packages
currently ship as .pkg.tar.xz with no .MTREE. Both are working outcomes
(pacman reads xz; only `pacman -Qkk` needs .MTREE), but the docs promised
.zst, so the README, the release notes and ci-requirements.md now describe
what the build actually produces.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SreJkbxB4gx8pPsu8QbLPi
2026-07-25 18:26:24 -04:00

65 lines
2.5 KiB
Markdown

# ThoughtSync desktop — Arch package
A **prebuilt** native pacman package, published as an asset on every ThoughtSync
release. Nothing to compile, no toolchain to install.
Installing natively on Arch matters for more than tidiness: pacman pulls
`webkit2gtk-4.1` itself and the app runs against your system's graphics stack,
which is what keeps the bundled-library `EGL_BAD_PARAMETER` black window
(issue 2021) from coming back. It also means the app is package-manager tracked
and uninstalls cleanly.
## Install
Easiest — the one-command installer picks this package automatically on any
pacman system:
```sh
curl -fsSL https://git.fabledsword.com/bvandeusen/thoughtsync/raw/branch/main/desktop/packaging/install.sh | sh
```
Or grab the `.pkg.tar.*` from the
[latest release](https://git.fabledsword.com/bvandeusen/thoughtsync/releases/latest)
and install it directly:
```sh
sudo pacman -U thoughtsync-desktop-*-x86_64.pkg.tar.*
```
The compression suffix depends on what the build image provides — `.zst` when
`zstd` is installed, otherwise `.xz` (today's builds are `.xz`). pacman reads
all of them; only the filename differs.
Either way you get:
- `/usr/bin/thoughtsync` — the app
- `/usr/share/applications/thoughtsync.desktop` — the menu entry
- `/usr/share/icons/hicolor/*/apps/thoughtsync.png` — themed icons
Launch **ThoughtSync** from your app menu, or run `thoughtsync`.
Uninstall: `sudo pacman -R thoughtsync-desktop`.
## How the package is built
`package-prebuilt.sh` runs in CI (`.forgejo/workflows/desktop.yml`) and wraps the
binary the Linux build already produced into a pacman package — it does not
compile anything a second time.
Packaging a Debian-compiled binary for Arch is safe here because the binary
bundles nothing: it resolves `libwebkit2gtk-4.1.so.0`, `libgtk-3.so.0` and
`libsoup-3.0.so.0` by SONAME at runtime and those are identical on both distros,
SQLite is compiled in (`rusqlite` "bundled"), and glibc's forward compatibility
means building on Debian's older glibc and running on Arch's newer one is the
safe direction.
CI is Debian and has no `pacman`, so it cannot install-test the result. The build
step instead logs the package's `.PKGINFO` and complete file listing, so the
package is auditable from the run log; a real `pacman -U` is the final proof.
## Previously
This directory used to hold a source-build `PKGBUILD` requiring `makepkg -si`
with `rust` + `nodejs` + `npm` installed. It was removed once prebuilt packages
shipped — asking every user to install a compiler toolchain isn't distribution.