Skip to content

Cerbero CI enhancements

This is a series of enhancement to cerbero that where needed or planned for GitLab CI integration. In this patch set you will find:

1. Allow loading the config without perl being installed

Obvious bug, we should not have to bootstrap in order to bootstrap.

2. Install ccache in the bootstraps

Not sure, I can probably move this to the docker creation.

3. Add a -y / --assume-yes option to bootstrap

This is to tell the package installer yes, don't ask, this is needed to boostrap in docker in docker.

4. Add s --system-only mode to bootstrap

This way we can boostrap the system without building the build-tools. This is also to limit how often we recreate the dockers and/or to avoid doing useless build-tool builds while creating the docker.

5. Libunwind fixes

The variant implementation was not used properly in the GStreamer receipe. I also have issues on Fedora 29 building this, the autotool stuff complains about version miss-match (so I added an autoreconf).

6. Relocation

One side effect of Gitlab CI being run in multiple projects is that each build will happen in a different folder. This is really annoying since most stuff we build is not easily relocatable. First thing I fixed is the recipes relocation. This one is totally safe, we basically just re-do the hash and compare when a recipe of the same name have changed path. There is also an attempt to relocate the cache in fetch-cache feature, though it works for everything except for gettex, for which the path is hardcoded into the tool and I didn't find a way to override it.

7. Add local_sources to the build-tools config

The config when building the build-tools is a stripped down version of the main config. This simply keep the local_sources directory so we don't endup with sources in $HOME.

8. Manifest and self update

This already existed in the current CI as a side script. I have simply integrated it into cerbero. One extra feature is that two recipes with the same git repo will use the same rev. Also, you don't need to map the recipe name and the repo anymore. There is a also a command to let cerbero-uninstalled updated itself base on the manifest.

9. build-deps command

This is a relatively simple command that allow building the dependencies of a set of recipes without these recipes being build. This is use to pre-build everything that only changes upon cerbero changes. This will be stored as an artifact and re-used to speed-up other buils.

10. git.get_hash improvement

This method was nearly unused, but I needed it. I have ported it to rev-parse, which is more reliable and removed the trailing new line.

Related to gstreamer-project#36 (closed)

cc @nirbheek @alatiera @thiblahute

Merge request reports