s6-rc: how to upgrade
Keywords: s6-rc installation upgrade

s6-rc
Software
skarnet.org

# Upgrade notes for s6-rc

As a general rule, if you change major versions, for instance if you upgrade from 0.1.0.0 to 0.2.1.2, you need to recompile your service databases, because the binary format is not guaranteed stable across major version changes. You can keep your compiled service databases across minor and bugfix version changes.

# What has changed in s6-rc

## in 0.6.1.1

- execline dependency bumped to 2.9.9.1.

## in 0.6.1.0

- skalibs dependency bumped to 2.15.0.0.
- execline dependency bumped to 2.9.9.0.
- s6 dependency bumped to 2.15.0.0.

## in 0.6.0.0

- skalibs dependency bumped to 2.14.5.1.
- execline dependency bumped to 2.9.8.1.
- s6 dependency bumped to 2.14.0.1.
- The macros in `s6-rc/config.h` have changed. `S6RC_LIVE_BASE` is now named `S6RC_LIVEDIR`, in addition to the new `S6RC_REPODIR` and `S6RC_BOOTDB`.
- Lots of new commands.

## in 0.5.6.0

- skalibs dependency bumped to 2.14.4.0.
- execline dependency bumped to 2.9.7.0.
- s6 dependency bumped to 2.13.2.0.

## in 0.5.5.0

- skalibs dependency bumped to 2.14.3.0.
- execline dependency bumped to 2.9.6.1.
- s6 dependency bumped to 2.13.1.0.
- New function: `s6rc_livedir_canon()`. (Used to factor functionality for a bugfix.)
- Static libraries are installed in `/usr/lib` by default.

## in 0.5.4.3

- skalibs dependency bumped to 2.14.2.0.
- execline dependency bumped to 2.9.6.0.
- s6 dependency bumped to 2.13.0.0.

## in 0.5.4.2

- skalibs dependency bumped to 2.14.0.0.
- execline dependency bumped to 2.9.4.0.
- s6 dependency bumped to 2.12.0.0.

## in 0.5.4.1

- execline dependency bumped to 2.9.2.1.

## in 0.5.4.0

- skalibs dependency bumped to 2.13.1.0.
- execline dependency bumped to 2.9.2.0.
- s6 dependency bumped to 2.11.3.0.

## in 0.5.3.3

- skalibs dependency bumped to 2.13.0.0.
- execline dependency bumped to 2.9.1.0.
- s6 dependency bumped to 2.11.2.0.

## in 0.5.3.2

- skalibs dependency bumped to 2.12.0.0.
- execline dependency bumped to 2.9.0.0.
- s6 dependency bumped to 2.11.1.0.

## in 0.5.3.1

- No functional changes.

## in 0.5.3.0

- skalibs dependency bumped to 2.11.1.0.
- execline dependency bumped to 2.8.2.0.
- s6 dependency bumped to 2.11.0.1.
- s6-rc-compile now reads service dependency information from the `dependencies.d` directory and bundle information from the `contents.d` directory, instead of the `dependencies` and `contents` flat files. The old format is still supported, but deprecated.

## in 0.5.2.3

- skalibs dependency bumped to 2.11.0.0.
- execline dependency bumped to 2.8.1.0.
- s6 dependency bumped to 2.11.0.0.

## in 0.5.2.2

- skalibs dependency bumped to 2.10.0.3.
- execline dependency bumped to 2.8.0.1.
- s6 dependency bumped to 2.10.0.3.

## in 0.5.2.1

- skalibs dependency bumped to 2.10.0.0.
- execline dependency bumped to 2.7.0.0.
- s6 dependency bumped to 2.10.0.0.

## in 0.5.2.0

- skalibs dependency bumped to 2.9.3.0.
- execline dependency bumped to 2.6.1.1.
- A new file, `flag-essential`, is now recognized in source definition directories for s6-rc-compile. It prevents a service from being brought down by `s6-rc -d change`. A new option, `-D`, has been added to s6-rc to still force such a service down.

## in 0.5.1.4

- No functional changes.

## in 0.5.1.3

- skalibs dependency bumped to 2.9.2.1.
- execline dependency bumped to 2.6.1.0.
- s6 dependency bumped to 2.9.2.0.

## in 0.5.1.2

- skalibs dependency bumped to 2.9.2.0.
- execline dependency bumped to 2.6.0.0.
- s6 dependency bumped to 2.9.1.0.

## in 0.5.1.1

- skalibs dependency bumped to 2.9.1.0.
- execline dependency bumped to 2.5.3.0.
- s6 dependency bumped to 2.9.0.1.

## in 0.5.1.0

- skalibs dependency bumped to 2.9.0.0.
- execline dependency bumped to 2.5.2.0.
- s6 dependency bumped to 2.9.0.0.

## in 0.5.0.0

- This is a major version update but the database format did not change, no need to recompile your service databases.
- skalibs dependency bumped to 2.8.0.0.
- execline dependency bumped to 2.5.1.0.
- s6 dependency bumped to 2.8.0.0.
- s6-rc-compile does not support the `-u` or `-g` options anymore; instead, at any time, the user who can operate an s6-rc database is the user who owns the supervision tree.
- Everything now builds as PIC by default no matter the toolchain's settings. Use the `--disable-all-pic` configure option to build executables and static libraries as non-PIC.
- The underlying s6 dependency needs a major version upgrade. It is recommended to first stop all your services, then upgrade s6 and s6-rc, then immediately restart your supervision tree, then start your services again. Failure to do so *will* cause issues if you're relying on s6-ftrigrd notifications (which is the case with services managed by s6-rc).

## in 0.4.1.0

- skalibs dependency bumped to 2.7.0.0.
- execline dependency bumped to 2.5.0.1.
- s6 dependency bumped to 2.7.2.0.
- The `max-death-tally` and `down-signal` files, used by recent versions of s6, are now supported by s6-rc in a longrun definition directory.

## in 0.4.0.1

- s6 dependency bumped to 2.7.1.0.

## in 0.4.0.0

- skalibs dependency bumped to 2.6.3.0.
- s6 dependency bumped to 2.6.2.0.
- s6-rc-compile now accepts multiple lines in a `consumer-for` file: a longrun can now have multiple producers, which means that pipelines are really funnels. The compiled databases are not compatible with previous versions, and the source databases are not compatible either, because the `pipeline-name` file must now be present in the definition of the final consumer of a pipeline, not in the definition of a first producer (to avoid ambiguity). Edit your databases and recompile them.
- New tool: s6-rc-format-upgrade

## in 0.3.0.1

- skalibs dependency bumped to 2.6.2.0.
- execline dependency bumped to 2.3.0.4.
- s6 dependency bumped to 2.6.2.0.
- New `-p` option to s6-rc-init to allow using several live directories with the same scandir.
- New command: `s6-rc diff`.
- s6-rc-compile now guarantees that service numbers do not change if the source database does not change. This is useful for updates to the database format. You should recompile your service databases in preparation for the switch to s6-rc-0.4.0.0.

## in 0.3.0.0

- skalibs dependency bumped to 2.6.0.1.
- execline dependency bumped to 2.3.0.3.
- s6 dependency bumped to 2.6.1.1.
- New `-p` option to s6-rc-init to allow using several live directories with the same scandir.
- New command: `s6-rc diff`.

## in 0.2.1.2

- skalibs dependency bumped to 2.6.0.0.
- execline dependency bumped to 2.3.0.2.
- s6 dependency bumped to 2.6.1.0.

## in 0.2.1.1

- No functional changes.

## in 0.2.1.0

- skalibs dependency bumped to 2.5.1.1.
- execline dependency bumped to 2.3.0.1.
- s6 dependency bumped to 2.6.0.0.
- s6-rc change now ensures that a longrun is down when its up transition fails.
- s6-rc change now kills subprocesses waiting on a longrun transition when it receives a SIGINT or a SIGTERM.

## in 0.2.0.1

- skalibs dependency bumped to 2.5.1.0.
- execline dependency bumped to 2.3.0.1.
- s6 dependency bumped to 2.5.1.0.

## in 0.2.0.0

- skalibs dependency bumped to 2.5.0.0.
- execline dependency bumped to 2.3.0.0.
- s6 dependency bumped to 2.5.0.0.
- s6-rc commands taking a lock on the live directory or the service database now fail instantly if the lock is already held. The new `-b` option makes them revert to the "block until the lock is released" behaviour.

## in 0.1.0.0

- skalibs dependency bumped to 2.4.0.0.
- execline dependency bumped to 2.2.0.0.
- s6 dependency bumped to 2.4.0.0.

## in 0.0.3.0

- skalibs dependency bumped to 2.3.10.0.
- execline dependency bumped to 2.1.5.0.
- s6 dependency bumped to 2.3.0.0.

## in 0.0.2.1

- s6 dependency bumped to 2.2.4.2.

## in 0.0.2.0

- Better exit codes for s6-rc-update.
- skalibs dependency bumped to 2.3.8.3.
- execline dependency bumped to 2.1.4.5.
- s6 dependency bumped to 2.2.4.0.

## in 0.0.1.5

- skalibs dependency bumped to 2.3.8.2.
- execline dependency bumped to 2.1.4.4.
- s6 dependency bumped to 2.2.3.1.

## in 0.0.1.4

- No functional changes.

## in 0.0.1.3

- No functional changes.

## in 0.0.1.2

- GNU make dependency pushed back to 3.81.
- skalibs dependency bumped to 2.3.8.0.
- execline dependency bumped to 2.1.4.2.
- s6 dependency bumped to 2.2.2.0.

## in 0.0.1.1

- skalibs dependency bumped to 2.3.7.1.
- execline dependency bumped to 2.1.4.1.
- s6 dependency bumped to 2.2.1.1.

## in 0.0.1.0

- Initial release.