static rpmRC rpmPackageErase(rpmts ts, rpmpsm psm) { rpmRC rc = RPMRC_OK; int once = 1; rpmswEnter(rpmtsOp(psm->ts, RPMTS_OP_ERASE), 0); while (once--) { if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERUN)) { /* Run triggers in this package other package(s) set off. */ rc = runImmedTriggers(psm, RPMSENSE_TRIGGERUN); if (rc) break; /* Run triggers in other package(s) this package sets off. */ rc = runTriggers(psm, RPMSENSE_TRIGGERUN); if (rc) break; } if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPREUN)) rc = runInstScript(psm, RPMTAG_PREUN); rc = rpmpsmRemove(psm); if (rc) break; if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPOSTUN)) { rc = runInstScript(psm, RPMTAG_POSTUN); if (rc) break; } if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERPOSTUN)) { /* Run triggers in other package(s) this package sets off. */ rc = runTriggers(psm, RPMSENSE_TRIGGERPOSTUN); if (rc) break; } rc = dbRemove(ts, psm->te); } rpmswExit(rpmtsOp(psm->ts, RPMTS_OP_ERASE), 0); return rc; }
static rpmRC rpmPackageInstall(rpmts ts, rpmpsm psm) { rpmRC rc = RPMRC_OK; int once = 1; rpmswEnter(rpmtsOp(psm->ts, RPMTS_OP_INSTALL), 0); while (once--) { /* HACK: replacepkgs abuses te instance to remove old header */ if (rpmtsFilterFlags(psm->ts) & RPMPROB_FILTER_REPLACEPKG) markReplacedInstance(ts, psm->te); if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERPREIN)) { /* Run triggers in other package(s) this package sets off. */ rc = runTriggers(psm, RPMSENSE_TRIGGERPREIN); if (rc) break; /* Run triggers in this package other package(s) set off. */ rc = runImmedTriggers(psm, RPMSENSE_TRIGGERPREIN); if (rc) break; } if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPRE)) { rc = runInstScript(psm, RPMTAG_PREIN); if (rc) break; } rc = rpmpsmUnpack(psm); if (rc) break; /* * If this package has already been installed, remove it from * the database before adding the new one. */ if (rpmteDBInstance(psm->te)) { rc = dbRemove(ts, psm->te); if (rc) break; } rc = dbAdd(ts, psm->te); if (rc) break; if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPOST)) { rc = runInstScript(psm, RPMTAG_POSTIN); if (rc) break; } if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERIN)) { /* Run triggers in other package(s) this package sets off. */ rc = runTriggers(psm, RPMSENSE_TRIGGERIN); if (rc) break; /* Run triggers in this package other package(s) set off. */ rc = runImmedTriggers(psm, RPMSENSE_TRIGGERIN); if (rc) break; } rc = markReplacedFiles(psm); } rpmswExit(rpmtsOp(psm->ts, RPMTS_OP_INSTALL), 0); return rc; }
static rpmRC rpmPackageErase(rpmts ts, rpmpsm psm) { rpmRC rc = RPMRC_OK; int once = 1; rpmswEnter(rpmtsOp(psm->ts, RPMTS_OP_ERASE), 0); while (once--) { /* Run file triggers in this package other package(s) set off. */ rc = runImmedFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERUN, RPMSCRIPT_FILETRIGGER, 1); if (rc) break; /* Run file triggers in other package(s) this package sets off. */ rc = runFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERUN, RPMSCRIPT_FILETRIGGER, 1); if (rc) break; if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERUN)) { /* Run triggers in this package other package(s) set off. */ rc = runImmedTriggers(psm, RPMSENSE_TRIGGERUN); if (rc) break; /* Run triggers in other package(s) this package sets off. */ rc = runTriggers(psm, RPMSENSE_TRIGGERUN); if (rc) break; } if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPREUN)) rc = runInstScript(psm, RPMTAG_PREUN); /* Run file triggers in this package other package(s) set off. */ rc = runImmedFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERUN, RPMSCRIPT_FILETRIGGER, 2); if (rc) break; /* Run file triggers in other package(s) this package sets off. */ rc = runFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERUN, RPMSCRIPT_FILETRIGGER, 2); if (rc) break; rc = rpmpsmRemove(psm); if (rc) break; /* Run file triggers in other package(s) this package sets off. */ rc = runFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERPOSTUN, RPMSCRIPT_FILETRIGGER, 1); if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOPOSTUN)) { rc = runInstScript(psm, RPMTAG_POSTUN); if (rc) break; } if (!(rpmtsFlags(ts) & RPMTRANS_FLAG_NOTRIGGERPOSTUN)) { /* Run triggers in other package(s) this package sets off. */ rc = runTriggers(psm, RPMSENSE_TRIGGERPOSTUN); if (rc) break; } /* Run file triggers in other package(s) this package sets off. */ rc = runFileTriggers(psm->ts, psm->te, RPMSENSE_TRIGGERPOSTUN, RPMSCRIPT_FILETRIGGER, 2); if (rc) break; /* Prepare post transaction uninstall triggers */ rpmtriggersPrepPostUnTransFileTrigs(psm->ts, psm->te); rc = dbRemove(ts, psm->te); } rpmswExit(rpmtsOp(psm->ts, RPMTS_OP_ERASE), 0); return rc; }