From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 52FAE138247 for ; Thu, 16 Jan 2014 01:44:21 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 6DDB0E0B5F; Thu, 16 Jan 2014 01:44:17 +0000 (UTC) Received: from mail-we0-f180.google.com (mail-we0-f180.google.com [74.125.82.180]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 820C2E0B5D for ; Thu, 16 Jan 2014 01:44:16 +0000 (UTC) Received: by mail-we0-f180.google.com with SMTP id q59so2535296wes.25 for ; Wed, 15 Jan 2014 17:44:15 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=z6oIUIovRv7ZpTBFE9W27s4AdLMaJg8FFPBWc6tEAOo=; b=BUC/D/c3Nc+KLoBIQKmpzwtneOwYwxbPSfqvSGEvd9pUtrh0n+fKj3N2EcrX8P9lTI PXCaUHFRWH7uYU7OoY0eV2hNhFX8bjibbU97wxezh064i/6BQzje2ZLi31Dy1tUHwaDr vYZIgZ2JQ7HeJU9eq50QLRtWwrAPA58XKO/JTL+BBmrMX0rdNlmEdtqqF9g5ZLly4yCC U/dV/vDzGZXf4F6IPm/mJ8p5L6LyAReCBBP038dAQ0/Ry9YcFZ7FkzQErkiJ2vXENf0d 3NOUaWfEFlJYV0QILdoIXu2+VT+LHBsXSZKOlgefnzMyJkXWj7qFVeBXrnFyYc2+SLk1 hjTQ== X-Gm-Message-State: ALoCoQnnc/uER5F80RP0mWSnurz1W1CLOotp1tKHJOFtSvb3LSq5DoaKTbuiO8XNCENFUUKiUpTh Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-portage-dev@lists.gentoo.org Reply-to: gentoo-portage-dev@lists.gentoo.org MIME-Version: 1.0 X-Received: by 10.194.92.109 with SMTP id cl13mr5555284wjb.13.1389836655209; Wed, 15 Jan 2014 17:44:15 -0800 (PST) Sender: antarus@scriptkitty.com Received: by 10.216.170.129 with HTTP; Wed, 15 Jan 2014 17:44:15 -0800 (PST) X-Originating-IP: [173.8.165.226] In-Reply-To: <1389830840-25848-2-git-send-email-tomwij@gentoo.org> References: <1389830840-25848-1-git-send-email-tomwij@gentoo.org> <1389830840-25848-2-git-send-email-tomwij@gentoo.org> Date: Wed, 15 Jan 2014 17:44:15 -0800 X-Google-Sender-Auth: RcDak6jE0yhYyU0ooPqr7rWhVZk Message-ID: Subject: Re: [gentoo-portage-dev] [PATCH 1/3] Have repoman check if the packages to unpack rare archive formats from SRC_URI are present in DEPEND (bug #205909). From: Alec Warner To: gentoo-portage-dev@lists.gentoo.org Content-Type: multipart/alternative; boundary=047d7bfd030c21475e04f00c90e2 X-Archives-Salt: d8863af5-00e1-4cdd-9bbf-e21ca219c7c7 X-Archives-Hash: 0bbc3e16bad4f5c9a8337d5a16cc083c --047d7bfd030c21475e04f00c90e2 Content-Type: text/plain; charset=UTF-8 On Wed, Jan 15, 2014 at 4:07 PM, Tom Wijsman wrote: > --- > bin/repoman | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > man/repoman.1 | 4 ++++ > 2 files changed, 57 insertions(+) > > I urge you to not author new checks like this. /usr/bin/repoman is already a mess. Write these checks as functions, put them in a different file, and just call them from the giant messy loop. At least that way the checks are self contained (great for avoiding things like variable re-use or shadowing). -A > diff --git a/bin/repoman b/bin/repoman > index d1542e9..9b703dc 100755 > --- a/bin/repoman > +++ b/bin/repoman > @@ -36,6 +36,9 @@ pym_path = > osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym") > sys.path.insert(0, pym_path) > import portage > portage._internal_caller = True > + > +from portage._sets.profiles import PackagesSystemSet > +system_set_atoms = PackagesSystemSet(portage.settings.profiles).getAtoms() > portage._disable_legacy_globals() > > try: > @@ -300,6 +303,7 @@ qahelp = { > "inherit.missing": "Ebuild uses functions from an eclass but does > not inherit it", > "inherit.unused": "Ebuild inherits an eclass but does not use it", > "java.eclassesnotused": "With virtual/jdk in DEPEND you must > inherit a java eclass", > + "unpack.DEPEND.missing": "A rare archive format was used in > SRC_URI, but its package to unpack it is missing in DEPEND.", > "wxwidgets.eclassnotused": "Ebuild DEPENDs on x11-libs/wxGTK > without inheriting wxwidgets.eclass", > "KEYWORDS.dropped": "Ebuilds that appear to have dropped KEYWORDS > for some arch", > "KEYWORDS.missing": "Ebuilds that have a missing or empty KEYWORDS > variable", > @@ -399,6 +403,7 @@ qawarnings = set(( > "metadata.warning", > "portage.internal", > "repo.eapi.deprecated", > +"unpack.DEPEND.missing", > "usage.obsolete", > "upstream.workaround", > "LIVEVCS.stable", > @@ -479,6 +484,25 @@ ruby_deprecated = frozenset([ > "ruby_targets_ree18", > ]) > > +# TODO: Add functionality to support checking for deb2targz on platforms > where > +# GNU binutils is absent; see PMS 5, section 11.3.3.13. > +archive_formats = { > + "\.7[zZ]":"app-arch/p7zip", > + "\.(bz2?|tbz2)":"app-arch/bzip2", > + "\.jar":"app-arch/unzip", > + "\.(LH[aA]|lha|lzh)":"app-arch/lha", > + "\.lzma":"app-arch/lzma-utils", > + "\.(rar|RAR)":"app-arch/unrar", > + "\.(tar(\.(bz2?|gz|Z))?|tbz2|t[bg]z)?":"app-arch/tar", > + "\.(gz|tar\.Z|t[bg]z|[zZ])":"app-arch/gzip", > + "\.(zip|ZIP)":"app-arch/unzip", > +} > + > +archive_formats_eapi_3_to_5 = { > + "\.tar.xz":"app-arch/tar", > + "\.xz":"app-arch/xz-utils", > +} > + > metadata_xml_encoding = 'UTF-8' > metadata_xml_declaration = '' % \ > (metadata_xml_encoding,) > @@ -1559,6 +1583,7 @@ for x in effective_scanlist: > fetchlist_dict = portage.FetchlistDict(checkdir, repoman_settings, > portdb) > myfiles_all = [] > src_uri_error = False > + needed_unpack_depends = {} > for mykey in fetchlist_dict: > try: > myfiles_all.extend(fetchlist_dict[mykey]) > @@ -1573,7 +1598,22 @@ for x in effective_scanlist: > stats["SRC_URI.syntax"] += 1 > fails["SRC_URI.syntax"].append( > "%s.ebuild SRC_URI: %s" % (mykey, > e)) > + > + # Compare each SRC_URI entry against archive_formats; if > one of the > + # extensions match, we remember which archive depends are > needed to > + # check them later on. > + needed_unpack_depends[mykey] = [] > + for file_extension in archive_formats or \ > + ((re.match('[345]$', eapi) is not None) \ > + and file_extension in > archive_formats_eapi_3_to_5): > + for entry in fetchlist_dict[mykey]: > + if re.match('.*%s$' % file_extension, > entry) is not None: > + format = > archive_formats[file_extension] > + > + if format not in > needed_unpack_depends[mykey]: > + > needed_unpack_depends[mykey].append(format) > del fetchlist_dict > + > if not src_uri_error: > # This test can produce false positives if SRC_URI could > not > # be parsed for one or more ebuilds. There's no point in > @@ -2010,6 +2050,17 @@ for x in effective_scanlist: > atoms = None > badsyntax.append(str(e)) > > + if atoms and mytype == 'DEPEND': > + # We check whether the needed archive > dependencies are present > + # in DEPEND, which were determined from > SRC_URI. > + for entry in needed_unpack_depends[catdir > + '/' + y]: > + if entry not in system_set_atoms > and entry \ > + not in [atom.cp for atom > in atoms if atom != "||"]: > + stats['unpack.' + mytype + > '.missing'] += 1 > + fails['unpack.' + mytype + > '.missing'].append( \ > + relative_path + ": > %s is missing in %s" % \ > + (entry, mytype)) > + > if atoms and mytype.endswith("DEPEND"): > if runtime and \ > "test?" in mydepstr.split(): > @@ -2384,6 +2435,8 @@ for x in effective_scanlist: > "%s/metadata.xml: unused local > USE-description: '%s'" % \ > (x, myflag)) > > + del needed_unpack_depends > + > if options.if_modified == "y" and len(effective_scanlist) < 1: > logging.warn("--if-modified is enabled, but no modified packages > were found!") > > diff --git a/man/repoman.1 b/man/repoman.1 > index a78f94e..e739d56 100644 > --- a/man/repoman.1 > +++ b/man/repoman.1 > @@ -334,6 +334,10 @@ Ebuild inherits a deprecated eclass > With virtual/jdk in DEPEND you must inherit a java eclass. Refer to > \fIhttp://www.gentoo.org/proj/en/java/java\-devel.xml\fR for more > information. > .TP > +.B unpack.DEPEND.missing > +A rare archive format was used in SRC_URI, but its package to unpack it is > +missing in DEPEND. > +TP > .B manifest.bad > Manifest has missing or incorrect digests > .TP > -- > 1.8.5.2 > > > --047d7bfd030c21475e04f00c90e2 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On W= ed, Jan 15, 2014 at 4:07 PM, Tom Wijsman <tomwij@gentoo.org>= wrote:
---
=C2=A0bin/repoman =C2=A0 | 53 +++++++++++++++++++++++++++++++++++++++++++++= ++++++++
=C2=A0man/repoman.1 | =C2=A04 ++++
=C2=A02 files changed, 57 insertions(+)


I urge you to not author new checks li= ke this. /usr/bin/repoman is already a mess.

Write= these checks as functions, put them in a different file, and just call the= m from the giant messy loop. At least that way the checks are self containe= d (great for avoiding things like variable re-use or shadowing).

-A

=C2=A0
diff --git a/bin/repoman b/bin/repoman
index d1542e9..9b703dc 100755
--- a/bin/repoman
+++ b/bin/repoman
@@ -36,6 +36,9 @@ pym_path =3D osp.join(osp.dirname(osp.dirname(osp.realpat= h(__file__))), "pym")
=C2=A0sys.path.insert(0, pym_path)
=C2=A0import portage
=C2=A0portage._internal_caller =3D True
+
+from portage._sets.profiles import PackagesSystemSet
+system_set_atoms =3D PackagesSystemSet(portage.settings.profiles).getAtoms= ()
=C2=A0portage._disable_legacy_globals()

=C2=A0try:
@@ -300,6 +303,7 @@ qahelp =3D {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 "inherit.missing": "Ebuild uses = functions from an eclass but does not inherit it",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 "inherit.unused": "Ebuild inheri= ts an eclass but does not use it",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 "java.eclassesnotused": "With vi= rtual/jdk in DEPEND you must inherit a java eclass",
+ =C2=A0 =C2=A0 =C2=A0 "unpack.DEPEND.missing": "A rare arch= ive format was used in SRC_URI, but its package to unpack it is missing in = DEPEND.",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 "wxwidgets.eclassnotused": "Ebui= ld DEPENDs on x11-libs/wxGTK without inheriting wxwidgets.eclass",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 "KEYWORDS.dropped": "Ebuilds tha= t appear to have dropped KEYWORDS for some arch",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 "KEYWORDS.missing": "Ebuilds tha= t have a missing or empty KEYWORDS variable",
@@ -399,6 +403,7 @@ qawarnings =3D set((
=C2=A0"metadata.warning",
=C2=A0"portage.internal",
=C2=A0"repo.eapi.deprecated",
+"unpack.DEPEND.missing",
=C2=A0"usage.obsolete",
=C2=A0"upstream.workaround",
=C2=A0"LIVEVCS.stable",
@@ -479,6 +484,25 @@ ruby_deprecated =3D frozenset([
=C2=A0 =C2=A0 =C2=A0 =C2=A0 "ruby_targets_ree18",
=C2=A0])

+# TODO: Add functionality to support checking for deb2targz on platforms w= here
+# =C2=A0 =C2=A0 =C2=A0 GNU binutils is absent; see PMS 5, section 11.3.3.1= 3.
+archive_formats =3D {
+ =C2=A0 =C2=A0 =C2=A0 "\.7[zZ]":"app-arch/p7zip",
+ =C2=A0 =C2=A0 =C2=A0 "\.(bz2?|tbz2)":"app-arch/bzip2"= ,
+ =C2=A0 =C2=A0 =C2=A0 "\.jar":"app-arch/unzip",
+ =C2=A0 =C2=A0 =C2=A0 "\.(LH[aA]|lha|lzh)":"app-arch/lha&qu= ot;,
+ =C2=A0 =C2=A0 =C2=A0 "\.lzma":"app-arch/lzma-utils",<= br> + =C2=A0 =C2=A0 =C2=A0 "\.(rar|RAR)":"app-arch/unrar",<= br> + =C2=A0 =C2=A0 =C2=A0 "\.(tar(\.(bz2?|gz|Z))?|tbz2|t[bg]z)?":&qu= ot;app-arch/tar",
+ =C2=A0 =C2=A0 =C2=A0 "\.(gz|tar\.Z|t[bg]z|[zZ])":"app-arch= /gzip",
+ =C2=A0 =C2=A0 =C2=A0 "\.(zip|ZIP)":"app-arch/unzip",<= br> +}
+
+archive_formats_eapi_3_to_5 =3D {
+ =C2=A0 =C2=A0 =C2=A0 "\.tar.xz":"app-arch/tar",
+ =C2=A0 =C2=A0 =C2=A0 "\.xz":"app-arch/xz-utils",
+}
+
=C2=A0metadata_xml_encoding =3D 'UTF-8'
=C2=A0metadata_xml_declaration =3D '<?xml version=3D"1.0" = encoding=3D"%s"?>' % \
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (metadata_xml_encoding,)
@@ -1559,6 +1583,7 @@ for x in effective_scanlist:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 fetchlist_dict =3D portage.FetchlistDict(checkd= ir, repoman_settings, portdb)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 myfiles_all =3D []
=C2=A0 =C2=A0 =C2=A0 =C2=A0 src_uri_error =3D False
+ =C2=A0 =C2=A0 =C2=A0 needed_unpack_depends =3D {}
=C2=A0 =C2=A0 =C2=A0 =C2=A0 for mykey in fetchlist_dict:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 try:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 myfiles_all.extend(fetchlist_dict[mykey])
@@ -1573,7 +1598,22 @@ for x in effective_scanlist:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stats["SRC_URI.syntax"] += =3D 1
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 fails["SRC_URI.syntax"].ap= pend(
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "%s= .ebuild SRC_URI: %s" % (mykey, e))
+
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # Compare each SRC_URI e= ntry against archive_formats; if one of the
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # extensions match, we r= emember which archive depends are needed to
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # check them later on. + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 needed_unpack_depends[my= key] =3D []
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 for file_extension in ar= chive_formats or \
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ((re.match('[345]$', eapi) is not None) \
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 and file_extension in archive_formats_eapi_= 3_to_5):
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 for entry in fetchlist_dict[mykey]:
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if re.match('.*%s$' % file_extensio= n, entry) is not None:
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 format =3D arch= ive_formats[file_extension]
+
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if format not i= n needed_unpack_depends[mykey]:
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 needed_unpack_depends[mykey].append(format)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 del fetchlist_dict
+
=C2=A0 =C2=A0 =C2=A0 =C2=A0 if not src_uri_error:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # This test can pro= duce false positives if SRC_URI could not
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # be parsed for one= or more ebuilds. There's no point in
@@ -2010,6 +2050,17 @@ for x in effective_scanlist:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 atoms =3D None
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 badsyntax.append(str(e))

+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 if atoms and mytype =3D=3D 'DEPEND':
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # We check whether the needed archive depen= dencies are present
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # in DEPEND, which were determined from SRC= _URI.
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 for entry in needed_unpack_depends[catdir += '/' + y]:
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if entry not in= system_set_atoms and entry \
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 not in [atom.cp for atom in atoms if atom !=3D "||"= ]:
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 stats['unpack.' + mytype + '.missing'] +=3D 1=
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 fails['unpack.' + mytype + '.missing'].append= ( \
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 relative_path + ": %s is mis= sing in %s" % \
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (entry, mytype))
+
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 if atoms and mytype.endswith("DEPEND"):
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if runtime and \
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "te= st?" in mydepstr.split():
@@ -2384,6 +2435,8 @@ for x in effective_scanlist:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "%s/metadata.xml: unused local = USE-description: '%s'" % \
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (x, myflag))

+ =C2=A0 =C2=A0 =C2=A0 del needed_unpack_depends
+
=C2=A0if options.if_modified =3D=3D "y" and len(effective_scanlis= t) < 1:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 logging.warn("--if-modified is enabled, bu= t no modified packages were found!")

diff --git a/man/repoman.1 b/man/repoman.1
index a78f94e..e739d56 100644
--- a/man/repoman.1
+++ b/man/repoman.1
@@ -334,6 +334,10 @@ Ebuild inherits a deprecated eclass
=C2=A0With virtual/jdk in DEPEND you must inherit a java eclass. Refer to =C2=A0\fIhttp://www.gentoo.org/proj/en/java/java\-devel.xml\fR= for more information.
=C2=A0.TP
+.B unpack.DEPEND.missing
+A rare archive format was used in SRC_URI, but its package to unpack it is=
+missing in DEPEND.
+TP
=C2=A0.B manifest.bad
=C2=A0Manifest has missing or incorrect digests
=C2=A0.TP
--
1.8.5.2



--047d7bfd030c21475e04f00c90e2--