Julia: Build tarballs for all platforms

Created on 23 Jun 2018  路  3Comments  路  Source: JuliaLang/julia

When using BinaryBuilder to build a package that links to libjulia itself (e.g. CxxWrap), it is currently difficult (or for 0.7 impossible) to cross-compile against the official Julia binaries, because .exe and .dmg are not easy to extract. This could be solved by providing logically-named tarballs for each platform, ideally all in the same directory and using the BinaryBuilder $target environment variable, so they could be downloaded in the build script using something like this:

curl -L 'https://julialang-s3.julialang.org/bin/tarballs/julia-0.6-$target.tar.gz' | tar -zx --strip-components=1

A detailed discussion of the kind of errors that appear with the current system is here:
https://github.com/JuliaInterop/libcxxwrap-julia/pull/5

CC @staticfloat

Most helpful comment

I have (finally) gotten around to doing this. I triggered some builds, which have uploaded tarballs (I'm only listing mac and windows builds, since those are the only ones which tarballs aren't usually generated for):

These will get automatically uploaded for each commit. Next, we just need someone to mirror these somewhere permanent (like GitHub releases), then create a JLL package with an Artifacts.toml pointing to those mirrored locations, and we're good to go.

All 3 comments

The natural progression is for us to:

  • Change make binary-dist to be consistent across all platforms; right now our packaging steps are a little fragmented across platforms (Linux: make binary-dist to make a .tar.gz, OSX: make app to make a .dmg, Windows: make win-extras followed by make binary-dist to make a .exe). We should have make exe or similar for windows packaging that automatically runs make win-extras and makes the .exe bundle. Then we can simplify make binary-dist to make a tarball no matter which platform you're running on.

  • Build tarball versions of Julia and host them somewhere convenient, for now.

  • Create a BinaryBuilder repository that can build Julia and use those for future needs of this kind. (This work is underway, but there is significant engineering effort that will be required before this truly comes to fruition)

In the meantime, @barche, it might not be a bad idea to create a little github repo that has the Julia releases you're interested in, manually extracted and repackaged into tarballs.

I have (finally) gotten around to doing this. I triggered some builds, which have uploaded tarballs (I'm only listing mac and windows builds, since those are the only ones which tarballs aren't usually generated for):

These will get automatically uploaded for each commit. Next, we just need someone to mirror these somewhere permanent (like GitHub releases), then create a JLL package with an Artifacts.toml pointing to those mirrored locations, and we're good to go.

I was tempted to close this, but it still seems that not all tarballs are generated in a consistent way. On 1.5.0, for example, armv7l seems to be missing ( see https://github.com/JuliaPackaging/Yggdrasil/pull/1439 )

Was this page helpful?
0 / 5 - 0 ratings