]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
mkosi: Work around regression in opensuse rpm 4.20 release
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 7 Feb 2025 10:37:34 +0000 (11:37 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 8 Feb 2025 06:51:06 +0000 (15:51 +0900)
The rpm 4.20 release introduces the following downstream
change in /usr/lib/rpm/macros:

```
%buildroot              %{_builddir}/%{NAME}-%{VERSION}-build/BUILDROOT
```

This definition is broken as rpm internally does the following
since 4.20 to calculate the buildroot:

```
char *bn = rpmExpand("%{NAME}-%{VERSION}-build", NULL);
/* Tilde and caret in paths are evil, convert to underscores */
for (char *t = bn; *t; t++) {
    if (*t == '^' || *t == '~')
        *t = '_';
    }
```

This has broken our upstream opensuse CI builds in systemd as
we do the following to fetch the list of unpackaged files by the rpm build:

```
rpmbuild
...
--define "__check_files sh -c '$(rpm --define "_topdir /var/tmp" --eval %__check_files) | tee /tmp/unpackaged-files'"
...
```

which stopped working because the check files script tries
to look for unpackaged files in the "/var/tmp/BUILD/systemd-258~devel-build/BUILDROOT"
directory (%buildroot) whereas it should be looking in "/var/tmp/BUILD/systemd-258_devel-build/BUILDROOT".

Let's remove the %buildroot compat definition until the bug is
addressed in opensuse tumbleweed.

(cherry picked from commit facc03dc973cc9051c2bde16d7084296e862c0e0)

mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot

index d672c316471438a516a8a999abaabda32b51003e..e2a0561bb0d54a6042484fd78b05283204d95f0b 100755 (executable)
@@ -60,6 +60,11 @@ fi
 # TODO: Drop when the spec is fixed (either the patch is adapted or not applied when building for upstream).
 sed --in-place '/0009-pid1-handle-console-specificities-weirdness-for-s390.patch/d' "pkg/$PKG_SUBDIR${GIT_SUBDIR:+/$GIT_SUBDIR}/systemd.spec"
 
+# TODO: Drop when https://bugzilla.opensuse.org/show_bug.cgi?id=1236901 is resolved.
+sed '/%buildroot/d' /usr/lib/rpm/macros >macros
+mount --bind "$PWD/macros" /usr/lib/rpm/macros
+rm macros
+
 build() {
     IFS=
     # shellcheck disable=SC2046