void-packages/srcpkgs/julia/template
Adam Beckmeyer 93268a28b1 julia: update to 1.6.1.
Also change to using vendored llvm to reduce maintenance burden from
julia depending on versions of llvm which are quickly obsoleted; this
should also fix julia's build being broken on i686.

When julia 1.6.0 vendors in mbedtls, it uses v2.26.0 which provides a
different set of sonames than the version provided by Void. We need to
patch where the library sonames are hardcoded to allow julia to properly
call into libraries provided by mbedtls.

[Ed.: internal references to unversioned shlibs in this patch appear to
refer to symlnks that the julia package creates in /usr/lib/julia rather
than symlinks in /usr/lib that would require -devel dependencies.]

Upstream issue: https://github.com/julialang/julia/issues/40198

Closes: #30703 [via git-merge-pr]
Closes: #30490
Closes: #30061
Closes: #29964
2021-05-15 22:54:14 -04:00

111 lines
3.5 KiB
Bash

# Template file for 'julia'
pkgname=julia
version=1.6.1
revision=1
archs="i686* x86_64* armv7l* aarch64*"
build_style=gnu-makefile
make_build_args="prefix=/usr sysconfdir=/etc datarootdir=/usr/share
USE_BINARYBUILDER=0 USE_SYSTEM_LIBM=0 USE_SYSTEM_DSFMT=0 USE_SYSTEM_LIBUV=0
USE_SYSTEM_SUITESPARSE=0 USE_SYSTEM_BLAS=0 USE_SYSTEM_LAPACK=0 USE_SYSTEM_LLVM=0
USE_SYSTEM_LIBUNWIND=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_GMP=1 USE_SYSTEM_PATCHELF=1
USE_SYSTEM_MPFR=1 USE_SYSTEM_MBEDTLS=1 USE_SYSTEM_LIBSSH2=1 USE_SYSTEM_NGHTTP2=1
USE_SYSTEM_CURL=1 USE_SYSTEM_ZLIB=1 USE_SYSTEM_P7ZIP=1 USE_SYSTEM_LIBGIT2=1
USE_SYSTEM_UTF8PROC=1
UTF8PROC_INC='${XBPS_CROSS_BASE}/usr/include/libutf8proc'"
make_install_args="$make_build_args"
make_check_args="$make_build_args"
make_check_target=testall
conf_files="/etc/julia/startup.jl"
hostmakedepends="pkg-config perl cmake python gcc-fortran patchelf which tar xz"
makedepends="p7zip pcre2-devel mpfr-devel libgit2-devel libcurl-devel nghttp2-devel
libssh2-devel mbedtls-devel libatomic-devel zlib-devel libunwind-devel
libutf8proc-devel"
# Julia provides vendored symlinks in /usr/lib/julia pointing to these libraries,
# but none of the julia executables link to them so these are not auto-detected
depends="libgit2 libcurl mpfr mbedtls libatomic libpcre2
libssh2 nghttp2 libquadmath libssp p7zip"
short_desc="High-level, high-performance dynamic programming language"
maintainer="Adam Beckmeyer <adam_git@thebeckmeyers.xyz>"
license="MIT"
homepage="https://julialang.org"
distfiles="https://github.com/JuliaLang/julia/releases/download/v${version}/julia-${version}-full.tar.gz"
checksum=71d8e40611361370654e8934c407b2dec04944cf3917c5ecb6482d6b85ed767f
patch_args=-Np1
nocross="build system is a mess"
# Targets for the vendored symlinks mentioned above
shlib_requires="libgit2.so.1.0 libcurl.so.4 libmpfr.so.6 libgmp.so.10
libmbedcrypto.so.3 libmbedtls.so.12 libmbedx509.so.0 libpcre2-8.so.0
libssh2.so.1 libquadmath.so.0 libnghttp2.so.14 libatomic.so.1 libssp.so.0"
case "$XBPS_TARGET_MACHINE" in
i686*)
export M="pentium4"
export CFLAGS="-march=pentium4"
export CXXFLAGS="-march=pentium4"
export LDFLAGS="-Wl,--no-keep-memory"
make_build_args+=" MARCH=pentium4 OPENBLAS_USE_THREAD=0"
;;
x86_64*)
export M="x86-64"
export CFLAGS="-march=x86-64"
export CXXFLAGS="-march=x86-64"
make_build_args+=" MARCH=x86-64"
;;
armv7l*)
export M="armv7-a"
export CFLAGS="-march=armv7-a"
export CXXFLAGS="-march=armv7-a"
make_build_args+=" MARCH=armv7-a"
;;
aarch64*)
export M="armv8-a"
export CFLAGS="-march=armv8-a"
export CXXFLAGS="-march=armv8-a"
make_build_args+=" MARCH=armv8-a"
;;
esac
case "$XBPS_TARGET_MACHINE" in
i686-musl|ppc*-musl)
makedepends+=" libucontext-devel"
;;
esac
post_extract() {
vsed -i '/^install:/s| \$(BUILDROOT)/doc.*||' Makefile
case "$XBPS_TARGET_MACHINE" in
i686-musl|ppc*-musl)
# Make.inc does not use pkg-config libunwind.pc
vsed -i 's;-lunwind;& -lucontext;' Make.inc
esac
}
post_install() {
vlicense LICENSE.md
# julia needlessly copies system libraries into a vendor directory
local _lib
for _lib in libgcc_s.so.1 libgfortran.so.5 libquadmath.so.0 libatomic.so.1 libstdc++.so.6 libssp.so.0; do
rm "${DESTDIR}/usr/lib/julia/${_lib}"
ln -s "/usr/lib/${_lib}" "${DESTDIR}/usr/lib/julia"
done
}
julia-devel_package() {
depends="${sourcepkg}>=${version}_${revision}"
short_desc+=" - development files"
pkg_install() {
vmove usr/include
}
}
julia-doc_package() {
depends="${sourcepkg}>=${version}_${revision}"
short_desc+=" - documentation files"
pkg_install() {
vmove usr/share/doc
}
}