Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev-lang/julia: update to 1.10.0 #34569

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions dev-lang/julia/Manifest
@@ -1,4 +1,5 @@
DIST julia-0b211609.patch 9574 BLAKE2B bf43f143b8873ad1812d95d5866a77f28b5dfeb05f41c9dd8f384109ec8cfab09f78bb7b891d5178d6c445ba58cdfe2bdf0cc4c5bf032910c42d4fd1b89883f7 SHA512 aaeeee2e96773589e4347af4df169ef3d241a4c7a22d28ec356a13062f7d11f043cebce8b79afbebb1fb411ad957d4d14880ae051924cb694b39283ccce1658b
DIST julia-1.10.0-full.tar.gz 318571431 BLAKE2B 66de48ba107c183c3d431419d8c7910306b99528bb377ace77e74fb3307cbb0ddea1aad615ade7ec448a8817a646aaee90b86ca24ef78d226bdb8432f2287e41 SHA512 9a062de6873d56a93df557715e95b6c120411095c05b5e3137329519499a7d84ec4757bbac152d9732c442c3cd988919e817c8b96d0a38fa1debee7ff5828fd0
DIST julia-1.8.0-074d761f.patch 2198 BLAKE2B 7d4b147e290defceaad1b5b6d0c2c9a323b47d685bb1865b23c84aa68135c00104e653a5046d276aa540415ee4c95426f1a4538df3ba0ae4c348966a2f2b1742 SHA512 ff1e23746851b1b7a4480df75815abb35ccc8006f622acb5fb3928e20832cf55022c96650590c8dfea9b39185a3284a0d1310dee3f439429c91e00af567b66f1
DIST julia-1.8.0-0db596e6.patch 15029 BLAKE2B 2d5152436c2a7b0dcd60346c9fe9ea008f7672a68ae038762c5952c6c85173d28b3fd7335282e783cc1f91102e8dd58ae9967caa476ad8f93dd60f8f485fbbe3 SHA512 1f4eb42656bbaed3c85d520875c687f0dd98e9ef0d73f0d3a2b3ac4395020984effc03477c56ab6594cd15e87899923591f6cabeb4e2a43c26725ebe51dbf0be
DIST julia-1.8.0-190565c2.patch 4166 BLAKE2B f55937098219f2d34044cf8963b5421912c2eeeec0e38f8f2c6a0146412f6c653a9797cc1695a514dff31a628d904f68a2750fd0fd63057f5dd34210ae845e92 SHA512 a1b26fb0e36767e42268e9cf97ff4b8bc792e8c4c00196b335dede91d814c381a34711e8759b175c0fd66dd88e91edef7b467be16854267c66bf653bb361df3a
Expand Down
30 changes: 30 additions & 0 deletions dev-lang/julia/files/julia-1.10.0-cuda.patch
@@ -0,0 +1,30 @@
diff --git a/Makefile b/Makefile
index 1565014..5e9b4cc 100644
--- a/Makefile
+++ b/Makefile
@@ -196,7 +196,7 @@ else ifeq ($(JULIA_BUILD_MODE),debug)
JL_PRIVATE_LIBS-0 += libjulia-internal-debug libjulia-codegen-debug
endif
ifeq ($(USE_GPL_LIBS), 1)
-JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBSUITESPARSE) += libamd libbtf libcamd libccolamd libcholmod libcholmod_cuda libcolamd libklu libldl librbio libspqr libspqr_cuda libsuitesparseconfig libumfpack
+JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBSUITESPARSE) += libamd libbtf libcamd libccolamd libcholmod libcolamd libklu libldl librbio libspqr libsuitesparseconfig libumfpack
endif
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBBLASTRAMPOLINE) += libblastrampoline
JL_PRIVATE_LIBS-$(USE_SYSTEM_PCRE) += libpcre2-8

diff --git a/base/Makefile b/base/Makefile
index ad2bb6a..493302a 100644
--- a/base/Makefile
+++ b/base/Makefile
@@ -269,11 +269,9 @@ $(eval $(call symlink_system_library,LIBSUITESPARSE,libamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libccolamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcholmod))
-$(eval $(call symlink_system_library,LIBSUITESPARSE,libcholmod_cuda))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcolamd))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libumfpack))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libspqr))
-$(eval $(call symlink_system_library,LIBSUITESPARSE,libspqr_cuda))
$(eval $(call symlink_system_library,LIBSUITESPARSE,libsuitesparseconfig))
# EXCLUDED LIBRARIES (installed/used, but not vendored for use with dlopen):
# libunwind
35 changes: 35 additions & 0 deletions dev-lang/julia/files/julia-1.10.0-lib.patch
@@ -0,0 +1,35 @@
diff --git a/stdlib/SuiteSparse_jll/src/SuiteSparse_jll.jl b/stdlib/SuiteSparse_jll/src/SuiteSparse_jll.jl
index f245759..e5a4502 100644
--- a/stdlib/SuiteSparse_jll/src/SuiteSparse_jll.jl
+++ b/stdlib/SuiteSparse_jll/src/SuiteSparse_jll.jl
@@ -67,18 +67,18 @@ elseif Sys.isapple()
const libsuitesparseconfig = "@rpath/libsuitesparseconfig.7.dylib"
const libumfpack = "@rpath/libumfpack.6.dylib"
else
- const libamd = "libamd.so.3"
- const libbtf = "libbtf.so.2"
- const libcamd = "libcamd.so.3"
- const libccolamd = "libccolamd.so.3"
- const libcholmod = "libcholmod.so.4"
- const libcolamd = "libcolamd.so.3"
- const libklu = "libklu.so.2"
- const libldl = "libldl.so.3"
- const librbio = "librbio.so.4"
- const libspqr = "libspqr.so.4"
- const libsuitesparseconfig = "libsuitesparseconfig.so.7"
- const libumfpack = "libumfpack.so.6"
+ const libamd = "libamd.so"
+ const libbtf = "libbtf.so"
+ const libcamd = "libcamd.so"
+ const libccolamd = "libccolamd.so"
+ const libcholmod = "libcholmod.so"
+ const libcolamd = "libcolamd.so"
+ const libklu = "libklu.so"
+ const libldl = "libldl.so"
+ const librbio = "librbio.so"
+ const libspqr = "libspqr.so"
+ const libsuitesparseconfig = "libsuitesparseconfig.so"
+ const libumfpack = "libumfpack.so"
end

function __init__()
13 changes: 13 additions & 0 deletions dev-lang/julia/files/julia-1.10.0-libgit2.patch
@@ -0,0 +1,13 @@
diff --git a/stdlib/LibGit2_jll/src/LibGit2_jll.jl b/stdlib/LibGit2_jll/src/LibGit2_jll.jl
index f8e814f..622a0c1 100644
--- a/stdlib/LibGit2_jll/src/LibGit2_jll.jl
+++ b/stdlib/LibGit2_jll/src/LibGit2_jll.jl
@@ -23,7 +23,7 @@ if Sys.iswindows()
elseif Sys.isapple()
const libgit2 = "@rpath/libgit2.1.6.dylib"
else
- const libgit2 = "libgit2.so.1.6"
+ const libgit2 = "libgit2.so"
end

function __init__()
40 changes: 40 additions & 0 deletions dev-lang/julia/files/julia-1.10.0-nodoc.patch
@@ -0,0 +1,40 @@
diff --git a/Makefile b/Makefile
index bf5ab7c..5781083 100644
--- a/Makefile
+++ b/Makefile
@@ -28,7 +28,7 @@ all: debug release
# sort is used to remove potential duplicates
DIRS := $(sort $(build_bindir) $(build_depsbindir) $(build_libdir) $(build_private_libdir) $(build_libexecdir) $(build_includedir) $(build_includedir)/julia $(build_sysconfdir)/julia $(build_datarootdir)/julia $(build_datarootdir)/julia/stdlib $(build_man1dir))
ifneq ($(BUILDROOT),$(JULIAHOME))
-BUILDDIRS := $(BUILDROOT) $(addprefix $(BUILDROOT)/,base src src/flisp src/support src/clangsa cli doc deps stdlib test test/clangsa test/embedding test/gcext test/llvmpasses)
+BUILDDIRS := $(BUILDROOT) $(addprefix $(BUILDROOT)/,base src src/flisp src/support src/clangsa cli deps stdlib test test/clangsa test/embedding test/gcext test/llvmpasses)
BUILDDIRMAKE := $(addsuffix /Makefile,$(BUILDDIRS)) $(BUILDROOT)/sysimage.mk $(BUILDROOT)/pkgimage.mk
DIRS += $(BUILDDIRS)
$(BUILDDIRMAKE): | $(BUILDDIRS)
@@ -128,8 +128,6 @@ release-candidate: release testall
@$(JULIA_EXECUTABLE) $(JULIAHOME)/contrib/add_license_to_files.jl #add license headers
@#Check documentation
@$(JULIA_EXECUTABLE) $(JULIAHOME)/doc/NEWS-update.jl #Add missing cross-references to NEWS.md
- @$(MAKE) -C $(BUILDROOT)/doc html doctest=true linkcheck=true
- @$(MAKE) -C $(BUILDROOT)/doc pdf

@# Check to see if the above make invocations changed anything important
@if [ -n "$$(git status --porcelain)" ]; then \
@@ -265,7 +263,7 @@ define stringreplace
endef


-install: $(build_depsbindir)/stringreplace docs
+install: $(build_depsbindir)/stringreplace
@$(MAKE) $(QUIET_MAKE) $(JULIA_BUILD_MODE)
@for subdir in $(bindir) $(datarootdir)/julia/stdlib/$(VERSDIR) $(docdir) $(man1dir) $(includedir)/julia $(libdir) $(private_libdir) $(sysconfdir) $(private_libexecdir); do \
mkdir -p $(DESTDIR)$$subdir; \
@@ -368,8 +366,6 @@ endif
cp -R -L $(JULIAHOME)/base/* $(DESTDIR)$(datarootdir)/julia/base
cp -R -L $(JULIAHOME)/test/* $(DESTDIR)$(datarootdir)/julia/test
cp -R -L $(build_datarootdir)/julia/* $(DESTDIR)$(datarootdir)/julia
- # Copy documentation
- cp -R -L $(BUILDROOT)/doc/_build/html $(DESTDIR)$(docdir)/
# Remove various files which should not be installed
-rm -f $(DESTDIR)$(datarootdir)/julia/base/version_git.sh
-rm -f $(DESTDIR)$(datarootdir)/julia/test/Makefile
202 changes: 202 additions & 0 deletions dev-lang/julia/julia-1.10.0.ebuild
@@ -0,0 +1,202 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

# correct versions for stdlibs are in deps/checksums
# for everything else, run with network-sandbox and wait for the crash

EAPI=8

MY_LLVM_V=15.0.7

PYTHON_COMPAT=( python3_{10..12} )

inherit check-reqs flag-o-matic optfeature pax-utils python-any-r1 toolchain-funcs

DESCRIPTION="High-performance programming language for technical computing"
HOMEPAGE="https://julialang.org/
https://github.com/JuliaLang/julia/"
SRC_URI="
https://github.com/JuliaLang/julia/releases/download/v${PV}/${P}-full.tar.gz
"

LICENSE="MIT"
SLOT="0"
PROPERTIES="test_network"
RESTRICT="test"

RDEPEND="
>=dev-libs/libutf8proc-2.6.1:0=[-cjk]
>=dev-util/patchelf-0.13
>=net-libs/mbedtls-2.2
>=sci-mathematics/dsfmt-2.2.4
>=sys-libs/libunwind-1.1:0=
>=virtual/blas-3.6
app-arch/p7zip
app-misc/ca-certificates
dev-libs/gmp:0=
dev-libs/libgit2:0
dev-libs/mpfr:0=
net-misc/curl[http2,ssh]
sci-libs/amd:0=
sci-libs/arpack:0=
sci-libs/btf:0=
sci-libs/camd:0=
sci-libs/ccolamd:0=
sci-libs/cholmod:0=
sci-libs/colamd:0=
sci-libs/fftw:3.0=[threads]
sci-libs/klu:0=
sci-libs/ldl:0=
sci-libs/openlibm:0=
sci-libs/openblas:0=
sci-libs/spqr:0=
sci-libs/suitesparseconfig:0=
sci-libs/umfpack:0=
sys-libs/zlib:0=
virtual/lapack
"
DEPEND="${RDEPEND}"
BDEPEND="
${PYTHON_DEPS}
dev-util/cmake
virtual/pkgconfig
"

CHECKREQS_DISK_BUILD="4G"
PATCHES=(
"${FILESDIR}"/julia-1.10.0-cuda.patch
"${FILESDIR}"/julia-1.10.0-libgit2.patch
"${FILESDIR}"/julia-1.10.0-lib.patch
"${FILESDIR}"/julia-1.9.4-string-replace.patch
"${FILESDIR}"/julia-1.10.0-nodoc.patch
)
QA_FLAGS_IGNORED+='usr/.*/julia/sys.so' # Julia sysimage generated by bootstrapping.

pkg_setup() {
check-reqs_pkg_setup
python-any-r1_pkg_setup
}

src_unpack() {
local -a tounpack=( ${A} )
# the main source tree, followed by deps
unpack "${tounpack[0]}"

mkdir -p "${S}/deps/srccache/" || die
local i
for i in "${tounpack[@]:1}"; do
cp "${DISTDIR}/${i}" "${S}/deps/srccache/${i#julia-}" || die
done

# Extract tarballs for patching.
# cd "${S}/deps/srccache/" || die
# tar xf llvm-julia-${MY_LLVM_V}-3.tar.gz || die
}

src_prepare() {
default

# Sledgehammer:
# - prevent fetching of bundled stuff in compile and install phase
# - respect CFLAGS
# - respect EPREFIX and Gentoo specific paths

sed -i \
-e "\|SHIPFLAGS :=|c\\SHIPFLAGS := ${CFLAGS}" \
Make.inc || die

sed -i \
-e "s|ar -rcs|$(tc-getAR) -rcs|g" \
src/Makefile || die

# Blank the tarball checksum check script.
echo "#!/bin/sh" > deps/tools/jlchecksum || die
}

src_configure() {
# bug #855602
filter-lto

# julia does not play well with the system versions of libuv
# Fails to compile with libpcre2 on split-usr, bug #893336
# USE_SYSTEM_LIBM=0 implies using external openlibm
# Rbio is not available for Gentoo so we usie libsuiteparse locally
cat <<-EOF > Make.user || die
LOCALBASE:=${EPREFIX}/usr
override prefix:=${EPREFIX}/usr
override libdir:=\$(prefix)/$(get_libdir)
override CC:=$(tc-getCC)
override CXX:=$(tc-getCXX)
override AR:=$(tc-getAR)

BUNDLE_DEBUG_LIBS:=0
USE_BINARYBUILDER:=0
USE_INTEL_JITEVENTS=0
USE_SYSTEM_CSL:=1
USE_SYSTEM_LLVM:=0
USE_SYSTEM_LIBUNWIND:=1
USE_SYSTEM_PCRE:=0
USE_SYSTEM_LIBM:=0
USE_SYSTEM_OPENLIBM:=1
USE_SYSTEM_DSFMT:=1
USE_SYSTEM_BLAS:=1
USE_SYSTEM_LAPACK:=1
USE_SYSTEM_LIBBLASTRAMPOLINE:=0
USE_SYSTEM_GMP:=1
USE_SYSTEM_MPFR:=1
USE_SYSTEM_LIBSUITESPARSE:=0
USE_SYSTEM_LIBUV:=0
USE_SYSTEM_UTF8PROC:=1
USE_SYSTEM_MBEDTLS:=1
USE_SYSTEM_LIBSSH2:=1
USE_SYSTEM_NGHTTP2:=1
USE_SYSTEM_CURL:=1
USE_SYSTEM_LIBGIT2:=1
USE_SYSTEM_PATCHELF:=1
USE_SYSTEM_ZLIB:=1
USE_SYSTEM_P7ZIP:=1
VERBOSE:=1
EOF
}

src_compile() {
# Julia accesses /proc/self/mem on Linux.
addpredict /proc/self/mem

# Julia expects .so files to be in lib64 during compilation
mkdir -p "${S}"/usr/lib || die
ln -s lib "${S}"/usr/lib64 || die

emake
pax-mark m "$(file usr/bin/julia-* | awk -F : '/ELF/ {print $1}')"
}

src_install() {
emake -j1 install DESTDIR="${D}"
dodoc CONTRIBUTING.md HISTORY.md NEWS.md README.md THIRDPARTY.md

local llvmslot=$(ver_cut 1 ${MY_LLVM_V})
cp "${S}"/usr/lib/libLLVM-${llvmslot}jl.so "${ED}"/usr/$(get_libdir)/julia/ || die
cp "${S}"/usr/lib/libLLVM-${MY_LLVM_V}jl.so "${ED}"/usr/$(get_libdir)/julia/ || die

mv "${ED}"/usr/etc/julia "${ED}"/etc || die
rmdir "${ED}"/usr/etc || die
# Don't copy documentation due to timeout issues

# The appdata directory is deprecated.
mv "${ED}"/usr/share/{appdata,metainfo}/ || die

# Link ca-certificates.crt, bug: https://bugs.gentoo.org/888978
dosym -r /etc/ssl/certs/ca-certificates.crt /usr/share/julia/cert.pem

# Julia always searches for "sys.so" inside "/usr/lib/julia",
# bug: https://github.com/JuliaLang/julia/issues/49574
if [[ $(get_libdir) == "lib64" ]] ; then
insinto /usr/lib/julia
doins "${ED}"/usr/$(get_libdir)/julia/sys.so
fi
}

pkg_postinst() {
optfeature "Julia Plots" sci-visualization/gr
}