From 24a0df5c3ce01f26e833fe843ac2a2eb3499af7c Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 4 Feb 2022 11:10:33 +0000 Subject: [PATCH] mkosi: Add centos_epel config Now that mkosi has centos-stream 9 support, let's add a config in the repo so that the mkosi CI tests that configuration as well. Centos doesn't support btrfs so we use xfs instead. For some reason, building --hostonly-initrd centos images breaks the qemu boot so I disabled that option for centos. We update the mkosi commit hash to https://github.com/systemd/mkosi/commit/0dd39c20a4b3a2fab6efdc54da92bffad7c7b7ca which adds the PowerTools repo to CentOS Stream 8 which is required to make all the necessary packages required to build systemd on CentOS Stream 8 available. --- .github/workflows/mkosi.yml | 45 ++++++++-- .../centos_epel/10-mkosi.centos_epel | 86 +++++++++++++++++++ 2 files changed, 122 insertions(+), 9 deletions(-) create mode 100644 mkosi.default.d/centos_epel/10-mkosi.centos_epel diff --git a/.github/workflows/mkosi.yml b/.github/workflows/mkosi.yml index f24c313622f..54b5aac4ccd 100644 --- a/.github/workflows/mkosi.yml +++ b/.github/workflows/mkosi.yml @@ -31,25 +31,46 @@ jobs: strategy: fail-fast: false matrix: - distro: - - arch - - debian - - ubuntu - - fedora - - opensuse + include: + - distro: arch + release: rolling + - distro: debian + release: testing + - distro: ubuntu + release: focal + - distro: fedora + release: "35" + - distro: opensuse + release: tumbleweed + - distro: centos_epel + release: 8-stream + # TODO: Enable once https://github.com/systemd/mkosi/pull/915#issuecomment-1049035316 is fixed. + # - distro: centos_epel + # release: 9-stream steps: - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 - - uses: systemd/mkosi@30288805db1a953ea31045933adb93194f91e3da + - uses: systemd/mkosi@0dd39c20a4b3a2fab6efdc54da92bffad7c7b7ca - name: Install run: sudo apt-get update && sudo apt-get install --no-install-recommends python3-pexpect python3-jinja2 - name: Configure - run: echo -e "[Distribution]\nDistribution=${{ matrix.distro }}\n" >mkosi.default + run: | + tee mkosi.default <<- EOF + [Distribution] + Distribution=${{ matrix.distro }} + Release=${{ matrix.release }} + + [Content] + Environment=CI_BUILD=1 + + [Output] + KernelCommandLine=${{ env.KERNEL_CMDLINE }} + EOF - name: Build ${{ matrix.distro }} - run: ./.github/workflows/run_mkosi.sh --build-environment=CI_BUILD=1 --kernel-command-line "${{ env.KERNEL_CMDLINE }}" build + run: ./.github/workflows/run_mkosi.sh build - name: Show ${{ matrix.distro }} image summary run: ./.github/workflows/run_mkosi.sh summary @@ -60,8 +81,14 @@ jobs: - name: Check ${{ matrix.distro }} systemd-nspawn run: ./.github/workflows/run_mkosi.sh shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }" + # TODO: Remove CentOS exclusion once Ubuntu 22.04 is available in GA. + # See https://github.com/systemd/systemd/pull/22417 and https://github.com/systemd/mkosi/pull/907 for + # more information. + - name: Boot ${{ matrix.distro }} QEMU + if: ${{ matrix.distro != 'centos_epel' }} run: ./.github/workflows/run_mkosi.sh qemu - name: Check ${{ matrix.distro }} QEMU + if: ${{ matrix.distro != 'centos_epel' }} run: ./.github/workflows/run_mkosi.sh shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }" diff --git a/mkosi.default.d/centos_epel/10-mkosi.centos_epel b/mkosi.default.d/centos_epel/10-mkosi.centos_epel new file mode 100644 index 00000000000..cf6c74f01ce --- /dev/null +++ b/mkosi.default.d/centos_epel/10-mkosi.centos_epel @@ -0,0 +1,86 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +# This is a settings file for OS image generation using mkosi (https://github.com/systemd/mkosi). +# Symlink this file to mkosi.default in the project root directory and invoke "mkosi" to build an OS image. + +[Distribution] +Distribution=centos_epel + +[Output] +Format=gpt_xfs +HostonlyInitrd=no + +[Packages] +BuildPackages= + diffutils + docbook-style-xsl + findutils + gcc + gettext + git + glibc-minimal-langpack + gnu-efi + gnu-efi-devel + gperf + lz4 + meson + ninja-build + pam-devel + # CentOS Stream 8 libgcrypt-devel doesn't ship a pkg-config file. + libgcrypt-devel + pkgconfig + pkgconfig(audit) + pkgconfig(blkid) + pkgconfig(bzip2) + pkgconfig(dbus-1) + pkgconfig(fdisk) + pkgconfig(gnutls) + pkgconfig(libacl) + pkgconfig(libcap) + pkgconfig(libcryptsetup) + pkgconfig(libcurl) + pkgconfig(libdw) + pkgconfig(libidn2) + pkgconfig(libkmod) + pkgconfig(liblz4) + pkgconfig(liblzma) + pkgconfig(libmicrohttpd) + pkgconfig(libpcre2-8) + pkgconfig(libqrencode) + pkgconfig(libseccomp) + pkgconfig(libselinux) + pkgconfig(libzstd) + pkgconfig(mount) + pkgconfig(openssl) + pkgconfig(p11-kit-1) + pkgconfig(pwquality) + pkgconfig(tss2-esys) + pkgconfig(tss2-mu) + pkgconfig(tss2-rc) + pkgconfig(valgrind) + pkgconfig(xkbcommon) + python3dist(jinja2) + python3dist(lxml) + rpm + tree + zstd + /usr/bin/xsltproc + +Packages= + gdb + nano + # procps-ng provides a set of useful utilities (ps, free, etc) + procps-ng + strace + tpm2-tss + less + netcat + e2fsprogs + # Required to run systemd-networkd-tests.py + python3 + iproute + iproute-tc + dnsmasq + wireguard-tools + dhcp-server + kernel-modules-extra