-
Notifications
You must be signed in to change notification settings - Fork 29
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
Use BinaryBuilder.jl to package dependencies #447
Comments
I'm sorry that you have had all those troubles but unix is a complicated world and things that I don't understand keep coming up. It happens that I was able to reproduce this problem in my WSL2 that has linux 18.04 and gcc 9. Googling showed up this . So my interpretation is that the problem is that julia was built with a Regarding the |
Thanks for the reply. I was actually able to fix the problem i posted above by compiling Julia#master from source, which used the updated version of the libraries. Unfortunately, I ran into a different issue having to do with GMT's postscriptlight. I was considering trying to figure out the binarybuilder myself, but I've never tried it before and would probably need a working version of GMT first. |
Yes, that kind of confirms the suspicion. On my side I made the experiment of just moving away the
but apparently it's a false alarm since the tests pass and I can open netcdf grids. What is the problem with the postscript? Note that about this it might be more appropriate to post on the GMT forum. |
If you want to give it a try, the master version now installs GMT automatically from Conda. But the Conda version on CentOS is half broken. It needs to install an extra lib ( |
I gave this another try and managed to get a BinaryBuilder version of GMT compiling on Mac & Windows: Yet, there are some hiccups with the windows installation. Perhaps @joa-quim or others from the GMT have some idea what needs to be changed for that to compile? |
@boriskaus Thanks a lot for trying this. It's a really needed solution but unfortunately, and that's my personal view, the real problem lies on Unix that tries to force Windows be Unix and when it fails it blames Windows. The GMT Windows build is perfectly solved with the VS build (took us several years of continuous improvements) and that is not going to be replaced by a far inferior MinGW build. But it still leaves out the *nix builds and that's where the effort should be focused. Unfortunately, even there the constrain of everything be build-able with MinGW too is severely harming the *nix side when the Win builds pose problems that have not yet been solve (e.g. GDAL, netCDF, and probably others). I'll post this comments in the BinaryBuilder issue later today. |
I'm not sure I fully follow you. The Linux and Mac BinaryBuilder versions already seem to compile just fine, so I guess that having that would already be very useful for Or are you saying that some executables are still missing for *nix builds? The windows version is indeed not fully compiling, but we can certainly create a |
I think that for now a workable solution is to have a What I meant to say is that the unix builds will be crippled because GDAL_jll is crippled as it does include And, I would be delighted to know how you use GMT.jl in teaching. We could talk about nice examples that could go also to the |
Hi @boriskaus |
Yes, I keep being interested to have this working, and I am guessing that many users of GMT.jl would also love to have a BB version. |
Perfect, we should be able to do it now that GMT builds on MinGW ... despite some rocks in the way. I guess that I must (or it's easier that way) find a way to make a tar ball available in github with the current master version that builds with MinGW. |
But if you know how to fetch the source from GMT/#master that would be even better. |
Yes it can be done with a bit commit; I’ll add that later |
@boriskaus I think the
To revert to the JLL artifact, from a clean REPL session
|
thanks! On Mac Silicon it fails with the following message: Testing Running tests...
ERROR: LoadError: SystemError: opening file "/Users/kausb/.julia/dev/GMT/deps/deps.jl": No such file or directory
Stacktrace:
[1] systemerror(p::String, errno::Int32; extrainfo::Nothing)
@ Base ./error.jl:176
[2] #systemerror#80
@ ./error.jl:175 [inlined]
[3] systemerror
@ ./error.jl:175 [inlined]
[4] open(fname::String; lock::Bool, read::Nothing, write::Nothing, create::Nothing, truncate::Nothing, append::Nothing)
@ Base ./iostream.jl:293
[5] open
@ ./iostream.jl:275 [inlined]
[6] open(f::Base.var"#387#388"{String}, args::String; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Base ./io.jl:382
[7] open
@ ./io.jl:381 [inlined]
[8] read
@ ./io.jl:462 [inlined]
[9] _include(mapexpr::Function, mod::Module, _path::String)
@ Base ./loading.jl:1484
[10] include(mod::Module, _path::String)
@ Base ./Base.jl:419
[11] include(x::String)
@ GMT ~/.julia/dev/GMT/src/GMT.jl:1
[12] top-level scope
@ ~/.julia/dev/GMT/src/GMT.jl:43
[13] include
@ ./Base.jl:419 [inlined]
[14] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base ./loading.jl:1554
[15] top-level scope
@ stdin:1
in expression starting at /Users/kausb/.julia/dev/GMT/src/GMT.jl:1
in expression starting at stdin:1 |
The ".../deps/deps.jl" file is generated by The not so good experience is that it took ages to install (why?) and when we do Another thing you must be aware is that there is some Heisenbug that cause occasional segv's when running the tests when the GC tries to free some apparently non-valid memory. I've tried and tried to find/solve this but with no success. All I could find is that it seems related to the use of |
Indeed, with [ Info: 63...
STATPLOTS: Error During Test at /Users/kausb/.julia/dev/GMT/test/test_statplots.jl:1
Got exception outside of a @test
Something went wrong when calling the module. GMT error number = 79
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:35
[2] gmt(::String)
@ GMT ~/.julia/dev/GMT/src/gmt_main.jl:311
[3] helper_showfig4modern(show::String)
@ GMT ~/.julia/dev/GMT/src/common_options.jl:3894
[4] subplot(fim::Symbol; stop::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ GMT ~/.julia/dev/GMT/src/subplot.jl:128
[5] subplot
@ ~/.julia/dev/GMT/src/subplot.jl:45 [inlined]
[6] cornerplot(arg1::Matrix{Float64}; first::Bool, kwargs::Base.Pairs{Symbol, Bool, Tuple{Symbol}, NamedTuple{(:scatter,), Tuple{Bool}}})
@ GMT ~/.julia/dev/GMT/src/statplots.jl:1291
[7] macro expansion
@ ~/.julia/dev/GMT/test/test_statplots.jl:90 [inlined]
[8] macro expansion
@ /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Test/src/Test.jl:1363 [inlined]
[9] top-level scope
@ ~/.julia/dev/GMT/test/test_statplots.jl:2
[10] include(fname::String)
@ Base.MainInclude ./client.jl:476
[11] macro expansion
@ ~/.julia/dev/GMT/test/runtests.jl:83 [inlined]
[12] macro expansion
@ /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Test/src/Test.jl:1363 [inlined]
[13] top-level scope
@ ~/.julia/dev/GMT/test/runtests.jl:21
[14] include(fname::String)
@ Base.MainInclude ./client.jl:476
[15] top-level scope
@ none:6
[16] eval
@ ./boot.jl:368 [inlined]
[17] exec_options(opts::Base.JLOptions)
@ Base ./client.jl:276
[18] _start()
@ Base ./client.jl:522
GREENSPLINE
MAPPROJECT
PSMECA
GADM
MAKECPT
MAKECPT - 0
MAKECPT - 1
MAKECPT - 2
signal (11): Segmentation fault: 11
in expression starting at /Users/kausb/.julia/dev/GMT/test/runtests.jl:5
gc_mark_loop at /Applications/Julia-1.8.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.8.dylib (unknown line)
_jl_gc_collect at /Applications/Julia-1.8.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.8.dylib (unknown line)
ijl_gc_collect at /Applications/Julia-1.8.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.8.dylib (unknown line)
ijl_gc_pool_alloc at /Applications/Julia-1.8.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.8.dylib (unknown line)
iterate at ./compiler/ssair/ir.jl:467
iterate at ./compiler/ssair/ir.jl:459 [inlined]
count_added_node! at ./compiler/ssair/ir.jl:681
setindex! at ./compiler/ssair/ir.jl:810
setindex! at ./compiler/ssair/ir.jl:818 [inlined]
ir_inline_item! at ./compiler/ssair/inlining.jl:386 rerunning makes it proceed further: Test Summary: | Pass Error Total Time
GMT | 464 2 466 2m40.7s
PROJ4 | 3 3 4.7s
GDALext | 44 44 1.6s
GDAL | 29 29 4.8s
TABLES | 1 1 0.1s
COMMON OPTS | 235 235 22.1s
STATPLOTS | 1 1 13.4s
MISC | 11 11 8.5s
ERROR: LoadError: Some tests did not pass: 464 passed, 0 failed, 2 errored, 0 broken.
in expression starting at /Users/kausb/.julia/dev/GMT/test/runtests.jl:5
ERROR: Package GMT errored during testing 2nd error: GMT: Error During Test at /Users/kausb/.julia/dev/GMT/test/runtests.jl:5
Got exception outside of a @test
IOError: unlink("png.png"): no such file or directory (ENOENT)
Stacktrace:
[1] uv_error
@ ./libuv.jl:97 [inlined]
[2] unlink(p::String)
@ Base.Filesystem ./file.jl:972
[3] rm(path::String; force::Bool, recursive::Bool)
@ Base.Filesystem ./file.jl:283
[4] rm(path::String)
@ Base.Filesystem ./file.jl:273
[5] macro expansion
@ ~/.julia/dev/GMT/test/runtests.jl:154 [inlined]
[6] macro expansion
@ /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Test/src/Test.jl:1363 [inlined]
[7] top-level scope
@ ~/.julia/dev/GMT/test/runtests.jl:21
[8] include(fname::String)
@ Base.MainInclude ./client.jl:476
[9] top-level scope
@ none:6
[10] eval
@ ./boot.jl:368 [inlined]
[11] exec_options(opts::Base.JLOptions)
@ Base ./client.jl:276
[12] _start()
@ Base ./client.jl:522 |
Yes, the Heisenbug is the one that causes the The other error is even more worrisome because I got it too in my |
The failing test is the same as if one runs this single command
I suspect that it's due to a internal (from the C lib) call to |
Bingo. Added GS to my Codespaces and now all tests pass. So now the problem is on how to solve this. We have a dependency on Ghostscript_jll but that does not add the binary dir to the path so the GMT lib is not able to find it. |
Ghostscript_jll does come with the binary and the path to the binary, at least on my version of it. |
Yes, I know but the
|
You could do this: julia> gs() = run(`$(GMT.Ghostscript_jll.gs())`)
gs (generic function with 1 method)
julia> gs()
GPL Ghostscript 9.55.0 (2021-09-27)
Copyright (C) 2021 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
GS> I'm not really understanding how you are using The additional information that is available in |
Ghostscript is used in GMT via the But. In some cases the GMT binary needs also to make a call to
|
ok, I see. julia> GMT.Ghostscript_jll.gs().
cpus dir env exec flags ignorestatus where julia> GMT.Ghostscript_jll.gs().env
40-element Vector{String}:
"XPC_FLAGS=0x0"
"COMMAND_MODE=unix2003"
"PATH=/Users/kausb/.julia/artifa" ⋯ 256 bytes ⋯ "omebrew/opt/python/libexec/bin"
"PWD=/Users/kausb/.julia/dev/GMT"
"DISPLAY=/private/tmp/com.apple.launchd.a3pn6YlwX0/org.xquartz:0"
"XPC_SERVICE_NAME=0"
"TERM_PROGRAM=vscode"
"HOMEBREW_PREFIX=/opt/homebrew"
"VSCODE_GIT_ASKPASS_NODE=/Applic" ⋯ 79 bytes ⋯ "ents/MacOS/Code Helper (Plugin)"
"SHELL=/bin/bash"
⋮
"INFOPATH=/opt/homebrew/share/info:"
"_=/usr/local/bin/julia"
"HOMEBREW_REPOSITORY=/opt/homebrew"
"USER=kausb"
"BASH_CONF=bash_profile"
"TERM=xterm-256color"
"HOME=/Users/kausb"
"TERM_PROGRAM_VERSION=1.76.2"
"COLORTERM=truecolor" The 3rd entry is the I suppose that you would therefore have to do something along these lines for the An alternative approach, which I did not test yet, is to explicitly ship the |
I think that it would solve the case if
Packaging the |
yes, that is because you cannot simply run the path to the executable, as this does not set the correct environmental variables (including dynamics libraries etc.). Julia> run(`$(GMT.Ghostscript_jll.gs())`)
GPL Ghostscript 9.55.0 (2021-09-27)
Copyright (C) 2021 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details. you can also check that julia> typeof(GMT.Ghostscript_jll.gs())
Cmd the user guide explains that these are structs that contain the environmental variables. So if you run this, it will set that before executing. There is actually a simple way to replace certain environmental variables using addenv. We can add the path to julia> env = GMT.GMT_jll.gmt().env;
julia> ind = findall(startswith.(env,"PATH="))[1]
julia> path_gmt = env[ind][6:end]
"/Users/kausb/.julia/artifacts/b1a055a9c307b137556560efcc2cee3a6405dfd7/bin:/Users/kausb/.julia/artifacts/f987f10c94bc56fe3589d9b30a6e2f419402a31c/bin:/Users/kausb/.julia/artifacts/185bfeaa5186fb47cdc2236f5624f52e74a59cbf/bin:/Users/kausb/.julia/artifacts/9472204d25ab69d52d571b650fdc9d562455ca4a/bin:/Users/kausb/.julia/artifacts/86c32a34b06c15b5ec8d4f694c2b91435253f209/bin:/Users/kausb/.julia/artifacts/dfa09fc5bd33a68e75b575d8d6565a89814949c2/bin:/Users/kausb/.julia/artifacts/689b6368f94a3d130dce98f67b83f245bebdcbe0/bin:/Users/kausb" ⋯ 889 bytes ⋯ "Users/kausb/.julia/artifacts/1a7e22e66b523d9cb884cf85c3ec065b5fb3e5c3/bin:/Users/kausb/.julia/artifacts/bf37190b92ac2fc3dd5e7073ff7ec7bbfd10343f/bin:/Users/kausb/.julia/artifacts/0d9e7c35bc21411c7d9c194f790e30a95a4a5795/bin:/Users/kausb/.julia/artifacts/57273092253ad3a7bf9733122480db4d6dc9c4b5/bin:/opt/petsc/petsc-3.16.4-opt/bin/:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin:/opt/homebrew/opt/python/libexec/bin"
julia> path_gs = GMT.Ghostscript_jll.PATH_list[1]
"/Users/kausb/.julia/artifacts/0d9e7c35bc21411c7d9c194f790e30a95a4a5795/bin"
julia> path_gmt_gs = path_gmt*":"* path_gs;
julia> gmt_exec = addenv(GMT.GMT_jll.gmt(), ("PATH"=> path_gmt_gs))
setenv(`/Users/kausb/.julia/artifacts/57273092253ad3a7bf9733122480db4d6dc9c4b5/bin/gmt`,["XPC_FLAGS=0x0", "COMMAND_MODE=unix2003", "PATH=/Users/kausb/.julia/artifacts/b1a055a9c307b137556560efcc2cee3a6405dfd7/bin:/Users/kausb/.julia/artifacts/f987f10c94bc56fe3589d9b30a6e2f419402a31c/bin:/Users/kausb/.julia/artifacts/185bfeaa5186fb47cdc2236f5624f52e74a59cbf/bin:/Users/kausb/.julia/artifacts/9472204d25ab69d52d571b650fdc9d562455ca4a/bin:/Users/kausb/.julia/artifacts/86c32a34b06c15b5ec8d4f694c2b91435253f209/bin:/Users/kausb/.julia/artifacts/dfa09fc5bd33a68e75b575d8d6565a89814949c2/bin:/Users/kausb/.julia/artifacts/689b6368f94a3d130dce98f67b83f245bebdcbe0/bin:/Users/kausb/.julia/artifacts/825c20e9fb9976a6dc62e1a442018fed80992c1b/bin:/Users/kausb/.julia/artifacts/3e6cbbf76c070bcec6c7db17999b509ac4b46c0d/bin:/Users/kausb/.julia/artifacts/41d2d4f312d93b56961767987cf48ea1f6d6fadc/bin:/Users/kausb/.julia/artifacts/9cd88b624c5c9ad34fec9c61621c56d465a8c717/bin:/Users/kausb/.julia/artifacts/e30df1d228e442d6b680e2ec8adf98bc9535908f/bin:/Users/kausb/.julia/artifacts/6db94dab8e98dab5bc4428a316ba3f44540bdef2/bin:/Users/kausb/.julia/artifacts/4a1a8201c8ca970558b4321430d5aae3fca6833d/bin:/Users/kausb/.julia/artifacts/df3881e810714d6a09467fe85a6fde79385fe702/bin:/Users/kausb/.julia/artifacts/e6b9fb44029423f5cd69e0cbbff25abcc4b32a8f/bin:/Users/kausb/.julia/artifacts/413111420faa4e2aeaa383c075eaa213402d939c/bin:/Users/kausb/.julia/artifacts/c325a23bc1f6521474cef5f634f18c8ab311bb02/bin:/Users/kausb/.julia/artifacts/0db9c3f6cf936a0da49e2ba954ba3e10bed6ad72/bin:/Users/kausb/.julia/artifacts/1a7e22e66b523d9cb884cf85c3ec065b5fb3e5c3/bin:/Users/kausb/.julia/artifacts/bf37190b92ac2fc3dd5e7073ff7ec7bbfd10343f/bin:/Users/kausb/.julia/artifacts/0d9e7c35bc21411c7d9c194f790e30a95a4a5795/bin:/Users/kausb/.julia/artifacts/57273092253ad3a7bf9733122480db4d6dc9c4b5/bin:/opt/petsc/petsc-3.16.4-opt/bin/:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin:/opt/homebrew/opt/python/libexec/bin:/Users/kausb/.julia/artifacts/0d9e7c35bc21411c7d9c194f790e30a95a4a5795/bin", "PWD=/Users/kausb/.julia/dev/GMT", "DISPLAY=/private/tmp/com.apple.launchd.a3pn6YlwX0/org.xquartz:0", "XPC_SERVICE_NAME=0", "TERM_PROGRAM=vscode", "HOMEBREW_PREFIX=/opt/homebrew", "VSCODE_GIT_ASKPASS_NODE=/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin)", "SHELL=/bin/bash" … "FONTCONFIG_FILE=/Users/kausb/.julia/artifacts/e6b9fb44029423f5cd69e0cbbff25abcc4b32a8f/etc/fonts/fonts.conf", "INFOPATH=/opt/homebrew/share/info:", "_=/usr/local/bin/julia", "HOMEBREW_REPOSITORY=/opt/homebrew", "USER=kausb", "BASH_CONF=bash_profile", "TERM=xterm-256color", "HOME=/Users/kausb", "TERM_PROGRAM_VERSION=1.76.2", "COLORTERM=truecolor"])
at this stage, |
Thanks, very clever and I was expecting it to work but it still fails to run
I think the reason why it fails is the same that after running |
correct, every time julia> terminal_com = Cmd(`printenv`, env=("PATH"=>path_gmt_gs,));
julia> run(terminal_com);
PATH=/Users/kausb/.julia/artifacts/b1a055a9c307b137556560efcc2cee3a6405dfd7/bin:/Users/kausb/.julia/artifacts/f987f10c94bc56fe3589d9b30a6e2f419402a31c/bin:/Users/kausb/.julia/artifacts/185bfeaa5186fb47cdc2236f5624f52e74a59cbf/bin:/Users/kausb/.julia/artifacts/9472204d25ab69d52d571b650fdc9d562455ca4a/bin:/Users/kausb/.julia/artifacts/86c32a34b06c15b5ec8d4f694c2b91435253f209/bin:/Users/kausb/.julia/artifacts/dfa09fc5bd33a68e75b575d8d6565a89814949c2/bin:/Users/kausb/.julia/artifacts/689b6368f94a3d130dce98f67b83f245bebdcbe0/bin:/Users/kausb/.julia/artifacts/825c20e9fb9976a6dc62e1a442018fed80992c1b/bin:/Users/kausb/.julia/artifacts/3e6cbbf76c070bcec6c7db17999b509ac4b46c0d/bin:/Users/kausb/.julia/artifacts/41d2d4f312d93b56961767987cf48ea1f6d6fadc/bin:/Users/kausb/.julia/artifacts/9cd88b624c5c9ad34fec9c61621c56d465a8c717/bin:/Users/kausb/.julia/artifacts/e30df1d228e442d6b680e2ec8adf98bc9535908f/bin:/Users/kausb/.julia/artifacts/6db94dab8e98dab5bc4428a316ba3f44540bdef2/bin:/Users/kausb/.julia/artifacts/4a1a8201c8ca970558b4321430d5aae3fca6833d/bin:/Users/kausb/.julia/artifacts/df3881e810714d6a09467fe85a6fde79385fe702/bin:/Users/kausb/.julia/artifacts/e6b9fb44029423f5cd69e0cbbff25abcc4b32a8f/bin:/Users/kausb/.julia/artifacts/413111420faa4e2aeaa383c075eaa213402d939c/bin:/Users/kausb/.julia/artifacts/c325a23bc1f6521474cef5f634f18c8ab311bb02/bin:/Users/kausb/.julia/artifacts/0db9c3f6cf936a0da49e2ba954ba3e10bed6ad72/bin:/Users/kausb/.julia/artifacts/1a7e22e66b523d9cb884cf85c3ec065b5fb3e5c3/bin:/Users/kausb/.julia/artifacts/bf37190b92ac2fc3dd5e7073ff7ec7bbfd10343f/bin:/Users/kausb/.julia/artifacts/0d9e7c35bc21411c7d9c194f790e30a95a4a5795/bin:/Users/kausb/.julia/artifacts/57273092253ad3a7bf9733122480db4d6dc9c4b5/bin:/opt/petsc/petsc-3.16.4-opt/bin/:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin:/opt/homebrew/opt/python/libexec/bin:/Users/kausb/.julia/artifacts/0d9e7c35bc21411c7d9c194f790e30a95a4a5795/bin Along the same lines, we can verify that julia> run(Cmd(`which gs`, env=("PATH"=>path_gmt_gs,)));
/Users/kausb/.julia/artifacts/0d9e7c35bc21411c7d9c194f790e30a95a4a5795/bin/gs If we only pass the julia> run(Cmd(`gmt`, env=("PATH"=>path_gmt_gs,)));
dyld[83538]: Library not loaded: @rpath/libnetcdf.19.dylib
Referenced from: <F6F32940-EE6D-3C19-96A0-24E64727DFAE> /Users/kausb/.julia/artifacts/57273092253ad3a7bf9733122480db4d6dc9c4b5/bin/gmt
Reason: tried: '/Users/kausb/.julia/artifacts/57273092253ad3a7bf9733122480db4d6dc9c4b5/bin/../lib/libnetcdf.19.dylib' (no such file), '/Users/kausb/.julia/artifacts/57273092253ad3a7bf9733122480db4d6dc9c4b5/bin/../lib/libnetcdf.19.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS@rpath/libnetcdf.19.dylib' (no such file), '/Users/kausb/.julia/artifacts/57273092253ad3a7bf9733122480db4d6dc9c4b5/bin/../lib/libnetcdf.19.dylib' (no such file), '/Users/kausb/.julia/artifacts/57273092253ad3a7bf9733122480db4d6dc9c4b5/bin/../lib/libnetcdf.19.dylib' (no such file), '/usr/local/lib/libnetcdf.19.dylib' (no such file), '/usr/lib/libnetcdf.19.dylib' (no such file, not in dyld cache)
ERROR: failed process: Process(setenv(`gmt`,["PATH=/Users/kausb/.julia/artifacts/b1a055a9c307b137556560efcc2cee3a6405dfd7/bin:/Users/kausb/.julia/artifacts/f987f10c94bc56fe3589d9b30a6e2f419402a31c/bin:/Users/kausb/.julia/artifacts/185bfeaa5186fb47cdc2236f5624f52e74a59cbf/bin:/Users/kausb/.julia/artifacts/9472204d25ab69d52d571b650fdc9d562455ca4a/bin:/Users/kausb/.julia/artifacts/86c32a34b06c15b5ec8d4f694c2b91435253f209/bin:/Users/kausb/.julia/artifacts/dfa09fc5bd33a68e75b575d8d6565a89814949c2/bin:/Users/kausb/.julia/artifacts/689b6368f94a3d130dce98f67b83f245bebdcbe0/bin:/Users/kausb/.julia/artifacts/825c20e9fb9976a6dc62e1a442018fed80992c1b/bin:/Users/kausb/.julia/artifacts/3e6cbbf76c070bcec6c7db17999b509ac4b46c0d/bin:/Users/kausb/.julia/artifacts/41d2d4f312d93b56961767987cf48ea1f6d6fadc/bin:/Users/kausb/.julia/artifacts/9cd88b624c5c9ad34fec9c61621c56d465a8c717/bin:/Users/kausb/.julia/artifacts/e30df1d228e442d6b680e2ec8adf98bc9535908f/bin:/Users/kausb/.julia/artifacts/6db94dab8e98dab5bc4428a316ba3f44540bdef2/bin:/Users/kausb/.julia/artifacts/4a1a8201c8ca970558b4321430d5aae3fca6833d/bin:/Users/kausb/.julia/artifacts/df3881e810714d6a09467fe85a6fde79385fe702/bin:/Users/kausb/.julia/artifacts/e6b9fb44029423f5cd69e0cbbff25abcc4b32a8f/bin:/Users/kausb/.julia/artifacts/413111420faa4e2aeaa383c075eaa213402d939c/bin:/Users/kausb/.julia/artifacts/c325a23bc1f6521474cef5f634f18c8ab311bb02/bin:/Users/kausb/.julia/artifacts/0db9c3f6cf936a0da49e2ba954ba3e10bed6ad72/bin:/Users/kausb/.julia/artifacts/1a7e22e66b523d9cb884cf85c3ec065b5fb3e5c3/bin:/Users/kausb/.julia/artifacts/bf37190b92ac2fc3dd5e7073ff7ec7bbfd10343f/bin:/Users/kausb/.julia/artifacts/0d9e7c35bc21411c7d9c194f790e30a95a4a5795/bin:/Users/kausb/.julia/artifacts/57273092253ad3a7bf9733122480db4d6dc9c4b5/bin:/opt/petsc/petsc-3.16.4-opt/bin/:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin:/opt/homebrew/opt/python/libexec/bin:/Users/kausb/.julia/artifacts/0d9e7c35bc21411c7d9c194f790e30a95a4a5795/bin"]), ProcessSignaled(6)) [0] Yet, if you pass the full environment from julia> run(Cmd(`gmt`, env=gmt_exec.env));
GMT - The Generic Mapping Tools, Version 6.5.0_2414ba2_2023.03.12 [MP] [12 cores]
(c) 1991-2023 The GMT Team (https://www.generic-mapping-tools.org/team.html).
Supported in part by the US National Science Foundation (http://www.nsf.gov/)
and volunteers from around the world.
GMT is distributed under the GNU LGPL License (http://www.gnu.org/licenses/lgpl.html).
Dependencies: netCDF, GDAL, PCRE, FFTW, LAPACK, ZLIB, Ghostscript, GraphicsMagick, FFmpeg.
usage: gmt [options]
gmt <module name> [<module-options>]
julia> run(Cmd(`gs`, env=gmt_exec.env));
GPL Ghostscript 9.55.0 (2021-09-27)
Copyright (C) 2021 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details. The cool thing about |
Not sure, GMT also needs to use libcurl directly. This libcurl shit is transversal to many packages and the problem has been, unfortunately, more or less ignored and the level of support barely above the minimums. |
In the afternoon (now I have to go to the fish market) I'll raise this question in the forum again. |
If it is a dependency of As mose pointed out this appears to be unrelated to julia, but rather how libcurl is being maintained. personally, I don’t have the slightest clue what this actually does… |
It is related to Julia in the sense that on master they updated libcurl to 8.0.1 but not in the 1.9 (and previous) branches. And now we have this shit. I also don't understand why we need a libCURL_jll at all since Julia comes with that library already. And not say that libCURL_jll itself also depends only on 7.73
It's for internet access. |
LibCURL 8.0.1 is available: |
PRs submitted (compat with also 8.0.1). Let's see what we get. |
As long as |
Try leaving the compat argument out altogether |
Had already tried with "7.73 - 8.0.1", which seems to have passed. Let's see. |
So, |
As I guessed the shit is now on GDAL side and ofc, they are having exactly the same problem as we did. |
Yup, you need to push an update to |
It’s indeed a libcurl problem, who changed the main version number. Without that there would be no issues. |
Merged GMT_jll branch on master. Let's see how smooth the transition will be. |
GMT_jll is now the official install method. Thanks again @boriskaus |
great, thanks a lot! |
I have colleagues in Lisbon that know you. Maybe one day I'll bug you if the long intended try of Lamem ever happens. Feel free to ask if GMT can be of more help in your group of packages. And yes, I must do some updates in the README. I've created a backdoor to allow using a local build of GMT that needs to be documented also. |
For now we mostly use it in GeophysicalModelGenerator where it is already very handy to download topography datasets of a certain region. The main complaint of users was that |
BTW, I'm working on a better, or at least a GMT, version of GeogRegions. |
hmm, in fact adding GMT as a dependency causes all kinds of compatibility issues, as can be seen here. Only seems to work well on Julia 1.8. |
Yes, we know that (remember #447 (comment)). And for it (nightly) to work on Windows we must manually comment the
|
so it seems that this breaks my code under some circumstances. See here
|
So it's not finding
does this also fail? Any way to reproduce this? |
I can't reproduce this locally, only under the CI pipeline which makes debugging rather difficult |
That's what I feared. GMT looks for an environment variable called |
I have tried three times to install the GMT dependency for GMT.jl and so far have not been successful. On my first try, the version of GMT in the package repos of my OS (MX Linux/Debian) was too old (v5.4). Then I attempted to build GMT from source and ran into other issues regarding (I think) GDAL, which was also an older version (v2.3). Finally, on my new OS (Ubuntu 20.04) I have GMT version 6.0.0 and GDAL version 3.0.4, but trying to run the GMT tests gives me the following error message:
ERROR: LoadError: LoadError: could not load library "/usr/lib/x86_64-linux-gnu/libgmt.so"
/home/michael/.local/julia-1.5.2/bin/../lib/julia/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /lib/libgdal.so.26)
Note, each time I did end up with a working version of GMT, and the only problem appears be with GMT.jl reading the dependencies.
It would be hugely beneficial for users if GMT.jl to use BinaryBuilder.jl to ship GMT and its other dependencies with the code. This would greatly simplify the process for interested users.
The text was updated successfully, but these errors were encountered: