moved things to transaction flags from independent install/uninstall flags
authorewt <devnull@localhost>
Wed, 17 Feb 1999 03:42:57 +0000 (03:42 +0000)
committerewt <devnull@localhost>
Wed, 17 Feb 1999 03:42:57 +0000 (03:42 +0000)
CVS patchset: 2799
CVS date: 1999/02/17 03:42:57

CHANGES
install.c
lib/install.c
lib/rpmlib.h
lib/transaction.c
lib/uninstall.c
rpm.c

diff --git a/CHANGES b/CHANGES
index 850841a..43c9726 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,8 @@
        - fixed config file problems during chroot upgrades
        - fixed %attr brokenness for directories
        - augment linux provides/requires for glibc 2.1 backward compatibility.
+       - fixed --noscript, --notriggers, --excludedocs, and a bunch
+         of other install/remove flags
 
 2.5.x -> 2.90
        - added --excludepath
index 0266133..a26f81c 100644 (file)
--- a/install.c
+++ b/install.c
@@ -78,7 +78,7 @@ static void * showProgress(const Header h, const rpmCallbackType what,
     return rc;
 }      
 
-int doInstall(const char * rootdir, const char ** argv, int installFlags, 
+int doInstall(const char * rootdir, const char ** argv, int transFlags, 
              int interfaceFlags, int probFilter, 
              rpmRelocation * relocations) {
     rpmdb db = NULL;
@@ -98,19 +98,15 @@ int doInstall(const char * rootdir, const char ** argv, int installFlags,
     int stopInstall = 0;
     size_t nb;
     int notifyFlags = interfaceFlags | (rpmIsVerbose() ? INSTALL_LABEL : 0 );
-    int transFlags = 0;
     rpmProblemSet probs, finalProbs;
     int dbIsOpen = 0;
     const char ** sourcePackages;
 
-    if (installFlags & RPMINSTALL_TEST) 
+    if (transFlags & RPMTRANS_FLAG_TEST) 
        mode = O_RDONLY;
     else
        mode = O_RDWR | O_CREAT;
 
-    if (installFlags & RPMINSTALL_TEST)
-       transFlags |= RPMTRANS_FLAG_TEST;
-
     rpmMessage(RPMMESS_DEBUG, _("counting packages to install\n"));
     for (filename = argv, numPackages = 0; *filename; filename++, numPackages++)
        ;
@@ -289,7 +285,7 @@ int doInstall(const char * rootdir, const char ** argv, int installFlags,
                continue;
            }
 
-           if (!(installFlags & RPMINSTALL_TEST))
+           if (!(transFlags & RPMTRANS_FLAG_TEST))
                numFailed += rpmInstallSourcePackage(rootdir, fd, NULL,
                                showProgress, (void *) notifyFlags, NULL);
 
@@ -309,7 +305,7 @@ int doInstall(const char * rootdir, const char ** argv, int installFlags,
     return numFailed;
 }
 
-int doUninstall(const char * rootdir, const char ** argv, int uninstallFlags,
+int doUninstall(const char * rootdir, const char ** argv, int transFlags,
                 int interfaceFlags) {
     rpmdb db;
     dbiIndexSet matches;
@@ -323,14 +319,10 @@ int doUninstall(const char * rootdir, const char ** argv, int uninstallFlags,
     struct rpmDependencyConflict * conflicts;
     int numConflicts;
     int stopUninstall = 0;
-    int transFlags = 0;
     int numPackages = 0;
     rpmProblemSet probs;
 
-    if (uninstallFlags & RPMUNINSTALL_TEST)
-       transFlags |= RPMTRANS_FLAG_TEST;
-
-    if (uninstallFlags & RPMUNINSTALL_TEST) 
+    if (transFlags & RPMTRANS_FLAG_TEST) 
        mode = O_RDONLY;
     else
        mode = O_RDWR | O_EXCL;
index a12f42a..eb70430 100644 (file)
@@ -283,8 +283,8 @@ int installBinaryPackage(const char * rootdir, rpmdb db, FD_t fd, Header h,
     int freeFileMem = 0;
     char * currDir = NULL, * tmpptr;
 
-    if (flags & RPMINSTALL_JUSTDB)
-       flags |= RPMINSTALL_NOSCRIPTS;
+    if (flags & RPMTRANS_FLAG_JUSTDB)
+       flags |= RPMTRANS_FLAG_NOSCRIPTS;
 
     headerGetEntry(h, RPMTAG_NAME, &type, (void **) &name, &fileCount);
     headerGetEntry(h, RPMTAG_VERSION, &type, (void **) &version, &fileCount);
@@ -292,7 +292,7 @@ int installBinaryPackage(const char * rootdir, rpmdb db, FD_t fd, Header h,
 
 
     rpmMessage(RPMMESS_DEBUG, _("package: %s-%s-%s files test = %d\n"), 
-               name, version, release, flags & RPMINSTALL_TEST);
+               name, version, release, flags & RPMTRANS_FLAG_TEST);
 
     rc = rpmdbFindPackage(db, name, &matches);
     if (rc == -1) return 2;
@@ -317,7 +317,7 @@ int installBinaryPackage(const char * rootdir, rpmdb db, FD_t fd, Header h,
        chroot(rootdir);
     }
 
-    if (!(flags & RPMINSTALL_JUSTDB) && headerIsEntry(h, RPMTAG_FILENAMES)) {
+    if (!(flags & RPMTRANS_FLAG_JUSTDB) && headerIsEntry(h, RPMTAG_FILENAMES)) {
        /* old format relocateable packages need the entire default
           prefix stripped to form the cpio list, while all other packages 
           need the leading / stripped */
@@ -342,7 +342,7 @@ int installBinaryPackage(const char * rootdir, rpmdb db, FD_t fd, Header h,
        files = NULL;
     }
     
-    if (flags & RPMINSTALL_TEST) {
+    if (flags & RPMTRANS_FLAG_TEST) {
        if (rootdir) {
            chroot(".");
            chdir(currDir);
@@ -355,7 +355,7 @@ int installBinaryPackage(const char * rootdir, rpmdb db, FD_t fd, Header h,
 
     rpmMessage(RPMMESS_DEBUG, _("running preinstall script (if any)\n"));
     if (runInstScript("/", h, RPMTAG_PREIN, RPMTAG_PREINPROG, scriptArg, 
-                     flags & RPMINSTALL_NOSCRIPTS, scriptFd)) {
+                     flags & RPMTRANS_FLAG_NOSCRIPTS, scriptFd)) {
        if (freeFileMem) freeFileMemory(fileMem);
 
        if (rootdir) {
@@ -472,7 +472,7 @@ int installBinaryPackage(const char * rootdir, rpmdb db, FD_t fd, Header h,
 
        free(fileStates);
        if (freeFileMem) freeFileMemory(fileMem);
-    } else if (flags & RPMINSTALL_JUSTDB) {
+    } else if (flags & RPMTRANS_FLAG_JUSTDB) {
        char ** fileNames;
 
        if (headerGetEntry(h, RPMTAG_FILENAMES, NULL, (void **) &fileNames,
@@ -509,11 +509,11 @@ int installBinaryPackage(const char * rootdir, rpmdb db, FD_t fd, Header h,
     rpmMessage(RPMMESS_DEBUG, _("running postinstall script (if any)\n"));
 
     if (runInstScript(rootdir, h, RPMTAG_POSTIN, RPMTAG_POSTINPROG, scriptArg,
-                     flags & RPMINSTALL_NOSCRIPTS, scriptFd)) {
+                     flags & RPMTRANS_FLAG_NOSCRIPTS, scriptFd)) {
        return 2;
     }
 
-    if (!(flags & RPMINSTALL_NOTRIGGERS)) {
+    if (!(flags & RPMTRANS_FLAG_NOTRIGGERS)) {
        /* Run triggers this package sets off */
        if (runTriggers(rootdir, db, RPMSENSE_TRIGGERIN, h, 0, scriptFd)) {
            return 2;
index 1e33aa6..4b3e625 100644 (file)
@@ -150,20 +150,6 @@ extern const struct headerSprintfExtension rpmHeaderFormats[];
 #define        RPMFILE_LICENSE                 (1 << 7)
 #define        RPMFILE_README                  (1 << 8)
 
-#define        RPMINSTALL_TEST                 (1 << 2)
-#define        RPMINSTALL_UPGRADETOOLD         (1 << 4)
-#define        RPMINSTALL_NODOCS               (1 << 5)
-#define        RPMINSTALL_NOSCRIPTS            (1 << 6)
-#define        RPMINSTALL_ALLFILES             (1 << 9)
-#define        RPMINSTALL_JUSTDB               (1 << 10)
-#define        RPMINSTALL_KEEPOBSOLETE         (1 << 11)
-#define        RPMINSTALL_NOTRIGGERS           (1 << 13)
-
-#define        RPMUNINSTALL_TEST               (1 << 0)
-#define        RPMUNINSTALL_NOSCRIPTS          (1 << 1)
-#define        RPMUNINSTALL_JUSTDB             (1 << 2)
-#define        RPMUNINSTALL_NOTRIGGERS         (1 << 3)
-
 #define RPMVERIFY_NONE         0
 #define RPMVERIFY_MD5          (1 << 0)
 #define RPMVERIFY_FILESIZE     (1 << 1)
@@ -381,6 +367,12 @@ void rpmdepFreeConflicts(struct rpmDependencyConflict * conflicts, int
 
 #define RPMTRANS_FLAG_TEST             (1 << 0)
 #define RPMTRANS_FLAG_BUILD_PROBS      (1 << 1)
+#define        RPMTRANS_FLAG_NOSCRIPTS         (1 << 2)
+#define        RPMTRANS_FLAG_JUSTDB            (1 << 3)
+#define        RPMTRANS_FLAG_NOTRIGGERS        (1 << 4)
+#define        RPMTRANS_FLAG_NODOCS            (1 << 5)
+#define        RPMTRANS_FLAG_ALLFILES          (1 << 6)
+#define        RPMTRANS_FLAG_KEEPOBSOLETE      (1 << 7)
 
 typedef enum rpmProblemType_e { RPMPROB_BADARCH, 
                                RPMPROB_BADOS,
@@ -419,6 +411,7 @@ int rpmRunTransactions(rpmTransactionSet ts, rpmCallbackFunction notify,
 #define RPMPROB_FILTER_FORCERELOCATE   (1 << 3)
 #define RPMPROB_FILTER_REPLACENEWFILES (1 << 4)
 #define RPMPROB_FILTER_REPLACEOLDFILES (1 << 5)
+#define RPMPROB_FILTER_UPGRADETOOLD    (1 << 6)
 
 /** messages.c **/
 
index e50bf86..b56291a 100644 (file)
@@ -68,7 +68,6 @@ int rpmRunTransactions(rpmTransactionSet ts, rpmCallbackFunction notify,
     int i, j;
     struct availableList * al = &ts->addedPackages;
     int rc, ourrc = 0;
-    int instFlags = 0, rmFlags = 0;
     rpmProblem prob;
     struct availablePackage * alp;
     rpmProblemSet probs;
@@ -90,11 +89,6 @@ int rpmRunTransactions(rpmTransactionSet ts, rpmCallbackFunction notify,
 
     /* FIXME: we completely ignore net shared paths here! */
 
-    if (flags & RPMTRANS_FLAG_TEST) {
-       instFlags |= RPMINSTALL_TEST; 
-       rmFlags |= RPMUNINSTALL_TEST;
-    }
-
     probs = psCreate();
     *newProbs = probs;
     hdrs = alloca(sizeof(*hdrs) * al->size);
@@ -320,7 +314,7 @@ int rpmRunTransactions(rpmTransactionSet ts, rpmCallbackFunction notify,
 
        if (fd) {
            if (installBinaryPackage(ts->root, ts->db, fd, 
-                                    hdrs[alp - al->list], instFlags, notify, 
+                                    hdrs[alp - al->list], flags, notify, 
                                     notifyData, alp->key, fi->actions, 
                                     fi->fc ? fi->replaced : NULL,
                                     ts->scriptFd))
@@ -342,7 +336,7 @@ int rpmRunTransactions(rpmTransactionSet ts, rpmCallbackFunction notify,
     /* fi is left at the first package which is to be removed */
     for (i = 0; i < ts->numRemovedPackages; i++, fi++) {
        if (removeBinaryPackage(ts->root, ts->db, ts->removedPackages[i], 
-                               rmFlags, fi->actions, ts->scriptFd))
+                               flags, fi->actions, ts->scriptFd))
            ourrc++;
     }
 
index adaf752..35fbc8e 100644 (file)
@@ -32,8 +32,8 @@ int removeBinaryPackage(char * prefix, rpmdb db, unsigned int offset,
     int_16 * fileModesList;
     int scriptArg;
 
-    if (flags & RPMUNINSTALL_JUSTDB)
-       flags |= RPMUNINSTALL_NOSCRIPTS;
+    if (flags & RPMTRANS_FLAG_JUSTDB)
+       flags |= RPMTRANS_FLAG_NOSCRIPTS;
 
     h = rpmdbGetRecord(db, offset);
     if (h == NULL) {
@@ -56,7 +56,7 @@ int removeBinaryPackage(char * prefix, rpmdb db, unsigned int offset,
     scriptArg = dbiIndexSetCount(matches) - 1;
     dbiFreeIndexRecord(matches);
 
-    if (!(flags & RPMUNINSTALL_NOTRIGGERS)) {
+    if (!(flags & RPMTRANS_FLAG_NOTRIGGERS)) {
        /* run triggers from this package which are keyed on installed 
           packages */
        if (runImmedTriggers(prefix, db, RPMSENSE_TRIGGERUN, h, -1, scriptFd)) {
@@ -68,17 +68,17 @@ int removeBinaryPackage(char * prefix, rpmdb db, unsigned int offset,
            return 1;
     }
 
-    if (!(flags & RPMUNINSTALL_TEST)) {
+    if (!(flags & RPMTRANS_FLAG_TEST)) {
        if (runInstScript(prefix, h, RPMTAG_PREUN, RPMTAG_PREUNPROG, scriptArg, 
-                         flags & RPMUNINSTALL_NOSCRIPTS, scriptFd)) {
+                         flags & RPMTRANS_FLAG_NOSCRIPTS, scriptFd)) {
            headerFree(h);
            return 1;
        }
     }
     
     rpmMessage(RPMMESS_DEBUG, _("will remove files test = %d\n"), 
-               flags & RPMUNINSTALL_TEST);
-    if (!(flags & RPMUNINSTALL_JUSTDB) &&
+               flags & RPMTRANS_FLAG_TEST);
+    if (!(flags & RPMTRANS_FLAG_JUSTDB) &&
        headerGetEntry(h, RPMTAG_FILENAMES, &type, (void **) &fileList, 
                       &fileCount)) {
        if (prefix[0]) {
@@ -111,7 +111,7 @@ int removeBinaryPackage(char * prefix, rpmdb db, unsigned int offset,
            rpmMessage(RPMMESS_DEBUG, _("   file: %s action: %s\n"),
                        fnbuffer, fileActionString(actions[i]));
 
-           if (!(flags & RPMUNINSTALL_TEST))
+           if (!(flags & RPMTRANS_FLAG_TEST))
                removeFile(fnbuffer, fileFlagsList[i], fileModesList[i], 
                           actions[i]);
        }
@@ -120,13 +120,13 @@ int removeBinaryPackage(char * prefix, rpmdb db, unsigned int offset,
        free(fileMd5List);
     }
 
-    if (!(flags & RPMUNINSTALL_TEST)) {
+    if (!(flags & RPMTRANS_FLAG_TEST)) {
        rpmMessage(RPMMESS_DEBUG, _("running postuninstall script (if any)\n"));
        runInstScript(prefix, h, RPMTAG_POSTUN, RPMTAG_POSTUNPROG, scriptArg, 
-                     flags & RPMUNINSTALL_NOSCRIPTS, scriptFd);
+                     flags & RPMTRANS_FLAG_NOSCRIPTS, scriptFd);
     }
 
-    if (!(flags & RPMUNINSTALL_NOTRIGGERS)) {
+    if (!(flags & RPMTRANS_FLAG_NOTRIGGERS)) {
        /* Run postun triggers which are set off by this package's removal */
        if (runTriggers(prefix, db, RPMSENSE_TRIGGERPOSTUN, h, 0, scriptFd)) {
            return 2;
@@ -136,7 +136,7 @@ int removeBinaryPackage(char * prefix, rpmdb db, unsigned int offset,
     headerFree(h);
 
     rpmMessage(RPMMESS_DEBUG, _("removing database entry\n"));
-    if (!(flags & RPMUNINSTALL_TEST))
+    if (!(flags & RPMTRANS_FLAG_TEST))
        rpmdbRemove(db, offset, 0);
 
     return 0;
diff --git a/rpm.c b/rpm.c
index bff389c..32fed3b 100755 (executable)
--- a/rpm.c
+++ b/rpm.c
@@ -1046,7 +1046,7 @@ int main(int argc, char ** argv) {
     }
 #endif
 
-    if (oldPackage && upgrade)
+    if (oldPackage && !upgrade)
        argerror(_("--oldpackage may only be used during upgrades"));
 
     if ((ftpProxy || ftpPort) && !(bigMode == MODE_INSTALL ||
@@ -1061,9 +1061,6 @@ int main(int argc, char ** argv) {
        argerror(_("http options can only be used during package queries, "
                 "installs, and upgrades"));
 
-    if (oldPackage || (force && upgrade))
-       installFlags |= RPMINSTALL_UPGRADETOOLD;
-
     if (noPgp && bigMode != MODE_CHECKSIG)
        argerror(_("--nopgp may only be used during signature checking"));
 
@@ -1267,34 +1264,37 @@ int main(int argc, char ** argv) {
        if (!poptPeekArg(optCon))
            argerror(_("no packages given for uninstall"));
 
-       if (noScripts) uninstallFlags |= RPMUNINSTALL_NOSCRIPTS;
-       if (noTriggers) uninstallFlags |= RPMUNINSTALL_NOTRIGGERS;
-       if (test) uninstallFlags |= RPMUNINSTALL_TEST;
-       if (justdb) uninstallFlags |= RPMUNINSTALL_JUSTDB;
+       if (noScripts) uninstallFlags |= RPMTRANS_FLAG_NOSCRIPTS;
+       if (noTriggers) uninstallFlags |= RPMTRANS_FLAG_NOTRIGGERS;
+       if (test) uninstallFlags |= RPMTRANS_FLAG_TEST;
+       if (justdb) uninstallFlags |= RPMTRANS_FLAG_JUSTDB;
        if (noDeps) interfaceFlags |= UNINSTALL_NODEPS;
        if (allMatches) interfaceFlags |= UNINSTALL_ALLMATCHES;
 
-       ec = doUninstall(rootdir, (const char **)poptGetArgs(optCon), uninstallFlags, 
-               interfaceFlags);
+       ec = doUninstall(rootdir, (const char **)poptGetArgs(optCon), 
+                        uninstallFlags, interfaceFlags);
        break;
 
       case MODE_INSTALL:
        if (force) {
            probFilter |= RPMPROB_FILTER_REPLACEPKG | 
                          RPMPROB_FILTER_REPLACEOLDFILES |
-                         RPMPROB_FILTER_REPLACENEWFILES;
+                         RPMPROB_FILTER_REPLACENEWFILES |
+                         RPMPROB_FILTER_UPGRADETOOLD;
        }
        if (replaceFiles) probFilter |= RPMPROB_FILTER_REPLACEOLDFILES |
                                        RPMPROB_FILTER_REPLACENEWFILES;
        if (badReloc) probFilter |= RPMPROB_FILTER_FORCERELOCATE;
        if (replacePackages) probFilter |= RPMPROB_FILTER_REPLACEPKG;
-       if (test) installFlags |= RPMINSTALL_TEST;
-       if (noScripts) installFlags |= RPMINSTALL_NOSCRIPTS;
-       if (noTriggers) installFlags |= RPMINSTALL_NOTRIGGERS;
+       if (oldPackage) probFilter |= RPMPROB_FILTER_UPGRADETOOLD;
        if (ignoreArch) probFilter |= RPMPROB_FILTER_IGNOREARCH; 
        if (ignoreOs) probFilter |= RPMPROB_FILTER_IGNOREOS;
-       if (allFiles) installFlags |= RPMINSTALL_ALLFILES;
-       if (justdb) installFlags |= RPMINSTALL_JUSTDB;
+
+       if (allFiles) installFlags |= RPMTRANS_FLAG_ALLFILES;
+       if (justdb) installFlags |= RPMTRANS_FLAG_JUSTDB;
+       if (test) installFlags |= RPMTRANS_FLAG_TEST;
+       if (noScripts) installFlags |= RPMTRANS_FLAG_NOSCRIPTS;
+       if (noTriggers) installFlags |= RPMTRANS_FLAG_NOTRIGGERS;
 
        if (showPercents) interfaceFlags |= INSTALL_PERCENT;
        if (showHash) interfaceFlags |= INSTALL_HASH;
@@ -1304,9 +1304,9 @@ int main(int argc, char ** argv) {
 
        if (!incldocs) {
            if (excldocs)
-               installFlags |= RPMINSTALL_NODOCS;
+               installFlags |= RPMTRANS_FLAG_NODOCS;
            else if (rpmGetBooleanVar(RPMVAR_EXCLUDEDOCS))
-               installFlags |= RPMINSTALL_NODOCS;
+               installFlags |= RPMTRANS_FLAG_NODOCS;
        }
 
        if (!poptPeekArg(optCon))
@@ -1325,8 +1325,8 @@ int main(int argc, char ** argv) {
            relocations[numRelocations].newPath = NULL;
        }
 
-       ec += doInstall(rootdir, (const char **)poptGetArgs(optCon), installFlags, 
-                       interfaceFlags, probFilter, relocations);
+       ec += doInstall(rootdir, (const char **)poptGetArgs(optCon), 
+                       installFlags, interfaceFlags, probFilter, relocations);
        break;
 
       case MODE_QUERY: