Add --noclean and --nocheck options to rpmbuild
authorPanu Matilainen <pmatilai@redhat.com>
Thu, 2 Aug 2012 08:49:48 +0000 (11:49 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Wed, 3 Oct 2012 07:12:49 +0000 (10:12 +0300)
- Ability to skip %clean build stage was requested as RhBug:756531,
  --nocheck seems otherwise useful to have as %check can take a lot of
  time, time you might not want to spend for a trivial spec change or such.
(cherry picked from commit 12f9b3f9e6b35e5ad2f9edd4e112d6495756a562)

doc/rpmbuild.8
rpmbuild.c

index b45a926..5406f4d 100644 (file)
@@ -33,6 +33,7 @@ rpmbuild \- Build RPM Package(s)
 
  [\fB--buildroot \fIDIRECTORY\fB\fR] [\fB--clean\fR] [\fB--nobuild\fR]
  [\fB--rmsource\fR] [\fB--rmspec\fR] [\fB--short-circuit\fR]
+ [\fB--noclean\fR] [\fB--nocheck\fR]
  [\fB--target \fIPLATFORM\fB\fR]
 
 .SH "DESCRIPTION"
@@ -157,6 +158,12 @@ Remove the build tree after the packages are made.
 \fB--nobuild\fR
 Do not execute any build stages. Useful for testing out spec files.
 .TP
+\fB--noclean\fR
+Do not execute %clean build stage even if present in spec.
+.TP
+\fB--nocheck\fR
+Do not execute %check build stage even if present in spec.
+.TP
 \fB--nodeps\fR
 Do not verify build dependencies.
 .TP
index bbe94ce..4fb4289 100644 (file)
@@ -53,6 +53,7 @@ static int noDeps = 0;                        /*!< from --nodeps */
 static int shortCircuit = 0;           /*!< from --short-circuit */
 static char buildMode = 0;             /*!< Build mode (one of "btBC") */
 static char buildChar = 0;             /*!< Build stage (one of "abcilps ") */
+static rpmBuildFlags nobuildAmount = 0;        /*!< Build stage disablers */
 static ARGV_t build_targets = NULL;    /*!< Target platform(s) */
 
 static void buildArgCallback( poptContext con,
@@ -182,6 +183,11 @@ static struct poptOption rpmBuildPoptTable[] = {
        N_("generate package header(s) compatible with (legacy) rpm v3 packaging"),
        NULL},
 
+ { "noclean", '\0', POPT_BIT_SET, &nobuildAmount, RPMBUILD_CLEAN,
+       N_("do not execute %clean stage of the build"), NULL },
+ { "nocheck", '\0', POPT_BIT_SET, &nobuildAmount, RPMBUILD_CHECK,
+       N_("do not execute %check stage of the build"), NULL },
+
  { "nolang", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, POPT_NOLANG,
        N_("do not accept i18N msgstr's from specfile"), NULL},
  { "rmsource", '\0', 0, 0, POPT_RMSOURCE,
@@ -563,6 +569,7 @@ int main(int argc, char *argv[])
            ba->buildAmount |= RPMBUILD_CLEAN;
            ba->buildAmount |= RPMBUILD_RMBUILD;
        }
+       ba->buildAmount &= ~(nobuildAmount);
 
        while ((pkg = poptGetArg(optCon))) {
            char * specFile = NULL;
@@ -610,6 +617,7 @@ int main(int argc, char *argv[])
            ba->buildAmount |= RPMBUILD_PACKAGESOURCE;
            break;
        }
+       ba->buildAmount &= ~(nobuildAmount);
 
        while ((pkg = poptGetArg(optCon))) {
            ba->rootdir = rpmcliRootDir;