All Projects → solus-project → solbuild

solus-project / solbuild

Licence: Apache-2.0 license
The Solus package build system

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to solbuild

Redo
Smaller, easier, more powerful, and more reliable than make. An implementation of djb's redo.
Stars: ✭ 1,589 (+1911.39%)
Mutual labels:  build-system
Mingw Builds
Scripts for building the dual-target(32 & 64 bit) MinGW-W64 compilers for 32 and 64 bit Windows
Stars: ✭ 145 (+83.54%)
Mutual labels:  build-system
Buildr
The (Java|Coffee)Script and (CSS|Less) (Builder|Bundler|Packer|Minifier|Merger|Checker)
Stars: ✭ 211 (+167.09%)
Mutual labels:  build-system
Please
High-performance extensible build system for reproducible multi-language builds.
Stars: ✭ 1,856 (+2249.37%)
Mutual labels:  build-system
Blt
A streamlined CMake build system foundation for developing HPC software
Stars: ✭ 135 (+70.89%)
Mutual labels:  build-system
Build
B2 makes it easy to build C++ projects, everywhere.
Stars: ✭ 182 (+130.38%)
Mutual labels:  build-system
Pants
The Pantsbuild developer workflow system
Stars: ✭ 1,814 (+2196.2%)
Mutual labels:  build-system
cmake-python-distributions
This project provides a `setup.py` script that build CMake Python wheels.
Stars: ✭ 93 (+17.72%)
Mutual labels:  build-system
Reggae
Build system in D, Python, Ruby, Javascript or Lua
Stars: ✭ 141 (+78.48%)
Mutual labels:  build-system
Rules haskell
Haskell rules for Bazel.
Stars: ✭ 196 (+148.1%)
Mutual labels:  build-system
Mmake
Mmake is a small program which wraps make to provide additional functionality, such as user-friendly help output, remote includes, and eventually more. It otherwise acts as a pass-through to standard make.
Stars: ✭ 1,593 (+1916.46%)
Mutual labels:  build-system
Style Dictionary
A build system for creating cross-platform styles.
Stars: ✭ 2,097 (+2554.43%)
Mutual labels:  build-system
Fpm
Fortran Package Manager (fpm)
Stars: ✭ 184 (+132.91%)
Mutual labels:  build-system
Blade Build
Blade is a powerful build system from Tencent, supports many mainstream programming languages, such as C/C++, java, scala, python, protobuf...
Stars: ✭ 1,722 (+2079.75%)
Mutual labels:  build-system
Scan Build
Clang's scan-build re-implementation in python
Stars: ✭ 224 (+183.54%)
Mutual labels:  build-system
Mill
Your shiny new Java/Scala build tool!
Stars: ✭ 1,667 (+2010.13%)
Mutual labels:  build-system
Bear
Bear is a tool that generates a compilation database for clang tooling.
Stars: ✭ 2,345 (+2868.35%)
Mutual labels:  build-system
help-center-docs
Solus's Help Center documentation as well as previous User Guide.
Stars: ✭ 50 (-36.71%)
Mutual labels:  solus
Build Harness
🤖Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more
Stars: ✭ 236 (+198.73%)
Mutual labels:  build-system
Dds
A C++ tool for a new decade
Stars: ✭ 194 (+145.57%)
Mutual labels:  build-system

solbuild

Report License

solbuild is a chroot based package build system, used to safely and efficiently build Solus packages from source, in a highly controlled and isolated environment. This tool succeeds the evobuild tool, originally in Evolve OS, which is now known as Solus. The very core concept of the layered builder has always remained the same, this is the next .. evolution.. of the tool.

tty

solbuild makes use of OverlayFS to provide a simple caching system, whereby a base image (provided by the Solus project) is used as the bottom-most, read-only layer, and changes are made in temporary upper layers. Currently the project provides two base images for the default profiles shipped with solbuild:

  • main-x86_64: Built using the stable Solus repositories, suitable for production deployments for shannon users.
  • unstable-x86_64: Built using the unstable Solus repositories, ideal for developers, and the Solus build machinery for the repo waterfall prior to shannon inclusion.

When building package.yml files (ypkg), the tool will also disable all networking within the environment, apart from the loopback device. This is intended to prevent uncontrolled build environments in which a package may be fetching external, unverified sources, during the build.

solbuild also allows developers to control the repositories used by configuring the profiles:

  • Remove any base image repo
  • Add any given repo, remote or local. Local repos are bind mounted and can be automatically indexed by solbuild.

solbuild performs heavy caching throughout, with source archives being stored in unique hash based directories globally, and the ccache being retained after each build through bind mounts. A single package cache is retained to speed up subsequent builds, and users may speed this up further by updating their base images.

As a last speed booster, solbuild allows you to perform builds in memory via the --tmpfs option.

Note: solbuild is designed in such a way that you do not need to be running Solus. You can build packages for Solus from any compatible host.

solbuild is a Solus project.

logo

Getting started

Solus Users

sudo eopkg up
sudo eopkg it solbuild

# If you only ever want to use the unstable repo by default
sudo eopkg it solbuild-config-unstable

Everyone else

git clone https://github.com/solus-project/solbuild.git
cd solbuild
make ensure_modules
make
sudo make install

You may wish to use the provided tarballs, which include vendored dependencies. Distributions are free to nuke the src/vendor directory from the distributed tarball and use their own golang dependencies if appropriate.

Initialising the root

Run the following command to fetch and install the base image. If you wish to change the profile, use the -p flag (unstable-x86_64 or main-x86_64) The -u flag will automatically update the image.

sudo solbuild init -u

Updating the image

# Update the default profile
sudo solbuild update

# Update a specific profile
sudo solbuild update unstable-x86_64

Building packages

# Build the first package found in the current directory
sudo solbuild build

# Build a specific path
sudo solbuild build ../mypackages/package.yml

# Build for unstable profile
sudo solbuild -p unstable-x86_64 build

See the solbuild help command for more details, or solbuild(1) manpage.

Requirements

  • golang (tested with 1.7.4)
  • libgit2 (Also require git at runtime for submodules)
  • curl command

Your kernel must support the overlayfs filesystem. Git is required as solbuild supports the git| source type of ypkg files. Additionally, solbuild will try to generate a package changelog from the git history where the YPKG file is found. This is used within Solus to create a changelog dynamically from the git tags, and automatically marking security updates, etc.

License

Copyright © 2016-2017 Solus Project

solbuild is available under the terms of the Apache-2.0 license

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].