Compare commits

...
Sign in to create a new pull request.

9 commits

Author SHA1 Message Date
James Antill
c512bf733e Change arm basearch to arm 2011-05-31 14:30:37 -04:00
James Antill
0e3973dcf7 Fix merge conflict 2011-05-11 11:06:14 -04:00
James Antill
5983bf4fc3 Update consolidate_libc to fix new version issue.
Limit skip-broken to 30 loops, for rel-eng.
2011-05-11 11:03:15 -04:00
Seth Vidal
bd5173d452 bump and build to fix 640181 2010-10-05 08:59:05 -04:00
James Antill
347ce5bf22 Fix auto-close bug with GPG key installs. 2010-09-14 10:59:29 -04:00
Seth Vidal
d5f16b625d obsolete download order 2010-08-27 13:52:25 -04:00
Seth Vidal
21c49887dc latest head 2010-08-12 12:20:06 -04:00
Seth Vidal
92c6b4f451 head back to f14 2010-08-09 15:18:30 -04:00
Seth Vidal
98ccee74e0 3.2.28 for f14 2010-07-30 16:53:46 -04:00
7 changed files with 697 additions and 27022 deletions

View file

@ -0,0 +1,78 @@
commit 043e869b08126c1b24e392f809c9f6871344c60d
Author: Seth Vidal <skvidal@fedoraproject.org>
Date: Wed May 4 09:43:52 2011 -0400
make sure we use rpm ver cmp for the sort of the glibc requires
when we're doing collapse_libc_requires.
ultimately what's causing: https://bugzilla.redhat.com/show_bug.cgi?id=701744
diff --git a/rpmUtils/miscutils.py b/rpmUtils/miscutils.py
index cdb1cb6..aea4550 100644
--- a/rpmUtils/miscutils.py
+++ b/rpmUtils/miscutils.py
@@ -54,6 +54,10 @@ def compareEVR((e1, v1, r1), (e2, v2, r2)):
#print '%s, %s, %s vs %s, %s, %s = %s' % (e1, v1, r1, e2, v2, r2, rc)
return rc
+def compareVerOnly(v1, v2):
+ """compare version strings only using rpm vercmp"""
+ return compareEVR(('', v1, ''), ('', v2, ''))
+
def checkSig(ts, package):
"""Takes a transaction set and a package, check it's sigs,
return 0 if they are all fine
diff --git a/yum/packages.py b/yum/packages.py
index 264aa9a..e745a1a 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -31,11 +31,12 @@ import warnings
from subprocess import Popen, PIPE
from rpmUtils import RpmUtilsError
import rpmUtils.miscutils
-from rpmUtils.miscutils import flagToString, stringToVersion
+from rpmUtils.miscutils import flagToString, stringToVersion, compareVerOnly
import Errors
import errno
import struct
from constants import *
+from operator import itemgetter
import urlparse
urlparse.uses_fragment.append("media")
@@ -1139,7 +1140,11 @@ class YumAvailablePackage(PackageObject, RpmBase):
if hasattr(self, '_collapse_libc_requires') and self._collapse_libc_requires:
libc_requires = filter(lambda x: x[0].startswith('libc.so.6'), mylist)
if libc_requires:
- best = sorted(libc_requires)[-1]
+ print libc_requires
+ rest = sorted(libc_requires, cmp=compareVerOnly, key=itemgetter(0))
+ best = rest.pop()
+ if best[0].startswith('libc.so.6()'):
+ best = rest.pop()
newlist = []
for i in mylist:
if i[0].startswith('libc.so.6') and i != best:
commit 6bf7ca012bfb3d674df3f196f2f9e3eaabef0c91
Author: Seth Vidal <skvidal@fedoraproject.org>
Date: Wed May 4 10:21:55 2011 -0400
remove a debug print
add an explanation of why we skip libc.so.6()
diff --git a/yum/packages.py b/yum/packages.py
index e745a1a..95c50a1 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -1140,10 +1140,9 @@ class YumAvailablePackage(PackageObject, RpmBase):
if hasattr(self, '_collapse_libc_requires') and self._collapse_libc_requires:
libc_requires = filter(lambda x: x[0].startswith('libc.so.6'), mylist)
if libc_requires:
- print libc_requires
rest = sorted(libc_requires, cmp=compareVerOnly, key=itemgetter(0))
best = rest.pop()
- if best[0].startswith('libc.so.6()'):
+ if best[0].startswith('libc.so.6()'): # rpmvercmp will sort this one as 'highest' so we need to remove it from the list
best = rest.pop()
newlist = []
for i in mylist:

19
arm-basearch.patch Normal file
View file

@ -0,0 +1,19 @@
commit 4d587cf37c8976e6f1b2f3b33b181e52190e8eb7
Author: Dennis Gilmore <dennis@ausil.us>
Date: Thu May 26 15:36:32 2011 -0500
we need to set the basearch on arm hardware to arm.
diff --git a/rpmUtils/arch.py b/rpmUtils/arch.py
index 72cba60..6082005 100644
--- a/rpmUtils/arch.py
+++ b/rpmUtils/arch.py
@@ -359,6 +359,8 @@ def getBaseArch(myarch=None):
return "sparc"
elif myarch.startswith("ppc64"):
return "ppc"
+ elif myarch.startswith("arm"):
+ return "arm"
if isMultiLibArch(arch=myarch):
if myarch in multilibArches:

147
skip-broken-rel-eng.patch Normal file
View file

@ -0,0 +1,147 @@
commit 35d04e27d65dc87f293c10bf4b90d8988f5170a0
Author: Tim Lauridsen <timlau@fedoraproject.org>
Date: Fri Nov 5 08:08:28 2010 +0100
- Make downgrade testcase
- fix test DepsolveProgressCallback to handle downgrade
- fix skip-broken code to handle downgrades
- prefix all skipbroken debug message with 'SKIPBROKEN:' for easier filtering
diff --git a/yum/__init__.py b/yum/__init__.py
index 234b599..11e019a 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1057,7 +1057,7 @@ class YumBase(depsolve.Depsolve):
# and skip-broken shouldn't care too much about speed.
self.rpmdb.transactionReset()
self.installedFileRequires = None # Kind of hacky
- self.verbose_logger.debug(_("Skip-broken round %i"), count)
+ self.verbose_logger.debug("SKIPBROKEN: ########### Round %i ################" , count)
self._printTransaction()
depTree = self._buildDepTree()
startTs = set(self.tsInfo)
@@ -1114,7 +1114,7 @@ class YumBase(depsolve.Depsolve):
self._checkUpdatedLeftovers() # Cleanup updated leftovers
rescode, restring = self.resolveDeps()
if rescode != 1:
- self.verbose_logger.debug(_("Skip-broken took %i rounds "), count)
+ self.verbose_logger.debug("SKIPBROKEN: took %i rounds ", count)
self.verbose_logger.info(_('\nPackages skipped because of dependency problems:'))
skipped_list = [p for p in skipped_po]
skipped_list.sort()
@@ -1228,14 +1228,14 @@ class YumBase(depsolve.Depsolve):
TS_AVAILABLE : "available",
TS_UPDATED : "updated"}
- self.verbose_logger.log(logginglevels.DEBUG_2,"TSINFO: Current Transaction : %i member(s) " % len(self.tsInfo))
+ self.verbose_logger.log(logginglevels.DEBUG_2,"SKIPBROKEN: Current Transaction : %i member(s) " % len(self.tsInfo))
for txmbr in sorted(self.tsInfo):
- msg = " %-11s : %s " % (state[txmbr.output_state],txmbr.po)
+ msg = "SKIPBROKEN: %-11s : %s " % (state[txmbr.output_state],txmbr.po)
self.verbose_logger.log(logginglevels.DEBUG_2, msg)
for po,rel in sorted(txmbr.relatedto):
- msg = " %s : %s" % (rel,po)
+ msg = "SKIPBROKEN: %s : %s" % (rel,po)
self.verbose_logger.log(logginglevels.DEBUG_2, msg)
-
+ self.verbose_logger.log(logginglevels.DEBUG_2,"SKIPBROKEN:%s" % (60 * "="))
def _getPackagesToRemove(self,po,deptree,toRemove):
'''
@@ -1246,6 +1246,10 @@ class YumBase(depsolve.Depsolve):
for pkg in (txmbr.updates + txmbr.obsoletes):
toRemove.add(pkg)
self._getDepsToRemove(pkg, deptree, toRemove)
+ # Remove related packages
+ for (relative, relation) in txmbr.relatedto:
+ toRemove.add(relative)
+ self._getDepsToRemove(relative, deptree, toRemove)
self._getDepsToRemove(po, deptree, toRemove)
def _getDepsToRemove(self,po, deptree, toRemove):
commit eeadab5beb419c6e884f30c04fda58ed1d05b538
Author: Tim Lauridsen <timlau@fedoraproject.org>
Date: Sat Mar 5 13:55:09 2011 +0100
Add a unit test to make skip-broken go into endless loop when an installed
package conflict with an update.
Fix the cause by in depsolve by putting the conflicting po into the problem
tuple, so skip-broken knows what to remove from the transaction.
Also show the full package in the conflict message and not just the name.
diff --git a/yum/depsolve.py b/yum/depsolve.py
index 8f18ccc..388811d 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -680,11 +680,12 @@ class Depsolve(object):
if len(self.tsInfo) != length and txmbrs:
return CheckDeps, errormsgs
- msg = '%s conflicts with %s' % (name, conflicting_po.name)
+ msg = '%s conflicts with %s' % (name, str(conflicting_po))
errormsgs.append(msg)
self.verbose_logger.log(logginglevels.DEBUG_1, msg)
CheckDeps = False
- self.po_with_problems.add((po,None,errormsgs[-1]))
+ # report the conflicting po, so skip-broken can remove it
+ self.po_with_problems.add((po,conflicting_po,errormsgs[-1]))
return CheckDeps, errormsgs
def _undoDepInstalls(self):
commit e07978f754d4268ce7637af036fc0bde9f16c0b4
Author: Tim Lauridsen <timlau@fedoraproject.org>
Date: Thu Mar 31 10:20:58 2011 +0200
Fix bugs in the skip-broken code, this should fix some of the weird cases where skip-broken fails today
diff --git a/yum/__init__.py b/yum/__init__.py
index 60c572d..cf4d827 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1125,6 +1125,9 @@ class YumBase(depsolve.Depsolve):
self.rpmdb.transactionReset()
self.installedFileRequires = None # Kind of hacky
self.verbose_logger.debug("SKIPBROKEN: ########### Round %i ################" , count)
+ if count == 30: # Failsafe, to avoid endless looping
+ self.verbose_logger.debug('SKIPBROKEN: Too many loops ')
+ break
self._printTransaction()
depTree = self._buildDepTree()
startTs = set(self.tsInfo)
@@ -1140,7 +1143,7 @@ class YumBase(depsolve.Depsolve):
for skip in skipped:
skipped_po.add(skip)
# make sure we get the compat arch packages skip from pkgSack and up too.
- if skip not in removed_from_sack and skip.repoid == 'installed':
+ if skip not in removed_from_sack and skip.repoid != 'installed':
_remove_from_sack(skip)
# Nothing was removed, so we still got a problem
# the first time we get here we reset the resolved members of
diff --git a/yum/depsolve.py b/yum/depsolve.py
index 388811d..44ccfd7 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -350,6 +350,7 @@ class Depsolve(object):
providers = self.rpmdb.getProvides(needname, needflags, needversion)
for inst_po in providers:
+ self._working_po = inst_po # store the last provider
inst_str = '%s.%s %s:%s-%s' % inst_po.pkgtup
(i_n, i_a, i_e, i_v, i_r) = inst_po.pkgtup
self.verbose_logger.log(logginglevels.DEBUG_2,
@@ -753,6 +754,7 @@ class Depsolve(object):
# check global FileRequires
+ self._working_po = None # reset the working po
if CheckRemoves:
CheckRemoves = False
for po, dep in self._checkFileRequires():
@@ -766,6 +768,7 @@ class Depsolve(object):
continue
# check Conflicts
+ self._working_po = None # reset the working po
if CheckInstalls:
CheckInstalls = False
for conflict in self._checkConflicts():

View file

@ -1 +1 @@
b2b84be5fad612c4c698e37cc8510492 yum-3.2.27.tar.gz
91eff58aa4c25cd4f46b21201bbf9bea yum-3.2.28.tar.gz

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,39 @@
commit 3e05536ef876fc761553b632495449fd96bb4b9e
Author: James Antill <james@and.org>
Date: Tue Sep 14 09:48:23 2010 -0400
Can't keep ts around, due to rpmdb.auto_close. BZ 622179.
This kind of sucks as we have to remember in all future code not to
keep a ts over any .rpmdb call, it's even better because almost nobody
will hit it. It works though, and is simple.
We could maybe fix this "better" by using a weakref in rpmdb, and doing
it that way. Or having some manual way to mark auto_close as off. Or
just rm'ing auto_close as a bad idea.
diff --git a/yum/__init__.py b/yum/__init__.py
index b5e9213..5c689e5 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -4301,12 +4301,11 @@ class YumBase(depsolve.Depsolve):
keyurls = repo.gpgkey
key_installed = False
- ts = self.rpmdb.readOnlyTS()
-
for keyurl in keyurls:
keys = self._retrievePublicKey(keyurl, repo)
for info in keys:
+ ts = self.rpmdb.readOnlyTS()
# Check if key is already installed
if misc.keyInstalled(ts, info['keyid'], info['timestamp']) >= 0:
self.logger.info(_('GPG key at %s (0x%s) is already installed') % (
@@ -4331,6 +4330,7 @@ class YumBase(depsolve.Depsolve):
raise Errors.YumBaseError, _("Not installing key")
# Import the key
+ ts = self.rpmdb.readOnlyTS()
result = ts.pgpImportPubkey(misc.procgpgkey(info['raw_key']))
if result != 0:
raise Errors.YumBaseError, \

View file

@ -2,8 +2,8 @@
Summary: RPM installer/updater
Name: yum
Version: 3.2.27
Release: 21%{?dist}
Version: 3.2.28
Release: 7%{?dist}
License: GPLv2+
Group: System Environment/Base
Source0: http://yum.baseurl.org/download/3.2/%{name}-%{version}.tar.gz
@ -14,7 +14,12 @@ Patch1: yum-mirror-priority.patch
Patch3: yum-multilib-policy-best.patch
Patch4: no-more-exactarchlist.patch
Patch5: geode-arch.patch
Patch51: arm-basearch.patch
Patch6: yum-HEAD.patch
Patch7: yum-PK-auto-close-fix.patch
Patch8: skip-broken-rel-eng.patch
Patch9: BZ-701744-collapse-libc.patch
Patch20: yum-manpage-files.patch
@ -35,6 +40,7 @@ Obsoletes: yum-basearchonly <= 1.1.9
Obsoletes: yum-allow-downgrade < 1.1.20-0
Obsoletes: yum-plugin-allow-downgrade < 1.1.22-0
Obsoletes: yum-plugin-protect-packages < 1.1.27-0
Obsoletes: yum-plugin-download-order <= 0.2-2
Provides: yum-skip-broken
Provides: yum-basearchonly
Provides: yum-allow-downgrade
@ -69,7 +75,11 @@ can notify you when they are available via email, syslog or dbus.
%patch3 -p0
%patch4 -p0
%patch5 -p1
%patch51 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch20 -p1
%build
@ -133,6 +143,40 @@ rm -rf $RPM_BUILD_ROOT
%dir /usr/lib/yum-plugins
%changelog
* Tue May 31 2011 James Antill <james at fedoraproject.org> - 3.2.28-7
- Change arm basearch to arm
* Wed May 11 2011 James Antill <james at fedoraproject.org> - 3.2.28-6
- Update consolidate_libc to fix new version issue.
- Limit skip-broken to 30 loops, for rel-eng.
* Tue Oct 5 2010 Seth Vidal <skvidal at fedoraproject.org> - 3.2.28-5
- bumping to 3.2.28-5 so f12 doesn't have a higher version
- bug # 640181
* Tue Sep 14 2010 James Antill <james at fedoraproject.org> - 3.2.28-4
- Fix auto-close bug with GPG key installs.
- Resolves: bug#622179
* Fri Aug 27 2010 Seth Vidal <skvidal at fedoraproject.org>
- obsoleted yum-plugin-download-order
* Thu Aug 12 2010 Seth Vidal <skvidal at fedoraproject.org> - 3.2.28-3
- latest head
- fix gpg key import
- more unicode fixes
- output slightly more clear depsovling error msgs
* Mon Aug 9 2010 Seth Vidal <skvidal at fedoraproject.org> - 3.2.28-2
- latest head
- unicide fixes
- sqlite history db conversion fixes
* Fri Jul 30 2010 Seth Vidal <skvidal at fedoraproject.org> - 3.2.28-1
- 3.2.28
* Wed Jul 28 2010 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 3.2.27-21
- Again rebuild against python 2.7