* [gentoo-commits] proj/portage:master commit in: pym/repoman/, pym/repoman/checks/ebuilds/
@ 2015-12-16 16:19 Zac Medico
0 siblings, 0 replies; only message in thread
From: Zac Medico @ 2015-12-16 16:19 UTC (permalink / raw
To: gentoo-commits
commit: 801f9a8a4d50baee38c8c06eaf4183e76c018e58
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 16 06:44:53 2015 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Dec 16 16:18:34 2015 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=801f9a8a
repoman: use metadata.dtd from rsync tree if available (bug 567746)
Search for metadata.dtd in current repository and masters, and if that
fails then fetch it as usual.
X-Gentoo-Bug: 567746
X-Gentoo-Bug-url: https://bugs.gentoo.org/show_bug.cgi?id=567746
Acked-by: Alexander Berntsen <bernalex <AT> gentoo.org>
pym/repoman/_xml.py | 10 ++++++----
pym/repoman/checks/ebuilds/pkgmetadata.py | 6 ++++--
pym/repoman/scanner.py | 10 +++++++++-
3 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/pym/repoman/_xml.py b/pym/repoman/_xml.py
index 0acda28..43fc930 100644
--- a/pym/repoman/_xml.py
+++ b/pym/repoman/_xml.py
@@ -51,11 +51,12 @@ class _MetadataTreeBuilder(xml.etree.ElementTree.TreeBuilder):
class XmlLint(object):
- def __init__(self, options, repoman_settings):
- self.metadata_dtd = os.path.join(repoman_settings["DISTDIR"], 'metadata.dtd')
+ def __init__(self, options, repoman_settings, metadata_dtd=None):
+ self.metadata_dtd = (metadata_dtd or
+ os.path.join(repoman_settings["DISTDIR"], 'metadata.dtd'))
self.options = options
self.repoman_settings = repoman_settings
- self._is_capable = False
+ self._is_capable = metadata_dtd is not None
self.binary = None
self._check_capable()
@@ -65,7 +66,8 @@ class XmlLint(object):
self.binary = find_binary('xmllint')
if not self.binary:
print(red("!!! xmllint not found. Can't check metadata.xml.\n"))
- else:
+ self._is_capable = False
+ elif not self._is_capable:
if not fetch_metadata_dtd(self.metadata_dtd, self.repoman_settings):
sys.exit(1)
# this can be problematic if xmllint changes their output
diff --git a/pym/repoman/checks/ebuilds/pkgmetadata.py b/pym/repoman/checks/ebuilds/pkgmetadata.py
index f22ef19..74fec69 100644
--- a/pym/repoman/checks/ebuilds/pkgmetadata.py
+++ b/pym/repoman/checks/ebuilds/pkgmetadata.py
@@ -40,18 +40,20 @@ from repoman._xml import _XMLParser, _MetadataTreeBuilder, XmlLint
class PkgMetadata(object):
'''Package metadata.xml checks'''
- def __init__(self, options, qatracker, repoman_settings):
+ def __init__(self, options, qatracker, repoman_settings, metadata_dtd=None):
'''PkgMetadata init function
@param options: ArgumentParser.parse_known_args(argv[1:]) options
@param qatracker: QATracker instance
@param repoman_settings: settings instance
+ @param metadata_dtd: path of metadata.dtd
'''
self.options = options
self.qatracker = qatracker
self.repoman_settings = repoman_settings
self.musedict = {}
- self.xmllint = XmlLint(self.options, self.repoman_settings)
+ self.xmllint = XmlLint(self.options, self.repoman_settings,
+ metadata_dtd=metadata_dtd)
def check(self, xpkg, checkdir, checkdirlist, repolevel):
'''Performs the checks on the metadata.xml for the package
diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py
index 9e5a313..9a87f65 100644
--- a/pym/repoman/scanner.py
+++ b/pym/repoman/scanner.py
@@ -82,6 +82,13 @@ class Scanner(object):
portage.util.stack_lists([self.categories], incremental=1))
self.categories = self.repo_settings.repoman_settings.categories
+ metadata_dtd = None
+ for path in reversed(self.repo_settings.repo_config.eclass_db.porttrees):
+ path = os.path.join(path, 'metadata/dtd/metadata.dtd')
+ if os.path.exists(path):
+ metadata_dtd = path
+ break
+
self.portdb = repo_settings.portdb
self.portdb.settings = self.repo_settings.repoman_settings
# We really only need to cache the metadata that's necessary for visibility
@@ -201,7 +208,8 @@ class Scanner(object):
self.status_check = VCSStatus(self.vcs_settings, self.qatracker)
self.fetchcheck = FetchChecks(
self.qatracker, self.repo_settings, self.portdb, self.vcs_settings)
- self.pkgmeta = PkgMetadata(self.options, self.qatracker, self.repo_settings.repoman_settings)
+ self.pkgmeta = PkgMetadata(self.options, self.qatracker,
+ self.repo_settings.repoman_settings, metadata_dtd=metadata_dtd)
self.thirdparty = ThirdPartyMirrors(self.repo_settings.repoman_settings, self.qatracker)
self.use_flag_checks = USEFlagChecks(self.qatracker, uselist)
self.keywordcheck = KeywordChecks(self.qatracker, self.options)
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2015-12-16 16:19 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-16 16:19 [gentoo-commits] proj/portage:master commit in: pym/repoman/, pym/repoman/checks/ebuilds/ Zac Medico
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox