Gentoo Archives: gentoo-commits

From: Brian Dolbec <dolsen@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:repoman commit in: pym/repoman/, pym/repoman/modules/scan/metadata/
Date: Sun, 31 Jan 2016 20:03:57
Message-Id: 1454185524.9a99663c3ec20d7a6b5379651cde93da32a54904.dolsen@gentoo
1 commit: 9a99663c3ec20d7a6b5379651cde93da32a54904
2 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
3 AuthorDate: Thu Jan 21 18:29:07 2016 +0000
4 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
5 CommitDate: Sat Jan 30 20:25:24 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=9a99663c
7
8 repoman: Fix a traceback due to xmlint not being installed for a manifest generation
9
10 Mike helped find teh fact that self.binary was None, causing the misleading traceback.
11 Tighten up the logic in XmlLint.
12 Bypass the PkgMetadata check for manifest mode.
13
14 floppym@naomi btrfs-progs % repoman manifest
15 >>> Creating Manifest for /home/floppym/repos/gentoo/sys-fs/btrfs-progs
16 Traceback (most recent call last):
17 File "/home/floppym/bin/repoman", line 37, in <module>
18 repoman_main(sys.argv[1:])
19 File "/home/floppym/src/portage/pym/repoman/main.py", line 111, in repoman_main
20 can_force = scanner.scan_pkgs(can_force)
21 File "/home/floppym/src/portage/pym/repoman/scanner.py", line 242, in scan_pkgs
22 rdata = func(**dynamic_data)
23 File "/home/floppym/src/portage/pym/repoman/modules/scan/metadata/pkgmetadata.py", line 180, in check
24 if not self.xmllint.check(checkdir, repolevel):
25 File "/home/floppym/src/portage/pym/repoman/_xml.py", line 98, in check
26 os.path.join(checkdir, "metadata.xml"))))
27 TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
28
29 pym/repoman/_xml.py | 2 +-
30 pym/repoman/modules/scan/metadata/pkgmetadata.py | 3 +++
31 2 files changed, 4 insertions(+), 1 deletion(-)
32
33 diff --git a/pym/repoman/_xml.py b/pym/repoman/_xml.py
34 index 2661f14..f7ff9fb 100644
35 --- a/pym/repoman/_xml.py
36 +++ b/pym/repoman/_xml.py
37 @@ -60,6 +60,7 @@ class XmlLint(object):
38 self.repoman_settings = repoman_settings
39 self._is_capable = metadata_dtd is not None
40 self.binary = None
41 + self._is_capable = False
42 self._check_capable()
43
44 def _check_capable(self):
45 @@ -68,7 +69,6 @@ class XmlLint(object):
46 self.binary = find_binary('xmllint')
47 if not self.binary:
48 print(red("!!! xmllint not found. Can't check metadata.xml.\n"))
49 - self._is_capable = False
50 elif not self._is_capable:
51 if not fetch_metadata_dtd(self.metadata_dtd, self.repoman_settings):
52 sys.exit(1)
53
54 diff --git a/pym/repoman/modules/scan/metadata/pkgmetadata.py b/pym/repoman/modules/scan/metadata/pkgmetadata.py
55 index 220fd23..8e93457 100644
56 --- a/pym/repoman/modules/scan/metadata/pkgmetadata.py
57 +++ b/pym/repoman/modules/scan/metadata/pkgmetadata.py
58 @@ -71,6 +71,9 @@ class PkgMetadata(ScanBase):
59 repolevel = kwargs.get('repolevel')
60
61 self.musedict = {}
62 + if self.options.mode in ['manifest']:
63 + return {'continue': False, 'muselist': frozenset(self.musedict)}
64 +
65 # metadata.xml file check
66 if "metadata.xml" not in checkdirlist:
67 self.qatracker.add_error("metadata.missing", xpkg + "/metadata.xml")