[gentoo-portage-dev] [PATCH] repoman: warn when herd's email appears in maintaineremail section
Manuel Rüger noticed that most of haskell packages's 'metadata.xml' contain duplicate information: herdhaskell/herd maintaineremailhask...@gentoo.org/email/maintainer I've added a check against 'herds.xml's email aliases. Now repoman warns about such redundancy: metadata.warning 1 dev-haskell/text/metadata.xml: use herdhaskell/herd instead of maintainer 'hask...@gentoo.org' Quick scan [1] of tree revealed a lot of non-haskell packages having redundancy: samba, xemacs, sci, gpe, etc, etc. [1]: https://github.com/trofi/gentoo-qa/blob/master/check_herd.sh Run in the root tree of gentoo-x86: gentoo-x86 $ ~/portage/gentoo-qa/check_herd.sh | wc -l 571 # some examples: gentoo-x86 $ ~/portage/gentoo-qa/check_herd.sh ./app-admin/haskell-updater/metadata.xml: emailhask...@gentoo.org/email ./app-editors/xemacs/metadata.xml:emailxem...@gentoo.org/email ./app-i18n/ibus-table-chinese/metadata.xml: emailc...@gentoo.org/email ./app-portage/fquery/metadata.xml: emailhask...@gentoo.org/email ./app-text/glosung/metadata.xml: emailtheol...@gentoo.org/email ... # a lot of haskell ./dev-lang/tcl/metadata.xml:emailtc...@gentoo.org/email ./dev-libs/Ice/metadata.xml:emailc...@gentoo.org/email ./dev-libs/cloog/metadata.xml: emailtoolch...@gentoo.org/email ./dev-libs/cvector/metadata.xml:emails...@gentoo.org/email ./dev-libs/iniparser/metadata.xml: emailsa...@gentoo.org/email ./dev-libs/isl/metadata.xml:emailtoolch...@gentoo.org/email ... Signed-off-by: Sergei Trofimovich sly...@gentoo.org --- bin/repoman | 13 + pym/repoman/herdbase.py | 21 + pym/repoman/utilities.py | 19 +++ 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/bin/repoman b/bin/repoman index c36ace1..74a4d44 100755 --- a/bin/repoman +++ b/bin/repoman @@ -1762,6 +1762,19 @@ for x in effective_scanlist: fails[metadata.bad].append(%s/metadata.xml: %s % (x, e)) del e + # check if 'metadata.xml' contains redundant + # 'maintaineremailsome-h...@gentoo.org/email/maintainer' + # email address. Instead it should contain + # 'herdsome-herd/herd' + if herd_base is not None: + for m_email in utilities.get_maintainer_emails_from_metadata(_metadata_xml): + herd_name = herd_base.herd_by_herd_email(m_email) + if herd_name is not None: + stats[metadata.warning] += 1 + fails[metadata.warning].append(%s/metadata.xml: +use herd%s/herd instead of maintainer '%s' % \ + (x, herd_name, m_email)) + # Only carry out if in package directory or check forced if xmllint_capable and not metadata_bad: # xmlint can produce garbage output even on success, so only dump diff --git a/pym/repoman/herdbase.py b/pym/repoman/herdbase.py index c5b88ff..ae7c4e4 100644 --- a/pym/repoman/herdbase.py +++ b/pym/repoman/herdbase.py @@ -34,9 +34,10 @@ def _make_email(nick_name): class HerdBase(object): - def __init__(self, herd_to_emails, all_emails): + def __init__(self, herd_to_emails, all_emails, herd_email_to_herd): self.herd_to_emails = herd_to_emails self.all_emails = all_emails + self.herd_email_to_herd = herd_email_to_herd def known_herd(self, herd_name): return herd_name in self.herd_to_emails @@ -47,6 +48,9 @@ class HerdBase(object): def maintainer_in_herd(self, nick_name, herd_name): return _make_email(nick_name) in self.herd_to_emails[herd_name] + def herd_by_herd_email(self, email): + return self.herd_email_to_herd.get(email) + class _HerdsTreeBuilder(xml.etree.ElementTree.TreeBuilder): Implements doctype() as required to avoid deprecation warnings with @@ -57,6 +61,7 @@ class _HerdsTreeBuilder(xml.etree.ElementTree.TreeBuilder): def make_herd_base(filename): herd_to_emails = dict() + herd_email_to_herd = dict() all_emails = set() try: @@ -82,6 +87,11 @@ def make_herd_base(filename): herd_name = _herd_name.text.strip() del _herd_name + _herd_email = h.find('email') + herd_email = _herd_email.text.strip() + del _herd_email + herd_email_to_herd[herd_email] = herd_name + maintainers = h.findall('maintainer')
[gentoo-portage-dev] [PATCH] sets: introduce @changed-deps to update packages which need dep changes.
The @changed-deps set tries to compare RDEPEND and PDEPEND entries of installed packages with ebuild counterparts, and pulls the ebuild whenever the two are not in sync. This could be used, for example, to clean up the system after disabling --dynamic-deps. --- cnf/sets/portage.conf | 5 + pym/portage/_sets/dbapi.py | 53 -- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/cnf/sets/portage.conf b/cnf/sets/portage.conf index b73afb1..fd2c387 100644 --- a/cnf/sets/portage.conf +++ b/cnf/sets/portage.conf @@ -84,3 +84,8 @@ class = portage.sets.dbapi.UnavailableSet # are not available. [unavailable-binaries] class = portage.sets.dbapi.UnavailableBinaries + +# Installed packages for which vdb *DEPEND entries are outdated compared +# to the matching portdb entry. +[changed-deps] +class = portage.sets.dbapi.ChangedDepsSet diff --git a/pym/portage/_sets/dbapi.py b/pym/portage/_sets/dbapi.py index 384fb3a..9b2cb8b 100644 --- a/pym/portage/_sets/dbapi.py +++ b/pym/portage/_sets/dbapi.py @@ -1,17 +1,18 @@ # Copyright 2007-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 +import re import time from portage import os from portage.versions import best, catsplit, vercmp -from portage.dep import Atom +from portage.dep import Atom, use_reduce from portage.localization import _ from portage._sets.base import PackageSet from portage._sets import SetConfigError, get_boolean import portage -__all__ = [CategorySet, DowngradeSet, +__all__ = [CategorySet, ChangedDepsSet, DowngradeSet, EverythingSet, OwnerSet, VariableSet] class EverythingSet(PackageSet): @@ -456,3 +457,51 @@ class RebuiltBinaries(EverythingSet): bindb=trees[bintree].dbapi) singleBuilder = classmethod(singleBuilder) + +class ChangedDepsSet(PackageSet): + + _operations = [merge, unmerge] + + description = Package set which contains all installed + \ + packages for which the vdb *DEPEND entries are outdated + \ + compared to corresponding portdb entries. + + def __init__(self, portdb=None, vardb=None): + super(ChangedDepsSet, self).__init__() + self._portdb = portdb + self._vardb = vardb + + def load(self): + depvars = ('RDEPEND', 'PDEPEND') + + subslot_repl_re = re.compile(r':[^[]*=') + + atoms = [] + for cpv in self._vardb.cpv_all(): + # no ebuild, no dynamic-deps to break it :) + if not self._portdb.cpv_exists(cpv): + continue + + use, eapi = self._vardb.aux_get(cpv, ('USE', 'EAPI')) + + def clean_subslots(depatom): + if isinstance(depatom, list): + return [clean_subslots(x) for x in depatom] + else: + return subslot_repl_re.sub(':=', depatom) + + vdbvars = [clean_subslots(use_reduce(x, uselist=use, eapi=eapi)) + for x in self._vardb.aux_get(cpv, depvars)] + pdbvars = [clean_subslots(use_reduce(x, uselist=use, eapi=eapi)) + for x in self._portdb.aux_get(cpv, depvars)] + + if vdbvars != pdbvars: + atoms.append('=%s' % cpv) + + self._setAtoms(atoms) + + def singleBuilder(cls, options, settings, trees): + return cls(portdb=trees[porttree].dbapi, + vardb=trees[vartree].dbapi) + + singleBuilder = classmethod(singleBuilder) -- 2.0.2
[gentoo-portage-dev] [PATCH] QA-warn about systemd units using /etc/conf.d.
--- bin/misc-functions.sh | 15 +++ 1 file changed, 15 insertions(+) diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh index 5ccf7c2..f24e78c 100755 --- a/bin/misc-functions.sh +++ b/bin/misc-functions.sh @@ -595,6 +595,21 @@ install_qa_check() { done fi + # Common mistakes in systemd service files. + if type -P pkg-config /dev/null pkg-config --exists systemd; then + systemddir=$(pkg-config --variable=systemdsystemunitdir systemd) + else + systemddir=/usr/lib/systemd/system + fi + if [[ -d ${ED%/}${systemddir} ]]; then + f=$(grep -sH '^EnvironmentFile.*=.*/etc/conf\.d' ${ED%/}${systemddir}/*.service) + if [[ -n ${f} ]] ; then + eqawarn QA Notice: systemd units using /etc/conf.d detected: + eqawarn ${f//${D}} + eqawarn See: https://wiki.gentoo.org/wiki/Project:Systemd/conf.d_files; + fi + fi + # Look for leaking LDFLAGS into pkg-config files f=$(egrep -sH '^Libs.*-Wl,(-O[012]|--hash-style)' ${ED}/usr/*/pkgconfig/*.pc) if [[ -n ${f} ]] ; then -- 2.0.2
Re: [gentoo-portage-dev] New meeting
-BEGIN PGP SIGNED MESSAGE- Hash: SHA256 The Portage team meeting will be Thursday 24th at 6pm. If you have some really good reason for it not be, let me know and I will at least consider rearranging it. - -- Alexander berna...@gentoo.org https://secure.plaimi.net/~alexander -BEGIN PGP SIGNATURE- Version: GnuPG v2 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iF4EAREIAAYFAlPP2OUACgkQRtClrXBQc7VNWgEAkDDPA68teIb5A9vq6y+/lb8e cXh6RkVRZ5AiO386nI8A/1zXT8RTyNoCGOIbv+q2cwwCt4B1cBo+hPD5AN+Fd614 =wLZQ -END PGP SIGNATURE-
[gentoo-portage-dev] [PATCH] repoman: warn when herd's email appears in maintaineremail section
Manuel Rüger noticed that most of haskell packages's 'metadata.xml' contain duplicate information: herdhaskell/herd maintaineremailhask...@gentoo.org/email/maintainer I've added a check against 'herds.xml's email aliases. Now repoman warns about such redundancy: metadata.warning 1 dev-haskell/text/metadata.xml: use herdhaskell/herd instead of maintainer 'hask...@gentoo.org' Quick scan [1] of tree revealed a lot of non-haskell packages having redundancy: samba, xemacs, sci, gpe, etc, etc. [1]: https://github.com/trofi/gentoo-qa/blob/master/check_herd.sh Run in the root tree of gentoo-x86: gentoo-x86 $ ~/portage/gentoo-qa/check_herd.sh | wc -l 571 # some examples: gentoo-x86 $ ~/portage/gentoo-qa/check_herd.sh ./app-admin/haskell-updater/metadata.xml: emailhask...@gentoo.org/email ./app-editors/xemacs/metadata.xml:emailxem...@gentoo.org/email ./app-i18n/ibus-table-chinese/metadata.xml: emailc...@gentoo.org/email ./app-portage/fquery/metadata.xml: emailhask...@gentoo.org/email ./app-text/glosung/metadata.xml: emailtheol...@gentoo.org/email ... # a lot of haskell ./dev-lang/tcl/metadata.xml:emailtc...@gentoo.org/email ./dev-libs/Ice/metadata.xml:emailc...@gentoo.org/email ./dev-libs/cloog/metadata.xml: emailtoolch...@gentoo.org/email ./dev-libs/cvector/metadata.xml:emails...@gentoo.org/email ./dev-libs/iniparser/metadata.xml: emailsa...@gentoo.org/email ./dev-libs/isl/metadata.xml:emailtoolch...@gentoo.org/email ... Signed-off-by: Sergei Trofimovich sly...@gentoo.org --- bin/repoman | 13 + pym/repoman/herdbase.py | 21 + pym/repoman/utilities.py | 19 +++ 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/bin/repoman b/bin/repoman index c36ace1..74a4d44 100755 --- a/bin/repoman +++ b/bin/repoman @@ -1762,6 +1762,19 @@ for x in effective_scanlist: fails[metadata.bad].append(%s/metadata.xml: %s % (x, e)) del e + # check if 'metadata.xml' contains redundant + # 'maintaineremailsome-h...@gentoo.org/email/maintainer' + # email address. Instead it should contain + # 'herdsome-herd/herd' + if herd_base is not None: + for m_email in utilities.get_maintainer_emails_from_metadata(_metadata_xml): + herd_name = herd_base.herd_by_herd_email(m_email) + if herd_name is not None: + stats[metadata.warning] += 1 + fails[metadata.warning].append(%s/metadata.xml: +use herd%s/herd instead of maintainer '%s' % \ + (x, herd_name, m_email)) + # Only carry out if in package directory or check forced if xmllint_capable and not metadata_bad: # xmlint can produce garbage output even on success, so only dump diff --git a/pym/repoman/herdbase.py b/pym/repoman/herdbase.py index c5b88ff..ae7c4e4 100644 --- a/pym/repoman/herdbase.py +++ b/pym/repoman/herdbase.py @@ -34,9 +34,10 @@ def _make_email(nick_name): class HerdBase(object): - def __init__(self, herd_to_emails, all_emails): + def __init__(self, herd_to_emails, all_emails, herd_email_to_herd): self.herd_to_emails = herd_to_emails self.all_emails = all_emails + self.herd_email_to_herd = herd_email_to_herd def known_herd(self, herd_name): return herd_name in self.herd_to_emails @@ -47,6 +48,9 @@ class HerdBase(object): def maintainer_in_herd(self, nick_name, herd_name): return _make_email(nick_name) in self.herd_to_emails[herd_name] + def herd_by_herd_email(self, email): + return self.herd_email_to_herd.get(email) + class _HerdsTreeBuilder(xml.etree.ElementTree.TreeBuilder): Implements doctype() as required to avoid deprecation warnings with @@ -57,6 +61,7 @@ class _HerdsTreeBuilder(xml.etree.ElementTree.TreeBuilder): def make_herd_base(filename): herd_to_emails = dict() + herd_email_to_herd = dict() all_emails = set() try: @@ -82,6 +87,11 @@ def make_herd_base(filename): herd_name = _herd_name.text.strip() del _herd_name + _herd_email = h.find('email') + herd_email = _herd_email.text.strip() + del _herd_email + herd_email_to_herd[herd_email] = herd_name + maintainers = h.findall('maintainer')
Re: [gentoo-portage-dev] New meeting
-BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Sorry, I got timezone confused! That's 7pm UTC 0. - -- Alexander berna...@gentoo.org https://secure.plaimi.net/~alexander -BEGIN PGP SIGNATURE- Version: GnuPG v2 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iF4EAREIAAYFAlPP2bsACgkQRtClrXBQc7Ve0gD/RAubU24M5RFRqcnJQCi5IkF8 zbPrZjqidLSB62//UP0BAIr0JZW7qX8OUcYtjADJal7mnpPe8UML/WtKCsmk7UKr =1FRm -END PGP SIGNATURE-