From a68a2e50578347384bb2f1b08314d8bf7026b9bc Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Tue, 26 Apr 2022 18:08:14 +0300 Subject: [PATCH] Fix regressions on dynamic buildrequires cli switches (RhBug:2078744) This effectively reverts commits b8935fb23518e26aa7b9316d27f2565813d20291 and ad8b9bd2ca93cf4319680f056bb40bfc24661991 and separating -br and -bd from the normal build flow: these are so different from regular builds and in particular, have special semantics wrt --nodeps that trying to cram them into the normal flow only makes it far harder to read and understand. --- rpmbuild.c | 24 ++++++++++++++++-------- tests/rpmbuild.at | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/rpmbuild.c b/rpmbuild.c index de78976ff..abe164e32 100644 --- a/rpmbuild.c +++ b/rpmbuild.c @@ -663,16 +663,12 @@ int main(int argc, char *argv[]) /* fallthrough */ case 'f': ba->buildAmount |= RPMBUILD_CONF; - if ((buildChar == 'f') && shortCircuit) - break; - /* fallthrough */ - case 'r': - case 'd': ba->buildAmount |= RPMBUILD_BUILDREQUIRES; - ba->buildAmount |= RPMBUILD_DUMPBUILDREQUIRES; - if (!noDeps) + if (!noDeps) { + ba->buildAmount |= RPMBUILD_DUMPBUILDREQUIRES; ba->buildAmount |= RPMBUILD_CHECKBUILDREQUIRES; - if ((buildChar == 'r' || buildChar == 'd') && shortCircuit) + } + if ((buildChar == 'f') && shortCircuit) break; /* fallthrough */ case 'p': @@ -681,6 +677,18 @@ int main(int argc, char *argv[]) case 'l': ba->buildAmount |= RPMBUILD_FILECHECK; break; + case 'r': + /* fallthrough */ + case 'd': + if (!shortCircuit) + ba->buildAmount |= RPMBUILD_PREP; + ba->buildAmount |= RPMBUILD_BUILDREQUIRES; + ba->buildAmount |= RPMBUILD_DUMPBUILDREQUIRES; + if (!noDeps) + ba->buildAmount |= RPMBUILD_CHECKBUILDREQUIRES; + if (buildChar == 'd') + break; + /* fallthrough */ case 's': ba->buildAmount |= RPMBUILD_PACKAGESOURCE; break; diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at index b7bd0d7f0..6142bb1ae 100644 --- a/tests/rpmbuild.at +++ b/tests/rpmbuild.at @@ -1707,6 +1707,38 @@ runroot rpmbuild \ ) AT_CLEANUP +# Test that -br creates an src.rpm on success +AT_SETUP([rpmbuild -br success]) +AT_KEYWORDS([build]) +AT_CHECK([ +RPMDB_INIT + +runroot rpmbuild \ + -br /data/SPECS/mini.spec +], +[0], +[Wrote: /build/SRPMS/mini-1-1.src.rpm +], +[], +) +AT_CLEANUP + +# Test that -br creates an src.rpm on success +AT_SETUP([rpmbuild -br success]) +AT_KEYWORDS([build]) +AT_CHECK([ +RPMDB_INIT + +runroot rpmbuild \ + -br /data/SPECS/mini.spec +], +[0], +[Wrote: /build/SRPMS/mini-1-1.src.rpm +], +[], +) +AT_CLEANUP + # ------------------------------ # Check dynamic build requires AT_SETUP([rpmbuild -bd with errors])