Skip to main content

xbstrap: Build system for OS distributions

xbstrap is a build system designed to build "distributions" consisting of multiple (usually many) packages. It does not replace neither make and ninja nor autoconf, automake, meson or cmake and similar utilities. Instead, xbstrap is intended to invoke those build systems in the correct order, while respecting inter-package dependencies.

Official Discord server: https://discord.gg/7WB6Ur3

Installation

xbstrap is available from PyPI. To install it using pip, use:

pip3 install xbstrap

Basic usage

See the boostrap-managarm repository for an example bootstrap.yml file.

Installing all tools (that run on the build system) is done using:

xbstrap install-tool --all

Installing all packages to a sysroot (of the host system):

xbstrap install --all

It is often useful to rebuild specific packages. Rebuilding package foobar can be done by:

xbstrap install --rebuild foobar

If the configure script shall be run again, use instead:

xbstrap install --reconfigure foobar

Local development

When developing xbstrap, you must install your local copy instead of the one provided by the pip repositories. To do this, run:

pip install --user -e .

Development with Docker

For containerized builds, most xbstrap commands will run in two stages: once on the host, then again on the container to actually execute the build steps. Therefore, installing xbstrap locally (as shown above) is not sufficient in this case.

In addition, you must change your Dockerfile so that instead of grabbing xbstrap from the pip repositories, it installs from the host:

  1. Add the following lines (replace /local-xbstrap at your convenience):
ADD xbstrap /local-xbstrap
RUN pip3 install -e /local-xbstrap
  1. Copy or symlink your local xbstrap into the same folder that contains the Dockerfile, so that it can be accessed by the previous step.
  2. Rebuild the docker container as usual.

Enabling the pre-commit hook for linting (optional)

To avoid running into the CI complaining about formatting, linting can be done in a pre-commit hook. To enable this, run:

git config core.hooksPath .githooks

Metadata

Release files for xbstrap 0.37

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xbstrap 0.37
File Size Uploaded Provenance Actions
xbstrap-0.37.tar.gz 57.2 kB Without provenance Details for xbstrap-0.37.tar.gz

Release files / xbstrap-0.37.tar.gz

Download URL xbstrap-0.37.tar.gz
Size 57.2 kB
Tags Source
SHA-256 checksum
How to use checksums
46c0bde7789459bc67d4eabc941a9771c77ed8037fa68d44c48d70f8c798aece
BLAKE2b-256 checksum
How to use checksums
7d80cd3206f9538ca6ac8e39306ea5efad17871f269bffe43df30ff873c616ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for xbstrap 0.37

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.37 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page