Commit Graph
6 Commits
Author SHA1 Message Date
agw dd9b102b7d Record state.json through the Gitea API instead of git push
Git over HTTP is disabled on this Gitea ('Interacting with repositories by
HTTP protocol is not allowed'), and the URL the old script derived from the
SSH remote pointed HTTPS at the SSH port, so the first real publish failed
right after committing state.json. Create or update the file through the
contents API instead, with the runner's GITHUB_SERVER_URL/GITHUB_REPOSITORY.

Tested create, unchanged and update against a throwaway private repo, and
that the runner reaches the API through the edge.

Claude-Session: https://claude.ai/code/session_01GGe7kUhooMFuzY6GaDb2w9
2026-10-03 23:44:39 +02:00
agw bdbd6f5978 Fix the two publishing steps that had never run for real
push-aur.sh: mktemp -d creates the work directory as 0700 root, so the
builder user could not enter it to run makepkg ('cd: Permission denied'),
and the git steps afterwards would refuse a tree owned by another user. Give
builder the whole tree for makepkg and hand it back to root before git.

record-state.sh: 'git diff --quiet' ignores untracked files, so the first
state.json was reported as unchanged and never committed, which would have
rebuilt and republished every night. Stage it before comparing.

Both were found by the first publishing run; push-aur.sh was then tested end
to end in a clean Arch container with a dummy key.

Claude-Session: https://claude.ai/code/session_01GGe7kUhooMFuzY6GaDb2w9
2026-10-03 20:47:43 +02:00
agw 56434ba7ed Bundle non-system libraries instead of version-pinning depends
Bundling R alone was not enough: R links libicuuc, and Arch moves ICU
regularly. The obvious fix - pinning 'icu>=78 <79' in depends - is worse
than the disease on a rolling distro, because pacman would then refuse to
upgrade ICU while JASP is installed, blocking the user's whole system
upgrade until a rebuild lands.

So bundle-libs.sh copies every non-system shared library into
/opt/jasp-desktop/lib and rewrites rpaths, by denylist rather than
allowlist. depends now carries no version constraints at all.

Qt6 stays system-provided on purpose - Qt is binary compatible across Qt 6
minors, and bundling QtWebEngine would add ~500 MB. That also means the
only rebuild triggers left are a new JASP release and a Qt major bump;
rebuilding for anything else would cost users a 1.7 GB re-download.

Also fixes check-upstream.py querying only repo=Extra, which silently
returned nothing for icu (it lives in core).
2026-09-01 22:05:00 +02:00
agw d880e6748c Bundle our own R 4.5.3 instead of building against Arch's R
Arch ships R 4.6.1, but JASP pins its R packages against a frozen CRAN
snapshot (2026-03-31 for 0.98.1) that targets R 4.5. Configuring against
Arch's R fails at Rcpp 1.1.1, which cannot compile on R 4.6 since
R_NamespaceRegistry was removed; the Rcpp release that fixes it is newer
than the pinned snapshot, so the lockfile cannot reach it either.

Build R 4.5.3 into /opt/jasp-desktop/R and point R_HOME at it, matching
what upstream CI does. This drops 'r' from depends entirely, so an Arch R
upgrade can no longer break an installed JASP, and the rebuild triggers
become Qt6 and ICU - the libraries actually still linked against.
2026-09-01 21:40:00 +02:00
agw 3ad88f9b0d Rename GITEA_TOKEN secret to STATE_PUSH_TOKEN
Gitea rejects secret names starting with the reserved GITEA_ prefix.
2026-09-01 21:20:00 +02:00
agw 0d4db32d5c Automated Arch binary builds of JASP for the AUR
Build JASP binary and publish to AUR / build (push) Failing after 12s
Build JASP binary and publish to AUR / check (push) Successful in 10s
Upstream JASP ships no Linux binary, so the existing AUR package builds
everything from source including several hundred R packages. This builds
that once in CI and publishes the result as jasp-desktop-bin.

JASP links against the system R and Qt6 rather than bundling them, so a
rebuild is triggered by an Arch r/qt6-base bump as well as by a new JASP
release, and the generated PKGBUILD pins depends to the versions actually
built against.
2026-09-01 20:30:00 +02:00