• Stars
    star
    387
  • Rank 110,971 (Top 3 %)
  • Language
    Julia
  • License
    Other
  • Created over 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Binary Dependency Builder for Julia

BinaryBuilder

Build Status codecov.io

"Yea, though I walk through the valley of the shadow of death, I will fear no evil"

Quickstart

  1. Install BinaryBuilder
using Pkg; Pkg.add("BinaryBuilder")
  1. Run the wizard.
using BinaryBuilder
BinaryBuilder.run_wizard()
  1. The wizard will take you through a process of building your software package. Note that the wizard may need to download a new compiler shard for each platform targeted, and there are quite a few of these, so a fast internet connection can be helpful. The output of this stage is a build_tarballs.jl file, which is most commonly deployed as a pull request to the community buildtree Yggdrasil. For experienced users, it is often more convenient to directly copy/modify an existing build_tarballs.jl file within Yggdrasil, then simply open a pull request where CI will test building the binary artifacts for all platforms again.

  2. The output of a build is a JLL package (typically hosted within the JuliaBinaryWrappers GitHub organization) which can be added to packages just like any other Julia package. The JLL package will export bindings for all products defined within the build recipe.

For more information, see the documentation for this package, viewable either directly in markdown within the docs/src folder within this repository, or online.

Philosophy

Building binary packages is a pain. BinaryBuilder follows a philosophy that is similar to that of building Julia itself; when you want something done right, you do it yourself. To that end, BinaryBuilder is designed from the ground up to facilitate the building of packages within an easily reproducible and reliable Linux environment, ensuring that the built libraries and executables are deployable to every platform that Julia itself will run on. Packages are cross-compiled using a sequence of shell commands, packaged up inside tarballs, and hosted online for all to enjoy. Package installation is merely downloading, verifying package integrity and extracting that tarball on the user's computer. No more compiling on user's machines. No more struggling with system package managers. No more needing sudo access to install that little mathematical optimization library.

All packages are cross compiled. If a package does not support cross compilation, we patch the package or, in extreme cases, rebundle prebuilt executables.

The cross-compilation environment that we use is a homegrown Linux environment with many different compilers built for it, including various versions of gcc, clang, gfortran, rustc and go. You can read more about this in the RootFS.md file within the Yggdrasil repository.

More Repositories

1

Yggdrasil

Collection of builder repositories for BinaryBuilder.jl
Fortran
295
star
2

Requires.jl

Lazy code loading for Julia
Julia
195
star
3

Preferences.jl

Project Preferences Package
Julia
129
star
4

ArtifactUtils.jl

A tool for package developers for working with artifacts.
Julia
61
star
5

Scratch.jl

Scratch spaces for all your persistent mutable data needs
Julia
58
star
6

BinDeps.jl

Tool for building binary dependencies for Julia modules
Julia
56
star
7

BinaryProvider.jl

A reliable binary provider for Julia
Julia
43
star
8

PkgServer.jl

Julia
42
star
9

RelocatableFolders.jl

Julia
39
star
10

Homebrew.jl

OSX Binary dependency provider for Julia
Julia
27
star
11

JLLPrefixes.jl

Make yourself at home; JLLs are here to stay
Julia
22
star
12

WinRPM.jl

RPM-md processing library
Julia
21
star
13

BinaryBuilder2.jl

BinaryBuilder2 monorepo
Julia
14
star
14

CMake.jl

Julia package to provide access to CMake
Julia
13
star
15

OutputCollectors.jl

Capture subprocess stdout and stderr streams independently, resynthesizing and colorizing the streams appropriately
Julia
13
star
16

PkgServerLogAnalysis.jl

Log analysis prototyping
Julia
12
star
17

BinaryBuilderBase.jl

Julia
11
star
18

CMakeWrapper.jl

Build CMake packages from Julia
Julia
11
star
19

JLLWrappers.jl

Julia
8
star
20

MetadataTools.jl

Functionality to analyze the structure of Julia's METADATA repository
Julia
5
star
21

SimpleBufferStream.jl

What Base.BufferStream should be
Julia
4
star
22

cloneallpackages

Script to clone all registered Julia packages (useful to search for code usage)
Julia
4
star
23

JLLTools.jl

Tools for creating JLL wrappers
Julia
3
star
24

CondaBinDeps.jl

Conda BinDeps provider for Julia
Julia
3
star
25

Archspec.jl

Julia
3
star
26

PkgLicenses.jl

Provides LICENSE texts for common software licenses
Julia
2
star
27

binarybuilder.org

A website for BinaryBuilder.jl
CSS
2
star
28

Nix.jl

Nix package manager for Julia
Julia
1
star
29

PkgServerS3Mirror

PkgServer with an S3Mirror attached
Makefile
1
star
30

Jotunheimr

Testing, miniaturized buildtree 🌴
Shell
1
star
31

Spack.jl

1
star