3 Commits
Author SHA1 Message Date
agw 2d5b6a8a0d Keep the bundled R on the rpath, and stop makepkg tidying the tree
First run of the actual binary: ldd reported 'libR.so => not found'.

patchelf --set-rpath replaces the existing rpath rather than appending, so
setting it to $PREFIX/lib discarded the -Wl,-rpath the build had given the
JASP binary for the bundled R. Every other bundled library resolved; only R
went missing, because libR.so/libRblas.so/libRlapack.so live under
R/lib/R/lib rather than in the bundled lib directory. The rpath now lists
both.

Two smaller things the same run surfaced:

- makepkg ran its tidying steps on a tree that was already built and
  verified - removing libtool and static library files, purging, compressing
  man pages. For a -bin package that is a difference between what was tested
  and what gets installed. All of them are now disabled.
- /opt/jasp-desktop/bin/JASP was not on PATH; the package now symlinks
  /usr/bin/jasp.
2026-09-03 21:20:00 +02:00
agw e009dc82d3 Retry the module build, count the bundles, and stop bundling the loader
The later bump worked - the build reached staging. Three new problems:

- renv restores concurrently and not always in dependency order: forecast
  was lazy-loaded while vctrs was still compiling ('there is no package
  called vctrs', six lines before 'vctrs 0.7.3 built from source in 52s').
  That aborts the whole sapply() loop, so one race cost 20 modules. Retry
  the pass up to three times; renv skips what is installed, so each pass
  converges.

- The guard only required a non-empty Modules/local, so a build with 2 of
  22 modules passed it and went on to stage and package. It now requires
  the full expected count and lists what it did get.

- bundle-libs.sh crashed on the dynamic loader: ldd prints it as
  '/lib64/ld-linux-x86-64.so.2 => ...', so the first column is a path and
  the ld-linux* denylist entry never matched. Basename the soname before
  the check.
2026-09-02 20:45:00 +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