summaryrefslogtreecommitdiff
path: root/dev-lang/julia/files
diff options
context:
space:
mode:
authorJeffrey Lin <jeffrey@icurse.nl>2021-03-28 02:15:34 -0400
committerMatthias Maier <tamiko@gentoo.org>2021-04-07 21:05:37 -0500
commitf9eec87f0441f022f4851e4d78813d835f25528f (patch)
tree8cbdb5a34856dec830253e01110f45f3b2747c8c /dev-lang/julia/files
parentac15ac48507f43efe4d1be38e13ca1a4b35efaa6 (diff)
downloadgentoo-f9eec87f0441f022f4851e4d78813d835f25528f.tar.gz
gentoo-f9eec87f0441f022f4851e4d78813d835f25528f.tar.bz2
gentoo-f9eec87f0441f022f4851e4d78813d835f25528f.zip
dev-lang/julia: add 1.6.0
- dSFMT patches have been upstreamed, so split that into a package used by ::science. Also use system version of dev-libs/libutf8proc. - LLVM 11 is now supported. - Add curl as a direct dependency. The ssh USE flag is not strictly required unless cloning packages over ssh, but it will suppress errors and should be relatively small. Also, p7zip is needed for Pkg. - Remove some old baggage: - dev-libs/double-conversion: compiles fine without. - dev-libs/openspecfun: compiles fine without. - net-libs/libssh2: indirect dependency; add curl[ssh] instead. - sci-mathematics/glpk: hasn't been a dependency in years. - sci-mathematics/z3: doesn't seem to be an explicit dependency. - sys-libs/readline: hasn't been a dependency in years. - No need for separate stdlibs as upstream packs them into tarball. - Delete some sed commands where the lines to be changed no longer exist. Replace a patch+sed with a single sed. - Remove QA warning suppression now that upstream allows using system compiler support libraries (proper support for this was added after the 1.6.0 release, so patch is backported). - Sync Make.user with Make.inc and move make variables there. Closes: https://bugs.gentoo.org/728726 Closes: https://bugs.gentoo.org/735764 Closes: https://bugs.gentoo.org/778503 Closes: https://bugs.gentoo.org/780444 Closes: https://bugs.gentoo.org/780642 Signed-off-by: Jeffrey Lin <jeffrey@icurse.nl> Signed-off-by: Matthias Maier <tamiko@gentoo.org>
Diffstat (limited to 'dev-lang/julia/files')
-rw-r--r--dev-lang/julia/files/julia-1.6.0-fix-system-csl.patch271
1 files changed, 271 insertions, 0 deletions
diff --git a/dev-lang/julia/files/julia-1.6.0-fix-system-csl.patch b/dev-lang/julia/files/julia-1.6.0-fix-system-csl.patch
new file mode 100644
index 000000000000..90a097197bff
--- /dev/null
+++ b/dev-lang/julia/files/julia-1.6.0-fix-system-csl.patch
@@ -0,0 +1,271 @@
+From 71d7a8a8c12b72bfa362ae955d2ce4dfbdf5b8ba Mon Sep 17 00:00:00 2001
+From: Elliot Saba <staticfloat@gmail.com>
+Date: Fri, 26 Mar 2021 18:40:07 +0000
+Subject: [PATCH 1/2] [build] Add `symlink_system_library` calls for CSL
+
+We differentiate between a `USE_BINARYBUILDER_CSL=0` configuration
+(where we copy the CSL libraries into the Julia build tree) versus a
+`USE_SYSTEM_CSL=1` configuration (where we symlink them in a manner
+similar to other system libararies)
+---
+ Make.inc | 23 +++++++++++++-
+ base/Makefile | 88 ++++++++++++++++++++++++++++++---------------------
+ deps/csl.mk | 40 ++++++++---------------
+ 3 files changed, 87 insertions(+), 64 deletions(-)
+
+diff --git a/Make.inc b/Make.inc
+index 519720a861ed7..7cba05806e684 100644
+--- a/Make.inc
++++ b/Make.inc
+@@ -596,6 +596,21 @@ else
+ SHLIB_EXT := so
+ endif
+
++ifeq ($(OS),WINNT)
++define versioned_libname
++$$(if $(2),$(1)-$(2).$(SHLIB_EXT),$(1).$(SHLIB_EXT))
++endef
++else ifeq ($(OS),Darwin)
++define versioned_libname
++$$(if $(2),$(1).$(2).$(SHLIB_EXT),$(1).$(SHLIB_EXT))
++endef
++else
++define versioned_libname
++$$(if $(2),$(1).$(SHLIB_EXT).$(2),$(1).$(SHLIB_EXT))
++endef
++endif
++
++
+ ifeq ($(SHLIB_EXT), so)
+ define SONAME_FLAGS
+ -Wl,-soname=$1
+@@ -1147,6 +1162,8 @@ BB_TRIPLET_LIBGFORTRAN := $(subst $(SPACE),-,$(filter-out cxx%,$(subst -,$(SPACE
+ BB_TRIPLET_CXXABI := $(subst $(SPACE),-,$(filter-out libgfortran%,$(subst -,$(SPACE),$(BB_TRIPLET_LIBGFORTRAN_CXXABI))))
+ BB_TRIPLET := $(subst $(SPACE),-,$(filter-out cxx%,$(filter-out libgfortran%,$(subst -,$(SPACE),$(BB_TRIPLET_LIBGFORTRAN_CXXABI)))))
+
++LIBGFORTRAN_VERSION := $(subst libgfortran,,$(filter libgfortran%,$(subst -,$(SPACE),$(BB_TRIPLET_LIBGFORTRAN))))
++
+ # This is the set of projects that BinaryBuilder dependencies are hooked up for.
+ BB_PROJECTS := BLASTRAMPOLINE OPENBLAS LLVM SUITESPARSE OPENLIBM GMP MBEDTLS LIBSSH2 NGHTTP2 MPFR CURL LIBGIT2 PCRE LIBUV LIBUNWIND DSFMT OBJCONV ZLIB P7ZIP CSL
+ define SET_BB_DEFAULT
+@@ -1479,8 +1496,12 @@ ifneq ($(findstring $(OS),Linux FreeBSD),)
+ LIBGCC_NAME := libgcc_s.$(SHLIB_EXT).1
+ endif
+
+-
++# USE_SYSTEM_CSL causes it to get symlinked into build_private_shlibdir
++ifeq ($(USE_SYSTEM_CSL),1)
++LIBGCC_BUILD_DEPLIB := $(call dep_lib_path,$(build_libdir),$(build_private_shlibdir)/$(LIBGCC_NAME))
++else
+ LIBGCC_BUILD_DEPLIB := $(call dep_lib_path,$(build_libdir),$(build_shlibdir)/$(LIBGCC_NAME))
++endif
+ LIBGCC_INSTALL_DEPLIB := $(call dep_lib_path,$(libdir),$(private_shlibdir)/$(LIBGCC_NAME))
+
+ # USE_SYSTEM_LIBM and USE_SYSTEM_OPENLIBM causes it to get symlinked into build_private_shlibdir
+diff --git a/base/Makefile b/base/Makefile
+index e024e546f94d3..2bef6aab7f1f4 100644
+--- a/base/Makefile
++++ b/base/Makefile
+@@ -169,53 +169,69 @@ endif
+ # echo "$$P"
+
+ define symlink_system_library
+-symlink_$1: $$(build_private_libdir)/$1.$$(SHLIB_EXT)
+-$$(build_private_libdir)/$1.$$(SHLIB_EXT):
+- REALPATH=`$$(call spawn,$$(build_depsbindir)/libwhich) -p $$(notdir $$@)` && \
+- $$(call resolve_path,REALPATH) && \
+- [ -e "$$$$REALPATH" ] && \
+- ([ ! -e "$$@" ] || rm "$$@") && \
+- echo ln -sf "$$$$REALPATH" "$$@" && \
+- ln -sf "$$$$REALPATH" "$$@"
+-ifneq ($2,)
+-ifneq ($$(USE_SYSTEM_$2),0)
+-SYMLINK_SYSTEM_LIBRARIES += symlink_$1
+-endif
++libname_$2 := $$(notdir $(call versioned_libname,$2,$3))
++libpath_$2 := $$(shell $$(call spawn,$$(build_depsbindir)/libwhich) -p $$(libname_$2) 2>/dev/null)
++symlink_$2: $$(build_private_libdir)/$$(libname_$2)
++$$(build_private_libdir)/$$(libname_$2):
++ @if [ -e "$$(libpath_$2)" ]; then \
++ REALPATH=$$(libpath_$2); \
++ $$(call resolve_path,REALPATH) && \
++ [ -e "$$$$REALPATH" ] && \
++ ([ ! -e "$$@" ] || rm "$$@") && \
++ echo ln -sf "$$$$REALPATH" "$$@" && \
++ ln -sf "$$$$REALPATH" "$$@"; \
++ else \
++ if [ "$4" != "ALLOW_FAILURE" ]; then \
++ echo "System library symlink failure: Unable to locate $$(libname_$2) on your system!" >&2; \
++ false; \
++ fi; \
++ fi
++ifneq ($$(USE_SYSTEM_$1),0)
++SYMLINK_SYSTEM_LIBRARIES += symlink_$2
+ endif
+ endef
+
+ # the following excludes: libuv.a, libutf8proc.a
+
+-$(eval $(call symlink_system_library,$(LIBMNAME)))
+ ifneq ($(USE_SYSTEM_LIBM),0)
+-SYMLINK_SYSTEM_LIBRARIES += symlink_$(LIBMNAME)
++$(eval $(call symlink_system_library,LIBM,$(LIBMNAME)))
+ else ifneq ($(USE_SYSTEM_OPENLIBM),0)
+-SYMLINK_SYSTEM_LIBRARIES += symlink_$(LIBMNAME)
++$(eval $(call symlink_system_library,OPENLIBM,$(LIBMNAME)))
+ endif
+
+-$(eval $(call symlink_system_library,libpcre2-8,PCRE))
+-$(eval $(call symlink_system_library,libdSFMT,DSFMT))
+-$(eval $(call symlink_system_library,$(LIBBLASNAME),BLAS))
++$(eval $(call symlink_system_library,CSL,libgcc_s,1))
++ifneq (,$(LIBGFORTRAN_VERSION))
++$(eval $(call symlink_system_library,CSL,libgfortran,$(LIBGFORTRAN_VERSION)))
++endif
++$(eval $(call symlink_system_library,CSL,libquadmath,0))
++$(eval $(call symlink_system_library,CSL,libstdc++,6))
++# We allow libssp, libatomic and libgomp to fail as they are not available on all systems
++$(eval $(call symlink_system_library,CSL,libssp,0,ALLOW_FAILURE))
++$(eval $(call symlink_system_library,CSL,libatomic,1,ALLOW_FAILURE))
++$(eval $(call symlink_system_library,CSL,libgomp,1,ALLOW_FAILURE))
++$(eval $(call symlink_system_library,PCRE,libpcre2-8))
++$(eval $(call symlink_system_library,DSFMT,libdSFMT))
++$(eval $(call symlink_system_library,BLAS,$(LIBBLASNAME)))
+ ifneq ($(LIBLAPACKNAME),$(LIBBLASNAME))
+-$(eval $(call symlink_system_library,$(LIBLAPACKNAME),LAPACK))
++$(eval $(call symlink_system_library,LAPACK,$(LIBLAPACKNAME)))
+ endif
+-$(eval $(call symlink_system_library,libgmp,GMP))
+-$(eval $(call symlink_system_library,libmpfr,MPFR))
+-$(eval $(call symlink_system_library,libmbedtls,MBEDTLS))
+-$(eval $(call symlink_system_library,libmbedcrypto,MBEDTLS))
+-$(eval $(call symlink_system_library,libmbedx509,MBEDTLS))
+-$(eval $(call symlink_system_library,libssh2,LIBSSH2))
+-$(eval $(call symlink_system_library,libnghttp2,NGHTTP2))
+-$(eval $(call symlink_system_library,libcurl,CURL))
+-$(eval $(call symlink_system_library,libgit2,LIBGIT2))
+-$(eval $(call symlink_system_library,libamd,SUITESPARSE))
+-$(eval $(call symlink_system_library,libcamd,SUITESPARSE))
+-$(eval $(call symlink_system_library,libccolamd,SUITESPARSE))
+-$(eval $(call symlink_system_library,libcholmod,SUITESPARSE))
+-$(eval $(call symlink_system_library,libcolamd,SUITESPARSE))
+-$(eval $(call symlink_system_library,libumfpack,SUITESPARSE))
+-$(eval $(call symlink_system_library,libspqr,SUITESPARSE))
+-$(eval $(call symlink_system_library,libsuitesparseconfig,SUITESPARSE))
++$(eval $(call symlink_system_library,GMP,libgmp))
++$(eval $(call symlink_system_library,MPFR,libmpfr))
++$(eval $(call symlink_system_library,MBEDTLS,libmbedtls))
++$(eval $(call symlink_system_library,MBEDTLS,libmbedcrypto))
++$(eval $(call symlink_system_library,MBEDTLS,libmbedx509))
++$(eval $(call symlink_system_library,LIBSSH2,libssh2))
++$(eval $(call symlink_system_library,NGHTTP2,libnghttp2))
++$(eval $(call symlink_system_library,CURL,libcurl))
++$(eval $(call symlink_system_library,LIBGIT2,libgit2))
++$(eval $(call symlink_system_library,SUITESPARSE,libamd))
++$(eval $(call symlink_system_library,SUITESPARSE,libcamd))
++$(eval $(call symlink_system_library,SUITESPARSE,libccolamd))
++$(eval $(call symlink_system_library,SUITESPARSE,libcholmod))
++$(eval $(call symlink_system_library,SUITESPARSE,libcolamd))
++$(eval $(call symlink_system_library,SUITESPARSE,libumfpack))
++$(eval $(call symlink_system_library,SUITESPARSE,libspqr))
++$(eval $(call symlink_system_library,SUITESPARSE,libsuitesparseconfig))
+ # EXCLUDED LIBRARIES (installed/used, but not vendored for use with dlopen):
+ # libunwind
+ endif # WINNT
+diff --git a/deps/csl.mk b/deps/csl.mk
+index 095d4ceec4a1e..423201cbb5a0c 100644
+--- a/deps/csl.mk
++++ b/deps/csl.mk
+@@ -19,48 +19,34 @@ $$(build_shlibdir)/$(1): | $$(build_shlibdir)
+ [ -n "$$$${SRC_LIB}" ] && cp $$$${SRC_LIB} $$(build_shlibdir)
+ endef
+
+-ifeq ($(OS),WINNT)
+-define gen_libname
+-$$(if $(2),lib$(1)-$(2).$(SHLIB_EXT),lib$(1).$(SHLIB_EXT))
+-endef
+-else ifeq ($(OS),Darwin)
+-define gen_libname
+-$$(if $(2),lib$(1).$(2).$(SHLIB_EXT),lib$(1).$(SHLIB_EXT))
+-endef
+-else
+-define gen_libname
+-$$(if $(2),lib$(1).$(SHLIB_EXT).$(2),lib$(1).$(SHLIB_EXT))
+-endef
+-endif
+-
+ # libgfortran has multiple names; we're just going to copy any version we can find
+ # Since we're only looking in the location given by `$(FC)` this should only succeed for one.
+-$(eval $(call copy_csl,$(call gen_libname,gfortran,3)))
+-$(eval $(call copy_csl,$(call gen_libname,gfortran,4)))
+-$(eval $(call copy_csl,$(call gen_libname,gfortran,5)))
++$(eval $(call copy_csl,$(call versioned_libname,libgfortran,3)))
++$(eval $(call copy_csl,$(call versioned_libname,libgfortran,4)))
++$(eval $(call copy_csl,$(call versioned_libname,libgfortran,5)))
+
+ # These are all libraries that we should always have
+-$(eval $(call copy_csl,$(call gen_libname,quadmath,0)))
+-$(eval $(call copy_csl,$(call gen_libname,stdc++,6)))
+-$(eval $(call copy_csl,$(call gen_libname,ssp,0)))
+-$(eval $(call copy_csl,$(call gen_libname,atomic,1)))
+-$(eval $(call copy_csl,$(call gen_libname,gomp,1)))
++$(eval $(call copy_csl,$(call versioned_libname,libquadmath,0)))
++$(eval $(call copy_csl,$(call versioned_libname,libstdc++,6)))
++$(eval $(call copy_csl,$(call versioned_libname,libssp,0)))
++$(eval $(call copy_csl,$(call versioned_libname,libatomic,1)))
++$(eval $(call copy_csl,$(call versioned_libname,libgomp,1)))
+
+ ifeq ($(OS),WINNT)
+ # Windwos has special gcc_s names
+ ifeq ($(ARCH),i686)
+-$(eval $(call copy_csl,$(call gen_libname,gcc_s_sjlj,1)))
++$(eval $(call copy_csl,$(call versioned_libname,libgcc_s_sjlj,1)))
+ else
+-$(eval $(call copy_csl,$(call gen_libname,gcc_s_seh,1)))
++$(eval $(call copy_csl,$(call versioned_libname,libgcc_s_seh,1)))
+ endif
+ else
+-$(eval $(call copy_csl,$(call gen_libname,gcc_s,1)))
++$(eval $(call copy_csl,$(call versioned_libname,libgcc_s,1)))
+ endif
+ # winpthread is only Windows, pthread is only others
+ ifeq ($(OS),WINNT)
+-$(eval $(call copy_csl,$(call gen_libname,winpthread,1)))
++$(eval $(call copy_csl,$(call versioned_libname,libwinpthread,1)))
+ else
+-$(eval $(call copy_csl,$(call gen_libname,pthread,0)))
++$(eval $(call copy_csl,$(call versioned_libname,libpthread,0)))
+ endif
+
+ get-csl:
+
+From 6536b8519b25db844f2a1866d056879cb87d1c66 Mon Sep 17 00:00:00 2001
+From: Elliot Saba <staticfloat@gmail.com>
+Date: Fri, 26 Mar 2021 22:32:04 +0000
+Subject: [PATCH 2/2] Expand `JL_PRIVATE_LIBS-1` for versioned library names as
+ well
+
+Without this, we fail to install things like `libgcc_s.so.1` when
+installed into the private libdir by `symlink_system_libraries`.
+---
+ Makefile | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 823ff3b86339d..e08f0e959e1b3 100644
+--- a/Makefile
++++ b/Makefile
+@@ -290,8 +290,11 @@ endif
+ done \
+ done
+ for suffix in $(JL_PRIVATE_LIBS-1) ; do \
+- lib=$(build_private_libdir)/$${suffix}.$(SHLIB_EXT); \
+- $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \
++ for lib in $(build_private_libdir)/$${suffix}.$(SHLIB_EXT)*; do \
++ if [ "$${lib##*.}" != "dSYM" ]; then \
++ $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \
++ fi \
++ done \
+ done
+ endif
+ # Install `7z` into libexec/