From dcf157d3a9c78fce5646aaa97c12bb868b610efc Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 10 Oct 2022 21:11:13 +0200 Subject: 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 --- .../builtin/packages/julia/llvm-NDEBUG-1.8.patch | 27 ---------- var/spack/repos/builtin/packages/julia/package.py | 59 +++++----------------- .../builtin/packages/julia/use-add-rpath-2.patch | 38 ++++++++++++++ .../repos/builtin/packages/libuv-julia/package.py | 14 +++-- 4 files changed, 56 insertions(+), 82 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/julia/llvm-NDEBUG-1.8.patch create mode 100644 var/spack/repos/builtin/packages/julia/use-add-rpath-2.patch diff --git a/var/spack/repos/builtin/packages/julia/llvm-NDEBUG-1.8.patch b/var/spack/repos/builtin/packages/julia/llvm-NDEBUG-1.8.patch deleted file mode 100644 index fbac8e85be..0000000000 --- a/var/spack/repos/builtin/packages/julia/llvm-NDEBUG-1.8.patch +++ /dev/null @@ -1,27 +0,0 @@ -From c9c2082a162e916d0f86241453b30473dcd63044 Mon Sep 17 00:00:00 2001 -From: Harmen Stoppels -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) diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index e11b6d5cca..28b14c1f3a 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -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 diff --git a/var/spack/repos/builtin/packages/julia/use-add-rpath-2.patch b/var/spack/repos/builtin/packages/julia/use-add-rpath-2.patch new file mode 100644 index 0000000000..e6d8edbc08 --- /dev/null +++ b/var/spack/repos/builtin/packages/julia/use-add-rpath-2.patch @@ -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 + diff --git a/var/spack/repos/builtin/packages/libuv-julia/package.py b/var/spack/repos/builtin/packages/libuv-julia/package.py index e800853582..85af1db66d 100644 --- a/var/spack/repos/builtin/packages/libuv-julia/package.py +++ b/var/spack/repos/builtin/packages/libuv-julia/package.py @@ -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): -- cgit v1.2.3-70-g09d2