Julia 1.0 support just landed on Gadfly master

Hi everyone,

I’m pleased to announce that Julia 1.0 support just landed on Gadfly.jl :sparkles:. Gadfly is the native Julia grammar of graphics plotting library that is particularly well suited to 2D statistical plots :chart_with_upwards_trend::bar_chart:, but can do a lot more. We have a nice gallery of what’s possible here: http://gadflyjl.org/latest/gallery/geometries.html

It would be great for everyone who uses Gadfly and wants to help us battle test our 1.0 support to give the master branch a spin. On Julia 1.0 it should be as easy as

julia> using Pkg
julia> pkg"add Compose#master"
julia> pkg"add Gadfly#master"

I hope you enjoy and please report any bugs to our issues page

Finally, I would like to especially thank @bjarthur, @Mattriks, @nalimilan, @andreasnoack and many others for the herculean effort to get the Gadfly stack working on Julia 1.0.

23 Likes

related: Beta Gadfly available for 1.0 - #5 by jonathanBieler

1 Like

Shoot, I didn’t realize that Ben already posted about it. Sorry for the spam.

Orly?, because I have errors on trying to compile the thing. Pretty miserable right now.

julia> using Gadfly
[ Info: Precompiling Gadfly [c91e804a-d5a3-530f-b6f0-dfbca275c004]
ERROR: LoadError: syntax: try without catch or finally
Stacktrace:
 [1] include at .\boot.jl:317 [inlined]
 [2] include_relative(::Module, ::String) at .\loading.jl:1038
 [3] include(::Module, ::String) at .\sysimg.jl:29
 [4] top-level scope at none:2
 [5] eval at .\boot.jl:319 [inlined]
 [6] eval(::Expr) at .\client.jl:389
 [7] top-level scope at .\none:3
in expression starting at C:\Users\u\.julia\packages\Compose\y7cU7\src\Co
mpose.jl:207
ERROR: LoadError: Failed to precompile Compose [a81c6b42-2e10-5240-aca2-a61377ec
d94b] to C:\Users\u\.julia\compiled\v1.0\Compose\sbiEw.ji.
Stacktrace:
 [1] error(::String) at .\error.jl:33
 [2] macro expansion at .\logging.jl:313 [inlined]
 [3] compilecache(::Base.PkgId, ::String) at .\loading.jl:1184
 [4] _require(::Base.PkgId) at .\logging.jl:311
 [5] require(::Base.PkgId) at .\loading.jl:852
 [6] macro expansion at .\logging.jl:311 [inlined]
 [7] require(::Module, ::Symbol) at .\loading.jl:834
 [8] include at .\boot.jl:317 [inlined]
 [9] include_relative(::Module, ::String) at .\loading.jl:1038
 [10] include(::Module, ::String) at .\sysimg.jl:29
 [11] top-level scope at none:2
 [12] eval at .\boot.jl:319 [inlined]
 [13] eval(::Expr) at .\client.jl:389
 [14] top-level scope at .\none:3
in expression starting at C:\Users\u\.julia\packages\Gadfly\p8TXc\src\Gad
fly.jl:7
ERROR: Failed to precompile Gadfly [c91e804a-d5a3-530f-b6f0-dfbca275c004] to C:\
Users\u\.julia\compiled\v1.0\Gadfly\DvECm.ji.
Stacktrace:
 [1] error(::String) at .\error.jl:33
 [2] macro expansion at .\logging.jl:313 [inlined]
 [3] compilecache(::Base.PkgId, ::String) at .\loading.jl:1184
 [4] _require(::Base.PkgId) at .\logging.jl:311
 [5] require(::Base.PkgId) at .\loading.jl:852
 [6] macro expansion at .\logging.jl:311 [inlined]
 [7] require(::Module, ::Symbol) at .\loading.jl:834

I just had the same error earlier today, the fix was to add Compose at master, i.e. ]add Compose#master

BTW, an occasion to say a big thanks, Gadfly is so far the only plotting package besides UnicodePlots that I’m able to install on my system!!

2 Likes

As this error suggests, the problem is with Compose’s precompilation since the latest tagged version doesn’t support 1.0.

I mention in the OP above that you need both Compose and Gadfly master for this to work for now until we tag both packages.

Indeed, but I added Compose#master and then Gadfly#master.
Then I see this error.

That shouldn’t be happening because that error is from an old version of Compose. Maybe it’s still loading the old version somehow?

Can you give the output of Pkg.status()?

With the following from Pkg.status()

...
  [a81c6b42] Compose v0.6.1+ #master (https://github.com/GiovineItalia/Compose.jl.git)
...
  [c91e804a] Gadfly v0.8.0+ #master (https://github.com/GiovineItalia/Gadfly.jl.git)
  ...

I’m getting error regarding No deps.jl file could be found. Please try running Pkg.build("Arpack"). And Arpack won’t build either.

Can you try to run:

using Pkg
pkg"dev Compose"
pkg"dev Gadfly"

It might be that it’s not grabbing the lastest versions of master.

or pkg"resolve"

Still the same error with Arpack

Error: Error building `Arpack`: 
│ ┌ Warning: Could not extract the platform key of https://github.com/JuliaLinearAlgebra/ArpackBuilder/releases/download/v3.5.0-0.2.20/ArpackBuilder.x86_64-linux-gnu.tar.gz; continuing...

It is working fine on my Win10 64bit computer with Julia 1.0. I followed the following steps

  1. ] add Compose#master
  2. add Gadfly#master
  3. build Gadfly
    4 .using Gadfly

I’m on x86 linux, maybe that makes a difference

(v1.0) pkg> build Gadfly
  Building Arpack ──────────→ `~/.julia/packages/Arpack/WP3ru/deps/build.log`
┌ Error: Error building `Arpack`: 
│ ┌ Warning: Could not extract the platform key of https://github.com/JuliaLinearAlgebra/ArpackBuilder/releases/download/v3.5.0-0.2.20/ArpackBuilder.x86_64-linux-gnu.tar.gz; continuing...
│ └ @ BinaryProvider ~/.julia/packages/BinaryProvider/UTYxu/src/Prefix.jl:224
│ ERROR: LoadError: LibraryProduct(nothing, ["libarpack"], :libarpack, "Prefix(/home/akako/.julia/packages/Arpack/WP3ru/deps/usr)") is not satisfied, cannot generate deps.jl!
│ Stacktrace:
│  [1] #write_deps_file#134(::Bool, ::Function, ::String, ::Array{LibraryProduct,1}) at /home/akako/.julia/packages/BinaryProvider/UTYxu/src/Products.jl:409
│  [2] write_deps_file(::String, ::Array{LibraryProduct,1}) at /home/akako/.julia/packages/BinaryProvider/UTYxu/src/Products.jl:396
│  [3] top-level scope at none:0
│  [4] include(::String) at ./client.jl:388
│  [5] top-level scope at none:0
│ in expression starting at /home/akako/.julia/packages/Arpack/WP3ru/deps/build.jl:40
└ @ Pkg.Operations /build/julia/src/julia/usr/share/julia/stdlib/v1.0/Pkg/src/Operations.jl:1068

I think this is the bug FS#59741 : [julia] random julia packages provide precompiled binaries depending on undocumented gcc version , and solution is probably use the official binary.
Also here Build error on Julia 1.0 and Ubuntu 16.04 · Issue #33 · JuliaLinearAlgebra/Arpack.jl · GitHub

That’s almost certainly https://github.com/JuliaLinearAlgebra/Arpack.jl/issues/5 that you’re running into (basically the new BinaryBuilder seems to take the very annoying position that Julia packages with binary dependencies should never use OS-provided libraries). That thread has some workarounds; I’m working around it currently by literally copying libarpack.so.2.0.0 into the appropriate location in the Arpack.jl deps folder.

1 Like

That’s annoying but okay let’s wait for an official fix.