commit: 563f65e4b167f213981ec030c71ebd35a2ca9780
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 21 18:29:07 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Jan 27 22:44:26 2016 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=563f65e4
repoman: Fix a traceback due to xmlint not being installed for a manifest
generation
Mike helped find teh fact that self.binary was None, causing the misleading
traceback.
Tighten up the logic in XmlLint.
Bypass the PkgMetadata check for manifest mode.
floppym@naomi btrfs-progs % repoman manifest
>>> Creating Manifest for /home/floppym/repos/gentoo/sys-fs/btrfs-progs
Traceback (most recent call last):
File "/home/floppym/bin/repoman", line 37, in <module>
repoman_main(sys.argv[1:])
File "/home/floppym/src/portage/pym/repoman/main.py", line 111, in
repoman_main
can_force = scanner.scan_pkgs(can_force)
File "/home/floppym/src/portage/pym/repoman/scanner.py", line 242, in
scan_pkgs
rdata = func(**dynamic_data)
File
"/home/floppym/src/portage/pym/repoman/modules/scan/metadata/pkgmetadata.py",
line 180, in check
if not self.xmllint.check(checkdir, repolevel):
File "/home/floppym/src/portage/pym/repoman/_xml.py", line 98, in check
os.path.join(checkdir, "metadata.xml"))))
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
pym/repoman/_xml.py | 2 +-
pym/repoman/modules/scan/metadata/pkgmetadata.py | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/pym/repoman/_xml.py b/pym/repoman/_xml.py
index 2661f14..f7ff9fb 100644
--- a/pym/repoman/_xml.py
+++ b/pym/repoman/_xml.py
@@ -60,6 +60,7 @@ class XmlLint(object):
self.repoman_settings = repoman_settings
self._is_capable = metadata_dtd is not None
self.binary = None
+ self._is_capable = False
self._check_capable()
def _check_capable(self):
@@ -68,7 +69,6 @@ class XmlLint(object):
self.binary = find_binary('xmllint')
if not self.binary:
print(red("!!! xmllint not found. Can't check
metadata.xml.\n"))
- self._is_capable = False
elif not self._is_capable:
if not fetch_metadata_dtd(self.metadata_dtd,
self.repoman_settings):
sys.exit(1)
diff --git a/pym/repoman/modules/scan/metadata/pkgmetadata.py
b/pym/repoman/modules/scan/metadata/pkgmetadata.py
index 220fd23..8e93457 100644
--- a/pym/repoman/modules/scan/metadata/pkgmetadata.py
+++ b/pym/repoman/modules/scan/metadata/pkgmetadata.py
@@ -71,6 +71,9 @@ class PkgMetadata(ScanBase):
repolevel = kwargs.get('repolevel')
self.musedict = {}
+ if self.options.mode in ['manifest']:
+ return {'continue': False, 'muselist':
frozenset(self.musedict)}
+
# metadata.xml file check
if "metadata.xml" not in checkdirlist:
self.qatracker.add_error("metadata.missing", xpkg +
"/metadata.xml")