Wednesday 15th July 2009
Problems with Yum and Arch/Noarch Packages
The yum tool as shipped in Fedora 11 will choose an arch-specific package over a "later" arch-independent package - Bug #502401. This is a bit of a blow for those of us trying to move ahead with Features/NoarchSubpackages and it's been closed UPSTREAM and not fixed in Fedora (a pet hate of mine). So I built the Rawhide version of yum (which contains the fix) for F-11 and stuck it in my local repository. This allowed me to build the perl-IO-Zlib update today (the package has build requirements that have changed from arch-specific to arch-independent, and F-11's yum was selecting the arch-specific version, which was too old for perl-IO-Zlib).
Using this update was not without its consequences. My custom repocheck script (a modified version of repoclosure) broke:
Running: repocheck --config=/home/paul/lib/repoc-rhel5-i386.conf --newest --checkrepo city-fan.org-rhel5-i386 Traceback (most recent call last): File "/home/paul/bin/repocheck", line 258, in <module> main() File "/home/paul/bin/repocheck", line 158, in main my = RepoClosure(arch = opts.arch, config = opts.config, builddeps = opts.builddeps) File "/home/paul/bin/repocheck", line 69, in __init__ self.doConfigSetup(fn = config,init_plugins=False) File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 168, in doConfigSetup return self.conf File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 681, in <lambda> conf = property(fget=lambda self: self._getConfig(), File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 210, in _getConfig arch = self.arch.canonarch AttributeError: 'list' object has no attribute 'canonarch'
Now I don't know much python but after a bit of googling around and looking at the code, I made these changes, which seemed to fix things:
--- repoclosure.orig 2009-07-15 17:21:13.168971727 +0100 +++ repoclosure 2009-07-15 17:26:10.748969996 +0100 @@ -69,10 +69,11 @@ def __init__(self, arch=[], config="/etc/yum.conf", builddeps=False, pkgonly=None): yum.YumBase.__init__(self) self.logger = logging.getLogger("yum.verbose.repoclosure") - self.arch = arch + self.arch.archlist = arch self.builddeps = builddeps self.pkgonly = pkgonly - self.doConfigSetup(fn = config,init_plugins=False) + self.preconf.fn = config + self.preconf.init_plugins = False if hasattr(self.repos, 'sqlite'): self.repos.sqlite = False self.repos._selectSackType() @@ -98,10 +99,10 @@ def readMetadata(self): self.doRepoSetup() archs = [] - if not self.arch: + if not self.arch.archlist: archs.extend(rpmUtils.arch.getArchList()) else: - for arch in self.arch: + for arch in self.arch.archlist: archs.extend(rpmUtils.arch.getArchList(arch)) if self.builddeps and 'src' not in archs: archs.append('src')
Fedora Project
Updated gtkwave for F-11 and Rawhide to resolve Bug #511858, an easily-reproducible crash when trying to use Print to File
Looking through fedora-perl-devel-list, I noticed a bunch of FTBFS (Fails To Build Build From Source) bugs had been raised. I didn't have time to look through many of them, but I noticed that the perl-Template-Plugin-Class failure had also been reported upstream and that a new version 0.14 had been issued, removing the bogus test that had triggered the failure. So I updated perl-Template-Plugin-Class and closed Bug #511438 accordingly.
Local Packages
Updated gtkwave as per the Fedora version
Updated perl-IO-Zlib to 1.10 (no functional changes)