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
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 )
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.