- test BEFORE (
src_test) and AFTER (
- test if and how services break if they are not reloaded
- test buildsystem configuration
- sandbox enforces strict and consistent build rules
- benchmarking with different compilation flags and libraries versions/releases
We can test across Cartesian product of different configuration settings, like:
- USE flags
- CFLAGS, CXXFLAGS, CPPFLAGS, LDFAGS, RUSTFLAGS, etc.
- arches (cross-compilation or run in qemu)
- static linking
- supported releases & versions of libraries (eg. glibc & musl)
Also, we could create diffs of installed files across different merges.
- mini overlay with ::gentoo or any other (eg. company's own) as master
- record VCS (eg. git) hash of the dependent overlays
- grab dependencies from binhosts
- distribute built binaries (maybe upload to a company's own artifacts server)
- make AppImages
How do we run this?
Do we want to write a proper tool, which we probably do or do we just run Portage + shells scripts?
Do we want to run under root, user, in eprefix, maybe all in docker?
.portci directory contains the configuration.
Instead of using Ansible, Python, Yaml or Scheme we might use something similar to this for simple configuration, or if gets merged to upstream Portage the better.
Worth mentioning is the idea from Michał Górny who proposes to configure portage with toml files, like the example given in the bug report.
1 2 3 4 5 6 7 8
[package.unmask] ~virtual/libcrypt-2 [package.use.mask] sys-libs/libxcrypt -system -split-usr [package.use.force] sys-libs/glibc -crypt
package.x + Toml == a match made in heaven, it looks very nice!