packages/julia/PKGBUILD

169 lines
5.3 KiB
Bash

# POWER Maintainer: Alexander Baldeck <alex.bldck@gmail.com>
# Maintainer: Antonio Rojas <arojas@archlinux.org>
# Contributor: Alexander F. Rødseth <xyproto@archlinux.org>
# Contributor: Eli Schwartz <eschwartz@archlinux.org>
# Contributor: Lex Black <autumn-wind@web.de>
# Contributor: Michael Jakl <jakl.michael@gmail.com>
# Contributor: devmotion <nospam-archlinux.org@devmotion.de>
# Contributor: Valentin Churavy <v.churavy@gmail.com>
pkgname=julia
epoch=2
pkgver=1.11.3
pkgrel=2
arch=(x86_64 powerpc64le)
pkgdesc='High-level, high-performance, dynamic programming language'
url='https://julialang.org/'
license=(MIT)
depends=(blas64-openblas
fftw
libblastrampoline
libgit2
libunwind
libutf8proc
lld
llvm-julia-libs
mbedtls2
openlibm
7zip
pcre2
suitesparse)
makedepends=(cmake
gcc-fortran
libwhich
llvm-julia
patchelf
python)
optdepends=('gnuplot: If using the Gaston Package from julia')
source=(https://github.com/JuliaLang/julia/releases/download/v$pkgver/$pkgname-$pkgver-full.tar.gz{,.asc}
c12e8515.patch
julia-hardcoded-libs.patch
julia-libgit2-1.8.patch
julia-libgit2-1.9.patch
julia-metainfo.patch
julia-curl-1.10.patch)
backup=(etc/julia/startup.jl)
sha256sums=('027b258b47b4e1a81d1ecdd355adeffdb6c0181c9ad988e717f5e475a12a1de8'
'SKIP'
'2cc294b63e601d50341979fb936826bdba59de2165a5929eae927e152652f367'
'e981ce26bb2394333c83512a607e8aa48ae0d66ec40e0f0b6d97ec70b6baa39f'
'3ba9a85464e874c8ac4caeba155a217e34c3e78e85eccaeb3c2a331ed83882b3'
'6b4a88fdfddd4c78c23cd8c26f5db1ca89ed6f1ae5558cf458a40482f6c64f98'
'074690d913b9544bef11468454fbf5f52005b2a12160123340cfacc91d4daf9f'
'f9953782524471c5a8ce819bf00bd47f8272cea17058d15f24522d01b5e827e5')
validpgpkeys=('3673DF529D9049477F76B37566E3C7DC03D6E495') # Julia (Binary signing key) <buildbot@julialang.org>
options=(!lto)
prepare() {
cd $pkgname-$pkgver
# Update metadata install path
patch -p1 -i ../julia-metainfo.patch
# Revert test that depends on patched gmp
patch -Rp1 -i ../c12e8515.patch
# libgit2 1.8 compatibility
patch -p1 -i ../julia-libgit2-1.8.patch
# libgit2 1.9 compatibility
patch -p1 -i ../julia-libgit2-1.9.patch
# Don't hardcode library names
patch -p1 -i ../julia-hardcoded-libs.patch
# Fix segfaults with curl 1.10
cd stdlib/srccache
_SAsha=89d3c7dded535a77551e763a437a6d31e4d9bf84
tar -xzf Downloads-$_SAsha.tar.gz
patch -d JuliaLang-Downloads.jl-${_SAsha:0:7} -p1 < "$srcdir"/julia-curl-1.10.patch
rm Downloads-$_SAsha.tar.gz
tar -czf Downloads-$_SAsha.tar.gz JuliaLang-Downloads.jl-${_SAsha:0:7}
md5sum Downloads-$_SAsha.tar.gz | cut -d ' ' -f 1 > ../../deps/checksums/Downloads-$_SAsha.tar.gz/md5
sha512sum Downloads-$_SAsha.tar.gz | cut -d ' ' -f 1 > ../../deps/checksums/Downloads-$_SAsha.tar.gz/sha512
}
_make() {
# Follow https://github.com/JuliaCI/julia-buildbot/blob/master/master/inventory.py for JULIA_CPU_TARGET
local make_options=(
prefix=/usr
bindir=/usr/bin
sysconfdir=/etc
libexecdir=/usr/lib
USE_BINARYBUILDER=0
USE_SYSTEM_CSL=1
USE_SYSTEM_LLVM=1
USE_SYSTEM_LLD=1
USE_SYSTEM_LIBUNWIND=1
USE_SYSTEM_PCRE=1
USE_SYSTEM_BLAS=1
USE_SYSTEM_LAPACK=1
USE_SYSTEM_LIBBLASTRAMPOLINE=1
USE_SYSTEM_GMP=1
USE_SYSTEM_MPFR=1
USE_SYSTEM_LIBSUITESPARSE=1
USE_SYSTEM_LIBWHICH=1
USE_SYSTEM_DSFMT=0
USE_SYSTEM_LIBUV=0
USE_SYSTEM_UTF8PROC=1
USE_SYSTEM_LIBGIT2=1
USE_SYSTEM_LIBSSH2=1
USE_SYSTEM_MBEDTLS=1
USE_SYSTEM_CURL=0
USE_SYSTEM_PATCHELF=1
USE_SYSTEM_ZLIB=1
USE_SYSTEM_P7ZIP=1
USE_SYSTEM_OPENLIBM=1
USE_BLAS64=1
LIBBLAS=-lblas64
LIBBLASNAME=libblas64
LIBLAPACK=-llapack64
LIBLAPACKNAME=liblapack64
VERBOSE=1
JLDFLAGS="$LDFLAGS -lLLVM-16jl"
LLVM_CONFIG=/usr/lib/llvm-julia/bin/llvm-config
)
LD_LIBRARY_PATH="/usr/lib/mbedtls2" make "${make_options[@]}" "$@"
}
build() {
cd $pkgname-$pkgver
PATH="$PATH:/usr/lib/llvm-julia/bin/" \
_make release
}
check() {
cd $pkgname-$pkgver/test
ln -s /etc/ssl/cert.pem ../usr/share/julia
../julia --check-bounds=yes --startup-file=no ./runtests.jl \
--skip cmdlineargs \
--skip errorshow \
--skip Downloads \
--skip Sockets \
--skip channels \
--skip nghttp2_jll \
--skip GMP_jll \
--skip LibCURL \
--skip LibSSH2_jll \
--skip MbedTLS_jll \
--skip MPFR_jll \
--skip OpenBLAS_jll \
--skip SuiteSparse_jll \
--skip PCRE2_jll \
--skip LibGit2_jll \
--skip Zlib_jll
find ../stdlib \( -name \*.cov -o -name \*.mem \) -delete
rm -fr ../stdlib/Artifacts/test/artifacts
}
package() {
cd $pkgname-$pkgver
_make DESTDIR="$pkgdir" install
# Prevent compiled modules from being stripped, as it changes their checksum so Julia refuses to load them
chmod -w "$pkgdir"/usr/share/julia/compiled/*/*/*.so
ln -sf /etc/ssl/cert.pem "$pkgdir"/usr/share/julia # Needed by some packages
rm "$pkgdir"/usr/lib/julia/libccalltest.so.debug # Remove debug testing library
install -Dm644 LICENSE.md -t "$pkgdir"/usr/share/licenses/$pkgname
install -Dm644 contrib/julia.svg -t "$pkgdir"/usr/share/pixmaps
}