Compare commits
9 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c512bf733e | ||
|
|
0e3973dcf7 | ||
|
|
5983bf4fc3 | ||
|
|
bd5173d452 | ||
|
|
347ce5bf22 | ||
|
|
d5f16b625d | ||
|
|
21c49887dc | ||
|
|
92c6b4f451 | ||
|
|
98ccee74e0 |
7 changed files with 697 additions and 27022 deletions
78
BZ-701744-collapse-libc.patch
Normal file
78
BZ-701744-collapse-libc.patch
Normal 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
19
arm-basearch.patch
Normal 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
147
skip-broken-rel-eng.patch
Normal 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():
|
||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
b2b84be5fad612c4c698e37cc8510492 yum-3.2.27.tar.gz
|
||||
91eff58aa4c25cd4f46b21201bbf9bea yum-3.2.28.tar.gz
|
||||
|
|
|
|||
27318
yum-HEAD.patch
27318
yum-HEAD.patch
File diff suppressed because it is too large
Load diff
39
yum-PK-auto-close-fix.patch
Normal file
39
yum-PK-auto-close-fix.patch
Normal 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, \
|
||||
48
yum.spec
48
yum.spec
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue