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.
65 lines
2.7 KiB
Plaintext
65 lines
2.7 KiB
Plaintext
# Maintainer: @MAINTAINER@
|
|
#
|
|
# PROVENANCE OF THE BINARY
|
|
#
|
|
# Upstream JASP publishes installers for Windows and macOS only; the official
|
|
# Linux channel is Flathub. The binary this package installs is therefore NOT an
|
|
# upstream release artifact. It is compiled from the tagged JASP sources
|
|
# (@JASP_TAG@, commit @JASP_COMMIT@) against an Arch Linux userland, in an
|
|
# archlinux:base-devel container, by an automated pipeline:
|
|
#
|
|
# build recipe: https://gitea.weircon.dk/agw/jasp-desktop-bin
|
|
# download: @DOWNLOAD_URL@
|
|
#
|
|
# It bundles its own R @BUNDLED_R@ and the non-system libraries it links against
|
|
# under /opt/jasp-desktop, so it does not constrain the versions of anything on
|
|
# your system. Built against Qt @QT_MINOR@.
|
|
|
|
pkgname=jasp-desktop-bin
|
|
pkgver=@JASP_VERSION@
|
|
pkgrel=@PKGREL@
|
|
pkgdesc="JASP Desktop - a fresh way to do statistics (prebuilt binary)"
|
|
arch=('x86_64')
|
|
url="https://jasp-stats.org/"
|
|
license=('AGPL-3.0-or-later')
|
|
|
|
provides=("jasp-desktop=${pkgver}")
|
|
conflicts=('jasp-desktop')
|
|
|
|
# This package ships its own R @BUNDLED_R@ plus the non-system libraries it and
|
|
# the JASP R modules link against (ICU, jsoncpp, glpk, JAGS, readstat, librdata,
|
|
# BLAS/LAPACK ...) under /opt/jasp-desktop/lib, with rpath pointing there.
|
|
#
|
|
# That is deliberate, and it is why nothing below is version-pinned: on a rolling
|
|
# distro a pin like 'icu<79' would make pacman refuse to upgrade ICU while JASP
|
|
# is installed, blocking the user's entire system upgrade. Bundling means JASP
|
|
# never constrains the system.
|
|
#
|
|
# Qt6 is the exception and stays a system dependency: Qt guarantees binary
|
|
# compatibility across Qt 6 minor releases, and bundling QtWebEngine would add
|
|
# ~500 MB for no real gain. A Qt 7 transition will need a rebuild.
|
|
depends=(
|
|
'qt6-base' 'qt6-declarative' 'qt6-svg' 'qt6-positioning' 'qt6-webchannel'
|
|
'qt6-webengine' 'qt6-5compat' 'qt6-httpserver'
|
|
'fontconfig' 'freetype2' 'libxkbcommon' 'hicolor-icon-theme'
|
|
)
|
|
|
|
# The tarball is a complete, already-verified /opt + /usr install tree, so every
|
|
# one of makepkg's tidying steps is unwanted here: they would modify content
|
|
# that was tested in exactly this form. Stripping in particular would be slow
|
|
# and is a good way to break a bundled R plus several hundred compiled R
|
|
# modules, and the rpath set at build time must survive untouched.
|
|
options=('!strip' '!debug' '!libtool' '!staticlibs' '!zipman' '!purge' '!emptydirs')
|
|
|
|
source=("jasp-desktop-${pkgver}-${pkgrel}-x86_64.tar.zst::@DOWNLOAD_URL@")
|
|
sha256sums=('@SHA256@')
|
|
|
|
package() {
|
|
cp -a "${srcdir}/opt" "${pkgdir}/opt"
|
|
cp -a "${srcdir}/usr" "${pkgdir}/usr"
|
|
|
|
# The application lives under /opt; give it a name on PATH.
|
|
install -d "${pkgdir}/usr/bin"
|
|
ln -s /opt/jasp-desktop/bin/JASP "${pkgdir}/usr/bin/jasp"
|
|
}
|