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).
47 lines
1.3 KiB
Bash
Executable File
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"
|