4.0.4-alt98.22
- Removed support for availablePackages/suggestedPackages. - Removed rebuilddb db_filter_dups code (Panu Matilainen).
This commit is contained in:
commit
dd1780dbbe
@ -619,8 +619,6 @@ rpmTransactionSet rpmtransCreateSet(rpmdb rpmdb, const char * rootDir)
|
||||
|
||||
ts->addedPackages.delta = ts->delta;
|
||||
alCreate(&ts->addedPackages);
|
||||
ts->availablePackages.delta = ts->delta;
|
||||
alCreate(&ts->availablePackages);
|
||||
|
||||
ts->orderAlloced = ts->delta;
|
||||
ts->orderCount = 0;
|
||||
@ -799,12 +797,6 @@ int rpmtransAddPackage(rpmTransactionSet ts, Header h, FD_t fd,
|
||||
return 0;
|
||||
}
|
||||
|
||||
void rpmtransAvailablePackage(rpmTransactionSet ts, Header h, const void * key)
|
||||
{
|
||||
struct availablePackage * al;
|
||||
al = alAddPackage(&ts->availablePackages, h, key, NULL, NULL);
|
||||
}
|
||||
|
||||
int rpmtransRemovePackage(rpmTransactionSet ts, int dboffset)
|
||||
{
|
||||
return removePackage(ts, dboffset, -1);
|
||||
@ -814,7 +806,6 @@ rpmTransactionSet rpmtransFree(rpmTransactionSet ts)
|
||||
{
|
||||
if (ts) {
|
||||
alFree(&ts->addedPackages);
|
||||
alFree(&ts->availablePackages);
|
||||
ts->di = _free(ts->di);
|
||||
ts->removedPackages = _free(ts->removedPackages);
|
||||
ts->order = _free(ts->order);
|
||||
@ -842,7 +833,6 @@ rpmDependencyConflict rpmdepFreeConflicts(rpmDependencyConflict conflicts,
|
||||
conflicts[i].byRelease = _free(conflicts[i].byRelease);
|
||||
conflicts[i].needsName = _free(conflicts[i].needsName);
|
||||
conflicts[i].needsVersion = _free(conflicts[i].needsVersion);
|
||||
conflicts[i].suggestedPackages = _free(conflicts[i].suggestedPackages);
|
||||
}
|
||||
|
||||
return (conflicts = _free(conflicts));
|
||||
@ -1072,21 +1062,17 @@ alSatisfiesDepend(const availableList al,
|
||||
* @param keyName dependency name string
|
||||
* @param keyEVR dependency [epoch:]version[-release] string
|
||||
* @param keyFlags dependency logical range qualifiers
|
||||
* @retval suggestion possible package(s) to resolve dependency
|
||||
* @return 0 if satisfied, 1 if not satisfied, 2 if error
|
||||
*/
|
||||
static int unsatisfiedDepend(rpmTransactionSet ts,
|
||||
const char * keyType, const char * keyDepend,
|
||||
const char * keyName, const char * keyEVR, int keyFlags,
|
||||
/*@null@*/ /*@out@*/ struct availablePackage *** suggestion)
|
||||
/*@modifies ts, *suggestion @*/
|
||||
const char * keyName, const char * keyEVR, int keyFlags)
|
||||
/*@modifies ts @*/
|
||||
{
|
||||
rpmdbMatchIterator mi;
|
||||
Header h;
|
||||
int rc = 0; /* assume dependency is satisfied */
|
||||
|
||||
if (suggestion) *suggestion = NULL;
|
||||
|
||||
/*
|
||||
* Check if dbiOpen/dbiPut failed (e.g. permissions), we can't cache.
|
||||
*/
|
||||
@ -1111,10 +1097,6 @@ static int unsatisfiedDepend(rpmTransactionSet ts,
|
||||
keyType, keyDepend, (rc ? _("NO ") : _("YES")));
|
||||
xx = dbiCclose(dbi, NULL, 0);
|
||||
|
||||
if (suggestion && rc == 1)
|
||||
*suggestion = alAllSatisfiesDepend(&ts->availablePackages,
|
||||
NULL, NULL, keyName, keyEVR, keyFlags);
|
||||
|
||||
return rc;
|
||||
}
|
||||
xx = dbiCclose(dbi, dbcursor, 0);
|
||||
@ -1214,10 +1196,6 @@ static int unsatisfiedDepend(rpmTransactionSet ts,
|
||||
|
||||
}
|
||||
|
||||
if (suggestion)
|
||||
*suggestion = alAllSatisfiesDepend(&ts->availablePackages, NULL, NULL,
|
||||
keyName, keyEVR, keyFlags);
|
||||
|
||||
unsatisfied:
|
||||
rpmMessage(RPMMESS_DEBUG, _("%s: %-45s NO\n"), keyType, keyDepend+2);
|
||||
rc = 1; /* dependency is unsatisfied */
|
||||
@ -1276,7 +1254,6 @@ static int checkPackageDeps(rpmTransactionSet ts, problemsSet psp,
|
||||
rpmTagType type;
|
||||
int i, rc;
|
||||
int ourrc = 0;
|
||||
struct availablePackage ** suggestion;
|
||||
|
||||
(void) headerNVR(h, &name, &version, &release);
|
||||
|
||||
@ -1300,7 +1277,7 @@ static int checkPackageDeps(rpmTransactionSet ts, problemsSet psp,
|
||||
requires[i], requiresEVR[i], requireFlags[i]);
|
||||
|
||||
rc = unsatisfiedDepend(ts, " Requires", keyDepend,
|
||||
requires[i], requiresEVR[i], requireFlags[i], &suggestion);
|
||||
requires[i], requiresEVR[i], requireFlags[i]);
|
||||
|
||||
switch (rc) {
|
||||
case 0: /* requirements are satisfied. */
|
||||
@ -1324,19 +1301,6 @@ static int checkPackageDeps(rpmTransactionSet ts, problemsSet psp,
|
||||
pp->needsVersion = xstrdup(requiresEVR[i]);
|
||||
pp->needsFlags = requireFlags[i];
|
||||
pp->sense = RPMDEP_SENSE_REQUIRES;
|
||||
|
||||
if (suggestion) {
|
||||
int j;
|
||||
for (j = 0; suggestion[j]; j++)
|
||||
{};
|
||||
pp->suggestedPackages =
|
||||
xmalloc( (j + 1) * sizeof(*pp->suggestedPackages) );
|
||||
for (j = 0; suggestion[j]; j++)
|
||||
pp->suggestedPackages[j] = suggestion[j]->key;
|
||||
pp->suggestedPackages[j] = NULL;
|
||||
} else {
|
||||
pp->suggestedPackages = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
psp->num++;
|
||||
@ -1375,7 +1339,7 @@ static int checkPackageDeps(rpmTransactionSet ts, problemsSet psp,
|
||||
keyDepend = printDepend("C", conflicts[i], conflictsEVR[i], conflictFlags[i]);
|
||||
|
||||
rc = unsatisfiedDepend(ts, "Conflicts", keyDepend,
|
||||
conflicts[i], conflictsEVR[i], conflictFlags[i], NULL);
|
||||
conflicts[i], conflictsEVR[i], conflictFlags[i]);
|
||||
|
||||
/* 1 == unsatisfied, 0 == satsisfied */
|
||||
switch (rc) {
|
||||
@ -1398,7 +1362,6 @@ static int checkPackageDeps(rpmTransactionSet ts, problemsSet psp,
|
||||
pp->needsVersion = xstrdup(conflictsEVR[i]);
|
||||
pp->needsFlags = conflictFlags[i];
|
||||
pp->sense = RPMDEP_SENSE_CONFLICTS;
|
||||
pp->suggestedPackages = NULL;
|
||||
}
|
||||
|
||||
psp->num++;
|
||||
@ -1812,7 +1775,6 @@ int rpmdepOrder(rpmTransactionSet ts)
|
||||
int i, j;
|
||||
|
||||
alMakeIndex(&ts->addedPackages);
|
||||
alMakeIndex(&ts->availablePackages);
|
||||
|
||||
/* T1. Initialize. */
|
||||
loopcheck = npkgs;
|
||||
@ -2149,7 +2111,6 @@ int rpmdepCheck(rpmTransactionSet ts,
|
||||
*numConflicts = 0;
|
||||
|
||||
alMakeIndex(&ts->addedPackages);
|
||||
alMakeIndex(&ts->availablePackages);
|
||||
|
||||
/*
|
||||
* Look at all of the added packages and make sure their dependencies
|
||||
|
@ -151,8 +151,6 @@ struct rpmTransactionSet_s {
|
||||
int allocedRemovedPackages; /*!< Size of removed packages array. */
|
||||
struct availableList_s addedPackages;
|
||||
/*!< Set of packages being installed. */
|
||||
struct availableList_s availablePackages;
|
||||
/*!< Universe of possible packages. */
|
||||
/*@only@*/ transactionElement order;
|
||||
/*!< Packages sorted by dependencies. */
|
||||
int orderCount; /*!< No. of transaction elements. */
|
||||
|
12
lib/rpmlib.h
12
lib/rpmlib.h
@ -1035,7 +1035,6 @@ typedef /*@abstract@*/ struct rpmDependencyConflict_s {
|
||||
const char * needsName; /*!< dependency name */
|
||||
const char * needsVersion; /*!< dependency epoch:version-release */
|
||||
int needsFlags; /*!< dependency flags */
|
||||
/*@owned@*/ /*@null@*/ const void ** suggestedPackages; /* terminated by NULL */
|
||||
enum {
|
||||
RPMDEP_SENSE_REQUIRES, /*!< requirement not satisfied. */
|
||||
RPMDEP_SENSE_CONFLICTS /*!< conflict was found. */
|
||||
@ -1300,17 +1299,6 @@ int rpmtransAddPackage(rpmTransactionSet ts, Header h, /*@null@*/ FD_t fd,
|
||||
/*@null@*/ rpmRelocation * relocs)
|
||||
/*@modifies fd, h, ts @*/;
|
||||
|
||||
/** \ingroup rpmtrans
|
||||
* Add package to universe of possible packages to install in transaction set.
|
||||
* @param ts transaction set
|
||||
* @param h header
|
||||
* @param key package private data
|
||||
*/
|
||||
/*@unused@*/
|
||||
void rpmtransAvailablePackage(rpmTransactionSet ts, Header h,
|
||||
/*@null@*/ /*@owned@*/ const void * key)
|
||||
/*@modifies h, ts @*/;
|
||||
|
||||
/** \ingroup rpmtrans
|
||||
* Add package to be removed to unordered transaction set.
|
||||
* @param ts transaction set
|
||||
|
@ -217,21 +217,17 @@ static PyObject * rpmtransAdd(rpmtransObject * s, PyObject * args) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (how && strcmp(how, "a") && strcmp(how, "u") && strcmp(how, "i")) {
|
||||
PyErr_SetString(PyExc_TypeError, "how argument must be \"u\", \"a\", or \"i\"");
|
||||
if (how && strcmp(how, "u") && strcmp(how, "i")) {
|
||||
PyErr_SetString(PyExc_TypeError, "how argument must be \"u\" or \"i\"");
|
||||
return NULL;
|
||||
} else if (how && !strcmp(how, "u"))
|
||||
isUpgrade = 1;
|
||||
|
||||
if (how && !strcmp(how, "a"))
|
||||
rpmtransAvailablePackage(s->ts, hdrGetHeader(h), key);
|
||||
else
|
||||
rpmtransAddPackage(s->ts, hdrGetHeader(h), NULL, key, isUpgrade, NULL);
|
||||
rpmtransAddPackage(s->ts, hdrGetHeader(h), NULL, key, isUpgrade, NULL);
|
||||
|
||||
/* This should increment the usage count for me */
|
||||
if (key) {
|
||||
if (key)
|
||||
PyList_Append(s->keyList, key);
|
||||
}
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
@ -273,7 +269,7 @@ static PyObject * rpmtransRemove(rpmtransObject * s, PyObject * args) {
|
||||
static PyObject * rpmtransDepCheck(rpmtransObject * s, PyObject * args) {
|
||||
rpmDependencyConflict conflicts;
|
||||
int numConflicts;
|
||||
PyObject * list, * cf, * suggestions;
|
||||
PyObject * list, * cf;
|
||||
int i, j;
|
||||
int allSuggestions = 0;
|
||||
|
||||
@ -283,20 +279,7 @@ static PyObject * rpmtransDepCheck(rpmtransObject * s, PyObject * args) {
|
||||
if (numConflicts) {
|
||||
list = PyList_New(0);
|
||||
|
||||
/* XXX TODO: rpmlib-4.0.3 can return multiple suggested packages. */
|
||||
for (i = 0; i < numConflicts; i++) {
|
||||
if (!conflicts[i].suggestedPackages)
|
||||
suggestions = Py_None;
|
||||
else if (!allSuggestions)
|
||||
suggestions = conflicts[i].suggestedPackages[0];
|
||||
else {
|
||||
suggestions = PyList_New(0);
|
||||
|
||||
for (j = 0; conflicts[i].suggestedPackages[j]; j++)
|
||||
PyList_Append(suggestions,
|
||||
conflicts[i].suggestedPackages[j]);
|
||||
}
|
||||
|
||||
cf = Py_BuildValue("((sss)(ss)iOi)", conflicts[i].byName,
|
||||
conflicts[i].byVersion, conflicts[i].byRelease,
|
||||
|
||||
@ -304,7 +287,7 @@ static PyObject * rpmtransDepCheck(rpmtransObject * s, PyObject * args) {
|
||||
conflicts[i].needsVersion,
|
||||
|
||||
conflicts[i].needsFlags,
|
||||
suggestions,
|
||||
/* suggestions */ Py_None,
|
||||
conflicts[i].sense);
|
||||
PyList_Append(list, (PyObject *) cf);
|
||||
Py_DECREF(cf);
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
Name: %rpm_name
|
||||
Version: %rpm_version
|
||||
Release: alt98.21
|
||||
Release: alt98.22
|
||||
|
||||
%define ifdef() %if %{expand:%%{?%{1}:1}%%{!?%{1}:0}}
|
||||
%define get_dep() %(rpm -q --qf '%%{NAME} >= %%|SERIAL?{%%{SERIAL}:}|%%{VERSION}-%%{RELEASE}' %1 2>/dev/null || echo '%1 >= unknown')
|
||||
@ -488,6 +488,10 @@ fi
|
||||
%_bindir/rpm2cpio.static
|
||||
|
||||
%changelog
|
||||
* Thu Oct 01 2009 Alexey Tourbin <at@altlinux.ru> 4.0.4-alt98.22
|
||||
- Removed support for availablePackages/suggestedPackages.
|
||||
- Removed rebuilddb db_filter_dups code (Panu Matilainen).
|
||||
|
||||
* Tue Sep 29 2009 Alexey Tourbin <at@altlinux.ru> 4.0.4-alt98.21
|
||||
- rpmio, rpmbuild: Added support for .xz/.lzma compressed sources and patches.
|
||||
- Removed old scripts in /usr/lib/rpm.
|
||||
|
@ -48,7 +48,6 @@ static int _debug = 0;
|
||||
/*@unchecked@*/
|
||||
static int _rebuildinprogress = 0;
|
||||
/*@unchecked@*/
|
||||
static int _db_filter_dups = 0;
|
||||
|
||||
#define _DBI_FLAGS 0
|
||||
#define _DBI_PERMS 0644
|
||||
@ -883,17 +882,15 @@ static /*@only@*/ /*@null@*/
|
||||
rpmdb newRpmdb(/*@kept@*/ /*@null@*/ const char * root,
|
||||
/*@kept@*/ /*@null@*/ const char * home,
|
||||
int mode, int perms, int flags)
|
||||
/*@globals _db_filter_dups, rpmGlobalMacroContext @*/
|
||||
/*@modifies _db_filter_dups, rpmGlobalMacroContext @*/
|
||||
/*@globals rpmGlobalMacroContext @*/
|
||||
/*@modifies rpmGlobalMacroContext @*/
|
||||
{
|
||||
rpmdb db = xcalloc(sizeof(*db), 1);
|
||||
const char * epfx = _DB_ERRPFX;
|
||||
static int _initialized = 0;
|
||||
|
||||
if (!_initialized) {
|
||||
_db_filter_dups = rpmExpandNumeric("%{?_filterdbdups}");
|
||||
if (!_initialized)
|
||||
_initialized = 1;
|
||||
}
|
||||
|
||||
/*@-assignexpose@*/
|
||||
*db = dbTemplate; /* structure assignment */
|
||||
@ -922,7 +919,6 @@ rpmdb newRpmdb(/*@kept@*/ /*@null@*/ const char * root,
|
||||
db->db_errpfx = rpmExpand( (epfx && *epfx ? epfx : _DB_ERRPFX), NULL);
|
||||
/*@=nullpass@*/
|
||||
db->db_remove_env = 0;
|
||||
db->db_filter_dups = _db_filter_dups;
|
||||
db->db_ndbi = dbiTagsMax;
|
||||
db->_dbi = xcalloc(db->db_ndbi, sizeof(*db->_dbi));
|
||||
/*@-globstate@*/ return db; /*@=globstate@*/
|
||||
@ -3356,32 +3352,6 @@ int rpmdbRebuild(const char * prefix)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Filter duplicate entries ? (bug in pre rpm-3.0.4) */
|
||||
if (_db_filter_dups || newdb->db_filter_dups) {
|
||||
const char * name, * version, * release;
|
||||
int skip = 0;
|
||||
|
||||
(void) headerNVR(h, &name, &version, &release);
|
||||
|
||||
/*@-shadow@*/
|
||||
{ rpmdbMatchIterator mi;
|
||||
mi = rpmdbInitIterator(newdb, RPMTAG_NAME, name, 0);
|
||||
(void) rpmdbSetIteratorRE(mi, RPMTAG_VERSION,
|
||||
RPMMIRE_DEFAULT, version);
|
||||
(void) rpmdbSetIteratorRE(mi, RPMTAG_RELEASE,
|
||||
RPMMIRE_DEFAULT, release);
|
||||
while (rpmdbNextIterator(mi)) {
|
||||
skip = 1;
|
||||
/*@innerbreak@*/ break;
|
||||
}
|
||||
mi = rpmdbFreeIterator(mi);
|
||||
}
|
||||
/*@=shadow@*/
|
||||
|
||||
if (skip)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Deleted entries are eliminated in legacy headers by copy. */
|
||||
{ Header nh = (headerIsEntry(h, RPMTAG_HEADERIMAGE)
|
||||
? headerCopy(h) : NULL);
|
||||
|
@ -311,7 +311,6 @@ struct rpmdb_s {
|
||||
int db_api; /*!< Berkeley API type */
|
||||
/*@owned@*/ const char * db_errpfx;
|
||||
int db_remove_env;
|
||||
int db_filter_dups;
|
||||
int db_chrootDone; /*!< If chroot(2) done, ignore db_root. */
|
||||
void (*db_errcall) (const char *db_errpfx, char *buffer)
|
||||
/*@*/;
|
||||
|
Loading…
Reference in New Issue
Block a user