rpmts ts; /*!< transaction set */
rpmte te; /*!< current transaction element */
rpmfi fi; /*!< transaction element file info */
- const char * stepName;
+ const char * goalName;
char * rpmio_flags;
char * failedFile;
int scriptTag; /*!< Scriptlet data tag. */
}
psm = rpmpsmNew(ts, te);
- psm->goal = PSM_PKGINSTALL;
+ psm->goal = PKG_INSTALL;
/* FIX: psm->fi->dnl should be owned. */
if (rpmpsmStage(psm, PSM_PROCESS) == RPMRC_OK)
return rc;
}
-static const char * pkgStageString(pkgStage a)
-{
- switch(a) {
- case PSM_UNKNOWN: return "unknown";
-
- case PSM_PKGINSTALL: return " install";
- case PSM_PKGERASE: return " erase";
- case PSM_PKGCOMMIT: return " commit";
-
- case PSM_INIT: return "init";
- case PSM_PRE: return "pre";
- case PSM_PROCESS: return "process";
- case PSM_POST: return "post";
- case PSM_UNDO: return "undo";
- case PSM_FINI: return "fini";
-
- case PSM_CREATE: return "create";
- case PSM_NOTIFY: return "notify";
- case PSM_DESTROY: return "destroy";
- case PSM_COMMIT: return "commit";
-
- case PSM_CHROOT_IN: return "chrootin";
- case PSM_CHROOT_OUT: return "chrootout";
- case PSM_SCRIPT: return "script";
- case PSM_TRIGGERS: return "triggers";
- case PSM_IMMED_TRIGGERS: return "immedtriggers";
-
- case PSM_RPMDB_ADD: return "rpmdbadd";
- case PSM_RPMDB_REMOVE: return "rpmdbremove";
-
- default: return "???";
- }
-}
-
rpmpsm rpmpsmUnlink(rpmpsm psm, const char * msg)
{
if (psm == NULL) return NULL;
assert(psm != NULL);
psm->scriptTag = scriptTag;
if (scriptTag == RPMTAG_VERIFYSCRIPT) {
- psm->stepName = "verify";
+ psm->goalName = "verify";
}
return rpmpsmStage(psm, PSM_SCRIPT);
}
break;
case PSM_INIT:
rpmlog(RPMLOG_DEBUG, "%s: %s has %d files, test = %d\n",
- psm->stepName, rpmteNEVR(psm->te),
+ psm->goalName, rpmteNEVR(psm->te),
rpmfiFC(fi), (rpmtsFlags(ts) & RPMTRANS_FLAG_TEST));
/*
break;
}
- if (psm->goal == PSM_PKGINSTALL) {
+ if (psm->goal == PKG_INSTALL) {
rpmdbMatchIterator mi;
Header oh;
int fc = rpmfiFC(fi);
rc = RPMRC_OK;
}
- if (psm->goal == PSM_PKGERASE) {
+ if (psm->goal == PKG_ERASE) {
psm->scriptArg = psm->npkgs_installed - 1;
}
break;
rc = rpmpsmNext(psm, PSM_CHROOT_IN);
if (rc) break;
- if (psm->goal == PSM_PKGINSTALL) {
+ if (psm->goal == PKG_INSTALL) {
psm->scriptTag = RPMTAG_PREIN;
psm->sense = RPMSENSE_TRIGGERPREIN;
psm->countCorrection = 0; /* XXX is this correct?!? */
}
}
- if (psm->goal == PSM_PKGERASE) {
+ if (psm->goal == PKG_ERASE) {
psm->scriptTag = RPMTAG_PREUN;
psm->sense = RPMSENSE_TRIGGERUN;
psm->countCorrection = -1;
case PSM_PROCESS:
if (rpmtsFlags(ts) & RPMTRANS_FLAG_TEST) break;
- if (psm->goal == PSM_PKGINSTALL) {
+ if (psm->goal == PKG_INSTALL) {
FD_t payload = NULL;
if (rpmtsFlags(ts) & RPMTRANS_FLAG_JUSTDB) break;
break;
}
}
- if (psm->goal == PSM_PKGERASE) {
+ if (psm->goal == PKG_ERASE) {
int fc = rpmfiFC(fi);
if (rpmtsFlags(ts) & RPMTRANS_FLAG_JUSTDB) break;
case PSM_POST:
if (rpmtsFlags(ts) & RPMTRANS_FLAG_TEST) break;
- if (psm->goal == PSM_PKGINSTALL) {
+ if (psm->goal == PKG_INSTALL) {
rpm_time_t installTime = (rpm_time_t) time(NULL);
rpmfs fs = rpmteGetFileStates(psm->te);
rpm_count_t fc = rpmfsFC(fs);
rc = markReplacedFiles(psm);
}
- if (psm->goal == PSM_PKGERASE) {
+ if (psm->goal == PKG_ERASE) {
psm->scriptTag = RPMTAG_POSTUN;
psm->sense = RPMSENSE_TRIGGERPOSTUN;
if (psm->failedFile)
rpmlog(RPMLOG_ERR,
_("%s failed on file %s: %s\n"),
- psm->stepName, psm->failedFile, cpioStrerror(rc));
+ psm->goalName, psm->failedFile, cpioStrerror(rc));
else
rpmlog(RPMLOG_ERR, _("%s failed: %s\n"),
- psm->stepName, cpioStrerror(rc));
+ psm->goalName, cpioStrerror(rc));
/* XXX notify callback on error. */
psm->what = RPMCALLBACK_CPIO_ERROR;
xx = rpmpsmNext(psm, PSM_NOTIFY);
}
- if (psm->goal == PSM_PKGERASE) {
+ if (psm->goal == PKG_ERASE) {
if (psm->te != NULL)
rpmteSetHeader(psm->te, NULL);
}
fi->apath = _free(fi->apath);
break;
- case PSM_PKGINSTALL:
- case PSM_PKGERASE:
- psm->goal = stage;
- psm->stepName = pkgStageString(stage);
-
- rc = rpmpsmNext(psm, PSM_INIT);
- if (!rc) rc = rpmpsmNext(psm, PSM_PRE);
- if (!rc) rc = rpmpsmNext(psm, PSM_PROCESS);
- if (!rc) rc = rpmpsmNext(psm, PSM_POST);
- xx = rpmpsmNext(psm, PSM_FINI);
- break;
case PSM_PKGCOMMIT:
break;
return rc;
}
+
+static const char * pkgGoalString(pkgGoal goal)
+{
+ switch(goal) {
+ case PKG_INSTALL: return " install";
+ case PKG_ERASE: return " erase";
+ default: return "???";
+ }
+}
+
+rpmRC rpmpsmRun(rpmpsm psm, pkgGoal goal)
+{
+ rpmRC rc = RPMRC_FAIL;
+
+ if (psm) {
+ psm->goal = goal;
+ psm->goalName = pkgGoalString(goal);
+
+ switch (goal) {
+ case PKG_INSTALL:
+ case PKG_ERASE:
+ rc = rpmpsmNext(psm, PSM_INIT);
+ if (!rc) rc = rpmpsmNext(psm, PSM_PRE);
+ if (!rc) rc = rpmpsmNext(psm, PSM_PROCESS);
+ if (!rc) rc = rpmpsmNext(psm, PSM_POST);
+ (void) rpmpsmNext(psm, PSM_FINI);
+ break;
+ default:
+ break;
+ }
+ }
+ return rc;
+}