# Request For Help: BinaryBuilder for Gtk and Cairo

**URL:** <https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418>\
**Category:** Internals & Design\
**Created:** [August 14, 2018, 6:13am UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418 "2018-08-14T06:13:22Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![tobias.knopp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tobias.knopp/32/7551_2.png) [@tobias.knopp](https://discourse.julialang.org/u/tobias.knopp)\
**Post date:** [August 14, 2018, 6:13am UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/1 "2018-08-14T06:13:22Z")

</div>

This is a request for help. Might there somebody interested in helping to provide a BinaryBuilder for Gtk and Cairo? Regularly I would say lets better solve the Homebrew issues on Mac but it seems to me that BinaryBuilder will be the future.

@sdanisch started working on a BinaryBuilder for Cairo [https://github.com/JuliaGraphics/Cairo.jl/pull/229](https://github.com/JuliaGraphics/Cairo.jl/pull/229) which could be a good starting point. For me it is important that this will work hand in hand with a BinaryBuilder for Gtk.

Unfortunately I will not have the time (and experience) working on this myself. I put a lot of energy in upgrading Gtk.jl and Winston.jl to Julia 0.7 which are now working (despite the Homebrew installation issue on Mac). In Gtk there are still things preventing it to work on 1.0 and this will be what I will focus on.

I don’t know who to ask but still I ping some people who might be interested @jameson @Keno @staticfloat @jonathanBieler.

---

<div class="post-metadata">

**Author:** ![jonathanBieler](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@jonathanBieler](https://discourse.julialang.org/u/jonathanBieler)\
**Post date:** [August 14, 2018, 7:40am UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/2 "2018-08-14T07:40:42Z")

</div>

I never used BinaryBuilder but I might give it a try, I’ve tried reinstalling the last Gtk on v0.7 but I’m getting the infamous fontconfig issue.

---

<div class="post-metadata">

**Author:** ![tobias.knopp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tobias.knopp/32/7551_2.png) [@tobias.knopp](https://discourse.julialang.org/u/tobias.knopp)\
**Post date:** [August 14, 2018, 7:44am UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/3 "2018-08-14T07:44:14Z")

</div>

There is a manual fix for that. See in the Cairo.jl issues.

---

<div class="post-metadata">

**Author:** ![lobingera](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lobingera/32/211_2.png) [@lobingera](https://discourse.julialang.org/u/lobingera)\
**Post date:** [August 14, 2018, 9:01am UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/4 "2018-08-14T09:01:33Z")

</div>

Thanks Tobias to raise this. To put it into context: To make this happen, ALL dependencies of Gtk and Cairo (and Pango and Fontconfig and FreeType2 etc.) need proper builds and in the libcairo case this goes as far as X11/XCB (which btw is actually not soo complicated) and into glib which seems to have a showstopper in gettext (for Windows). Read as: some coordination will be needed and some help by Pkg (dependency tracking for binaries).

It looks manageable, but it clearly not a single-person actitvity (or how many linux distributions do you know, that are run single-person?).

---

<div class="post-metadata">

**Author:** ![tobias.knopp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tobias.knopp/32/7551_2.png) [@tobias.knopp](https://discourse.julialang.org/u/tobias.knopp)\
**Post date:** [August 14, 2018, 9:15am UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/5 "2018-08-14T09:15:35Z")

</div>

Yes absolutely, I also think the we first should fix the Homebrew issue first (please anybody) but if the people behind `BinDeps` move over to `BinaryBuilder` we should also prepare the move. To motivate people behind `BinaryBuilder` even more: I would say that Gtk/Cairo could be the stress-test for `BinaryBuilder`. If building these things in a compatible way is possible (cross-platform! Using the quarz backend on Mac) then `BinaryBuilder` is really the future.

---

<div class="post-metadata">

**Author:** ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)\
**Post date:** [August 14, 2018, 12:47pm UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/6 "2018-08-14T12:47:30Z")

</div>

I can help only by complaining, sadly… 🙂 It would be nice to have Cairo working on Julia v1.0 soon, but I live in hope.

---

<div class="post-metadata">

**Author:** ![lobingera](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lobingera/32/211_2.png) [@lobingera](https://discourse.julialang.org/u/lobingera)\
**Post date:** [August 14, 2018, 2:01pm UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/7 "2018-08-14T14:01:56Z")

</div>

On linux + julia 1.0 doesn’t look like a problem. The workaround for fontconfig doesn’t work for you?

---

<div class="post-metadata">

**Author:** ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)\
**Post date:** [August 14, 2018, 2:40pm UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/8 "2018-08-14T14:40:56Z")

</div>

On Julia v1.0.0, Homebrew doesn’t work because of:

```julia
Error: Operation not permitted @ dir_s_mkdir - /Users/me/.julia/packages/Homebrew/l8kUw/deps/usr/Cellar
ERROR: failed process: Process(`/Users/me/.julia/packages/Homebrew/l8kUw/deps/usr/bin/brew reinstall fontconfig`, ProcessExited(1)) [1]

```

and Cairo doesn’t work because of:

```julia
┌ Error: Error building `Cairo`: 
│ ERROR: LoadError: syntax: misplaced assignment statement in "[libpng = library_dependency("png", aliases = ["libpng", "libpng-1.5.14", "libpng15", "libpng12.so.0", "libpng12"], 
runtime = false, group = group); pixman = library_dependency("pixman", aliases = ["libpixman",
 "libpixman-1", "libpixman-1-0", "libpixman-1.0"], depends = [libpng], runtime = false, group = group);
 libffi = library_dependency("ffi", aliases = ["libffi"], runtime = false, group = group); gettext =
 library_dependency("gettext", aliases = ["libintl", "preloadable_libintl", "libgettextpo"], os = :Unix, group
 = group); gobject = library_dependency("gobject", aliases = ["libgobject-2.0-0", "libgobject-2.0",
 "libgobject-2_0-0", "libgobject-2.0.so.0"], depends = [libffi, gettext], group = group); freetype =
 library_dependency("freetype", aliases = ["libfreetype"], runtime = false, group = group); fontconfig =
 library_dependency("fontconfig", aliases = ["libfontconfig-1", "libfontconfig", "libfontconfig.so.1"],
 depends = [freetype], runtime = false, group = group); cairo = library_dependency("cairo", aliases =
 ["libcairo-2", "libcairo", "libcairo.so.2", "libcairo2"], depends = [gobject, fontconfig, libpng], group =
 group, validate = validate_cairo_version); pango = library_dependency("pango", aliases = ["libpango
-1.0-0", "libpango-1.0", "libpango-1.0.so.0", "libpango-1_0-0"], group = group); pangocairo =
 library_dependency("pangocairo", aliases = ["libpangocairo-1.0-0", "libpangocairo-1.0", "libpangocairo
-1.0.so.0"], depends = [cairo], group = group); zlib = library_dependency("zlib", aliases = ["libzlib",
 "zlib1"], os = :Windows, group = group)]"
│ 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] include(::String) at ./client.jl:388
│ [5] top-level scope at none:0
│ in expression starting at /Users/me/.julia/packages/Cairo/NBtbd/deps/build.jl:19

```

and both have trouble with LibCURL:

```julia
Building LibCURL ─────────→ `~/.julia/packages/LibCURL/yT2TD/deps/build.log`
┌ Error: Error building `LibCURL`: 
│ WARNING: could not import Compat.is_windows into Main
│ ERROR: LoadError: UndefVarError: is_windows not defined

```

---

<div class="post-metadata">

**Author:** ![tobias.knopp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tobias.knopp/32/7551_2.png) [@tobias.knopp](https://discourse.julialang.org/u/tobias.knopp)\
**Post date:** [August 14, 2018, 2:46pm UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/9 "2018-08-14T14:46:28Z")

</div>

@cormullion: It is not advised to use Julia 1.0 at the moment. Just use 0.7. The error here is within LibCURL and needs to be fixed, but Cairo.jl can only wait at the moment.

---

<div class="post-metadata">

**Author:** ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)\
**Post date:** [August 14, 2018, 3:30pm UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/10 "2018-08-14T15:30:10Z")

</div>

Aye, I was replying to Andreas’ comment that v1.0 works on Linux. I got everything working on v0.7.

---

<div class="post-metadata">

**Author:** ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)\
**Post date:** [August 15, 2018, 8:18am UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/11 "2018-08-15T08:18:07Z")

</div>

With LibCURL now fixed, I can get everything working on version 1.0. (Celebration!)

---

<div class="post-metadata">

**Author:** ![tobias.knopp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tobias.knopp/32/7551_2.png) [@tobias.knopp](https://discourse.julialang.org/u/tobias.knopp)\
**Post date:** [August 15, 2018, 8:19am UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/12 "2018-08-15T08:19:45Z")

</div>

but the `syntax: misplaced assignment statement in ...` error is not fixed yet in Cairo. To what package are you referring to?

---

<div class="post-metadata">

**Author:** ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)\
**Post date:** [August 15, 2018, 11:50am UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/13 "2018-08-15T11:50:21Z")

</div>

The tests don’t seem to pick up that error…?

```julia
(v1.0) pkg> test Cairo
   Testing Cairo
    Status `/var/folders/0n/rxl1scks0f19tnxt9pgjcs_40000gp/T/tmp9bbRgJ/Manifest.toml`
  [9e28174c] BinDeps v0.8.9
  [b99e7846] BinaryProvider v0.4.1
  [e1450e63] BufferedStreams v1.0.0
  [159f3aea] Cairo v0.5.3
  [944b1d66] CodecZlib v0.5.0
  [3da002f7] ColorTypes v0.7.3
  [5ae59095] Colors v0.9.2 #master (https://github.com/JuliaGraphics/Colors.jl.git)
  [34da2185] Compat v1.0.1
  [864edb3b] DataStructures v0.11.0
  [5789e2e9] FileIO v1.0.1
  [53c48c17] FixedPointNumbers v0.5.2
  [a2bd30eb] Graphics v0.3.0
  [0862f596] HTTPClient v0.2.1
  [d9be37ee] Homebrew v0.7.0
  [033835bb] JLD2 v0.1.0
  [682c06a0] JSON v0.19.0
  [b27032c2] LibCURL v0.3.0
  [522f3ed2] LibExpat v0.4.2
  [2ec943e9] Libz v1.0.0
  [77ba4419] NaNMath v0.3.2
  [189a3867] Reexport v0.2.0
  [3bb67fe8] TranscodingStreams v0.8.0
  [30578b45] URIParser v0.4.0
  [c17dfb99] WinRPM v0.4.0
  [2a0f44e3] Base64 [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Base64`]
  [ade2ca70] Dates [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Dates`]
  [8bb1440f] DelimitedFiles [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/DelimitedFiles`]
  [8ba89e20] Distributed [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Distributed`]
  [b77e0a4c] InteractiveUtils [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/InteractiveUtils`]
  [76f85450] LibGit2 [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/LibGit2`]
  [8f399da3] Libdl [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Libdl`]
  [37e2e46d] LinearAlgebra [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/LinearAlgebra`]
  [56ddb016] Logging [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Logging`]
  [d6f4376e] Markdown [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Markdown`]
  [a63ad114] Mmap [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Mmap`]
  [44cfe95a] Pkg [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Pkg`]
  [de0858da] Printf [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Printf`]
  [3fa0cd96] REPL [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/REPL`]
  [9a3f8284] Random [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Random`]
  [ea8e919c] SHA [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/SHA`]
  [9e88b42a] Serialization [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Serialization`]
  [1a1011a3] SharedArrays [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/SharedArrays`]
  [6462fe0b] Sockets [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Sockets`]
  [2f01184e] SparseArrays [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/SparseArrays`]
  [10745b16] Statistics [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Statistics`]
  [8dfed614] Test [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Test`]
  [cf7118a7] UUIDs [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/UUIDs`]
  [4ec0a83e] Unicode [`/Applications/Julia-1.0.app/Contents/Resources/julia/bin/../share/julia/stdlib/v1.0/Unicode`]
Test Summary: | Pass Total
Image Surface | 7 7
Test Summary: | Pass Total
Conversions | 5 5
Test Summary: | Pass Total
TexLexer | 1 1
Test Summary: | Pass Total
Samples | 32 32
Test Summary: | Pass Total
Bitmap Painting | 6 6
Test Summary: | Pass Total
Vector Surfaces | 16 16
Test Summary: | Pass Total
Bitmap Surfaces | 3 3
Test Summary: | Pass Total
Assert/Status | 7 7
Test Summary: | Pass Total
reset_transform | 6 6
   Testing Cairo tests passed

```

---

<div class="post-metadata">

**Author:** ![tobias.knopp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tobias.knopp/32/7551_2.png) [@tobias.knopp](https://discourse.julialang.org/u/tobias.knopp)\
**Post date:** [August 15, 2018, 11:59am UTC](https://discourse.julialang.org/t/request-for-help-binarybuilder-for-gtk-and-cairo/13418/14 "2018-08-15T11:59:41Z")

</div>

ok, this seems not to be a fresh build, where you would have got errors. You might have build with Julia 0.7 and then it will also work in Julia 1.0.

Anyway. I have fixed this upstream and once [https://github.com/JuliaLang/METADATA.jl/pull/16867](https://github.com/JuliaLang/METADATA.jl/pull/16867) is merged everyone can get Cairo working on 1.0. Just on Mac the Homebrew issues remain.
