Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error with fixup-libgfortran.sh when spaces in PATH #32100

Merged
merged 1 commit into from
May 22, 2019
Merged

Conversation

omus
Copy link
Member

@omus omus commented May 21, 2019

When compiling master the fixup-libgfortran.sh fails to execute if the provided PATH contains a space. Issue was introduced in: #29522

The error which is ignored looks like:

/Users/omus/Development/Julia/latest/contrib/install.sh 755 /Users/omus/Development/Julia/latest/contrib/julia-config.jl /Users/omus/Development/Julia/latest/usr/share/julia/
PATH=/Users/omus/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Applications/Sublime Text.app/Contents/SharedSupport/bin:/usr/local/opt/git/share/git-core/contrib/diff-highlight:/Users/omus/Development/Julia/latest/usr/tools /Users/omus/Development/Julia/latest/contrib/fixup-libgfortran.sh --verbose /Users/omus/Development/Julia/latest/usr/lib
/bin/sh: Text.app/Contents/SharedSupport/bin:/usr/local/opt/git/share/git-core/contrib/diff-highlight:/Users/omus/Development/Julia/latest/usr/tools: No such file or directory
make: [/Users/omus/Development/Julia/latest/usr/lib/libgfortran*.dylib*] Error 127 (ignored)

When compiling the SparseArrays stdlib then compilation would fail with:

error during bootstrap:
LoadError("sysimg.jl", 16, LoadError("/Users/omus/Development/Julia/latest/usr/share/julia/stdlib/v1.3/SuiteSparse/src/SuiteSparse.jl", 24, LoadError("/Users/omus/Development/Julia/latest/usr/share/julia/stdlib/v1.3/SuiteSparse/src/umfpack.jl", 66, ErrorException("error compiling top-level scope: could not load library \"libsuitesparse_wrapper\"\ndlopen(libsuitesparse_wrapper.dylib, 1): Library not loaded: @rpath/libgfortran.5.dylib\n  Referenced from: /Users/omus/Development/Julia/latest/usr/lib/./libopenblas64_.0.3.5.dylib\n  Reason: image not found"))))
rec_backtrace at /Users/omus/Development/Julia/latest/src/stackwalk.c:94
record_backtrace at /Users/omus/Development/Julia/latest/src/task.c:217
jl_throw at /Users/omus/Development/Julia/latest/src/task.c:443
jl_rethrow_with_add at /Users/omus/Development/Julia/latest/src/codegen.cpp:793
jl_compile_linfo at /Users/omus/Development/Julia/latest/src/codegen.cpp:1207
jl_compile_method_internal at /Users/omus/Development/Julia/latest/src/gf.c:1778
_jl_invoke at /Users/omus/Development/Julia/latest/src/gf.c:2048 [inlined]
jl_invoke at /Users/omus/Development/Julia/latest/src/gf.c:2056
jl_toplevel_eval_flex at /Users/omus/Development/Julia/latest/src/toplevel.c:808
jl_eval_module_expr at /Users/omus/Development/Julia/latest/src/toplevel.c:181
jl_toplevel_eval_flex at /Users/omus/Development/Julia/latest/src/toplevel.c:640
jl_parse_eval_all at /Users/omus/Development/Julia/latest/src/ast.c:873
jl_load at /Users/omus/Development/Julia/latest/src/toplevel.c:878 [inlined]
jl_load_ at /Users/omus/Development/Julia/latest/src/toplevel.c:885
include at ./boot.jl:328 [inlined]
include_relative at ./loading.jl:1094
include at ./Base.jl:31 [inlined]
include at /Users/omus/Development/Julia/latest/usr/share/julia/stdlib/v1.3/SuiteSparse/src/SuiteSparse.jl:3
jl_apply at /Users/omus/Development/Julia/latest/src/./julia.h:1624 [inlined]
do_call at /Users/omus/Development/Julia/latest/src/interpreter.c:328
eval_stmt_value at /Users/omus/Development/Julia/latest/src/interpreter.c:368 [inlined]
eval_body at /Users/omus/Development/Julia/latest/src/interpreter.c:764
jl_interpret_toplevel_thunk_callback at /Users/omus/Development/Julia/latest/src/interpreter.c:892
Interpreter frame (ip: 2)
Core.CodeInfo(code=Array{Any, (7,)}[
  Expr(:call, Base.getproperty, :Base, :(:USE_GPL_LIBS)),
  Expr(:gotoifnot, SSAValue(1), 7),
  Expr(:call, :include, "umfpack.jl"),
  Expr(:call, :include, "cholmod.jl"),
  Expr(:call, :include, "spqr.jl"),
  Expr(:call, :include, "deprecated.jl"),
  Expr(:return, nothing)], codelocs=Array{Int32, (7,)}[1, 1, 2, 3, 4, 5, 5], ssavaluetypes=7, ssaflags=Array{UInt8, (0,)}[], method_for_inference_limit_heuristics=nothing, linetable=Array{Any, (5,)}[
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("/Users/omus/Development/Julia/latest/usr/share/julia/stdlib/v1.3/SuiteSparse/src/SuiteSparse.jl"), line=24, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("/Users/omus/Development/Julia/latest/usr/share/julia/stdlib/v1.3/SuiteSparse/src/SuiteSparse.jl"), line=25, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("/Users/omus/Development/Julia/latest/usr/share/julia/stdlib/v1.3/SuiteSparse/src/SuiteSparse.jl"), line=26, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("/Users/omus/Development/Julia/latest/usr/share/julia/stdlib/v1.3/SuiteSparse/src/SuiteSparse.jl"), line=27, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("/Users/omus/Development/Julia/latest/usr/share/julia/stdlib/v1.3/SuiteSparse/src/SuiteSparse.jl"), line=28, inlined_at=0)], slotnames=Array{Symbol, (0,)}[], slotflags=Array{UInt8, (0,)}[], slottypes=nothing, rettype=Any, parent=nothing, min_world=1, max_world=-1, inferred=false, inlineable=false, propagate_inbounds=false, pure=false)jl_interpret_toplevel_thunk at /Users/omus/Development/Julia/latest/src/interpreter.c:901
jl_toplevel_eval_flex at /Users/omus/Development/Julia/latest/src/toplevel.c:814
jl_eval_module_expr at /Users/omus/Development/Julia/latest/src/toplevel.c:181
jl_toplevel_eval_flex at /Users/omus/Development/Julia/latest/src/toplevel.c:640
jl_parse_eval_all at /Users/omus/Development/Julia/latest/src/ast.c:873
jl_load at /Users/omus/Development/Julia/latest/src/toplevel.c:878 [inlined]
jl_load_ at /Users/omus/Development/Julia/latest/src/toplevel.c:885
include at ./boot.jl:328 [inlined]
include_relative at ./loading.jl:1094
_require at ./loading.jl:1042
require at ./loading.jl:911
require at ./loading.jl:906
jl_apply at /Users/omus/Development/Julia/latest/src/./julia.h:1624 [inlined]
do_call at /Users/omus/Development/Julia/latest/src/interpreter.c:328
eval_body at /Users/omus/Development/Julia/latest/src/interpreter.c:641
jl_interpret_toplevel_thunk_callback at /Users/omus/Development/Julia/latest/src/interpreter.c:892
Interpreter frame (ip: 40)
Core.CodeInfo(code=Array{Any, (88,)}[
  Expr(:call, Base.getproperty, :Base, :(:is_primary_base_module)),
  Expr(:gotoifnot, SSAValue(1), 88),
  <newvar #<3>>,
  <newvar #<8>>,
  Core.SlotNumber(id=4) = Expr(:call, Base.vect, :(:Base64), :(:CRC32c), :(:SHA), :(:FileWatching), :(:Unicode), :(:Mmap), :(:Serialization), :(:Libdl), :(:Markdown), :(:LibGit2), :(:Logging), :(:Sockets), :(:Printf), :(:Profile), :(:Dates), :(:DelimitedFiles), :(:Random), :(:UUIDs), :(:Future), :(:LinearAlgebra), :(:SparseArrays), :(:SuiteSparse), :(:Distributed), :(:SharedArrays), :(:Pkg), :(:Test), :(:REPL), :(:Statistics)),
  Expr(:call, Base.broadcasted, :string, Core.SlotNumber(id=4)),
  Expr(:call, Base.broadcasted, :textwidth, SSAValue(6)),
  Expr(:call, Base.materialize, SSAValue(7)),
  Core.SlotNumber(id=5) = Expr(:call, :maximum, SSAValue(8)),
  Expr(:thunk, Core.CodeInfo(code=Array{Any, (5,)}[
  Expr(:global, Symbol("##1#2")),
  Expr(:const, Symbol("##1#2")),
  Expr(:call, Core.TypeVar, :(:maxlen), Core.Any),
  Expr(:struct_type, Symbol("##1#2"), Expr(:call, Core.svec, SSAValue(3)), Expr(:call, Core.svec, :(:maxlen)), Core.Function, Expr(:call, Core.svec, SSAValue(3)), false, 1),
  Expr(:return, nothing)], codelocs=Array{Int32, (5,)}[1, 1, 1, 1, 1], ssavaluetypes=5, ssaflags=Array{UInt8, (0,)}[], method_for_inference_limit_heuristics=nothing, linetable=Array{Any, (1,)}[Core.LineInfoNode(method=Symbol("top-level scope"), file=:none, line=0, inlined_at=0)], slotnames=Array{Symbol, (0,)}[], slotflags=Array{UInt8, (0,)}[], slottypes=nothing, rettype=Any, parent=nothing, min_world=1, max_world=-1, inferred=false, inlineable=false, propagate_inbounds=false, pure=false)),
  Expr(:call, Core.svec, Symbol("##1#2"), Core.Any, Core.Any),
  Expr(:call, Core.svec),
  Expr(:call, Core.svec, SSAValue(11), SSAValue(12)),
  Expr(:method, false, SSAValue(13), Core.CodeInfo(code=Array{Any, (14,)}[
  Expr(:call, Main.string, Core.SlotNumber(id=2)),
  Expr(:call, Main.:(*), SSAValue(1), "  "),
  Expr(:call, Core.getfield, Core.SlotNumber(id=1), :(:maxlen)),
  Expr(:call, Main.:(+), SSAValue(3), 3),
  Expr(:call, Main.rpad, SSAValue(2), SSAValue(4), "─"),
  Expr(:call, Main.print, SSAValue(5)),
  Expr(:call, Base.getproperty, Main.Base, :(:time_print)),
  Expr(:call, Core.apply_type, Base.Val, 9),
  Expr(:call, SSAValue(8)),
  Expr(:call, Base.literal_pow, Main.:(^), 10, SSAValue(9)),
  Expr(:call, Main.:(*), Core.SlotNumber(id=3), SSAValue(10)),
  Expr(:call, SSAValue(7), SSAValue(11)),
  Expr(:call, Main.println),
  Expr(:return, SSAValue(13))], codelocs=Array{Int32, (14,)}[1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3], ssavaluetypes=14, ssaflags=Array{UInt8, (0,)}[], method_for_inference_limit_heuristics=nothing, linetable=Array{Any, (3,)}[
  Core.LineInfoNode(method=Symbol("#1"), file=Symbol("sysimg.jl"), line=54, inlined_at=0),
  Core.LineInfoNode(method=Symbol("#1"), file=Symbol("sysimg.jl"), line=54, inlined_at=0),
  Core.LineInfoNode(method=Symbol("#1"), file=Symbol("sysimg.jl"), line=54, inlined_at=0)], slotnames=Array{Symbol, (3,)}[
  Symbol("#self#"),
  :mod,
  :t], slotflags=Array{UInt8, (3,)}[0x00, 0x08, 0x08], slottypes=nothing, rettype=Any, parent=nothing, min_world=1, max_world=-1, inferred=false, inlineable=false, propagate_inbounds=false, pure=false)),
  Symbol("##1#2"),
  Expr(:call, Core.typeof, Core.SlotNumber(id=5)),
  Expr(:call, Core.apply_type, SSAValue(15), SSAValue(16)),
  Core.SlotNumber(id=1) = Expr(:new, SSAValue(17), Core.SlotNumber(id=5)),
  Core.SlotNumber(id=6) = Core.SlotNumber(id=1),
  Expr(:call, Base.getproperty, :Base, :(:end_base_include)),
  Expr(:call, Base.gejl_interpret_toplevel_thunk at /Users/omus/Development/Julia/latest/src/interpreter.c:901
jl_toplevel_eval_flex at /Users/omus/Development/Julia/latest/src/toplevel.c:814
jl_parse_eval_all at /Users/omus/Development/Julia/latest/src/ast.c:873
jl_load at /Users/omus/Development/Julia/latest/src/toplevel.c:878
exec_program at /Users/omus/Development/Julia/latest/usr/bin/julia (unknown line)
true_main at /Users/omus/Development/Julia/latest/usr/bin/julia (unknown line)
main at /Users/omus/Development/Julia/latest/usr/bin/julia (unknown line)
tproperty, :Base, :(:start_base_include)),
  Expr(:call, :-, SSAValue(20), SSAValue(21)),
  Expr(:call, Core.apply_type, Base.Val, -9),
  Expr(:call, SSAValue(23)),
  Expr(:call, Base.literal_pow, :^, 10, SSAValue(24)),
  Expr(:call, :*, SSAValue(22), SSAValue(25)),
  Expr(:call, Core.SlotNumber(id=6), :Base, SSAValue(26)),
  Expr(:call, Base.getproperty, :Base, :(:_track_dependencies)),
  Expr(:call, Base.setindex!, SSAValue(28), true),
  Core.SlotNumber(id=2) = Expr(:call, Base.time_ns),
  Core.SlotNumber(id=4),
  Core.SlotNumber(id=7) = Expr(:call, Base.iterate, SSAValue(31)),
  Expr(:call, Core.:(===), Core.SlotNumber(id=7), nothing),
  Expr(:call, Base.not_int, SSAValue(33)),
  Expr(:gotoifnot, SSAValue(34), 51),
  Core.SlotNumber(id=7),
  Core.SlotNumber(id=9) = Expr(:call, Core.getfield, SSAValue(36), 1),
  Expr(:call, Core.getfield, SSAValue(36), 2),
  Core.SlotNumber(id=10) = Expr(:call, Base.time_ns),
  Expr(:call, Base.getproperty, :Base, :(:require)),
  Core.SlotNumber(id=11) = Expr(:call, SSAValue(40), :Base, Core.SlotNumber(id=9)),
  Expr(:call, Base.time_ns),
  Expr(:call, Base.:(-), SSAValue(42), Core.SlotNumber(id=10)),
  Core.SlotNumber(id=12) = Expr(:call, Base.:(/), SSAValue(43), 1e+09),
  Expr(:call, Core.SlotNumber(id=6), Core.SlotNumber(id=9), Core.SlotNumber(id=12)),
  Core.SlotNumber(id=7) = Expr(:call, Base.iterate, SSAValue(31), SSAValue(38)),
  Expr(:call, Core.:(===), Core.SlotNumber(id=7), nothing),
  Expr(:call, Base.not_int, SSAValue(47)),
  Expr(:gotoifnot, SSAValue(48), 51),
  goto 36,
  Core.SlotNumber(id=3) = nothing,
  Expr(:call, Base.time_ns),
  Expr(:call, Base.:(-), SSAValue(52), Core.SlotNumber(id=2)),
  Expr(:call, Base.:(/), SSAValue(53), 1e+09),
  Expr(:call, Base.getproperty, :Base, :(:tot_time_stdlib)),
  Expr(:call, Base.setindex!, SSAValue(55), SSAValue(54)),
  Expr(:call, Base.getproperty, :Base, :(:_require_dependencies)),
  Core.SlotNumber(id=8) = Expr(:call, Base.iterate, SSAValue(57)),
  Expr(:call, Core.:(===), Core.SlotNumber(id=8), nothing),
  Expr(:call, Base.not_int, SSAValue(59)),
  Expr(:gotoifnot, SSAValue(60), 81),
  Core.SlotNumber(id=8),
  Core.SlotNumber(id=13) = Expr(:call, Core.getfield, SSAValue(62), 1),
  Expr(:call, Core.getfield, SSAValue(62), 2),
  Expr(:call, Base.getindex, Core.SlotNumber(id=13), 3),
  Expr(:call, :==, SSAValue(65), 0),
  Expr(:gotoifnot, SSAValue(66), 70),
  goto 76,
  goto 71,
  false,
  Expr(:call, Base.getproperty, :Base, :(:_included_files)),
  Core.SlotNumber(id=13),
  Expr(:call, ::, 1, 2),
  Expr(:call, Base.getindex, SSAValue(72), SSAValue(73)),
  Expr(:call, :push!, SSAValue(71), SSAValue(74)),
  Core.SlotNumber(id=8) = Expr(:call, Base.iterate, SSAValue(57), SSAValue(64)),
  Expr(:call, Core.:(===), Core.SlotNumber(id=8), nothing),
  Expr(:call, Base.not_int, SSAValue(77)),
  Expr(:gotoifnot, SSAValue(78), 81),
  goto 62,
  Expr(:call, Base.getproperty, :Base, :(:_require_dependencies)),
  Expr(:call, :empty!, SSAValue(81)),
  Expr(:call, Base.getproperty, :Base, :(:_track_dependencies)),
  Expr(:call, Base.setindex!, SSAValue(83), false),
  Expr(:call, Base.getproperty, :Base, :(:tot_time_stdlib)),
  Expr(:call, Base.getindex, SSAValue(85)),
  Expr(:call, Core.SlotNumber(id=6), "Stdlibs total", SSAValue(86)),
  Expr(:return, nothing)], codelocs=Array{Int32, (88,)}[1, 1, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 9, 10, 10, 10, 10, 10, 10, 10, 10, 12, 13, 13, 14, 14, 11, 15, 10, 10, 10, 10, 10, 10, 16, 16, 8, 8, 8, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 21, 21, 22, 22, 22, 22], ssavaluetypes=88, ssaflags=Array{UInt8, (0,)}[], method_for_inference_limit_heuristics=nothing, linetable=Array{Any, (22,)}[
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=16, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=18, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=20, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=52, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=54, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=55, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=57, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=58, inlined_at=0),
  Core.LineInfoNode(method=Symbol("macro expansion"), file=Symbol("util.jl"), line=212, inlined_at=8),
  Core.LineInfoNode(method=Symbol("macro expansion"), file=Symbol("util.jl"), line=213, inlined_at=8),
  Core.LineInfoNode(method=Symbol("macro expansion"), file=Symbol("sysimg.jl"), line=59, inlined_at=10),
  Core.LineInfoNode(method=Symbol("macro expansion"), file=Symbol("util.jl"), line=212, inlined_at=11),
  Core.LineInfoNode(method=Symbol("macro expansion"), file=Symbol("util.jl"), line=213, inlined_at=11),
  Core.LineInfoNode(method=Symbol("macro expansion"), file=Symbol("util.jl"), line=214, inlined_at=11),
  Core.LineInfoNode(method=Symbol("macro expansion"), file=Symbol("sysimg.jl"), line=60, inlined_at=10),
  Core.LineInfoNode(method=Symbol("macro expansion"), file=Symbol("util.jl"), line=214, inlined_at=8),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=62, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=63, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=64, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=66, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=67, inlined_at=0),
  Core.LineInfoNode(method=Symbol("top-level scope"), file=Symbol("sysimg.jl"), line=69, inlined_at=0)], slotnames=Array{Symbol, (13,)}[
  Symbol("#1"),
  :t0,
  :val,
  :stdlibs,
  :maxlen,
  :print_time,
  Symbol(""),
  Symbol(""),
  :stdlib,
  :t0,
  :val,
  :tt,
  :dep], slotflags=Array{UInt8, (13,)}[0x18, 0x18, 0x18, 0x18, 0x18, 0x58, 0x08, 0x08, 0x18, 0x18, 0x18, 0x18, 0x18], slottypes=nothing, rettype=Any, parent=nothing, min_world=1, max_world=-1, inferred=false, inlineable=false, propagate_inbounds=false, pure=false)
*** This error might be fixed by running `make clean`. If the error persists, try `make cleanall`. ***
make[1]: *** [/Users/omus/Development/Julia/latest/usr/lib/julia/sys.ji] Error 1
make: *** [julia-sysimg-ji] Error 2

@omus omus added the domain:building Build system, or building Julia or its dependencies label May 21, 2019
@omus omus requested a review from staticfloat May 21, 2019 14:55
@omus omus changed the title Error with fixup-libgfortran.sh with spaces in PATH Error with fixup-libgfortran.sh when spaces in PATH May 21, 2019
@staticfloat
Copy link
Sponsor Member

Oof; good catch. Even though we explicitly do not support building Julia in a directory tree with spaces in the path, we should do our best to restrict that limitation to as small a surface are as possible.

@omus omus merged commit efd794e into master May 22, 2019
@omus omus deleted the cv/quote-path branch May 22, 2019 21:25
@BioTurboNick
Copy link
Contributor

Just noting that an error like this occurred for me not because Julia was being built in a directory with any spaces, but because the Windows PATH variable happened to include entries with spaces (for me, an NVIDIA driver, among others). So I'm glad to see it was fixed :-)

@StefanKarpinski StefanKarpinski added backport 1.0 status:triage This should be discussed on a triage call labels Oct 16, 2019
@StefanKarpinski
Copy link
Sponsor Member

Marking for backport triage, since we could do a similar fix on older versions as well, even if this exact patch doesn't apply to those branches.

@StefanKarpinski
Copy link
Sponsor Member

Seems to be already fixed on 1.3 and 1.2 is EOL so only 1.0 is a backport candidate.

KristofferC pushed a commit that referenced this pull request Feb 20, 2020
@KristofferC KristofferC mentioned this pull request Feb 20, 2020
56 tasks
KristofferC pushed a commit that referenced this pull request Feb 20, 2020
KristofferC pushed a commit that referenced this pull request Feb 20, 2020
KristofferC pushed a commit that referenced this pull request Feb 22, 2020
@Keno Keno removed the status:triage This should be discussed on a triage call label Feb 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
domain:building Build system, or building Julia or its dependencies
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants