[Rpm-maint] [rpm-software-management/rpm] The --noprep option executes %mkbuilddir which breaks %generate_buildrequires in Mock (Issue #3120)

Pavel Raiskup notifications at github.com
Wed May 22 13:32:02 UTC 2024


I hit this accidentally with `rpm-build-4.19.91-1.fc41.x86_64` (not yet build in Rawhide, or already untagged, not sure). Happened to me when I was reproducing [FTBFS against a Copr project that contained that pre-release version](https://bugzilla.redhat.com/show_bug.cgi?id=2279987).

Mock runs, at when all the dynamic build deps are resolved and installed, `rpmbuild --noprep ...`, just to not necessarily re-do the same (potentially expensive) step again.  The problem is that `--noprep` still executes the `%mkbuilddir`:

```
+ umask 022
+ cd /builddir/build/BUILD/argparse-manpage-4.5-build
+ test -d /builddir/build/BUILD/argparse-manpage-4.5-build
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w /builddir/build/BUILD/argparse-manpage-4.5-build
+ /usr/bin/rm -rf /builddir/build/BUILD/argparse-manpage-4.5-build
...
```

So the `argparse-manpage-4.5-build` directory is removed, but not recreated, because `--noprep`.

**To Reproduce**

Use the pre-release 4.19.91 version of RPM in mock chroot to build any package with %generate_buildrequires.

```
copr mock-config @python/python3.13 fedora-rawhide-x86_64 > /tmp/python3.13.cfg
mock -r /tmp/python3.13.cfg package-using-generate-buildrequires.src.rpm
```
You need [Mock v5.3+](https://rpm-software-management.github.io/mock/Release-Notes-5.3) that has this optimization.

**Expected behavior**

The `rpmbuild --noprep` shouldn't execute `%mkbuilddir`?  Have a new option `--nomkbuilddir`?  I'm not sure.

**Output**

```
setting SOURCE_DATE_EPOCH=1716336000
Executing(%mkbuilddir): /bin/sh -e /var/tmp/rpm-tmp.J1UIqb
+ umask 022
+ cd /builddir/build/BUILD/argparse-manpage-4.5-build
+ test -d /builddir/build/BUILD/argparse-manpage-4.5-build
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w /builddir/build/BUILD/argparse-manpage-4.5-build
+ /usr/bin/rm -rf /builddir/build/BUILD/argparse-manpage-4.5-build
+ /usr/bin/mkdir -p /builddir/build/BUILD/argparse-manpage-4.5-build
+ /usr/bin/mkdir -p /builddir/build/BUILD/argparse-manpage-4.5-build/SPECPARTS
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.AMDAIv
+ umask 022
+ cd /builddir/build/BUILD/argparse-manpage-4.5-build
+ cd argparse-manpage-4.5
/var/tmp/rpm-tmp.AMDAIv: line 34: cd: argparse-manpage-4.5: No such file or directory

RPM build errors:
error: Bad exit status from /var/tmp/rpm-tmp.AMDAIv (%generate_buildrequires)
```

**Environment**
 - OS / Distribution: Fedora 40, Fedora Rawhide in-chroot
 - Version: 4.19.1.1-1 on host, 4.19.91-1.fc41 in-chroot

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/3120
You are receiving this because you are subscribed to this thread.

Message ID: <rpm-software-management/rpm/issues/3120 at github.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rpm.org/pipermail/rpm-maint/attachments/20240522/b9d9daec/attachment.html>


More information about the Rpm-maint mailing list