No description
Find a file
David Rheinsberg 58d368df0d osbuild: unify libdir handling
We want to run stages and other scripts inside of the nspawn containers
we use to build pipelines. Since our pipelines are meant to be
self-contained, this should imply that the build-root must have osbuild
installed. However, this has not been the case so far for several
reasons including:

  1. OSBuild is not packaged for all the build-roots we want to support
     and thus we have the chicken-and-egg problem.

  2. During testing and development, we want to support using a local
     `libdir`.

  3. We already provide an API to the container. Importing scripts from
     the outside just makes this API bigger, but does not change the
     fact that build-roots are not self-contained. Same is true for the
     running kernel, and probably much more..

With all this in mind, our strategy probably still is to eventually
package osbuild for the build-root. This would significantly reduce our
API exposure, points-of-failure, and host-reliance. However, this switch
might still be some weeks out.

With this in mind, though, we can expect the ideal setup to have a full
osbuild available in the build-root. Hence, any script we import so far
should be able to access the entire `libdir`. This commit unifies the
libdir handling by installing the symlinks into `libdir` and providing
a single bind-mount of the module-path into `libdir`.

We can always decide to scratch that in the future when we scratch the
libdir-import from the host-root. Until then, I believe this commit
nicely unifies the way we import the module both in a local checkout as
well as in the container.
2020-04-21 13:44:43 +02:00
.github/workflows ci: pylint all the things 2020-04-20 18:58:26 +02:00
assemblers 🐎 Use more CPUs for xz with qemu 2020-04-17 18:39:42 +02:00
docs osbuild: add --output-directory=DIR 2020-04-15 15:40:17 +02:00
jenkins 🤏 Add a little bit more testing 2020-04-09 16:35:08 +02:00
osbuild osbuild: unify libdir handling 2020-04-21 13:44:43 +02:00
runners osbuild: unify libdir handling 2020-04-21 13:44:43 +02:00
samples samples: fix grub2-legacy in base-qcow2 2020-04-20 18:58:53 +02:00
schemas schema: add json-schema describing our manifest 2020-03-07 13:43:24 +01:00
sources osbuild: unify libdir handling 2020-04-21 13:44:43 +02:00
stages stages/fstab: support for using fs labels 2020-04-20 18:59:27 +02:00
test test: drop unused arguments 2020-04-20 18:58:26 +02:00
.editorconfig editorconfig: add one matching current style 2019-12-13 18:15:08 +01:00
.gitignore .gitignore: remove old ignored directory 2020-03-06 11:57:17 +01:00
.pylintrc pylint: disable too-many-arguments rule 2019-07-24 12:55:48 +02:00
.travis.yml ci: import runtime tests to github actions 2020-03-24 16:08:24 +01:00
LICENSE Revert "Fill in the license template" 2019-11-18 12:23:10 +01:00
Makefile build: fix makefile comments 2020-04-15 18:21:03 +02:00
NEWS.md NEWS: add v12 entry 2020-04-15 18:21:03 +02:00
osbuild.spec osbuild: unify libdir handling 2020-04-21 13:44:43 +02:00
README.md docs: refactor README 2020-03-02 21:34:09 +01:00
setup.py 12 2020-04-15 20:19:36 +02:00
tree-diff tools/tree-diff: strip NULL character from selinux xattr 2019-10-08 21:39:35 +02:00

OSBuild

Build-Pipelines for Operating System Artifacts

OSBuild is a pipeline-based build system for operating system artifacts. It defines a universal pipeline description and a build system to execute them, producing artifacts like operating system images, working towards an image build pipeline that is more comprehensible, reproducible, and extendable.

See the osbuild(1) man-page for details on how to run osbuild, the definition of the pipeline description, and more.

Project

Requirements

The requirements for this project are:

  • python >= 3.7
  • systemd-nspawn >= 244

Additionally, the built-in stages require:

  • bash >= 5.0
  • coreutils >= 8.31
  • curl >= 7.68
  • qemu-img >= 4.2.0
  • rpm >= 4.15
  • tar >= 1.32
  • util-linux >= 235

At build-time, the following software is required:

  • python-docutils >= 0.13
  • pkg-config >= 0.29

Build

The standard python package system is used. Consult upstream documentation for detailed help. In most situations the following commands are sufficient to build and install from source:

python setup.py build
python setup.py install --skip-build --root=/

The man-pages require python-docutils and can be built via:

rst2man docs/<input-file>.rst <output-file>

Repository:

License:

  • Apache-2.0
  • See LICENSE file for details.