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);