[yum/f15] Fix for createrepo sqlite update. Also doesn't auto load summary/description/url/sourcerpm.
James Antill
james at fedoraproject.org
Thu Jul 28 19:39:51 UTC 2011
commit def97a88e7522c33abe5464e26238fcc51d8b541
Author: James Antill <james at and.org>
Date: Thu Jul 28 15:32:08 2011 -0400
Fix for createrepo sqlite update.
Also doesn't auto load summary/description/url/sourcerpm.
yum-createrepo-sqlite-update-fixes.patch | 223 ++++++++++++++++++++++++++++++
yum.spec | 8 +-
2 files changed, 230 insertions(+), 1 deletions(-)
---
diff --git a/yum-createrepo-sqlite-update-fixes.patch b/yum-createrepo-sqlite-update-fixes.patch
new file mode 100644
index 0000000..23af98f
--- /dev/null
+++ b/yum-createrepo-sqlite-update-fixes.patch
@@ -0,0 +1,223 @@
+commit f964c35723285981459474f7afe194b079ac28ed
+Author: James Antill <james at and.org>
+Date: Mon Feb 21 11:34:29 2011 -0500
+
+ Don't preload summary/desc/url/source, also _needed_ for pkgtup only pkgs.
+
+diff --git a/yum/packages.py b/yum/packages.py
+index 15eeeaa..8ffe51e 100644
+--- a/yum/packages.py
++++ b/yum/packages.py
+@@ -1246,18 +1246,32 @@ class YumHeaderPackage(YumAvailablePackage):
+ self.ver = self.version
+ self.rel = self.release
+ self.pkgtup = (self.name, self.arch, self.epoch, self.version, self.release)
+- # Summaries "can be" empty, which rpm return [], see BZ 473239, *sigh*
+- self.summary = self.hdr['summary'] or ''
+- self.summary = misc.share_data(self.summary.replace('\n', ''))
+- self.description = self.hdr['description'] or ''
+- self.description = misc.share_data(self.description)
++ self._loaded_summary = None
++ self._loaded_description = None
+ self.pkgid = self.hdr[rpm.RPMTAG_SHA1HEADER]
+ if not self.pkgid:
+ self.pkgid = "%s.%s" %(self.hdr['name'], self.hdr['buildtime'])
+ self.packagesize = self.hdr['size']
+ self.__mode_cache = {}
+ self.__prcoPopulated = False
+-
++
++ def _loadSummary(self):
++ # Summaries "can be" empty, which rpm return [], see BZ 473239, *sigh*
++ if self._loaded_summary is None:
++ summary = self._get_hdr()['summary'] or ''
++ summary = misc.share_data(summary.replace('\n', ''))
++ self._loaded_summary = summary
++ return self._loaded_summary
++ summary = property(lambda x: x._loadSummary())
++
++ def _loadDescription(self):
++ if self._loaded_description is None:
++ description = self._get_hdr()['description'] or ''
++ description = misc.share_data(description)
++ self._loaded_description = description
++ return self._loaded_description
++ description = property(lambda x: x._loadDescription())
++
+ def __str__(self):
+ if self.epoch == '0':
+ val = '%s-%s-%s.%s' % (self.name, self.version, self.release,
+diff --git a/yum/rpmsack.py b/yum/rpmsack.py
+index 4e9835d..e93df20 100644
+--- a/yum/rpmsack.py
++++ b/yum/rpmsack.py
+@@ -42,11 +42,6 @@ class RPMInstalledPackage(YumInstalledPackage):
+ def __init__(self, rpmhdr, index, rpmdb):
+ self._has_hdr = True
+ YumInstalledPackage.__init__(self, rpmhdr, yumdb=rpmdb.yumdb)
+- # NOTE: We keep summary/description/url because it doesn't add much
+- # and "yum search" uses them all.
+- self.url = rpmhdr['url']
+- # Also keep sourcerpm for pirut/etc.
+- self.sourcerpm = rpmhdr['sourcerpm']
+
+ self.idx = index
+ self.rpmdb = rpmdb
+commit 0e9bdf0b7d78a735319751692d3af5ae5ed20537
+Author: Seth Vidal <skvidal at fedoraproject.org>
+Date: Fri Jul 15 11:17:15 2011 -0400
+
+ when you .lower() a string you want to compare it
+ to lowercase values, not uppercase ones.
+
+diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
+index 8a6f6f3..19193ad 100644
+--- a/yum/sqlitesack.py
++++ b/yum/sqlitesack.py
+@@ -406,7 +406,7 @@ class YumAvailablePackageSqlite(YumAvailablePackage, PackageObject, RpmBase):
+ requires = []
+ for ob in cur:
+ pre = "0"
+- if ob['pre'].lower() in ['TRUE', 1]:
++ if ob['pre'].lower() in ['true', 1]:
+ pre = "1"
+ prco_set = (_share_data(ob['name']), _share_data(ob['flags']),
+ (_share_data(ob['epoch']),
+commit 5cc20cc6581ae621d163207c1ce57b3b0776af98
+Author: Seth Vidal <skvidal at fedoraproject.org>
+Date: Fri Jul 15 11:21:21 2011 -0400
+
+ the "0" string of pre returns as valid on the if pre check. So turn it
+ into a check for "1" so our requires don't always include pre="0"
+ when they don't really need to.
+
+diff --git a/yum/packages.py b/yum/packages.py
+index 5ef9951..4b1265c 100644
+--- a/yum/packages.py
++++ b/yum/packages.py
+@@ -1217,7 +1217,7 @@ class YumAvailablePackage(PackageObject, RpmBase):
+ prcostring += ''' ver="%s"''' % misc.to_xml(v, attrib=True)
+ if r:
+ prcostring += ''' rel="%s"''' % misc.to_xml(r, attrib=True)
+- if pre:
++ if pre == "1":
+ prcostring += ''' pre="%s"''' % pre
+
+ prcostring += "/>\n"
+commit ff93cd1a76a86bec43b2c712cab637bf4bfcdff7
+Author: Seth Vidal <skvidal at fedoraproject.org>
+Date: Fri Jul 15 11:42:02 2011 -0400
+
+ make the test !=0 instead of == 1
+
+diff --git a/yum/packages.py b/yum/packages.py
+index 4b1265c..e055edf 100644
+--- a/yum/packages.py
++++ b/yum/packages.py
+@@ -1217,7 +1217,7 @@ class YumAvailablePackage(PackageObject, RpmBase):
+ prcostring += ''' ver="%s"''' % misc.to_xml(v, attrib=True)
+ if r:
+ prcostring += ''' rel="%s"''' % misc.to_xml(r, attrib=True)
+- if pre == "1":
++ if pre != "0":
+ prcostring += ''' pre="%s"''' % pre
+
+ prcostring += "/>\n"
+commit b6431c11672f9f0cfb09fc384c7f249c66f3c78a
+Author: Seth Vidal <skvidal at fedoraproject.org>
+Date: Fri Jul 15 17:37:12 2011 -0400
+
+ - make the pre check look for 0 or "0" b/c 0 comes from the pkgs and "0" comes from the sqlite :)
+ - if we have nothing we've used in the requires output, then don't output anything - this makes it match
+ the behavior of dumping to xml from the sqlite dbs
+ - set installedsize properly for header/local pkg objects
+ - use installedsize properly in the xml generation :)
+ - sort the requires and provides lists so if nothing has changed nothing in the repodata will change :)
+
+diff --git a/yum/packages.py b/yum/packages.py
+index e055edf..db365c5 100644
+--- a/yum/packages.py
++++ b/yum/packages.py
+@@ -1083,7 +1083,7 @@ class YumAvailablePackage(PackageObject, RpmBase):
+ misc.to_unicode(misc.to_xml(self.summary)),
+ misc.to_unicode(misc.to_xml(self.description)),
+ packager, url, self.filetime,
+- self.buildtime, self.packagesize, self.size, self.archivesize)
++ self.buildtime, self.packagesize, self.installedsize, self.archivesize)
+
+ msg += self._return_remote_location()
+ return msg
+@@ -1133,7 +1133,7 @@ class YumAvailablePackage(PackageObject, RpmBase):
+ msg = ""
+ mylist = getattr(self, pcotype)
+ if mylist: msg = "\n <rpm:%s>\n" % pcotype
+- for (name, flags, (e,v,r)) in mylist:
++ for (name, flags, (e,v,r)) in sorted(mylist):
+ pcostring = ''' <rpm:entry name="%s"''' % misc.to_xml(name, attrib=True)
+ if flags:
+ pcostring += ''' flags="%s"''' % misc.to_xml(flags, attrib=True)
+@@ -1194,8 +1194,8 @@ class YumAvailablePackage(PackageObject, RpmBase):
+ continue
+ newlist.append(i)
+ mylist = newlist
+-
+- for (name, flags, (e,v,r),pre) in mylist:
++ used = 0
++ for (name, flags, (e,v,r),pre) in sorted(mylist):
+ if name.startswith('rpmlib('):
+ continue
+ # this drops out requires that the pkg provides for itself.
+@@ -1217,13 +1217,16 @@ class YumAvailablePackage(PackageObject, RpmBase):
+ prcostring += ''' ver="%s"''' % misc.to_xml(v, attrib=True)
+ if r:
+ prcostring += ''' rel="%s"''' % misc.to_xml(r, attrib=True)
+- if pre != "0":
++ if pre not in ("0", 0):
+ prcostring += ''' pre="%s"''' % pre
+-
++
+ prcostring += "/>\n"
+ msg += prcostring
++ used += 1
+
+ if mylist: msg += " </rpm:requires>"
++ if used == 0:
++ return ""
+ return msg
+
+ def _dump_changelog(self, clog_limit):
+@@ -1299,7 +1302,8 @@ class YumHeaderPackage(YumAvailablePackage):
+ self.pkgid = self.hdr[rpm.RPMTAG_SHA1HEADER]
+ if not self.pkgid:
+ self.pkgid = "%s.%s" %(self.hdr['name'], self.hdr['buildtime'])
+- self.packagesize = self.hdr['size']
++ self.packagesize = self.hdr['archivesize']
++ self.installedsize = self.hdr['size']
+ self.__mode_cache = {}
+ self.__prcoPopulated = False
+
+commit cf07a046ba2969f25fa16801cc86940dd0ceafa7
+Author: Seth Vidal <skvidal at fedoraproject.org>
+Date: Fri Jul 15 17:44:25 2011 -0400
+
+ sort the files output too - it takes a bit more time but it makes things easier to read :)
+
+diff --git a/yum/packages.py b/yum/packages.py
+index db365c5..79c15db 100644
+--- a/yum/packages.py
++++ b/yum/packages.py
+@@ -1161,11 +1161,11 @@ class YumAvailablePackage(PackageObject, RpmBase):
+ dirs = self.returnFileEntries('dir', primary_only=True)
+ ghosts = self.returnFileEntries('ghost', primary_only=True)
+
+- for fn in files:
++ for fn in sorted(files):
+ msg += """ <file>%s</file>\n""" % misc.to_xml(fn)
+- for fn in dirs:
++ for fn in sorted(dirs):
+ msg += """ <file type="dir">%s</file>\n""" % misc.to_xml(fn)
+- for fn in ghosts:
++ for fn in sorted(ghosts):
+ msg += """ <file type="ghost">%s</file>\n""" % misc.to_xml(fn)
+
+ return msg
diff --git a/yum.spec b/yum.spec
index 49bb66a..2a0c578 100644
--- a/yum.spec
+++ b/yum.spec
@@ -7,7 +7,7 @@
Summary: RPM package installer/updater/manager
Name: yum
Version: 3.2.29
-Release: 7%{?dist}
+Release: 8%{?dist}
License: GPLv2+
Group: System Environment/Base
Source0: http://yum.baseurl.org/download/3.2/%{name}-%{version}.tar.gz
@@ -23,6 +23,7 @@ Patch6: yum-HEAD.patch
Patch8: skip-broken-rel-eng.patch
Patch9: BZ-701744-collapse-libc.patch
+Patch10: yum-createrepo-sqlite-update-fixes.patch
Patch20: yum-manpage-files.patch
@@ -131,6 +132,7 @@ Install this package if you want auto yum updates nightly via cron.
%patch6 -p1
%patch8 -p1
%patch9 -p1
+%patch10 -p1
%patch20 -p1
%build
@@ -254,6 +256,10 @@ exit 0
%config(noreplace) %{_sysconfdir}/sysconfig/yum-cron
%changelog
+* Thu Jul 28 2011 James Antill <james at fedoraproject.org> - 3.2.29-8
+- Fix for createrepo sqlite update.
+- Also doesn't auto load summary/description/url/sourcerpm.
+
* Mon Jul 11 2011 James Antill <james at fedoraproject.org> - 3.2.29-7
- Fix libc consolidate.
- Resolves: bug#715108
More information about the scm-commits
mailing list