systemd/0081-packit-Move-fmf-metadata-into-upstream.patch
Jan Macku e20fafc72a systemd-257-3
Resolves: RHEL-44417, RHEL-71409, RHEL-72798
2025-01-08 09:25:36 +01:00

184 lines
5.4 KiB
Diff

From 3fd7ff599719852113fee64b2dc124493c3b53dc Mon Sep 17 00:00:00 2001
From: Daan De Meyer <daan.j.demeyer@gmail.com>
Date: Fri, 20 Dec 2024 15:34:13 +0100
Subject: [PATCH] packit: Move fmf metadata into upstream
This moves https://src.fedoraproject.org/tests/systemd into upstream
so it's one less moving piece that we need to remember. While we're at
it, do various cleanups as well:
- Remove non-packit logic
- Set NO_BUILD in mkosi.local.conf as it's not picked up from the
process environment
- Don't set unused environment variables
- Remove workdir logic as we run in an ephemeral VM already
- Drop --verbose from meson test to reduce noise
from passed tests
- Use mkosi sandbox and drop duplicated deps from metadata file
- Stop running the unit tests as they already run as part of the rpm
build and as part of the integration tests.
- Various style fixes
(cherry picked from commit b0b88f18b3237704d1f6d5b3dcb533367816ce23)
---
.packit.yml | 3 +-
test/fmf/.fmf/version | 1 +
test/fmf/integration-tests/main.fmf | 10 ++++
test/fmf/integration-tests/test.sh | 88 +++++++++++++++++++++++++++++
test/fmf/plans/ci.fmf | 12 ++++
5 files changed, 112 insertions(+), 2 deletions(-)
create mode 100644 test/fmf/.fmf/version
create mode 100644 test/fmf/integration-tests/main.fmf
create mode 100755 test/fmf/integration-tests/test.sh
create mode 100644 test/fmf/plans/ci.fmf
diff --git a/.packit.yml b/.packit.yml
index 2dcc9e86ca..eef6e48fcf 100644
--- a/.packit.yml
+++ b/.packit.yml
@@ -57,8 +57,7 @@ jobs:
- job: tests
trigger: pull_request
- fmf_url: https://src.fedoraproject.org/tests/systemd
- fmf_ref: main
+ fmf_path: test/fmf
tmt_plan: ci
targets:
- fedora-rawhide-x86_64
diff --git a/test/fmf/.fmf/version b/test/fmf/.fmf/version
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/test/fmf/.fmf/version
@@ -0,0 +1 @@
+1
diff --git a/test/fmf/integration-tests/main.fmf b/test/fmf/integration-tests/main.fmf
new file mode 100644
index 0000000000..a1686c09c3
--- /dev/null
+++ b/test/fmf/integration-tests/main.fmf
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+summary: Run the upstream integration test suite
+test: ./test.sh
+duration: 2h
+require:
+ - coreutils
+ - distribution-gpg-keys
+ - dnf
+ - git-core
diff --git a/test/fmf/integration-tests/test.sh b/test/fmf/integration-tests/test.sh
new file mode 100755
index 0000000000..51cbab6ec9
--- /dev/null
+++ b/test/fmf/integration-tests/test.sh
@@ -0,0 +1,88 @@
+#!/bin/bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+set -eux
+set -o pipefail
+
+# Switch SELinux to permissive, since the tests don't set proper contexts
+setenforce 0
+
+# Prepare systemd source tree
+git clone "$PACKIT_TARGET_URL" systemd
+pushd systemd
+# If we're running in a pull request job, merge the remote branch into the current main
+if [[ -n "${PACKIT_SOURCE_URL:-}" ]]; then
+ git remote add pr "${PACKIT_SOURCE_URL:?}"
+ git fetch pr "${PACKIT_SOURCE_BRANCH:?}"
+ git merge "pr/$PACKIT_SOURCE_BRANCH"
+fi
+git log --oneline -5
+popd
+
+# Now prepare mkosi, possibly at the same version required by the systemd repo
+git clone https://github.com/systemd/mkosi
+# If we have it, pin the mkosi version to the same one used by Github Actions, to ensure consistency
+if [ -f .github/workflows/mkosi.yml ]; then
+ mkosi_hash="$(grep systemd/mkosi@ .github/workflows/mkosi.yml | sed "s|.*systemd/mkosi@||g")"
+ git -C mkosi checkout "$mkosi_hash"
+fi
+
+export PATH="$PWD/mkosi/bin:$PATH"
+
+pushd systemd
+
+# shellcheck source=/dev/null
+. /etc/os-release || . /usr/lib/os-release
+
+tee mkosi.local.conf <<EOF
+[Distribution]
+Release=${VERSION_ID:-rawhide}
+
+[Build]
+ToolsTreeDistribution=$ID
+ToolsTreeRelease=${VERSION_ID:-rawhide}
+ToolsTreeSandboxTrees=
+ /etc/yum.repos.d/:/etc/yum.repos.d/
+ /var/share/test-artifacts/:/var/share/test-artifacts/
+SandboxTrees=
+ /etc/yum.repos.d/:/etc/yum.repos.d/
+ /var/share/test-artifacts/:/var/share/test-artifacts/
+Environment=NO_BUILD=1
+EOF
+
+cat /etc/dnf/dnf.conf
+cat /etc/yum.repos.d/*
+
+# Ensure packages built for this test have highest priority
+echo -e "\npriority=1" >> /etc/yum.repos.d/copr_build*
+
+# Disable mkosi's own repository logic
+touch /etc/yum.repos.d/mkosi.repo
+
+# TODO: drop once BTRFS regression is fixed in kernel 6.13
+sed -i "s/Format=btrfs/Format=ext4/" mkosi.repart/10-root.conf
+
+# If we don't have KVM, skip running in qemu, as it's too slow. But try to load the module first.
+modprobe kvm || true
+if [[ ! -e /dev/kvm ]]; then
+ export TEST_NO_QEMU=1
+fi
+
+# Create missing mountpoint for mkosi sandbox.
+mkdir -p /etc/pacman.d/gnupg
+
+mkosi summary
+mkosi -f sandbox true
+mkosi -f sandbox meson setup --buildtype=debugoptimized -Dintegration-tests=true build
+mkosi genkey
+mkosi -f sandbox meson compile -C build mkosi
+mkosi -f sandbox \
+ meson test \
+ -C build \
+ --no-rebuild \
+ --suite integration-tests \
+ --print-errorlogs \
+ --no-stdsplit \
+ --num-processes "$(($(nproc) - 1))"
+
+popd
diff --git a/test/fmf/plans/ci.fmf b/test/fmf/plans/ci.fmf
new file mode 100644
index 0000000000..3e2a16bc89
--- /dev/null
+++ b/test/fmf/plans/ci.fmf
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+summary: systemd Fedora test suite
+discover:
+ how: fmf
+prepare:
+ - name: systemd
+ how: install
+ exclude:
+ - systemd-standalone-.*
+execute:
+ how: tmt