[-- Attachment #1: Type: text/plain, Size: 2024 bytes --] There is a new pull request by non-Jedi against master on the void-packages repository https://github.com/non-Jedi/void-packages julia-bundle-mbedtls https://github.com/void-linux/void-packages/pull/30061 julia: stop hardcoding mbedtls sonames. 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. Closes #29964 See <https://github.com/julialang/julia/issues/40198> for the upstream bug. This patch is directly copied from Arch Linux. <!-- Mark items with [x] where applicable --> #### General - [ ] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements) #### Have the results of the proposed changes been tested? - [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me - [ ] I generally don't use the affected packages but briefly tested this PR <!-- If GitHub CI cannot be used to validate the build result (for example, if the build is likely to take several hours), make sure to [skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration). When skipping CI, uncomment and fill out the following section. Note: for builds that are likely to complete in less than 2 hours, it is not acceptable to skip CI. --> <!-- #### Does it build and run successfully? (Please choose at least one native build and, if supported, at least one cross build. More are better.) - [x] I built this PR locally for my native architecture, (ARCH-LIBC) - [ ] I built this PR locally for these architectures (if supported. mark crossbuilds): - [ ] aarch64-musl - [ ] armv7l - [ ] armv6l-musl --> A patch file from https://github.com/void-linux/void-packages/pull/30061.patch is attached [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: github-pr-julia-bundle-mbedtls-30061.patch --] [-- Type: text/x-diff, Size: 3457 bytes --] From 13d5fc1c8e8af8e75046a803641165526d9b3759 Mon Sep 17 00:00:00 2001 From: Adam Beckmeyer <adam_gpg@thebeckmeyers.xyz> Date: Tue, 6 Apr 2021 22:26:09 -0400 Subject: [PATCH] julia: stop hardcoding mbedtls sonames. 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. Closes #29964 See <https://github.com/julialang/julia/issues/40198> for the upstream bug. --- .../julia/patches/julia-hardcoded-libs.patch | 43 +++++++++++++++++++ .../patches/julia-hardcoded-libs.patch.args | 1 + srcpkgs/julia/template | 2 +- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/julia/patches/julia-hardcoded-libs.patch create mode 100644 srcpkgs/julia/patches/julia-hardcoded-libs.patch.args diff --git a/srcpkgs/julia/patches/julia-hardcoded-libs.patch b/srcpkgs/julia/patches/julia-hardcoded-libs.patch new file mode 100644 index 000000000000..bf657361b980 --- /dev/null +++ b/srcpkgs/julia/patches/julia-hardcoded-libs.patch @@ -0,0 +1,43 @@ +diff --git a/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl b/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl +index a7ca666b23..b84a42f4e7 100644 +--- a/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl ++++ b/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl +@@ -31,9 +31,9 @@ elseif Sys.isapple() + const libmbedtls = "@rpath/libmbedtls.13.dylib" + const libmbedx509 = "@rpath/libmbedx509.1.dylib" + else +- const libmbedcrypto = "libmbedcrypto.so.5" +- const libmbedtls = "libmbedtls.so.13" +- const libmbedx509 = "libmbedx509.so.1" ++ const libmbedcrypto = "libmbedcrypto.so" ++ const libmbedtls = "libmbedtls.so" ++ const libmbedx509 = "libmbedx509.so" + end + + function __init__() +diff --git a/stdlib/libLLVM_jll/src/libLLVM_jll.jl b/stdlib/libLLVM_jll/src/libLLVM_jll.jl +index fa45e754e5..b51812e3a8 100644 +--- a/stdlib/libLLVM_jll/src/libLLVM_jll.jl ++++ b/stdlib/libLLVM_jll/src/libLLVM_jll.jl +@@ -23,7 +23,7 @@ if Sys.iswindows() + elseif Sys.isapple() + const libLLVM = "@rpath/libLLVM.dylib" + else +- const libLLVM = "libLLVM-11jl.so" ++ const libLLVM = "libLLVM.so" + end + + function __init__() +diff --git a/stdlib/nghttp2_jll/src/nghttp2_jll.jl b/stdlib/nghttp2_jll/src/nghttp2_jll.jl +index 8b98c76ac5..77ad9e3800 100644 +--- a/stdlib/nghttp2_jll/src/nghttp2_jll.jl ++++ b/stdlib/nghttp2_jll/src/nghttp2_jll.jl +@@ -22,7 +22,7 @@ if Sys.iswindows() + elseif Sys.isapple() + const libnghttp2 = "@rpath/libnghttp2.14.dylib" + else +- const libnghttp2 = "libnghttp2.so.14" ++ const libnghttp2 = "libnghttp2.so" + end + + function __init__() diff --git a/srcpkgs/julia/patches/julia-hardcoded-libs.patch.args b/srcpkgs/julia/patches/julia-hardcoded-libs.patch.args new file mode 100644 index 000000000000..7a57aa55b385 --- /dev/null +++ b/srcpkgs/julia/patches/julia-hardcoded-libs.patch.args @@ -0,0 +1 @@ +-Np1 \ No newline at end of file diff --git a/srcpkgs/julia/template b/srcpkgs/julia/template index 6ff8671036c7..d39e82ab2420 100644 --- a/srcpkgs/julia/template +++ b/srcpkgs/julia/template @@ -1,7 +1,7 @@ # Template file for 'julia' pkgname=julia version=1.6.0 -revision=1 +revision=2 archs="i686* x86_64* armv7l* aarch64*" build_style=gnu-makefile make_build_args="prefix=/usr sysconfdir=/etc datarootdir=/usr/share
[-- Attachment #1: Type: text/plain, Size: 603 bytes --] New review comment by ericonr on void-packages repository https://github.com/void-linux/void-packages/pull/30061#discussion_r608299435 Comment: This only works on Arch because they don't have devel packages. The unversioned sonames are all in our -devel packages, not the normal ones - this solution isn't portable across distros. For that matter, if they're using dlopen, they *should* very much care about the soname version: ABI mismatches cause all sorts of bugs. If my understanding of this patch is correct, I am against it. Will look at the upstream bugs to see if I can add anything there.
[-- Attachment #1: Type: text/plain, Size: 492 bytes --] New review comment by non-Jedi on void-packages repository https://github.com/void-linux/void-packages/pull/30061#discussion_r608302845 Comment: It works for us as well; I've confirmed things work locally without mbedtls-devel installed. Julia appears to use these variables to generate the symbolic links in `/usr/lib/julia`. ```sh ❮ ls -l /usr/lib/julia/libmbedcrypto.so lrwxrwxrwx 1 root root 29 Apr 6 19:03 /usr/lib/julia/libmbedcrypto.so -> /usr/lib64/libmbedcrypto.so.3 ```
[-- Attachment #1: Type: text/plain, Size: 484 bytes --] New review comment by ahesford on void-packages repository https://github.com/void-linux/void-packages/pull/30061#discussion_r608307056 Comment: I agree that forcing `-devel` dependencies just to drop versions from shared libraries is not desirable. As for `dlopen`, the question is how Julia handles these libraries after they are loaded. If the runtime handles the possibility of missing symbols gracefully, maybe this isn't such a big deal. If not, this could be a huge deal.
[-- Attachment #1: Type: text/plain, Size: 239 bytes --] New comment by non-Jedi on void-packages repository https://github.com/void-linux/void-packages/pull/30061#issuecomment-814946113 Comment: (For reference, to test the problem this patch fixes, simply run `julia -e "using MbedTLS_jll"`.)
[-- Attachment #1: Type: text/plain, Size: 202 bytes --] New review comment by ericonr on void-packages repository https://github.com/void-linux/void-packages/pull/30061#discussion_r610304129 Comment: Better to add `patch_args=-Np1` to the template itself.
[-- Attachment #1: Type: text/plain, Size: 2029 bytes --] There is an updated pull request by non-Jedi against master on the void-packages repository https://github.com/non-Jedi/void-packages julia-bundle-mbedtls https://github.com/void-linux/void-packages/pull/30061 julia: stop hardcoding mbedtls sonames. 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. Closes #29964 See <https://github.com/julialang/julia/issues/40198> for the upstream bug. This patch is directly copied from Arch Linux. <!-- Mark items with [x] where applicable --> #### General - [ ] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements) #### Have the results of the proposed changes been tested? - [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me - [ ] I generally don't use the affected packages but briefly tested this PR <!-- If GitHub CI cannot be used to validate the build result (for example, if the build is likely to take several hours), make sure to [skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration). When skipping CI, uncomment and fill out the following section. Note: for builds that are likely to complete in less than 2 hours, it is not acceptable to skip CI. --> <!-- #### Does it build and run successfully? (Please choose at least one native build and, if supported, at least one cross build. More are better.) - [x] I built this PR locally for my native architecture, (ARCH-LIBC) - [ ] I built this PR locally for these architectures (if supported. mark crossbuilds): - [ ] aarch64-musl - [ ] armv7l - [ ] armv6l-musl --> A patch file from https://github.com/void-linux/void-packages/pull/30061.patch is attached [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: github-pr-julia-bundle-mbedtls-30061.patch --] [-- Type: text/x-diff, Size: 3437 bytes --] From 1e17244bbb2cbbd7526c4de0aec81ff32d3ca7a4 Mon Sep 17 00:00:00 2001 From: Adam Beckmeyer <adam_gpg@thebeckmeyers.xyz> Date: Tue, 6 Apr 2021 22:26:09 -0400 Subject: [PATCH] julia: stop hardcoding mbedtls sonames. 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. Closes #29964 See <https://github.com/julialang/julia/issues/40198> for the upstream bug. --- .../julia/patches/julia-hardcoded-libs.patch | 43 +++++++++++++++++++ srcpkgs/julia/template | 3 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/julia/patches/julia-hardcoded-libs.patch diff --git a/srcpkgs/julia/patches/julia-hardcoded-libs.patch b/srcpkgs/julia/patches/julia-hardcoded-libs.patch new file mode 100644 index 000000000000..bf657361b980 --- /dev/null +++ b/srcpkgs/julia/patches/julia-hardcoded-libs.patch @@ -0,0 +1,43 @@ +diff --git a/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl b/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl +index a7ca666b23..b84a42f4e7 100644 +--- a/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl ++++ b/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl +@@ -31,9 +31,9 @@ elseif Sys.isapple() + const libmbedtls = "@rpath/libmbedtls.13.dylib" + const libmbedx509 = "@rpath/libmbedx509.1.dylib" + else +- const libmbedcrypto = "libmbedcrypto.so.5" +- const libmbedtls = "libmbedtls.so.13" +- const libmbedx509 = "libmbedx509.so.1" ++ const libmbedcrypto = "libmbedcrypto.so" ++ const libmbedtls = "libmbedtls.so" ++ const libmbedx509 = "libmbedx509.so" + end + + function __init__() +diff --git a/stdlib/libLLVM_jll/src/libLLVM_jll.jl b/stdlib/libLLVM_jll/src/libLLVM_jll.jl +index fa45e754e5..b51812e3a8 100644 +--- a/stdlib/libLLVM_jll/src/libLLVM_jll.jl ++++ b/stdlib/libLLVM_jll/src/libLLVM_jll.jl +@@ -23,7 +23,7 @@ if Sys.iswindows() + elseif Sys.isapple() + const libLLVM = "@rpath/libLLVM.dylib" + else +- const libLLVM = "libLLVM-11jl.so" ++ const libLLVM = "libLLVM.so" + end + + function __init__() +diff --git a/stdlib/nghttp2_jll/src/nghttp2_jll.jl b/stdlib/nghttp2_jll/src/nghttp2_jll.jl +index 8b98c76ac5..77ad9e3800 100644 +--- a/stdlib/nghttp2_jll/src/nghttp2_jll.jl ++++ b/stdlib/nghttp2_jll/src/nghttp2_jll.jl +@@ -22,7 +22,7 @@ if Sys.iswindows() + elseif Sys.isapple() + const libnghttp2 = "@rpath/libnghttp2.14.dylib" + else +- const libnghttp2 = "libnghttp2.so.14" ++ const libnghttp2 = "libnghttp2.so" + end + + function __init__() diff --git a/srcpkgs/julia/template b/srcpkgs/julia/template index 6ff8671036c7..1bb4ee40a054 100644 --- a/srcpkgs/julia/template +++ b/srcpkgs/julia/template @@ -1,7 +1,7 @@ # Template file for 'julia' pkgname=julia version=1.6.0 -revision=1 +revision=2 archs="i686* x86_64* armv7l* aarch64*" build_style=gnu-makefile make_build_args="prefix=/usr sysconfdir=/etc datarootdir=/usr/share @@ -15,6 +15,7 @@ make_build_args="prefix=/usr sysconfdir=/etc datarootdir=/usr/share make_install_args="$make_build_args" make_check_args="$make_build_args" make_check_target=testall +patch_args=-Np1 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
[-- Attachment #1: Type: text/plain, Size: 639 bytes --] New review comment by non-Jedi on void-packages repository https://github.com/void-linux/void-packages/pull/30061#discussion_r608302845 Comment: It works for us as well; I've confirmed things work locally without mbedtls-devel installed. <del>Julia appears to use these variables to generate the symbolic links in `/usr/lib/julia`.</del> ```sh ❮ ls -l /usr/lib/julia/libmbedcrypto.so lrwxrwxrwx 1 root root 29 Apr 6 19:03 /usr/lib/julia/libmbedcrypto.so -> /usr/lib64/libmbedcrypto.so.3 ``` EDIT: I clearly have no idea what I'm talking about here, but this patch definitely makes the things that don't currently work work.
[-- Attachment #1: Type: text/plain, Size: 1858 bytes --] There's a closed pull request on the void-packages repository julia: stop hardcoding mbedtls sonames. https://github.com/void-linux/void-packages/pull/30061 Description: 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. Closes #29964 See <https://github.com/julialang/julia/issues/40198> for the upstream bug. This patch is directly copied from Arch Linux. <!-- Mark items with [x] where applicable --> #### General - [ ] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements) #### Have the results of the proposed changes been tested? - [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me - [ ] I generally don't use the affected packages but briefly tested this PR <!-- If GitHub CI cannot be used to validate the build result (for example, if the build is likely to take several hours), make sure to [skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration). When skipping CI, uncomment and fill out the following section. Note: for builds that are likely to complete in less than 2 hours, it is not acceptable to skip CI. --> <!-- #### Does it build and run successfully? (Please choose at least one native build and, if supported, at least one cross build. More are better.) - [x] I built this PR locally for my native architecture, (ARCH-LIBC) - [ ] I built this PR locally for these architectures (if supported. mark crossbuilds): - [ ] aarch64-musl - [ ] armv7l - [ ] armv6l-musl -->