Skip to content

Open Build Service

Links to current build channels:

Maintaining the builds

There are package builds by distribution which are organized as follows:

  • RPM-style distribution: build steps in sfizz.spec
  • Deb-style distribution: build steps in debian.rules, metadata in other files debian.* and sfizz.dsc
  • Arch-style distribution: build steps in PKGBUILD

This organization is mostly explained in the OBS user manual.

Depend on the target distribution, the package is splitted into multiple subpackages.

  • RPM: sfizz, libsfizz0, libsfizz0-devel
  • DEB: sfizz, libsfizz0, libsfizz0-dev

The sfizz package contains the LV2 and JACK programs. They are statically linked, so they do not have a dependency to libsfizz0.

From OBS documentation, it's not clarified how to make Debian package splits. This is accomplished by specifying multiple Package entries in debian.control, and listing them again in the Binary field of sfizz.dsc.

The service

The OBS packages contain a _service file at the root.

The goal of this file is to tell the builder to perform a series of operations before starting to build. The purpose can be to download the remote source archive, or to set the version of the package which is built.

  • tar_scm: This clones the git repo and packs the result into a tarball, which makes it a source file of the build. (this service is marked obsolete, but some target platforms don't allow the newer, so it's kept back on purpose)
  • recompress: Applies compression on the created tarball to turn it into tar.gz or other
  • set_version: Sets version in the package build files. The version number can be explicit, otherwise it can be created based on the git revision.
  • download_url: Download a source file based on URL, and keep it in cache.
  • [verify_file]: Apply a check based on hash to the downloaded file.

Note: when committing, I can be required to install some OBS services on the local machine. At least on Arch, they are available in AUR as packages obs-service-*.

Updating the develop channel

The develop channel is triggered by a Github webhook on push. It's fully automatic, and does not need update.

Updating the stable channel

The stable channel contains a _service file that applies a version number automatically into the build files. To update, it's only needed to edit the _service file and none other.

This is the example service of sfizz 1.2.1. To update it's just needed to change the version 1.2.1 everywhere and update the file checksum.

  <service name="set_version">
    <param name="version">1.2.1</param>
  <service name="download_url">
    <param name="protocol">https</param>
    <param name="host"></param>
    <param name="path">sfztools/sfizz/releases/download/1.2.1/sfizz-1.2.1.tar.gz</param>
  <service name="verify_file">
    <param name="file">_service:download_url:sfizz-1.2.1.tar.gz</param>
    <param name="verifier">sha256</param>
    <param name="checksum">5a4af23b2a4f1646aaa208d1e71adcf1e706dd6375c4e898b6e49592d85ac298</param>