diff --git a/lib/install.c b/lib/install.c index 2bd0f3c94..2e8781453 100644 --- a/lib/install.c +++ b/lib/install.c @@ -263,7 +263,8 @@ int rpmInstallPackage(char * prefix, rpmdb db, int fd, int flags, } message(MESS_DEBUG, "running preinstall script (if any)\n"); - if (runScript(prefix, h, RPMTAG_PREIN, flags & INSTALL_NOSCRIPTS)) { + if (runScript(prefix, h, RPMTAG_PREIN, flags & INSTALL_NOSCRIPTS, + flags & INSTALL_UPGRADE)) { free(fileList); if (replacedList) free(replacedList); return 2; @@ -419,7 +420,8 @@ int rpmInstallPackage(char * prefix, rpmdb db, int fd, int flags, message(MESS_DEBUG, "running postinstall script (if any)\n"); - if (runScript(prefix, h, RPMTAG_POSTIN, flags & INSTALL_NOSCRIPTS)) { + if (runScript(prefix, h, RPMTAG_POSTIN, flags & INSTALL_NOSCRIPTS, + flags & INSTALL_UPGRADE)) { return 2; } @@ -427,7 +429,7 @@ int rpmInstallPackage(char * prefix, rpmdb db, int fd, int flags, message(MESS_DEBUG, "removing old versions of package\n"); intptr = oldVersions; while (*intptr) { - rpmRemovePackage(prefix, db, *intptr, 0); + rpmRemovePackage(prefix, db, *intptr, 1, 0); intptr++; } } diff --git a/lib/install.h b/lib/install.h index ec9e62e1d..f298b69e8 100644 --- a/lib/install.h +++ b/lib/install.h @@ -12,6 +12,7 @@ struct sharedFile { int findSharedFiles(rpmdb db, int offset, char ** fileList, int fileCount, struct sharedFile ** listPtr, int * listCountPtr); -int runScript(char * prefix, Header h, int tag, int dontRunScripts); +int runScript(char * prefix, Header h, int tag, int dontRunScripts, + int upgrade); #endif diff --git a/lib/rpmlib.h b/lib/rpmlib.h index 6dd438ef5..eefda35f0 100644 --- a/lib/rpmlib.h +++ b/lib/rpmlib.h @@ -167,7 +167,8 @@ int rpmdbFindPackage(rpmdb db, char * name, dbIndexSet * matches); int rpmInstallSourcePackage(char * prefix, int fd, char ** specFile); int rpmInstallPackage(char * prefix, rpmdb db, int fd, int flags, notifyFunction notify, char * labelFormat); -int rpmRemovePackage(char * prefix, rpmdb db, unsigned int offset, int test); +int rpmRemovePackage(char * prefix, rpmdb db, unsigned int offset, + int upgrade, int test); int rpmdbRemove(rpmdb db, unsigned int offset, int tolerant); int rpmdbAdd(rpmdb db, Header dbentry); int rpmdbUpdateRecord(rpmdb db, int secOffset, Header secHeader);