-
-
Notifications
You must be signed in to change notification settings - Fork 14.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #123188 from ninjin/julia-bin
julia: init julia_10-bin and julia_16-bin
- Loading branch information
Showing
7 changed files
with
324 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
{ autoPatchelfHook, fetchurl, lib, makeWrapper, openssl, stdenv }: | ||
|
||
stdenv.mkDerivation rec { | ||
pname = "julia-bin"; | ||
version = "1.0.5"; | ||
|
||
src = { | ||
x86_64-linux = fetchurl { | ||
url = "https://julialang-s3.julialang.org/bin/linux/x64/${lib.versions.majorMinor version}/julia-${version}-linux-x86_64.tar.gz"; | ||
sha256 = "00vbszpjmz47nqy19v83xa463ajhzwanjyg5mvcfp9kvfw9xdvcx"; | ||
}; | ||
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); | ||
|
||
# Julia’s source files are in different locations for source and binary | ||
# releases. Thus we temporarily create symlinks to allow us to share patches | ||
# with source releases. | ||
prePatch = '' | ||
ln -s share/julia/stdlib/v${lib.versions.majorMinor version} stdlib | ||
ln -s share/julia/test | ||
''; | ||
patches = [ | ||
# Source release Nix patch(es) relevant for binary releases as well. | ||
./patches/1.0-bin/0002-nix-Skip-tests-that-require-network-access.patch | ||
]; | ||
postPatch = '' | ||
# Revert symlink hack. | ||
rm stdlib test | ||
''; | ||
|
||
buildInputs = [ makeWrapper ]; | ||
nativeBuildInputs = [ autoPatchelfHook ]; | ||
|
||
installPhase = '' | ||
runHook preInstall | ||
cp -r . $out | ||
# Setting `LD_LIBRARY_PATH` resolves `Libdl` failures. Not sure why this is | ||
# only necessary on v1.0.x and a cleaner solution is welcome, but after | ||
# staring at `strace` for a few hours this is as clean as I could make it. | ||
wrapProgram $out/bin/julia \ | ||
--suffix LD_LIBRARY_PATH : $out/lib | ||
runHook postInstall | ||
''; | ||
|
||
# Breaks backtraces, etc. | ||
dontStrip = true; | ||
|
||
doInstallCheck = true; | ||
installCheckInputs = [ openssl ]; | ||
preInstallCheck = '' | ||
# Some tests require read/write access to $HOME. | ||
export HOME="$TMPDIR" | ||
''; | ||
installCheckPhase = '' | ||
runHook preInstallCheck | ||
# Command lifted from `test/Makefile`. | ||
$out/bin/julia \ | ||
--check-bounds=yes \ | ||
--startup-file=no \ | ||
--depwarn=error \ | ||
$out/share/julia/test/runtests.jl | ||
runHook postInstallCheck | ||
''; | ||
|
||
meta = { | ||
description = "High-level, high-performance dynamic language for technical computing"; | ||
homepage = "https://julialang.org"; | ||
# Bundled and linked with various GPL code, although Julia itself is MIT. | ||
license = lib.licenses.gpl2Plus; | ||
maintainers = with lib.maintainers; [ ninjin raskin ]; | ||
platforms = [ "x86_64-linux" ]; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
{ autoPatchelfHook, fetchurl, lib, stdenv }: | ||
|
||
stdenv.mkDerivation rec { | ||
pname = "julia-bin"; | ||
version = "1.6.1"; | ||
|
||
src = { | ||
x86_64-linux = fetchurl { | ||
url = "https://julialang-s3.julialang.org/bin/linux/x64/${lib.versions.majorMinor version}/julia-${version}-linux-x86_64.tar.gz"; | ||
sha256 = "01i5sm4vqb0y5qznql571zap19b42775drrcxnzsyhpaqgg8m23w"; | ||
}; | ||
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); | ||
|
||
# Julia’s source files are in different locations for source and binary | ||
# releases. Thus we temporarily create a symlink to allow us to share patches | ||
# with source releases. | ||
prePatch = '' | ||
ln -s share/julia/test | ||
''; | ||
patches = [ | ||
# Source release Nix patch(es) relevant for binary releases as well. | ||
./patches/1.6-bin/0002-nix-Skip-tempname-test-broken-in-sandbox.patch | ||
./patches/1.6-bin/0003-nix-Skip-chown-tests-broken-in-sandbox.patch | ||
./patches/1.6-bin/0005-nix-Enable-parallel-unit-tests-for-sandbox.patch | ||
]; | ||
postPatch = '' | ||
# Revert symlink hack. | ||
rm test | ||
# Julia fails to pick up our Certification Authority root certificates, but | ||
# it provides its own so we can simply disable the test. Patching in the | ||
# dynamic path to ours require us to rebuild the Julia system image. | ||
substituteInPlace share/julia/stdlib/v${lib.versions.majorMinor version}/NetworkOptions/test/runtests.jl \ | ||
--replace '@test ca_roots_path() != bundled_ca_roots()' \ | ||
'@test_skip ca_roots_path() != bundled_ca_roots()' | ||
''; | ||
|
||
nativeBuildInputs = [ autoPatchelfHook ]; | ||
|
||
installPhase = '' | ||
runHook preInstall | ||
cp -r . $out | ||
runHook postInstall | ||
''; | ||
|
||
# Breaks backtraces, etc. | ||
dontStrip = true; | ||
|
||
doInstallCheck = true; | ||
preInstallCheck = '' | ||
# Some tests require read/write access to $HOME. | ||
export HOME="$TMPDIR" | ||
''; | ||
installCheckPhase = '' | ||
runHook preInstallCheck | ||
# Command lifted from `test/Makefile`. | ||
$out/bin/julia \ | ||
--check-bounds=yes \ | ||
--startup-file=no \ | ||
--depwarn=error \ | ||
$out/share/julia/test/runtests.jl | ||
runHook postInstallCheck | ||
''; | ||
|
||
meta = { | ||
description = "High-level, high-performance dynamic language for technical computing."; | ||
homepage = "https://julialang.org"; | ||
# Bundled and linked with various GPL code, although Julia itself is MIT. | ||
license = lib.licenses.gpl2Plus; | ||
maintainers = with lib.maintainers; [ ninjin raskin ]; | ||
platforms = [ "x86_64-linux" ]; | ||
}; | ||
} |
87 changes: 87 additions & 0 deletions
87
...ent/compilers/julia/patches/1.0-bin/0002-nix-Skip-tests-that-require-network-access.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
From 4954b99efae367da49412edd31a7bd832ec62c69 Mon Sep 17 00:00:00 2001 | ||
From: Pontus Stenetorp <pontus@stenetorp.se> | ||
Date: Mon, 15 Mar 2021 05:55:18 +0000 | ||
Subject: [PATCH 2/3] nix: Skip tests that require network access | ||
|
||
Necessary as the Nix build sandbox does not permit network access. | ||
--- | ||
stdlib/Sockets/test/runtests.jl | 40 ++++++++++++++++----------------- | ||
test/file.jl | 4 ++-- | ||
2 files changed, 22 insertions(+), 22 deletions(-) | ||
|
||
diff --git a/stdlib/Sockets/test/runtests.jl b/stdlib/Sockets/test/runtests.jl | ||
index 6145f87616..9cc7a001e5 100644 | ||
--- a/stdlib/Sockets/test/runtests.jl | ||
+++ b/stdlib/Sockets/test/runtests.jl | ||
@@ -151,33 +151,33 @@ defaultport = rand(2000:4000) | ||
end | ||
|
||
@testset "getnameinfo on some unroutable IP addresses (RFC 5737)" begin | ||
- @test getnameinfo(ip"192.0.2.1") == "192.0.2.1" | ||
- @test getnameinfo(ip"198.51.100.1") == "198.51.100.1" | ||
- @test getnameinfo(ip"203.0.113.1") == "203.0.113.1" | ||
- @test getnameinfo(ip"0.1.1.1") == "0.1.1.1" | ||
- @test getnameinfo(ip"::ffff:0.1.1.1") == "::ffff:0.1.1.1" | ||
- @test getnameinfo(ip"::ffff:192.0.2.1") == "::ffff:192.0.2.1" | ||
- @test getnameinfo(ip"2001:db8::1") == "2001:db8::1" | ||
+ @test_skip getnameinfo(ip"192.0.2.1") == "192.0.2.1" | ||
+ @test_skip getnameinfo(ip"198.51.100.1") == "198.51.100.1" | ||
+ @test_skip getnameinfo(ip"203.0.113.1") == "203.0.113.1" | ||
+ @test_skip getnameinfo(ip"0.1.1.1") == "0.1.1.1" | ||
+ @test_skip getnameinfo(ip"::ffff:0.1.1.1") == "::ffff:0.1.1.1" | ||
+ @test_skip getnameinfo(ip"::ffff:192.0.2.1") == "::ffff:192.0.2.1" | ||
+ @test_skip getnameinfo(ip"2001:db8::1") == "2001:db8::1" | ||
end | ||
|
||
@testset "getnameinfo on some valid IP addresses" begin | ||
@test !isempty(getnameinfo(ip"::")::String) | ||
- @test !isempty(getnameinfo(ip"0.0.0.0")::String) | ||
- @test !isempty(getnameinfo(ip"10.1.0.0")::String) | ||
- @test !isempty(getnameinfo(ip"10.1.0.255")::String) | ||
- @test !isempty(getnameinfo(ip"10.1.255.1")::String) | ||
- @test !isempty(getnameinfo(ip"255.255.255.255")::String) | ||
- @test !isempty(getnameinfo(ip"255.255.255.0")::String) | ||
- @test !isempty(getnameinfo(ip"192.168.0.1")::String) | ||
- @test !isempty(getnameinfo(ip"::1")::String) | ||
+ @test_skip !isempty(getnameinfo(ip"0.0.0.0")::String) | ||
+ @test_skip !isempty(getnameinfo(ip"10.1.0.0")::String) | ||
+ @test_skip !isempty(getnameinfo(ip"10.1.0.255")::String) | ||
+ @test_skip !isempty(getnameinfo(ip"10.1.255.1")::String) | ||
+ @test_skip !isempty(getnameinfo(ip"255.255.255.255")::String) | ||
+ @test_skip !isempty(getnameinfo(ip"255.255.255.0")::String) | ||
+ @test_skip !isempty(getnameinfo(ip"192.168.0.1")::String) | ||
+ @test_skip !isempty(getnameinfo(ip"::1")::String) | ||
end | ||
|
||
@testset "getaddrinfo" begin | ||
- let localhost = getnameinfo(ip"127.0.0.1")::String | ||
- @test !isempty(localhost) && localhost != "127.0.0.1" | ||
- @test !isempty(getalladdrinfo(localhost)::Vector{IPAddr}) | ||
- @test getaddrinfo(localhost, IPv4)::IPv4 != ip"0.0.0.0" | ||
- @test try | ||
+ let localhost = getnameinfo(ip"::")::String | ||
+ @test_skip !isempty(localhost) && localhost != "127.0.0.1" | ||
+ @test_skip !isempty(getalladdrinfo(localhost)::Vector{IPAddr}) | ||
+ @test_skip getaddrinfo(localhost, IPv4)::IPv4 != ip"0.0.0.0" | ||
+ @test_skip try | ||
getaddrinfo(localhost, IPv6)::IPv6 != ip"::" | ||
catch ex | ||
isa(ex, Sockets.DNSError) && ex.code == Base.UV_EAI_NONAME && ex.host == localhost | ||
diff --git a/test/file.jl b/test/file.jl | ||
index e86476f975..579276f82c 100644 | ||
--- a/test/file.jl | ||
+++ b/test/file.jl | ||
@@ -874,8 +874,8 @@ if !Sys.iswindows() || (Sys.windows_version() >= Sys.WINDOWS_VISTA_VER) | ||
else | ||
@test_throws ErrorException symlink(file, "ba\0d") | ||
end | ||
-@test_throws ArgumentError download("good", "ba\0d") | ||
-@test_throws ArgumentError download("ba\0d", "good") | ||
+@test_skip @test_throws ArgumentError download("good", "ba\0d") | ||
+@test_skip @test_throws ArgumentError download("ba\0d", "good") | ||
|
||
################### | ||
# walkdir # | ||
-- | ||
2.29.3 | ||
|
28 changes: 28 additions & 0 deletions
28
...pment/compilers/julia/patches/1.6-bin/0002-nix-Skip-tempname-test-broken-in-sandbox.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
From ffe227676352a910754d96d92e9b06e475f28ff1 Mon Sep 17 00:00:00 2001 | ||
From: Pontus Stenetorp <pontus@stenetorp.se> | ||
Date: Thu, 8 Apr 2021 04:25:19 +0000 | ||
Subject: [PATCH 2/6] nix: Skip `tempname` test broken in sandbox | ||
|
||
Reported upstream: | ||
|
||
https://github.com/JuliaLang/julia/issues/38873 | ||
--- | ||
test/file.jl | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
diff --git a/test/file.jl b/test/file.jl | ||
index 0f39bc7c14..bd4dd78f62 100644 | ||
--- a/test/file.jl | ||
+++ b/test/file.jl | ||
@@ -95,7 +95,7 @@ end | ||
@test dirname(t) == tempdir() | ||
mktempdir() do d | ||
t = tempname(d) | ||
- @test dirname(t) == d | ||
+ @test_skip dirname(t) == d | ||
end | ||
@test_throws ArgumentError tempname(randstring()) | ||
end | ||
-- | ||
2.29.3 | ||
|
27 changes: 27 additions & 0 deletions
27
...lopment/compilers/julia/patches/1.6-bin/0003-nix-Skip-chown-tests-broken-in-sandbox.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
From b20357fb1044d2c100172b1d5cbdf6c6d9bd3590 Mon Sep 17 00:00:00 2001 | ||
From: Pontus Stenetorp <pontus@stenetorp.se> | ||
Date: Thu, 8 Apr 2021 05:10:39 +0000 | ||
Subject: [PATCH 3/6] nix: Skip `chown` tests broken in sandbox | ||
|
||
--- | ||
test/file.jl | 4 ++-- | ||
1 file changed, 2 insertions(+), 2 deletions(-) | ||
|
||
diff --git a/test/file.jl b/test/file.jl | ||
index bd4dd78f62..06fd4e49da 100644 | ||
--- a/test/file.jl | ||
+++ b/test/file.jl | ||
@@ -503,8 +503,8 @@ if !Sys.iswindows() | ||
@test stat(file).gid == 0 | ||
@test stat(file).uid == 0 | ||
else | ||
- @test_throws Base._UVError("chown($(repr(file)), -2, -1)", Base.UV_EPERM) chown(file, -2, -1) # Non-root user cannot change ownership to another user | ||
- @test_throws Base._UVError("chown($(repr(file)), -1, -2)", Base.UV_EPERM) chown(file, -1, -2) # Non-root user cannot change group to a group they are not a member of (eg: nogroup) | ||
+ @test_skip @test_throws Base._UVError("chown($(repr(file)), -2, -1)", Base.UV_EPERM) chown(file, -2, -1) # Non-root user cannot change ownership to another user | ||
+ @test_skip @test_throws Base._UVError("chown($(repr(file)), -1, -2)", Base.UV_EPERM) chown(file, -1, -2) # Non-root user cannot change group to a group they are not a member of (eg: nogroup) | ||
end | ||
else | ||
# test that chown doesn't cause any errors for Windows | ||
-- | ||
2.29.3 | ||
|
30 changes: 30 additions & 0 deletions
30
...ent/compilers/julia/patches/1.6-bin/0005-nix-Enable-parallel-unit-tests-for-sandbox.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
From 44c2c979c4f2222567ce65f506cf47fb87482348 Mon Sep 17 00:00:00 2001 | ||
From: Pontus Stenetorp <pontus@stenetorp.se> | ||
Date: Thu, 8 Apr 2021 04:37:44 +0000 | ||
Subject: [PATCH 5/6] nix: Enable parallel unit tests for sandbox | ||
|
||
Disabled by default due to lack of networking in the Nix sandbox. This | ||
greatly speeds up the build process on a multi-core system. | ||
--- | ||
test/runtests.jl | 5 +++-- | ||
1 file changed, 3 insertions(+), 2 deletions(-) | ||
|
||
diff --git a/test/runtests.jl b/test/runtests.jl | ||
index 2f9cd058bb..2f8c19fa32 100644 | ||
--- a/test/runtests.jl | ||
+++ b/test/runtests.jl | ||
@@ -83,8 +83,9 @@ prepend!(tests, linalg_tests) | ||
import LinearAlgebra | ||
cd(@__DIR__) do | ||
n = 1 | ||
- if net_on | ||
- n = min(Sys.CPU_THREADS, length(tests)) | ||
+ if net_on || haskey(ENV, "NIX_BUILD_CORES") | ||
+ x = haskey(ENV, "NIX_BUILD_CORES") ? parse(Int, ENV["NIX_BUILD_CORES"]) : Sys.CPU_THREADS | ||
+ n = min(x, Sys.CPU_THREADS, length(tests)) | ||
n > 1 && addprocs_with_testenv(n) | ||
LinearAlgebra.BLAS.set_num_threads(1) | ||
end | ||
-- | ||
2.29.3 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters