]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
packit: Move fmf metadata into upstream 35700/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 20 Dec 2024 14:34:13 +0000 (15:34 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 5 Jan 2025 22:21:36 +0000 (23:21 +0100)
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

.packit.yml
test/fmf/.fmf/version [new file with mode: 0644]
test/fmf/integration-tests/main.fmf [new file with mode: 0644]
test/fmf/integration-tests/test.sh [new file with mode: 0755]
test/fmf/plans/ci.fmf [new file with mode: 0644]

index 2dcc9e86ca448483d84bf1f80ea160bd8a569802..eef6e48fcf8d1d73d0d291d1e2ac348a4197c110 100644 (file)
@@ -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 (file)
index 0000000..d00491f
--- /dev/null
@@ -0,0 +1 @@
+1
diff --git a/test/fmf/integration-tests/main.fmf b/test/fmf/integration-tests/main.fmf
new file mode 100644 (file)
index 0000000..a1686c0
--- /dev/null
@@ -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 (executable)
index 0000000..51cbab6
--- /dev/null
@@ -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 (file)
index 0000000..3e2a16b
--- /dev/null
@@ -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