rpm/testmode.diff

135 lines
4.4 KiB
Diff

Do not run pre/posttrans scripts in test mode
Index: lib/transaction.c
===================================================================
--- lib/transaction.c.orig
+++ lib/transaction.c
@@ -1747,7 +1747,7 @@ rpmMessage(RPMMESS_DEBUG, _("sanity chec
/* Run pre-transaction scripts, but only if there are no known
* problems up to this point. */
- if (!((rpmtsFlags(ts) & RPMTRANS_FLAG_BUILD_PROBS)
+ if (!((rpmtsFlags(ts) & (RPMTRANS_FLAG_BUILD_PROBS|RPMTRANS_FLAG_TEST))
|| (ts->probs->numProblems &&
(okProbs == NULL || rpmpsTrim(ts->probs, okProbs))))) {
rpmMessage(RPMMESS_DEBUG, _("running pre-transaction scripts\n"));
@@ -2476,68 +2476,70 @@ assert(psm != NULL);
if (rollbackOnFailure && rollbackTransaction != NULL)
rollbackTransaction = rpmtsFree(rollbackTransaction);
- rpmMessage(RPMMESS_DEBUG, _("running post-transaction scripts\n"));
- pi = rpmtsiInit(ts);
- while ((p = rpmtsiNext(pi, TR_ADDED)) != NULL) {
- int haspostscript;
+ if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_TEST)) {
+ rpmMessage(RPMMESS_DEBUG, _("running post-transaction scripts\n"));
+ pi = rpmtsiInit(ts);
+ while ((p = rpmtsiNext(pi, TR_ADDED)) != NULL) {
+ int haspostscript;
- if ((fi = rpmtsiFi(pi)) == NULL)
- continue; /* XXX can't happen */
+ if ((fi = rpmtsiFi(pi)) == NULL)
+ continue; /* XXX can't happen */
- haspostscript = (fi->posttrans != NULL ? 1 : 0);
- p->fi = rpmfiFree(p->fi);
+ haspostscript = (fi->posttrans != NULL ? 1 : 0);
+ p->fi = rpmfiFree(p->fi);
- /* If no post-transaction script, then don't bother. */
- if (!haspostscript)
- continue;
+ /* If no post-transaction script, then don't bother. */
+ if (!haspostscript)
+ continue;
- p->fd = ts->notify(p->h, RPMCALLBACK_INST_OPEN_FILE, 0, 0,
- rpmteKey(p), ts->notifyData);
- p->h = NULL;
- if (rpmteFd(p) != NULL) {
- rpmVSFlags ovsflags = rpmtsVSFlags(ts);
- rpmVSFlags vsflags = ovsflags | RPMVSF_NEEDPAYLOAD;
- rpmRC rpmrc;
- ovsflags = rpmtsSetVSFlags(ts, vsflags);
- rpmrc = rpmReadPackageFile(ts, rpmteFd(p),
- rpmteNEVR(p), &p->h);
- vsflags = rpmtsSetVSFlags(ts, ovsflags);
- switch (rpmrc) {
- default:
- p->fd = ts->notify(p->h, RPMCALLBACK_INST_CLOSE_FILE,
- 0, 0, rpmteKey(p), ts->notifyData);
- p->fd = NULL;
- /*@switchbreak@*/ break;
- case RPMRC_NOTTRUSTED:
- case RPMRC_NOKEY:
- case RPMRC_OK:
- /*@switchbreak@*/ break;
+ p->fd = ts->notify(p->h, RPMCALLBACK_INST_OPEN_FILE, 0, 0,
+ rpmteKey(p), ts->notifyData);
+ p->h = NULL;
+ if (rpmteFd(p) != NULL) {
+ rpmVSFlags ovsflags = rpmtsVSFlags(ts);
+ rpmVSFlags vsflags = ovsflags | RPMVSF_NEEDPAYLOAD;
+ rpmRC rpmrc;
+ ovsflags = rpmtsSetVSFlags(ts, vsflags);
+ rpmrc = rpmReadPackageFile(ts, rpmteFd(p),
+ rpmteNEVR(p), &p->h);
+ vsflags = rpmtsSetVSFlags(ts, ovsflags);
+ switch (rpmrc) {
+ default:
+ p->fd = ts->notify(p->h, RPMCALLBACK_INST_CLOSE_FILE,
+ 0, 0, rpmteKey(p), ts->notifyData);
+ p->fd = NULL;
+ /*@switchbreak@*/ break;
+ case RPMRC_NOTTRUSTED:
+ case RPMRC_NOKEY:
+ case RPMRC_OK:
+ /*@switchbreak@*/ break;
+ }
}
- }
- if (rpmteFd(p) != NULL) {
- p->fi = rpmfiNew(ts, p->h, RPMTAG_BASENAMES, 1);
- if (p->fi != NULL) /* XXX can't happen */
- p->fi->te = p;
+ if (rpmteFd(p) != NULL) {
+ p->fi = rpmfiNew(ts, p->h, RPMTAG_BASENAMES, 1);
+ if (p->fi != NULL) /* XXX can't happen */
+ p->fi->te = p;
/*@-compdef -usereleased@*/ /* p->fi->te undefined */
- psm = rpmpsmNew(ts, p, p->fi);
+ psm = rpmpsmNew(ts, p, p->fi);
/*@=compdef =usereleased@*/
assert(psm != NULL);
- psm->scriptTag = RPMTAG_POSTTRANS;
- psm->progTag = RPMTAG_POSTTRANSPROG;
- xx = rpmpsmStage(psm, PSM_SCRIPT);
- psm = rpmpsmFree(psm);
+ psm->scriptTag = RPMTAG_POSTTRANS;
+ psm->progTag = RPMTAG_POSTTRANSPROG;
+ xx = rpmpsmStage(psm, PSM_SCRIPT);
+ psm = rpmpsmFree(psm);
/*@-noeffectuncon -compdef -usereleased @*/
- (void) ts->notify(p->h, RPMCALLBACK_INST_CLOSE_FILE, 0, 0,
- rpmteKey(p), ts->notifyData);
+ (void) ts->notify(p->h, RPMCALLBACK_INST_CLOSE_FILE, 0, 0,
+ rpmteKey(p), ts->notifyData);
/*@=noeffectuncon =compdef =usereleased @*/
- p->fd = NULL;
- p->fi = rpmfiFree(p->fi);
- p->h = headerFree(p->h);
+ p->fd = NULL;
+ p->fi = rpmfiFree(p->fi);
+ p->h = headerFree(p->h);
+ }
}
+ pi = rpmtsiFree(pi);
}
- pi = rpmtsiFree(pi);
rpmtsFreeLock(lock);