julia: add latest 1.8.x and 1.6.x releases and update deps, remove deprecated versions (#32956)

* julia: add latest 1.8.x and 1.6.x releases and update deps, remove deprecated versions
* get libuv verisons right
* resurrect libuv 1.44.1
This commit is contained in:
Harmen Stoppels 2022-10-10 21:11:13 +02:00 committed by GitHub
parent 831d7979ca
commit dcf157d3a9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 56 additions and 82 deletions

View file

@ -1,27 +0,0 @@
From c9c2082a162e916d0f86241453b30473dcd63044 Mon Sep 17 00:00:00 2001
From: Harmen Stoppels <harmenstoppels@gmail.com>
Date: Tue, 24 May 2022 14:03:48 +0200
Subject: [PATCH] llvm: add NDEBUG when assertion mode is off
`llvm-config --cxxflags` unfortunately does not set `-DNDEBUG`, which
Julia needs to set correctly when including LLVM header files.
---
src/Makefile | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/Makefile b/src/Makefile
index e6d83b1e1f4e9..263a4b34155d6 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -110,6 +110,11 @@ PUBLIC_HEADER_TARGETS := $(addprefix $(build_includedir)/julia/,$(notdir $(PUBLI
LLVM_LDFLAGS := $(shell $(LLVM_CONFIG_HOST) --ldflags)
LLVM_CXXFLAGS := $(shell $(LLVM_CONFIG_HOST) --cxxflags)
+# llvm-config --cxxflags does not return -DNDEBUG
+ifeq ($(shell $(LLVM_CONFIG_HOST) --assertion-mode),OFF)
+LLVM_CXXFLAGS += -DNDEBUG
+endif
+
ifeq ($(JULIACODEGEN),LLVM)
ifneq ($(USE_SYSTEM_LLVM),0)
CG_LLVMLINK += $(LLVM_LDFLAGS) $(shell $(LLVM_CONFIG_HOST) --libs --system-libs)

View file

@ -26,55 +26,20 @@ class Julia(MakefilePackage):
maintainers = ["glennpj", "vchuravy", "haampie"]
version("master", branch="master")
version("1.8.0-rc1", sha256="ed0395880c32c48a284b115279d27d79ab1ca6fb53a4b97a8d25eba54ec97306")
version(
"1.7.3",
sha256="06df2a81e6a18d0333ffa58d36f6eb84934c38984898f9e0c3072c8facaa7306",
preferred=True,
)
version("1.8.2", sha256="3e2cea35bf5df963ed7b75a83e8febfc000acf1e664ecd657a0772508eb1fb5d")
version("1.8.1", sha256="066f4ca7a2ad39b003e2af77dbecfbfb9b0a1cb1664033f657ffdbe2f374d956")
version("1.8.0", sha256="0fa980286d6d912f24ed9f90a02930560d985e0ada8233a4ae5610884feb2438")
version("1.7.3", sha256="06df2a81e6a18d0333ffa58d36f6eb84934c38984898f9e0c3072c8facaa7306")
version("1.7.2", sha256="0847943dd65001f3322b00c7dc4e12f56e70e98c6b798ccbd4f02d27ce161fef")
version("1.7.1", sha256="17d298e50e4e3dd897246ccebd9f40ce5b89077fa36217860efaec4576aa718e")
version("1.7.0", sha256="8e870dbef71bc72469933317a1a18214fd1b4b12f1080784af7b2c56177efcb4")
version(
"1.6.6",
sha256="a8023708cadb2649395769810e6cec8afc8e352aa6d407189b6c88b86d7f5090",
preferred=True,
)
version("1.6.7", sha256="74af1dc7b5841757a06a899923a62cac04665c09829324e8bf53cfb66f7b3d61")
version("1.6.6", sha256="a8023708cadb2649395769810e6cec8afc8e352aa6d407189b6c88b86d7f5090")
version("1.6.5", sha256="b70ae299ff6b63a9e9cbf697147a48a31b4639476d1947cb52e4201e444f23cb")
version("1.6.4", sha256="a4aa921030250f58015201e28204bff604a007defc5a379a608723e6bb1808d4")
# We've deprecated these versions, so that we can remove them in Spack 0.18
# They are still available in Spack 0.17. Julia 0.17.0 is the first version that
# can be built enitrely from Spack packages, without a network connection during
# the build.
for v in [
"1.6.3",
"1.6.2",
"1.6.1",
"1.6.0",
"1.5.4",
"1.5.3",
"1.5.2",
"1.5.1",
"1.5.0",
"1.4.2",
"1.4.1",
"1.4.0",
"1.3.1",
"1.2.0",
"1.1.1",
"1.0.0",
"0.6.2",
"0.5.2",
"0.5.1",
"0.5.0",
"0.4.7",
"0.4.6",
"0.4.5",
"0.4.3",
]:
version(v, deprecated=True)
variant("precompile", default=True, description="Improve julia startup time")
variant("openlibm", default=True, description="Use openlibm instead of libm")
@ -87,7 +52,8 @@ class Julia(MakefilePackage):
" version_suffix=jl +link_llvm_dylib ~internal_unwind"
)
depends_on("libuv", when="@:1.7")
depends_on("libuv-julia", when="@1.8:")
depends_on("libuv-julia@1.42.0", when="@1.8.0:1.8.1")
depends_on("libuv-julia@1.44.2", when="@1.8.2:")
with when("@1.8.0:1.8"):
# libssh2.so.1, libpcre2-8.so.0, mbedtls.so.14, mbedcrypto.so.7, mbedx509.so.1
@ -96,7 +62,6 @@ class Julia(MakefilePackage):
depends_on("libblastrampoline@5.1.0:5")
depends_on("libgit2@1.3.0:1.3")
depends_on("libssh2@1.10.0:1.10")
depends_on("libuv-julia@1.44.1")
depends_on("llvm@13.0.1 shlib_symbol_version=jl")
depends_on("mbedtls@2.28.0:2.28")
depends_on("openlibm@0.8.1:0.8", when="+openlibm")
@ -195,7 +160,8 @@ class Julia(MakefilePackage):
# Patches for julia
patch("julia-1.6-system-libwhich-and-p7zip-symlink.patch", when="@1.6.0:1.6")
patch("use-add-rpath.patch")
patch("use-add-rpath.patch", when="@:1.8.0")
patch("use-add-rpath-2.patch", when="@1.8.1:")
# Fix gfortran abi detection https://github.com/JuliaLang/julia/pull/44026
patch("fix-gfortran.patch", when="@1.7.0:1.7.2")
@ -209,7 +175,6 @@ class Julia(MakefilePackage):
# Make sure Julia sets -DNDEBUG when including LLVM header files.
patch("llvm-NDEBUG.patch", when="@1.7.0:1.7")
patch("llvm-NDEBUG-1.8.patch", when="@1.8.0:1.8")
def patch(self):
# The system-libwhich-libblastrampoline.patch causes a rebuild of docs as it

View file

@ -0,0 +1,38 @@
diff --git a/Makefile b/Makefile
index d38311dce7..3c7ad0fcff 100644
--- a/Makefile
+++ b/Makefile
@@ -344,7 +344,7 @@ ifneq ($(DARWIN_FRAMEWORK),1)
endif
else ifneq (,$(findstring $(OS),Linux FreeBSD))
for j in $(JL_TARGETS) ; do \
- $(PATCHELF) --set-rpath '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j; \
+ $(PATCHELF) --add-rpath '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j; \
done
endif
@@ -364,11 +364,11 @@ endif
# Set rpath for libjulia-internal, which is moving from `../lib` to `../lib/julia`. We only need to do this for Linux/FreeBSD
ifneq (,$(findstring $(OS),Linux FreeBSD))
- $(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
- $(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
+ $(PATCHELF) --add-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
+ $(PATCHELF) --add-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
ifeq ($(BUNDLE_DEBUG_LIBS),1)
- $(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
- $(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
+ $(PATCHELF) --add-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
+ $(PATCHELF) --add-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
endif
endif
@@ -400,7 +400,7 @@ ifeq ($(OS),FreeBSD)
# don't set libgfortran's RPATH, it won't be able to find its friends on systems
# that don't have the exact GCC port installed used for the build.
for lib in $(DESTDIR)$(private_libdir)/libgfortran*$(SHLIB_EXT)*; do \
- $(PATCHELF) --set-rpath '$$ORIGIN' $$lib; \
+ $(PATCHELF) --add-rpath '$$ORIGIN' $$lib; \
done
endif

View file

@ -9,15 +9,13 @@ class LibuvJulia(AutotoolsPackage):
"""Multi-platform library with a focus on asynchronous IO"""
homepage = "https://libuv.org"
url = "https://github.com/JuliaLang/libuv/archive/refs/heads/julia-uv2-1.44.1.tar.gz"
url = "https://github.com/JuliaLang/libuv/archive/refs/heads/julia-uv2-1.44.2.tar.gz"
git = "https://github.com/JuliaLang/libuv.git"
# julia's libuv fork doesn't tag releases, only has release branches, so we
# fix commits.
version(
"1.44.1",
sha256="f931e7825702cbb6d07486d92e5436990cf20f91e2b56d6f759822c0f832b13e",
url="https://github.com/JuliaLang/libuv/archive/1b2d16477fe1142adea952168d828a066e03ee4c.tar.gz",
)
# julia's libuv fork doesn't tag (all?) releases, so we fix commits.
version("1.44.2", commit="e6f0e4900e195c8352f821abe2b3cffc3089547b")
version("1.44.1", commit="1b2d16477fe1142adea952168d828a066e03ee4c")
version("1.42.0", commit="3a63bf71de62c64097989254e4f03212e3bf5fc8")
@property
def libs(self):