packit: Enable use_target_repo_for_fmf_url option (#36794)

Currently this is picked up from the main branch of the fork which is
suboptimal. The packit folks implemented this new option for us which
should fix the problem.
This commit is contained in:
Daan De Meyer
2025-03-20 09:24:41 +01:00
committed by GitHub
3 changed files with 34 additions and 74 deletions
+2
View File
@@ -19,6 +19,7 @@ actions:
post-upstream-clone:
# Use the Fedora Rawhide specfile
- git clone https://src.fedoraproject.org/rpms/systemd .packit_rpm --depth=1
- bash -c 'git -C .packit_rpm checkout "$(grep GIT_COMMIT= mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.conf | cut -d= -f2)"'
- bash -c 'echo "%bcond upstream 1" > .packit_rpm/systemd.spec.new'
- bash -c 'echo "%define meson_extra_configure_options --werror" >> .packit_rpm/systemd.spec.new'
- bash -c 'cat .packit_rpm/systemd.spec >> .packit_rpm/systemd.spec.new'
@@ -38,5 +39,6 @@ jobs:
trigger: pull_request
fmf_path: test/fmf
tmt_plan: ci
use_target_repo_for_fmf_url: true
targets:
- fedora-rawhide-x86_64
+3
View File
@@ -8,3 +8,6 @@ require:
- distribution-gpg-keys
- dnf
- git-core
- koji
- centos-packager
- copr-cli
+29 -74
View File
@@ -17,46 +17,25 @@ echo "Clock source: $(cat /sys/devices/system/clocksource/clocksource0/current_c
sysctl fs.inotify.max_user_watches=65536 || true
sysctl fs.inotify.max_user_instances=1024 || true
# Allow running the integration tests downstream in dist-git with something like
# the following snippet which makes the dist-git sources available in $TMT_SOURCE_DIR:
#
# summary: systemd Fedora test suite
# discover:
# how: fmf
# dist-git-source: true
# dist-git-install-builddeps: false
# prepare:
# - name: systemd
# how: install
# exclude:
# - systemd-standalone-.*
# execute:
# how: tmt
shopt -s extglob
if [[ -n "${TMT_SOURCE_DIR:-}" ]]; then
# Match either directories ending with branch names (e.g. systemd-fmf) or releases (e.g systemd-257.1).
pushd "$TMT_SOURCE_DIR"/systemd-+([0-9a-z.~])/
elif [[ -n "${PACKIT_TARGET_URL:-}" ]]; then
# Prepare systemd source tree
git clone "$PACKIT_TARGET_URL" systemd --branch "$PACKIT_TARGET_BRANCH"
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
if [[ -n "${KOJI_TASK_ID:-}" ]]; then
koji download-task --noprogress --arch="src,noarch,$(rpm --eval '%{_arch}')" "$KOJI_TASK_ID"
elif [[ -n "${CBS_TASK_ID:-}" ]]; then
cbs download-task --noprogress --arch="src,noarch,$(rpm --eval '%{_arch}')" "$CBS_TASK_ID"
elif [[ -n "${PACKIT_SRPM_URL:-}" ]]; then
COPR_BUILD_ID="$(basename "$(dirname "$PACKIT_SRPM_URL")")"
COPR_CHROOT="$(basename "$(dirname "$(dirname "$PACKIT_BUILD_LOG_URL")")")"
copr download-build --rpms --chroot "$COPR_CHROOT" "$COPR_BUILD_ID"
mv "$COPR_CHROOT"/* .
else
echo "Not running within packit or Fedora CI"
echo "Not running within packit and no CBS/koji task ID provided"
exit 1
fi
# Now prepare mkosi, possibly at the same version required by the systemd repo
mkdir systemd
rpm2cpio ./systemd-*.src.rpm | cpio --to-stdout --extract './systemd-*.tar.gz' | tar xz --strip-components=1 -C systemd
pushd systemd
# Now prepare mkosi at the same version required by the systemd repo.
git clone https://github.com/systemd/mkosi
mkosi_hash="$(grep systemd/mkosi@ .github/workflows/mkosi.yml | sed "s|.*systemd/mkosi@||g")"
git -C mkosi checkout "$mkosi_hash"
@@ -68,11 +47,19 @@ export PATH="$PWD/mkosi/bin:$PATH"
tee mkosi.local.conf <<EOF
[Distribution]
Release=${VERSION_ID:-rawhide}
Distribution=${MKOSI_DISTRIBUTION:-$ID}
Release=${MKOSI_RELEASE:-${VERSION_ID:-rawhide}}
[Content]
PackageDirectories=..
SELinuxRelabel=yes
[Build]
ToolsTreeDistribution=$ID
ToolsTreeRelease=${VERSION_ID:-rawhide}
ToolsTreeDistribution=${MKOSI_DISTRIBUTION:-$ID}
ToolsTreeRelease=${MKOSI_RELEASE:-${VERSION_ID:-rawhide}}
ToolsTreePackageDirectories=..
Environment=NO_BUILD=1
WithTests=yes
EOF
if [[ -n "${TEST_SELINUX_CHECK_AVCS:-}" ]]; then
@@ -82,35 +69,6 @@ KernelCommandLineExtra=systemd.setenv=TEST_SELINUX_CHECK_AVCS=$TEST_SELINUX_CHEC
EOF
fi
if [[ -n "${TESTING_FARM_REQUEST_ID:-}" ]]; then
tee --append mkosi.local.conf <<EOF
[Content]
SELinuxRelabel=yes
[Build]
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
WithTests=yes
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
fi
# 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
@@ -129,15 +87,12 @@ fi
# for now.
export TEST_SKIP="TEST-21-DFUZZER"
# 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 sandbox -- meson setup --buildtype=debugoptimized -Dintegration-tests=true build
mkosi genkey
mkosi -f sandbox -- meson compile -C build mkosi
mkosi -f sandbox -- \
mkosi -f
mkosi sandbox -- \
meson test \
-C build \
--no-rebuild \