Skip to content

Instantly share code, notes, and snippets.

@samuela
Created May 17, 2021 08:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save samuela/257b66127bceffcc11453a6992a92d3d to your computer and use it in GitHub Desktop.
Save samuela/257b66127bceffcc11453a6992a92d3d to your computer and use it in GitHub Desktop.
hacky attempt at getting the build working on x86_64-darwin
{ autoPatchelfHook, fetchurl, lib, stdenv, undmg }:
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";
};
x86_64-darwin = fetchurl {
url = "https://julialang-s3.julialang.org/bin/mac/x64/${lib.versions.majorMinor version}/julia-${version}-mac64.dmg";
sha256 = "7TWfvHbKWRcRPa6DbS2z/u6soHWCOFSTgMGblWl//uE=";
};
}.${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 Contents/Resources/julia/share/julia/test
ln -s Contents/Resources/julia/share
'';
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 ] ++ lib.optionals (stdenv.isDarwin) [ undmg ];
installPhase = ''
runHook preInstall
mkdir -p "$out/Applications/Julia-${lib.versions.majorMinor version}.app"
cp -R . "$out/Applications/Julia-${lib.versions.majorMinor version}.app"
# chmod a+x "$out/Applications/Julia-${lib.versions.majorMinor version}.app/Contents/Resources/julia/bin/julia"
# 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/Applications/Julia-1.6.app/Contents/Resources/julia/bin/julia \
--check-bounds=yes \
--startup-file=no \
--depwarn=error \
$out/Applications/Julia-1.6.app/Contents/Resources/julia/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" "x86_64-darwin" ];
};
}
nixpkgs on  julia-bin [!] on ☁️ us-west-1 took 30s
❯ nix-build -A julia_16-bin
this derivation will be built:
/nix/store/87i6q6hp7mxhq3mf4yarnf5jc84f669p-julia-bin-1.6.1.drv
building '/nix/store/87i6q6hp7mxhq3mf4yarnf5jc84f669p-julia-bin-1.6.1.drv'...
unpacking sources
unpacking source archive /nix/store/kdy7ddgdnqyhljnxh7fp09j7s9isz2j1-julia-1.6.1-mac64.dmg
source root is Julia-1.6.app
patching sources
applying patch /nix/store/197xsc6z6r1advxpnvalc6sk9kmdnvp6-0002-nix-Skip-tempname-test-broken-in-sandbox.patch
patching file test/file.jl
applying patch /nix/store/8phpn2h3fvi53vm63fwsp0c5hrywvdb0-0003-nix-Skip-chown-tests-broken-in-sandbox.patch
patching file test/file.jl
applying patch /nix/store/6qqpl0i6iw9ccq2fac8baannhhidlf03-0005-nix-Enable-parallel-unit-tests-for-sandbox.patch
patching file test/runtests.jl
configuring
no configure script, doing nothing
building
no Makefile, doing nothing
installing
post-installation fixup
patching script interpreter paths in /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1
automatically fixing dependencies for ELF files
running install tests
From worker startup: ERROR: IOError: bind: operation not permitted (EPERM)
From worker startup: Stacktrace:
From worker startup: [1] bind(sock::Sockets.TCPServer, host::Sockets.IPv4, port::UInt16; ipv6only::Bool, reuseaddr::Bool, kws::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
From worker startup: @ Sockets /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:275
From worker startup: [2] bind
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:259 [inlined]
From worker startup: [3] bind
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:288 [inlined]
From worker startup: [4] listenany(host::Sockets.IPv4, default_port::UInt16)
From worker startup: @ Sockets /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:725
From worker startup: [5] start_worker(out::Base.PipeEndpoint, cookie::String; close_stdin::Bool, stderr_to_stdout::Bool)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:240
From worker startup: [6] start_worker(out::Base.PipeEndpoint, cookie::String)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:231
From worker startup: [7] start_worker(cookie::String; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:229
From worker startup: [8] start_worker (repeats 2 times)
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:229 [inlined]
From worker startup: [9] process_opts(opts::Base.JLOptions)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:1318
From worker startup: [10] #invokelatest#2
From worker startup: @ ./essentials.jl:708 [inlined]
From worker startup: [11] invokelatest
From worker startup: @ ./essentials.jl:706 [inlined]
From worker startup: [12] exec_options(opts::Base.JLOptions)
From worker startup: @ Base ./client.jl:252
From worker startup: [13] _start()
From worker startup: @ Base ./client.jl:485
From worker startup: ERROR: IOError: bind: operation not permitted (EPERM)
From worker startup: Stacktrace:
From worker startup: [1] bind(sock::Sockets.TCPServer, host::Sockets.IPv4, port::UInt16; ipv6only::Bool, reuseaddr::Bool, kws::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
From worker startup: @ Sockets /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:275
From worker startup: [2] bind
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:259 [inlined]
From worker startup: [3] bind
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:288 [inlined]
From worker startup: [4] listenany(host::Sockets.IPv4, default_port::UInt16)
From worker startup: @ Sockets /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:725
From worker startup: [5] start_worker(out::Base.PipeEndpoint, cookie::String; close_stdin::Bool, stderr_to_stdout::Bool)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:240
From worker startup: [6] start_worker(out::Base.PipeEndpoint, cookie::String)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:231
From worker startup: [7] start_worker(cookie::String; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:229
From worker startup: [8] start_worker (repeats 2 times)
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:229 [inlined]
From worker startup: [9] process_opts(opts::Base.JLOptions)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:1318
From worker startup: [10] #invokelatest#2
From worker startup: @ ./essentials.jl:708 [inlined]
From worker startup: [11] invokelatest
From worker startup: @ ./essentials.jl:706 [inlined]
From worker startup: [12] exec_options(opts::Base.JLOptions)
From worker startup: @ Base ./client.jl:252
From worker startup: [13] _start()
From worker startup: @ Base ./client.jl:485
From worker startup: ERROR: IOError: bind: operation not permitted (EPERM)
From worker startup: Stacktrace:
From worker startup: [1] bind(sock::Sockets.TCPServer, host::Sockets.IPv4, port::UInt16; ipv6only::Bool, reuseaddr::Bool, kws::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
From worker startup: @ Sockets /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:275
From worker startup: [2] bind
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:259 [inlined]
From worker startup: [3] bind
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:288 [inlined]
From worker startup: [4] listenany(host::Sockets.IPv4, default_port::UInt16)
From worker startup: @ Sockets /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:725
From worker startup: [5] start_worker(out::Base.PipeEndpoint, cookie::String; close_stdin::Bool, stderr_to_stdout::Bool)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:240
From worker startup: [6] start_worker(out::Base.PipeEndpoint, cookie::String)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:231
From worker startup: [7] start_worker(cookie::String; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:229
From worker startup: [8] start_worker (repeats 2 times)
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:229 [inlined]
From worker startup: [9] process_opts(opts::Base.JLOptions)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:1318
From worker startup: [10] #invokelatest#2
From worker startup: @ ./essentials.jl:708 [inlined]
From worker startup: [11] invokelatest
From worker startup: @ ./essentials.jl:706 [inlined]
From worker startup: [12] exec_options(opts::Base.JLOptions)
From worker startup: @ Base ./client.jl:252
From worker startup: [13] _start()
From worker startup: @ Base ./client.jl:485
From worker startup: ERROR: IOError: bind: operation not permitted (EPERM)
From worker startup: Stacktrace:
From worker startup: [1] bind(sock::Sockets.TCPServer, host::Sockets.IPv4, port::UInt16; ipv6only::Bool, reuseaddr::Bool, kws::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
From worker startup: @ Sockets /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:275
From worker startup: [2] bind
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:259 [inlined]
From worker startup: [3] bind
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:288 [inlined]
From worker startup: [4] listenany(host::Sockets.IPv4, default_port::UInt16)
From worker startup: @ Sockets /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Sockets/src/Sockets.jl:725
From worker startup: [5] start_worker(out::Base.PipeEndpoint, cookie::String; close_stdin::Bool, stderr_to_stdout::Bool)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:240
From worker startup: [6] start_worker(out::Base.PipeEndpoint, cookie::String)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:231
From worker startup: [7] start_worker(cookie::String; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:229
From worker startup: [8] start_worker (repeats 2 times)
From worker startup: @ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:229 [inlined]
From worker startup: [9] process_opts(opts::Base.JLOptions)
From worker startup: @ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:1318
From worker startup: [10] #invokelatest#2
From worker startup: @ ./essentials.jl:708 [inlined]
From worker startup: [11] invokelatest
From worker startup: @ ./essentials.jl:706 [inlined]
From worker startup: [12] exec_options(opts::Base.JLOptions)
From worker startup: @ Base ./client.jl:252
From worker startup: [13] _start()
From worker startup: @ Base ./client.jl:485
ERROR: LoadError: TaskFailedException
nested task error: Unable to read host:port string from worker. Launch command exited with error?
Stacktrace:
[1] worker_from_id(pg::Distributed.ProcessGroup, i::Int64)
@ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:1082
[2] worker_from_id
@ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:1079 [inlined]
[3] #remote_do#154
@ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/remotecall.jl:486 [inlined]
[4] remote_do
@ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/remotecall.jl:486 [inlined]
[5] kill
@ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/managers.jl:675 [inlined]
[6] create_worker(manager::Distributed.LocalManager, wconfig::WorkerConfig)
@ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:593
[7] setup_launched_worker(manager::Distributed.LocalManager, wconfig::WorkerConfig, launched_q::Vector{Int64})
@ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:534
[8] (::Distributed.var"#41#44"{Distributed.LocalManager, Vector{Int64}, WorkerConfig})()
@ Distributed ./task.jl:411
caused by: Unable to read host:port string from worker. Launch command exited with error?
Stacktrace:
[1] read_worker_host_port(io::Base.PipeEndpoint)
@ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:324
[2] connect(manager::Distributed.LocalManager, pid::Int64, config::WorkerConfig)
@ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/managers.jl:524
[3] create_worker(manager::Distributed.LocalManager, wconfig::WorkerConfig)
@ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:589
[4] setup_launched_worker(manager::Distributed.LocalManager, wconfig::WorkerConfig, launched_q::Vector{Int64})
@ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:534
[5] (::Distributed.var"#41#44"{Distributed.LocalManager, Vector{Int64}, WorkerConfig})()
@ Distributed ./task.jl:411
...and 3 more exceptions.
Stacktrace:
[1] sync_end(c::Channel{Any})
@ Base ./task.jl:369
[2] macro expansion
@ ./task.jl:388 [inlined]
[3] addprocs_locked(manager::Distributed.LocalManager; kwargs::Base.Iterators.Pairs{Symbol, Cmd, Tuple{Symbol, Symbol}, NamedTuple{(:exename, :exeflags), Tuple{Cmd, Cmd}}})
@ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:480
[4] addprocs(manager::Distributed.LocalManager; kwargs::Base.Iterators.Pairs{Symbol, Cmd, Tuple{Symbol, Symbol}, NamedTuple{(:exename, :exeflags), Tuple{Cmd, Cmd}}})
@ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/cluster.jl:444
[5] #addprocs#245
@ /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/managers.jl:443 [inlined]
[6] addprocs_with_testenv(X::Int64; rr_allowed::Bool, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Main /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1/Applications/Julia-1.6.app/Contents/Resources/julia/share/julia/test/testenv.jl:37
[7] addprocs_with_testenv(X::Int64)
@ Main /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1/Applications/Julia-1.6.app/Contents/Resources/julia/share/julia/test/testenv.jl:36
[8] (::var"#23#31")()
@ Main /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1/Applications/Julia-1.6.app/Contents/Resources/julia/share/julia/test/runtests.jl:89
[9] cd(f::var"#23#31", dir::String)
@ Base.Filesystem ./file.jl:106
[10] top-level scope
@ /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1/Applications/Julia-1.6.app/Contents/Resources/julia/share/julia/test/runtests.jl:84
in expression starting at /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1/Applications/Julia-1.6.app/Contents/Resources/julia/share/julia/test/runtests.jl:84
error: builder for '/nix/store/87i6q6hp7mxhq3mf4yarnf5jc84f669p-julia-bin-1.6.1.drv' failed with exit code 1;
last 10 log lines:
> @ Main /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1/Applications/Julia-1.6.app/Contents/Resources/julia/share/julia/test/testenv.jl:37
> [7] addprocs_with_testenv(X::Int64)
> @ Main /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1/Applications/Julia-1.6.app/Contents/Resources/julia/share/julia/test/testenv.jl:36
> [8] (::var"#23#31")()
> @ Main /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1/Applications/Julia-1.6.app/Contents/Resources/julia/share/julia/test/runtests.jl:89
> [9] cd(f::var"#23#31", dir::String)
> @ Base.Filesystem ./file.jl:106
> [10] top-level scope
> @ /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1/Applications/Julia-1.6.app/Contents/Resources/julia/share/julia/test/runtests.jl:84
> in expression starting at /nix/store/732dyjddl252igkkd8mm3ppl0llf9qw4-julia-bin-1.6.1/Applications/Julia-1.6.app/Contents/Resources/julia/share/julia/test/runtests.jl:84
For full logs, run 'nix log /nix/store/87i6q6hp7mxhq3mf4yarnf5jc84f669p-julia-bin-1.6.1.drv'.
nixpkgs on  julia-bin [!] on ☁️ us-west-1 took 30s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment