From: jbj Date: Mon, 5 Jul 2004 15:24:17 +0000 (+0000) Subject: - bump rpm and popt versions to insure "newer". X-Git-Tag: tznext/4.11.0.1.tizen20130304~6418 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=07444608bcf20037636a4811a47b87d66c05d942;p=tools%2Flibrpm-tizen.git - bump rpm and popt versions to insure "newer". - change default behavior to resolve file conflicts as LIFO. - add --fileconflicts to recover rpm traditional behavior. - prefer elf64 over elf32 files, everywhere and always (#126853). CVS patchset: 7354 CVS date: 2004/07/05 15:24:17 --- diff --git a/CHANGES b/CHANGES index 1e7df4a..bbbf7ea 100644 --- a/CHANGES +++ b/CHANGES @@ -5,9 +5,9 @@ - conditional build support/unification (jajcus,malekith,qboosh,wiget@PLD). - fix: readelf.c breakage on some non x86 arches (qboosh@PLD). - find-lang.sh: implemented --with-kde (finds KDE help files); - add --all-name option (finds every lang file); drop defattr() + - add --all-name option (finds every lang file); drop defattr() from *.lang files (arekm,mkochano,pascalek,wiget@PLD). - = add type to tag array. + - add type to tag array. 4.3.1 -> 4.3.2: - use /etc/selinux/targeted/contexts/files/file_contexts for now. @@ -40,7 +40,7 @@ - add aurora/sparc patches (#124469). - use poll(2) if available, avoid borked aurora/sparc select (#124574). -4.2.2 -> 4.3: +4.2.3 -> 4.3: - upgrade to zlib-1.2.beta7. - fix: short option help missing string terminator. - permit secondary tag match patterns with RPMQV_ALL. @@ -79,6 +79,12 @@ - endian neutral rpmdb join keys (finally). - fix: dev package build on s390x hack around. +4.2.2 -> 4.2.3: + - bump rpm and popt versions to insure "newer". + - change default behavior to resolve file conflicts as LIFO. + - add --fileconflicts to recover rpm traditional behavior. + - prefer elf64 over elf32 files, everywhere and always (#126853). + 4.2.1 -> 4.2.2: - unify signal handling in librpmio, use condvar to deliver signal. - make peace with libtool-1.5, autoconf-2.59, automake-1.8. diff --git a/lib/poptI.c b/lib/poptI.c index 0346372..73f6870 100644 --- a/lib/poptI.c +++ b/lib/poptI.c @@ -14,7 +14,21 @@ extern time_t get_date(const char * p, void * now); /* XXX expedient lies */ /*@=redecl@*/ /*@unchecked@*/ -struct rpmInstallArguments_s rpmIArgs; +struct rpmInstallArguments_s rpmIArgs = { + 0, /* transFlags */ + /* probFilter */ + (RPMPROB_FILTER_REPLACEOLDFILES | RPMPROB_FILTER_REPLACENEWFILES), + 0, /* installInterfaceFlags */ + 0, /* eraseInterfaceFlags */ + 0, /* qva_flags */ + 0, /* rbtid */ + 0, /* numRelocations */ + 0, /* noDeps */ + 0, /* incldocs */ + NULL, /* relocations */ + NULL, /* prefix */ + NULL /* rootdir */ +}; #define POPT_RELOCATE -1021 #define POPT_EXCLUDEPATH -1022 @@ -191,6 +205,9 @@ struct poptOption rpmInstallPoptTable[] = { N_("skip files with leading component "), N_("") }, + { "fileconflicts", '\0', POPT_BIT_CLR, &rpmIArgs.probFilter, + (RPMPROB_FILTER_REPLACEOLDFILES | RPMPROB_FILTER_REPLACENEWFILES), + N_("detect file conflicts between packages"), NULL}, { "force", '\0', 0, NULL, RPMCLI_POPT_FORCE, N_("short hand for --replacepkgs --replacefiles"), NULL}, @@ -297,7 +314,7 @@ struct poptOption rpmInstallPoptTable[] = { N_("save erased package files by repackaging"), NULL}, { "replacefiles", '\0', POPT_BIT_SET, &rpmIArgs.probFilter, (RPMPROB_FILTER_REPLACEOLDFILES | RPMPROB_FILTER_REPLACENEWFILES), - N_("install even if the package replaces installed files"), NULL}, + N_("ignore file conflicts between packages"), NULL}, { "replacepkgs", '\0', POPT_BIT_SET, &rpmIArgs.probFilter, RPMPROB_FILTER_REPLACEPKG, N_("reinstall if the package is already present"), NULL}, diff --git a/lib/transaction.c b/lib/transaction.c index 836e674..d29a2e5 100644 --- a/lib/transaction.c +++ b/lib/transaction.c @@ -188,22 +188,23 @@ static int handleInstInstalledFiles(const rpmts ts, continue; if (rpmfiCompare(otherFi, fi)) { + int rConflicts; + rConflicts = reportConflicts; /* Resolve file conflicts to prefer Elf64 (if not forced). */ - if (tscolor != 0 && FColor != 0 && FColor != oFColor - && reportConflicts) + if (tscolor != 0 && FColor != 0 && FColor != oFColor) { if (oFColor & 0x2) { fi->actions[fileNum] = FA_SKIP; - reportConflicts = 0; + rConflicts = 0; } else if (FColor & 0x2) { fi->actions[fileNum] = FA_CREATE; - reportConflicts = 0; + rConflicts = 0; } } - if (reportConflicts) { + if (rConflicts) { rpmpsAppend(ps, RPMPROB_FILE_CONFLICT, rpmteNEVR(p), rpmteKey(p), rpmfiDN(fi), rpmfiBN(fi), @@ -559,33 +560,35 @@ static void handleOverlappedFiles(const rpmts ts, assert(otherFi != NULL); /* Mark added overlapped non-identical files as a conflict. */ if (rpmfiCompare(otherFi, fi)) { + int rConflicts; + rConflicts = reportConflicts; /* Resolve file conflicts to prefer Elf64 (if not forced) ... */ - if (tscolor != 0 && reportConflicts) { + if (tscolor != 0) { if (FColor & 0x2) { /* ... last Elf64 file is installed ... */ if (!XFA_SKIPPING(fi->actions[i])) otherFi->actions[otherFileNum] = FA_SKIP; fi->actions[i] = FA_CREATE; - reportConflicts = 0; + rConflicts = 0; } else if (oFColor & 0x2) { /* ... first Elf64 file is installed ... */ if (XFA_SKIPPING(fi->actions[i])) otherFi->actions[otherFileNum] = FA_CREATE; fi->actions[i] = FA_SKIP; - reportConflicts = 0; + rConflicts = 0; } else if (FColor == 0 && oFColor == 0) { /* ... otherwise, do both, last in wins. */ otherFi->actions[otherFileNum] = FA_CREATE; fi->actions[i] = FA_CREATE; - reportConflicts = 0; + rConflicts = 0; } done = 1; } - if (reportConflicts) { + if (rConflicts) { rpmpsAppend(ps, RPMPROB_NEW_FILE_CONFLICT, rpmteNEVR(p), rpmteKey(p), fn, NULL, diff --git a/rpmqv.c b/rpmqv.c index ebb265a..5077a66 100755 --- a/rpmqv.c +++ b/rpmqv.c @@ -101,7 +101,7 @@ static struct poptOption optionsTable[] = { #endif /* IAM_RPMEIU */ { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmcliAllPoptTable, 0, - N_("Common options for all rpm modes:"), + N_("Common options for all rpm modes and executables:"), NULL }, POPT_AUTOALIAS @@ -409,7 +409,7 @@ int main(int argc, const char ** argv) #if defined(IAM_RPMEIU) if (!( bigMode == MODE_INSTALL ) && -(ia->probFilter & (RPMPROB_FILTER_REPLACEPKG | RPMPROB_FILTER_REPLACEOLDFILES | RPMPROB_FILTER_REPLACENEWFILES | RPMPROB_FILTER_OLDPACKAGE))) +(ia->probFilter & (RPMPROB_FILTER_REPLACEPKG | RPMPROB_FILTER_OLDPACKAGE))) argerror(_("only installation, upgrading, rmsource and rmspec may be forced")); if (bigMode != MODE_INSTALL && (ia->probFilter & RPMPROB_FILTER_FORCERELOCATE)) argerror(_("files may only be relocated during package installation")); @@ -434,11 +434,6 @@ int main(int argc, const char ** argv) argerror(_("--percent may only be specified during package " "installation")); - if (bigMode != MODE_INSTALL && - (ia->probFilter & (RPMPROB_FILTER_REPLACEOLDFILES|RPMPROB_FILTER_REPLACENEWFILES))) - argerror(_("--replacefiles may only be specified during package " - "installation")); - if (bigMode != MODE_INSTALL && (ia->probFilter & RPMPROB_FILTER_REPLACEPKG)) argerror(_("--replacepkgs may only be specified during package " "installation"));