#!/bin/bash # SPDX-License-Identifier: LGPL-2.1-or-later set -e if [ "$1" = "build" ] || ((NO_BUILD)); then exit 0 fi # shellcheck source=/dev/null . "$BUILDROOT/usr/lib/os-release" if [ ! -f "pkg/$ID/systemd.spec" ]; then echo "spec not found at pkg/$ID/systemd.spec, run mkosi with -ff to make sure the spec is cloned" >&2 exit 1 fi for DEPS in --requires --buildrequires; do mkosi-chroot \ rpmspec \ --with upstream \ --query \ "$DEPS" \ --define "_topdir /var/tmp" \ --define "_sourcedir pkg/$ID" \ "pkg/$ID/systemd.spec" | grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev --regexp grubby --regexp sdubby | sort --unique | tee /tmp/buildrequires | xargs --delimiter '\n' mkosi-install done # rpmbuild -br tries to build a source package which means all source files have to exist which isn't the # case when using --build-in-place so we get rid of the source file that doesn't exist to make it happy. # TODO: Use -bd instead of -br and get rid of this once we don't need to build on CentOS Stream 9 anymore. sed '/Source0/d' --in-place "pkg/$ID/systemd.spec" until mkosi-chroot \ rpmbuild \ -br \ --build-in-place \ --with upstream \ --define "_topdir /var/tmp" \ --define "_sourcedir pkg/$ID" \ --define "_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" \ "pkg/$ID/systemd.spec" do EXIT_STATUS=$? if [ $EXIT_STATUS -ne 11 ]; then exit $EXIT_STATUS fi mkosi-chroot \ rpm \ --query \ --package \ --requires \ /var/tmp/SRPMS/systemd-*.buildreqs.nosrc.rpm | grep --invert-match '^rpmlib(' | sort --unique >/tmp/dynamic-buildrequires sort /tmp/buildrequires /tmp/dynamic-buildrequires | uniq --unique | tee --append /tmp/buildrequires | xargs --delimiter '\n' mkosi-install done