Files
jasp-desktop-bin/scripts/record-state.sh
T
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

47 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# Commit state.json back to this repo so the next scheduled run knows what was
# already built. Without this the daily check would rebuild every night.
#
# STATE_PUSH_TOKEN token with write access to this repo (required)
set -euo pipefail
: "${STATE_PUSH_TOKEN:?STATE_PUSH_TOKEN is required}"
python3 - <<'PY'
import json
meta = json.load(open("release-meta.json"))
state = {
"jasp_tag": meta["jasp_tag"],
"jasp_version": meta["jasp_version"],
"pkgrel": meta["pkgrel"],
"bundled_r_version": meta["bundled_r_version"],
"qt6_minor": meta["qt6_minor"],
"qt6_major": meta["qt6_major"],
"sha256": meta["sha256"],
"download_url": meta["download_url"],
}
with open("state.json", "w") as fh:
json.dump(state, fh, indent=2)
fh.write("\n")
print(json.dumps(state, indent=2))
PY
if git diff --quiet -- state.json; then
echo ":: state.json unchanged"
exit 0
fi
git config user.name "jasp-bin autobuilder"
git config user.email "noreply@weircon.dk"
git add state.json
git commit -m "Record build of ${GITHUB_REF_NAME:-build}: $(python3 -c 'import json;print(json.load(open("state.json"))["jasp_version"])')"
origin="$(git remote get-url origin)"
host_path="${origin#*://}"
host_path="${host_path#*@}"
git push "https://x-access-token:${STATE_PUSH_TOKEN}@${host_path}" HEAD:"${GITHUB_REF_NAME:-master}"
echo ":: state recorded"