moved things to transaction flags from independent install/uninstall flags
CVS patchset: 2799 CVS date: 1999/02/17 03:42:57
This commit is contained in:
parent
a56247c2b2
commit
da45cac856
2
CHANGES
2
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
|
||||
|
|
18
install.c
18
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;
|
||||
|
|
|
@ -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;
|
||||
|
|
21
lib/rpmlib.h
21
lib/rpmlib.h
|
@ -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 **/
|
||||
|
||||
|
|
|
@ -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++;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
40
rpm.c
40
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:
|
||||
|
|
Loading…
Reference in New Issue