/obs-build

OBS build script, can be used with OBS or stand alone

Primary LanguagePerlGNU General Public License v2.0GPL-2.0

This repository provides the build tool to build binary packages in a a safe and reproducible way. It can be used standalone or within the Open Build Service (OBS).

Latest packages for obs-build are available from openSUSE:Tools downloads.

Documentation is available here

Supported build environments

Unsecure

  • chroot
  • LXC

Secure but with limited reproducibility

  • docker
  • nspawn

Secure and with full reproducibility

  • KVM
  • XEN
  • ZVM (S390)

Experimental support

In addition, there is currently experimental support for

For hardware emulation there are

  • qemu, which runs a QEMU system emulator. This can be considered also secure and reproducible. It requires a kernel image as part of the build config.
  • The "emulator" VM can be used to run builds using any other emulator via a wrapper script.
  • A QEMU user land emulation is also possible. This would give higher speed, but requires a preparation inside of the base distribution for this mode.

Supported build formats

Major distribution package formats

Image formats

  • DockerfileDocker container via docker or podman tooling)
  • kiwi appliances—This includes a long list of formats supported by the kiwi tool From live USB stick images, network deployment images, VM images to docker containers
  • SUSE Product—SUSE product media builds
  • SimpleImagechroot tar ball based on rpm spec file syntax
  • Debian Livebuild
  • Preinstallimages—for speeding up builds esp. inside of OBS
  • OBS Product Builds, to generate rpm-md trees and installable images.

Desktop Image formats

  • AppImage
  • FlatPak
  • Snapcraft

Special modes and formats

  • debbuild: build debian debs from rpm spec files
  • debbootstrap: debian builds using debootstrap as the engine
  • mock: rpm spec file build using mock
  • collax: debian package variation
  • fissile: docker images based on BOSH dev releases
  • helm: helm charts
  • modulemd: modulemd rpm-md extensions

Use the --help option for more information.