<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.linux.rpm.metadata">
    <title>gmane.linux.rpm.metadata</title>
    <link>http://blog.gmane.org/gmane.linux.rpm.metadata</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1485"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1484"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1483"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1482"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1481"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1480"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1479"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1478"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1476"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1472"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1471"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1470"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1466"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1464"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1463"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1458"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1455"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1454"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1453"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.rpm.metadata/1452"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1485">
    <title>createrepo.spec</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1485</link>
    <description>&lt;pre&gt; createrepo.spec |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

New commits:
commit 590075b62116e03fd3a7f3cc63ec2d70a0512340
Author: Zdenek Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Wed Apr 17 16:05:15 2013 +0200

    don't BuildRequire bash-completion in rhel

diff --git a/createrepo.spec b/createrepo.spec
index cdd8b6f..9a2179b 100644
--- a/createrepo.spec
+++ b/createrepo.spec
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 %{!?python_sitelib: %define python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+
+%if ! 0%{?rhel}
+# we don't have this in rhel yet...
+BuildRequires: bash-completion
+%endif
+
 # disable broken /usr/lib/rpm/brp-python-bytecompile
 %define __os_install_post %{nil}
 %define compdir %(pkg-config --variable=completionsdir bash-completion)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -16,7 +22,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Source: %{name}-%{version}.tar.gz
 URL: http://createrepo.baseurl.org/
 BuildRoot: %{_tmppath}/%{name}-%{version}root
 BuildArchitectures: noarch
-BuildRequires: bash-completion
 Requires: python &amp;gt;= 2.1, rpm-python, rpm &amp;gt;= 0:4.1.1, libxml2-python
 Requires: yum-metadata-parser, yum &amp;gt;= 3.2.29, python-deltarpm, pyliblzma
&lt;/pre&gt;</description>
    <dc:creator>zpavlas&lt; at &gt;osuosl.org</dc:creator>
    <dc:date>2013-04-17T14:06:11</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1484">
    <title>modifyrepo.py</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1484</link>
    <description>&lt;pre&gt; modifyrepo.py |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

New commits:
commit d10d518d16d97fdce00676d57461e089982d613d
Author: James Antill &amp;lt;james&amp;lt; at &amp;gt;and.org&amp;gt;
Date:   Tue Apr 16 16:15:19 2013 -0400

    Fail for bad compress-type options to modifyrepo, like createrepo. BZ 886589.

diff --git a/modifyrepo.py b/modifyrepo.py
index e7c34c0..bffe99a 100755
--- a/modifyrepo.py
+++ b/modifyrepo.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -208,8 +208,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
     repomd.checksum_type = opts.sumtype
     repomd.unique_md_filenames = opts.unique_md_filenames
     repomd.compress = opts.compress
-    if opts.compress_type in _available_compression:
-        repomd.compress_type = opts.compress_type
+    if opts.compress_type not in _available_compression:
+        print "Compression %s not available: Please choose from: %s" % (opts.compress_type, ', '.join(_available_compression))
+        return 1
+    repomd.compress_type = opts.compress_type
 
     # remove
     if opts.remove:
&lt;/pre&gt;</description>
    <dc:creator>James Antill</dc:creator>
    <dc:date>2013-04-16T20:15:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1483">
    <title>docs/createrepo.8 genpkgmetadata.py</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1483</link>
    <description>&lt;pre&gt; docs/createrepo.8 |   13 ++++++++++++-
 genpkgmetadata.py |    4 ++--
 2 files changed, 14 insertions(+), 3 deletions(-)

New commits:
commit f280fa5848e1b6b77fb16a2b694e0b4167c20fe6
Author: James Antill &amp;lt;james&amp;lt; at &amp;gt;and.org&amp;gt;
Date:   Tue Apr 16 15:55:59 2013 -0400

    Fix options documentation. BZ 892657.

diff --git a/docs/createrepo.8 b/docs/createrepo.8
index ff359de..eefd4bf 100644
--- a/docs/createrepo.8
+++ b/docs/createrepo.8
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -37,6 +37,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; cache of checksums of packages in the repository. In consecutive runs of
 createrepo over the same repository of files that do not have a complete
 change out of all packages this decreases the processing time dramatically.
 .br
+.IP "\fB\--basedir\fP"
+Basedir for path to directories in the repodata, default is the current working
+directory.
+.br
 .IP "\fB\--update\fP"
 If metadata already exists in the outputdir and an rpm is unchanged
 (based on file size and mtime) since the metadata was generated, reuse
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -49,6 +53,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; skip the stat() call on a --update, assumes if the filename is the same
 then the file is still the same (only use this if you're fairly trusting or
 gullible).
 .br
+.IP "\fB\--update-md-path\fP"
+Use the existing repodata for --update, from this path.
+.br
 .IP "\fB\-C --checkts\fP"
 Don't generate repo metadata, if their timestamps are newer than its rpms.
 This option decreases the processing time drastically again, if you happen
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -62,7 +69,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; directories corresponding to different volumes in a media set.
 .br
 .IP "\fB\-p --pretty\fP"
 Output xml files in pretty format.
-.IP "\fB\-V --version\fP"
+.IP "\fB\--version\fP"
 Output version.
 .IP "\fB\-h --help\fP"
 Show help menu.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -90,6 +97,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Include the file's checksum in the metadata filename, helps HTTP caching (defaul
 .IP "\fB\--simple-md-filenames\fP"
 Do not include the file's checksum in the metadata filename.
 
+.IP "\fB\--retain-old-md\fP"
+Keep around the latest (by timestamp) N copies of the old repodata (so clients
+with older repomd.xml files can still access it). Default is 0.
+
 .IP "\fB\--distro\fP"
 Specify distro tags. Can be specified more than once. Optional syntax specifying a
 cpeid(http://cpe.mitre.org/) --distro=cpeid,distrotag
diff --git a/genpkgmetadata.py b/genpkgmetadata.py
index 09bcba4..4528bf2 100755
--- a/genpkgmetadata.py
+++ b/genpkgmetadata.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -22,7 +22,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 import os
 import sys
 import re
-from optparse import OptionParser
+from optparse import OptionParser,SUPPRESS_HELP
 import time
 
 import createrepo
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -132,7 +132,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def parse_args(args, conf):
         help="number of workers to spawn to read rpms")
     parser.add_option("--xz", default=False,
         action="store_true",
-        help="use xz for repodata compression")
+        help=SUPPRESS_HELP)
     parser.add_option("--compress-type", default='compat', dest="compress_type",
         help="which compression type to use")
&lt;/pre&gt;</description>
    <dc:creator>James Antill</dc:creator>
    <dc:date>2013-04-16T19:56:04</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1482">
    <title>createrepo.bash</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1482</link>
    <description>&lt;pre&gt; createrepo.bash |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

New commits:
commit 644181167efd7bbf5a6daafd9f4b918d1f20fa01
Author: Ville SkyttÃ¤ &amp;lt;ville.skytta&amp;lt; at &amp;gt;iki.fi&amp;gt;
Date:   Sat Apr 13 20:46:19 2013 +0300

    modifyrepo: Add --no-compress to completion.

diff --git a/createrepo.bash b/createrepo.bash
index 4b2cc36..14b43d8 100644
--- a/createrepo.bash
+++ b/createrepo.bash
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -119,8 +119,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cr_modifyrepo()
 
     if [[ $2 == -* ]] ; then
         COMPREPLY=( $( compgen -W '--version --help --mdtype --remove
-            --compress --compress-type --checksum --unique-md-filenames
-            --simple-md-filenames' -- "$2" ) )
+            --compress --no-compress --compress-type --checksum
+            --unique-md-filenames --simple-md-filenames' -- "$2" ) )
         return 0
     fi
 
_______________________________________________
Rpm-metadata mailing list
Rpm-metadata&amp;lt; at &amp;gt;lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/rpm-metadata
&lt;/pre&gt;</description>
    <dc:creator>Ville Skyttä</dc:creator>
    <dc:date>2013-04-13T17:46:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1481">
    <title>modifyrepo.py</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1481</link>
    <description>&lt;pre&gt; modifyrepo.py |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

New commits:
commit 0f65ec014b9c56a751c2729c3c559a52e24b1dea
Author: Zdenek Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Thu Apr 11 10:35:45 2013 +0200

    modifyrepo: fix --compress option bug. BZ 950724
    
    We were compressing files added to the repository even when
    the --compress option was not specified.  It's even documented
    in modifyrepo man page examples.
    
    Fix the bug that caused this, and change the default to True
    to minimize possible breakage.  Also add --no-compress option
    to turn it off.

diff --git a/modifyrepo.py b/modifyrepo.py
index b6129b7..e7c34c0 100755
--- a/modifyrepo.py
+++ b/modifyrepo.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -44,7 +44,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class RepoMetadata:
         """ Parses the repomd.xml file existing in the given repo directory. """
         self.repodir = os.path.abspath(repo)
         self.repomdxml = os.path.join(self.repodir, 'repomd.xml')
-        self.compress = False
         self.compress_type = _available_compression[-1] # best available
 
         if not os.path.exists(self.repomdxml):
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -113,7 +112,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class RepoMetadata:
 
         do_compress = False
         ## Compress the metadata and move it into the repodata
-        if self.compress or not mdname.split('.')[-1] in ('gz', 'bz2', 'xz'):
+        if self.compress and mdname.split('.')[-1] not in ('gz', 'bz2', 'xz'):
             do_compress = True
             mdname += '.' + self.compress_type
         mdtype = self._get_mdtype(mdname, mdtype)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -177,8 +176,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
                       help="specific datatype of the metadata, will be derived from the filename if not specified")
     parser.add_option("--remove", action="store_true",
                       help="remove specified file from repodata")
-    parser.add_option("--compress", action="store_true", default=False,
-                      help="compress the new repodata before adding it to the repo")
+    parser.add_option("--compress", action="store_true", default=True,
+                      help="compress the new repodata before adding it to the repo (default)")
+    parser.add_option("--no-compress", action="store_false", dest="compress",
+                      help="do not compress the new repodata before adding it to the repo")
     parser.add_option("--compress-type", dest='compress_type', default='gz',
                       help="compression format to use")
     parser.add_option("-s", "--checksum", default='sha256', dest='sumtype',
&lt;/pre&gt;</description>
    <dc:creator>zpavlas&lt; at &gt;osuosl.org</dc:creator>
    <dc:date>2013-04-11T08:52:31</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1480">
    <title>[PATCH] modifyrepo: fix --compress option bug. BZ950724</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1480</link>
    <description>&lt;pre&gt;We were compressing files added to the repository even when
the --compress option was not specified.  It's even documented
in modifyrepo man page examples.

Fix the bug that caused this, and change the default to True
to minimize possible breakage.  Also add --no-compress option
to turn it off.
---
 modifyrepo.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/modifyrepo.py b/modifyrepo.py
index b6129b7..22e0e21 100755
--- a/modifyrepo.py
+++ b/modifyrepo.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -44,7 +44,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class RepoMetadata:
         """ Parses the repomd.xml file existing in the given repo directory. """
         self.repodir = os.path.abspath(repo)
         self.repomdxml = os.path.join(self.repodir, 'repomd.xml')
-        self.compress = False
         self.compress_type = _available_compression[-1] # best available
 
         if not os.path.exists(self.repomdxml):
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -113,7 +112,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class RepoMetadata:
 
         do_compress = False
         ## Compress the metadata and move it into the repodata
-        if self.compress or not mdname.split('.')[-1] in ('gz', 'bz2', 'xz'):
+        if self.compress and mdname.split('.')[-1] not in ('gz', 'bz2', 'xz'):
             do_compress = True
             mdname += '.' + self.compress_type
         mdtype = self._get_mdtype(mdname, mdtype)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -177,8 +176,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
                       help="specific datatype of the metadata, will be derived from the filename if not specified")
     parser.add_option("--remove", action="store_true",
                       help="remove specified file from repodata")
-    parser.add_option("--compress", action="store_true", default=False,
-                      help="compress the new repodata before adding it to the repo")
+    parser.add_option("--compress", action="store_true", default=True,
+                      help="compress the new repodata before adding it to the repo (default)")
+    parser.add_option("--no-compress", action="store_false",
+                      help="do not compress the new repodata before adding it to the repo")
     parser.add_option("--compress-type", dest='compress_type', default='gz',
                       help="compression format to use")
     parser.add_option("-s", "--checksum", default='sha256', dest='sumtype',
&lt;/pre&gt;</description>
    <dc:creator>Zdenek Pavlas</dc:creator>
    <dc:date>2013-04-11T08:45:59</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1479">
    <title>3 commits - createrepo.spec genpkgmetadata.pyMakefile modifyrepo.py</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1479</link>
    <description>&lt;pre&gt; Makefile          |    8 ++++++--
 createrepo.spec   |    9 ++++++++-
 genpkgmetadata.py |   11 ++++-------
 modifyrepo.py     |   16 ++++++++++++++--
 4 files changed, 32 insertions(+), 12 deletions(-)

New commits:
commit df2aa15487a497d69b00578be671f885efc8ffa2
Author: Zdenek Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Fri Apr 5 15:26:16 2013 +0200

    modifyrepo: add --checksum and --{unique,simple}-md-filenames options

diff --git a/modifyrepo.py b/modifyrepo.py
index acdde77..b6129b7 100755
--- a/modifyrepo.py
+++ b/modifyrepo.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -44,7 +44,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class RepoMetadata:
         """ Parses the repomd.xml file existing in the given repo directory. """
         self.repodir = os.path.abspath(repo)
         self.repomdxml = os.path.join(self.repodir, 'repomd.xml')
-        self.checksum_type = 'sha256'
         self.compress = False
         self.compress_type = _available_compression[-1] # best available
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -130,7 +129,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class RepoMetadata:
         print "Wrote:", destmd
 
         open_csum = checksum(self.checksum_type, metadata)
-        csum, destmd = checksum_and_rename(destmd, self.checksum_type)
+        if self.unique_md_filenames:
+            csum, destmd = checksum_and_rename(destmd, self.checksum_type)
+        else:
+            csum = checksum(self.checksum_type, destmd)
         base_destmd = os.path.basename(destmd)
 
         # Remove any stale metadata
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -179,6 +181,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
                       help="compress the new repodata before adding it to the repo")
     parser.add_option("--compress-type", dest='compress_type', default='gz',
                       help="compression format to use")
+    parser.add_option("-s", "--checksum", default='sha256', dest='sumtype',
+        help="specify the checksum type to use (default: sha256)")
+    parser.add_option("--unique-md-filenames", dest="unique_md_filenames",
+        help="include the file's checksum in the filename, helps with proxies (default)",
+        default=True, action="store_true")
+    parser.add_option("--simple-md-filenames", dest="unique_md_filenames",
+        help="do not include the file's checksum in the filename",
+        action="store_false")
     parser.usage = "modifyrepo [options] [--remove] &amp;lt;input_metadata&amp;gt; &amp;lt;output repodata&amp;gt;"
     
     (opts, argsleft) = parser.parse_args(args)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -194,6 +204,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
         return 1
 
 
+    repomd.checksum_type = opts.sumtype
+    repomd.unique_md_filenames = opts.unique_md_filenames
     repomd.compress = opts.compress
     if opts.compress_type in _available_compression:
         repomd.compress_type = opts.compress_type
commit e38425374bf3c0bc15c3fdf6181688625e59d433
Author: Zdenek Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Fri Apr 5 15:12:46 2013 +0200

    Get rid of useless opts.simple_md_filenames option, update help.

diff --git a/genpkgmetadata.py b/genpkgmetadata.py
index c46e441..09bcba4 100755
--- a/genpkgmetadata.py
+++ b/genpkgmetadata.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -101,11 +101,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def parse_args(args, conf):
     parser.add_option("--changelog-limit", dest="changelog_limit",
         default=None, help="only import the last N changelog entries")
     parser.add_option("--unique-md-filenames", dest="unique_md_filenames",
-        help="include the file's checksum in the filename, helps with proxies",
+        help="include the file's checksum in the filename, helps with proxies (default)",
         default=True, action="store_true")
-    parser.add_option("--simple-md-filenames", dest="simple_md_filenames",
-        help="do not include the file's checksum in the filename, helps with proxies",
-        default=False, action="store_true")
+    parser.add_option("--simple-md-filenames", dest="unique_md_filenames",
+        help="do not include the file's checksum in the filename",
+        action="store_false")
     parser.add_option("--retain-old-md", default=0, type='int', dest='retain_old_md',
         help="keep around the latest (by timestamp) N copies of the old repodata")
     parser.add_option("--distro", default=[], action="append",
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -166,9 +166,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def parse_args(args, conf):
         errorprint(_('--split and --checkts options are mutually exclusive'))
         sys.exit(1)
 
-    if opts.simple_md_filenames:
-        opts.unique_md_filenames = False
-    
     if opts.nodatabase:
         opts.database = False
     
commit 3d978def63bd955b94fe9de68426c1655e8c93d4
Author: Zdenek Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Tue Mar 19 10:00:01 2013 +0100

    move bash-completion scripts to /usr/share/  BZ 923001

diff --git a/Makefile b/Makefile
index 60bb9db..0b5738b 100644
--- a/Makefile
+++ b/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 PKGNAME = createrepo
+ALIASES = mergerepo modifyrepo genpkgmetadata.py mergerepo.py modifyrepo.py
 VERSION=$(shell awk '/Version:/ { print $$2 }' ${PKGNAME}.spec)
 RELEASE=$(shell awk '/Release:/ { print $$2 }' ${PKGNAME}.spec)
 CVSTAG=createrepo-$(subst .,_,$(VERSION)-$(RELEASE))
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -26,6 +27,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; docdir =
 includedir = ${prefix}/include
 oldincludedir = /usr/include
 mandir = ${prefix}/share/man
+compdir = $(shell pkg-config --variable=completionsdir bash-completion)
+compdir := $(or $(compdir), "/etc/bash_completion.d")
 
 pkgdatadir = $(datadir)/$(PKGNAME)
 pkglibdir = $(libdir)/$(PKGNAME)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -33,7 +36,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; pkgincludedir = $(includedir)/$(PKGNAME)
 top_builddir = 
 
 # all dirs
-DIRS = $(DESTDIR)$(bindir) $(DESTDIR)$(sysconfdir)/bash_completion.d \
+DIRS = $(DESTDIR)$(bindir) $(DESTDIR)$(compdir) \
 $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(mandir)
 
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -65,7 +68,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; check:
 
 install: all installdirs
 $(INSTALL_MODULES) $(srcdir)/$(MODULES) $(DESTDIR)$(pkgdatadir)
-$(INSTALL_DATA) $(PKGNAME).bash $(DESTDIR)$(sysconfdir)/bash_completion.d
+$(INSTALL_DATA) $(PKGNAME).bash $(DESTDIR)$(compdir)/$(PKGNAME)
+(cd $(DESTDIR)$(compdir); for n in $(ALIASES); do ln -s $(PKGNAME) $$n; done)
 for subdir in $(SUBDIRS) ; do \
   $(MAKE) -C $$subdir install VERSION=$(VERSION) PKGNAME=$(PKGNAME); \
 done
diff --git a/createrepo.spec b/createrepo.spec
index eea7092..cdd8b6f 100644
--- a/createrepo.spec
+++ b/createrepo.spec
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 %{!?python_sitelib: %define python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+# disable broken /usr/lib/rpm/brp-python-bytecompile
+%define __os_install_post %{nil}
+%define compdir %(pkg-config --variable=completionsdir bash-completion)
+%if "%{compdir}" == ""
+%define compdir "/etc/bash_completion.d"
+%endif
 
 Summary: Creates a common metadata repository
 Name: createrepo
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -10,6 +16,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Source: %{name}-%{version}.tar.gz
 URL: http://createrepo.baseurl.org/
 BuildRoot: %{_tmppath}/%{name}-%{version}root
 BuildArchitectures: noarch
+BuildRequires: bash-completion
 Requires: python &amp;gt;= 2.1, rpm-python, rpm &amp;gt;= 0:4.1.1, libxml2-python
 Requires: yum-metadata-parser, yum &amp;gt;= 3.2.29, python-deltarpm, pyliblzma
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -32,7 +39,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; make DESTDIR=$RPM_BUILD_ROOT sysconfdir=%{_sysconfdir} install
 %defattr(-, root, root)
 %dir %{_datadir}/%{name}
 %doc ChangeLog README COPYING COPYING.lib
-%{_sysconfdir}/bash_completion.d/
+%(dirname %{compdir})
 %{_datadir}/%{name}/*
 %{_bindir}/%{name}
 %{_bindir}/modifyrepo
&lt;/pre&gt;</description>
    <dc:creator>zpavlas&lt; at &gt;osuosl.org</dc:creator>
    <dc:date>2013-04-05T13:27:43</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1478">
    <title>[PATCH 1/2] Get rid of uselessopts.simple_md_filenames option, update help.</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1478</link>
    <description>&lt;pre&gt;---
 genpkgmetadata.py | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/genpkgmetadata.py b/genpkgmetadata.py
index c46e441..09bcba4 100755
--- a/genpkgmetadata.py
+++ b/genpkgmetadata.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -101,11 +101,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def parse_args(args, conf):
     parser.add_option("--changelog-limit", dest="changelog_limit",
         default=None, help="only import the last N changelog entries")
     parser.add_option("--unique-md-filenames", dest="unique_md_filenames",
-        help="include the file's checksum in the filename, helps with proxies",
+        help="include the file's checksum in the filename, helps with proxies (default)",
         default=True, action="store_true")
-    parser.add_option("--simple-md-filenames", dest="simple_md_filenames",
-        help="do not include the file's checksum in the filename, helps with proxies",
-        default=False, action="store_true")
+    parser.add_option("--simple-md-filenames", dest="unique_md_filenames",
+        help="do not include the file's checksum in the filename",
+        action="store_false")
     parser.add_option("--retain-old-md", default=0, type='int', dest='retain_old_md',
         help="keep around the latest (by timestamp) N copies of the old repodata")
     parser.add_option("--distro", default=[], action="append",
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -166,9 +166,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def parse_args(args, conf):
         errorprint(_('--split and --checkts options are mutually exclusive'))
         sys.exit(1)
 
-    if opts.simple_md_filenames:
-        opts.unique_md_filenames = False
-    
     if opts.nodatabase:
         opts.database = False
     
&lt;/pre&gt;</description>
    <dc:creator>Zdenek Pavlas</dc:creator>
    <dc:date>2013-04-05T13:27:50</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1476">
    <title>2 commits - createrepo.bash</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1476</link>
    <description>&lt;pre&gt; createrepo.bash |   16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

New commits:
commit 9b75c361142758989f069ae230583ad63755c34c
Author: Ville SkyttÃ¤ &amp;lt;ville.skytta&amp;lt; at &amp;gt;iki.fi&amp;gt;
Date:   Fri Apr 5 18:25:39 2013 +0300

    modifyrepo: Add --checksum and --{unique,simple}-md-filenames to completions.

diff --git a/createrepo.bash b/createrepo.bash
index 8cef728..4b2cc36 100644
--- a/createrepo.bash
+++ b/createrepo.bash
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6,6 +6,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cr_compress_type()
         | sed -ne 's/,/ /g' -ne 's/.*[Cc]ompression.*://p' )" -- "$2" ) )
 }
 
+_cr_checksum_type()
+{
+    COMPREPLY=( $( compgen -W 'md5 sha1 sha256 sha512' -- "$1" ) )
+}
+
 _cr_createrepo()
 {
     COMPREPLY=()
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -25,7 +30,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cr_createrepo()
             return 0
             ;;
         -s|--checksum)
-            COMPREPLY=( $( compgen -W 'md5 sha1 sha256 sha512' -- "$2" ) )
+            _cr_checksum_type "$2"
             return 0
             ;;
         -i|--pkglist|--read-pkgs-list)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -106,11 +111,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cr_modifyrepo()
             _cr_compress_type "" "$2"
             return 0
             ;;
+        -s|--checksum)
+            _cr_checksum_type "$2"
+            return 0
+            ;;
     esac
 
     if [[ $2 == -* ]] ; then
         COMPREPLY=( $( compgen -W '--version --help --mdtype --remove
-            --compress --compress-type' -- "$2" ) )
+            --compress --compress-type --checksum --unique-md-filenames
+            --simple-md-filenames' -- "$2" ) )
         return 0
     fi
 
commit e9407244f389d227744c13e30392d676fccfbcbc
Author: Ville SkyttÃ¤ &amp;lt;ville.skytta&amp;lt; at &amp;gt;iki.fi&amp;gt;
Date:   Fri Apr 5 18:24:03 2013 +0300

    createrepo: Fix --checksum arg completion.

diff --git a/createrepo.bash b/createrepo.bash
index f5a8bb7..8cef728 100644
--- a/createrepo.bash
+++ b/createrepo.bash
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -24,7 +24,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cr_createrepo()
             COMPREPLY=( $( compgen -f -o plusdirs -X '!*.xml' -- "$2" ) )
             return 0
             ;;
-        -s|--sumtype)
+        -s|--checksum)
             COMPREPLY=( $( compgen -W 'md5 sha1 sha256 sha512' -- "$2" ) )
             return 0
             ;;
_______________________________________________
Rpm-metadata mailing list
Rpm-metadata&amp;lt; at &amp;gt;lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/rpm-metadata
&lt;/pre&gt;</description>
    <dc:creator>Ville Skyttä</dc:creator>
    <dc:date>2013-04-05T15:26:56</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1472">
    <title>[PATCH] move bash-completion scripts to /usr/share/BZ 923001</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1472</link>
    <description>&lt;pre&gt;---
 Makefile        | 7 +++++--
 createrepo.spec | 5 ++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 60bb9db..356bb50 100644
--- a/Makefile
+++ b/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 PKGNAME = createrepo
+ALIASES = mergerepo modifyrepo genpkgmetadata.py mergerepo.py modifyrepo.py
 VERSION=$(shell awk '/Version:/ { print $$2 }' ${PKGNAME}.spec)
 RELEASE=$(shell awk '/Release:/ { print $$2 }' ${PKGNAME}.spec)
 CVSTAG=createrepo-$(subst .,_,$(VERSION)-$(RELEASE))
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -26,6 +27,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; docdir =
 includedir = ${prefix}/include
 oldincludedir = /usr/include
 mandir = ${prefix}/share/man
+compdir = $(shell pkg-config --variable=completionsdir bash-completion)
 
 pkgdatadir = $(datadir)/$(PKGNAME)
 pkglibdir = $(libdir)/$(PKGNAME)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -33,7 +35,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; pkgincludedir = $(includedir)/$(PKGNAME)
 top_builddir = 
 
 # all dirs
-DIRS = $(DESTDIR)$(bindir) $(DESTDIR)$(sysconfdir)/bash_completion.d \
+DIRS = $(DESTDIR)$(bindir) $(DESTDIR)$(compdir) \
 $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(mandir)
 
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -65,7 +67,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; check:
 
 install: all installdirs
 $(INSTALL_MODULES) $(srcdir)/$(MODULES) $(DESTDIR)$(pkgdatadir)
-$(INSTALL_DATA) $(PKGNAME).bash $(DESTDIR)$(sysconfdir)/bash_completion.d
+$(INSTALL_DATA) $(PKGNAME).bash $(DESTDIR)$(compdir)/$(PKGNAME)
+(cd $(DESTDIR)$(compdir); for n in $(ALIASES); do ln -s $(PKGNAME) $$n; done)
 for subdir in $(SUBDIRS) ; do \
   $(MAKE) -C $$subdir install VERSION=$(VERSION) PKGNAME=$(PKGNAME); \
 done
diff --git a/createrepo.spec b/createrepo.spec
index eea7092..46992c0 100644
--- a/createrepo.spec
+++ b/createrepo.spec
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 %{!?python_sitelib: %define python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+# disable broken /usr/lib/rpm/brp-python-bytecompile
+%define __os_install_post %{nil}
+%define compdir %(pkg-config --variable=completionsdir bash-completion)
 
 Summary: Creates a common metadata repository
 Name: createrepo
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -32,7 +35,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; make DESTDIR=$RPM_BUILD_ROOT sysconfdir=%{_sysconfdir} install
 %defattr(-, root, root)
 %dir %{_datadir}/%{name}
 %doc ChangeLog README COPYING COPYING.lib
-%{_sysconfdir}/bash_completion.d/
+%{compdir)
 %{_datadir}/%{name}/*
 %{_bindir}/%{name}
 %{_bindir}/modifyrepo
&lt;/pre&gt;</description>
    <dc:creator>Zdenek Pavlas</dc:creator>
    <dc:date>2013-03-20T11:06:08</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1471">
    <title>Changes to 'refs/tags/createrepo-0-9-9'</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1471</link>
    <description>&lt;pre&gt;Tag 'createrepo-0-9-9' created by Zdenek Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt; at 2013-03-06 11:11 +0000

createrepo-0-9-9

Changes since createrepo-0-9-8-54:
---
 0 files changed
---
&lt;/pre&gt;</description>
    <dc:creator>zpavlas&lt; at &gt;osuosl.org</dc:creator>
    <dc:date>2013-03-06T11:11:25</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1470">
    <title>modifyrepo.py</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1470</link>
    <description>&lt;pre&gt; modifyrepo.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit e7ea9fd45edc74ae89fee9c026584372c7091e53
Author: Zdenek Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Wed Mar 6 11:44:15 2013 +0100

    modifyrepo: use integer timestamps

diff --git a/modifyrepo.py b/modifyrepo.py
index bf1eec0..acdde77 100755
--- a/modifyrepo.py
+++ b/modifyrepo.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -142,7 +142,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class RepoMetadata:
         new_rd.checksum = (self.checksum_type, csum)
         new_rd.openchecksum = (self.checksum_type, open_csum)
         new_rd.size = str(os.stat(destmd).st_size)
-        new_rd.timestamp = str(os.stat(destmd).st_mtime)
+        new_rd.timestamp = str(int(os.stat(destmd).st_mtime))
         self.repoobj.repoData[new_rd.type] = new_rd
         self._print_repodata(new_rd)
         self._write_repomd()
&lt;/pre&gt;</description>
    <dc:creator>zpavlas&lt; at &gt;osuosl.org</dc:creator>
    <dc:date>2013-03-06T10:45:08</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1466">
    <title>URL-encoded hrefs</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1466</link>
    <description>&lt;pre&gt;Hi,

I have an RPM repository that includes packages with characters in the
file name that shouldn't be used in a URL e.g. the '+' in
libjpeg8-8d+1.2.1-r2.armv7a_vfp_neon.rpm.  I'm hosting the repository
on web space (specifically Amazon S3) that urlencodes any forbidden
characters so the URL I (and zypper) expect

http://package-cache.gumstix.org/armv7a_vfp_neon/libjpeg8-8d+1.2.1-r2.armv7a_vfp_neon.rpm

doesn't work because of the '+' sign.  The actual URL turns out to be

http://package-cache.gumstix.org/armv7a_vfp_neon/libjpeg8-8d%2B1.2.1-r2.armv7a_vfp_neon.rpm

Is there a flag or setting for createrepo that allows it to generate
urlencoded hrefs?  If not, would the project be open to a patch that
made this option available?

Thanks,
Ash
&lt;/pre&gt;</description>
    <dc:creator>Ash Charles</dc:creator>
    <dc:date>2013-03-04T18:11:29</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1464">
    <title>worker.py</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1464</link>
    <description>&lt;pre&gt; worker.py |    2 ++
 1 file changed, 2 insertions(+)

New commits:
commit 0dd44e60a7cd00b4339e999569d5536112eb2253
Author: Zdenek Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Fri Mar 1 12:08:59 2013 +0100

    worker.py: turn off stdout buffering
    
    Reader either uses readline() or read(size).  If only partial data
    are available, reader blocks.  Writer may then block on stderr.

diff --git a/worker.py b/worker.py
index fe6758f..b67b5bd 100755
--- a/worker.py
+++ b/worker.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -60,6 +60,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
             v = None
         globalopts[k] = v
 
+    # turn off buffering on stdout
+    sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
     
     reldir = external_data['_reldir']
     ts = rpmUtils.transaction.initReadOnlyTransaction()
&lt;/pre&gt;</description>
    <dc:creator>zpavlas&lt; at &gt;osuosl.org</dc:creator>
    <dc:date>2013-03-01T14:35:23</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1463">
    <title>createrepo/__init__.py</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1463</link>
    <description>&lt;pre&gt; createrepo/__init__.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit f0020c470935cbb98ed4c53ef8ae24952e799a01
Author: ZdenÄk Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Fri Dec 14 11:20:21 2012 +0100

    no repomd.xml &amp;amp;&amp;amp; --checkts: skip .rpm timestamp checking.  BZ 877301

diff --git a/createrepo/__init__.py b/createrepo/__init__.py
index a52ec9e..1b18a9f 100644
--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -327,7 +327,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
     def checkTimeStamps(self):
         """check the timestamp of our target dir. If it is not newer than
            the repodata return False, else True"""
-        if self.conf.checkts:
+        if self.conf.checkts and self.conf.mdtimestamp:
             dn = os.path.join(self.conf.basedir, self.conf.directory)
             files = self.getFileList(dn, '.rpm')
             files = self.trimRpms(files)
_______________________________________________
Rpm-metadata mailing list
Rpm-metadata&amp;lt; at &amp;gt;lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/rpm-metadata
&lt;/pre&gt;</description>
    <dc:creator>zpavlas&lt; at &gt;osuosl.org</dc:creator>
    <dc:date>2012-12-17T08:14:56</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1458">
    <title>3 commits - createrepo/__init__.pycreaterepo/utils.py worker.py</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1458</link>
    <description>&lt;pre&gt; createrepo/__init__.py |   89 ++++++++++++++++++++++++++-----------------------
 createrepo/utils.py    |   16 ++------
 worker.py              |   39 +++++++++++----------
 3 files changed, 74 insertions(+), 70 deletions(-)

New commits:
commit 07e3380a30ec7375aae1a03ef49337eab250f4b2
Author: ZdenÄk Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Fri Nov 23 15:53:07 2012 +0100

    save metadata in pkg order

diff --git a/createrepo/__init__.py b/createrepo/__init__.py
index 75710d9..a52ec9e 100644
--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -543,6 +543,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
         # go on their merry way
         
         newpkgs = []
+        keptpkgs = []
         if self.conf.update:
             # if we're in --update mode then only act on the new/changed pkgs
             for pkg in pkglist:
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -558,11 +559,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
                     if self.conf.verbose:
                         self.callback.log(_("Using data from old metadata for %s")
                                             % pkg)
-
-                    old_po.basepath = self.conf.baseurl # reset baseurl in the old pkg
-                    self.primaryfile.write(old_po.xml_dump_primary_metadata())
-                    self.flfile.write(old_po.xml_dump_filelists_metadata())
-                    self.otherfile.write(old_po.xml_dump_other_metadata())
+                    keptpkgs.append((pkg, old_po))
 
                     #FIXME - if we're in update and we have deltas enabled
                     # check the presto data for this pkg and write its info back out
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -594,15 +591,25 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
                 self.read_pkgs.append(pkg)
             
             if po:
-                self.primaryfile.write(po.xml_dump_primary_metadata())
-                self.flfile.write(po.xml_dump_filelists_metadata())
-                self.otherfile.write(po.xml_dump_other_metadata(
-                                     clog_limit=self.conf.changelog_limit))
+                keptpkgs.append((pkg, po))
                 continue
                 
             pkgfiles.append(pkg)
-            
-       
+
+        keptpkgs.sort(reverse=True)
+        # keptkgs is a list of (filename, po), pkgfiles is a list if filenames.
+        # Need to write them in sorted(filename) order.  We loop over pkgfiles,
+        # inserting keptpkgs in right spots (using the upto argument).
+        def save_keptpkgs(upto):
+            while keptpkgs and (upto is None or keptpkgs[-1][0] &amp;lt; upto):
+                filename, po = keptpkgs.pop()
+                # reset baseurl in the old pkg
+                po.basepath = self.conf.baseurl
+                self.primaryfile.write(po.xml_dump_primary_metadata())
+                self.flfile.write(po.xml_dump_filelists_metadata())
+                self.otherfile.write(po.xml_dump_other_metadata(
+                    clog_limit=self.conf.changelog_limit))
+
         if pkgfiles:
             # divide that list by the number of workers and fork off that many
             # workers to tmpdirs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -612,6 +619,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
             self._worker_tmp_path = tempfile.mkdtemp() # setting this in the base object so we can clean it up later
             if self.conf.workers &amp;lt; 1:
                 self.conf.workers = num_cpus_online()
+            pkgfiles.sort()
             worker_chunks = split_list_into_equal_chunks(pkgfiles, self.conf.workers)
             worker_cmd_dict = {}
             worker_jobs = {}
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -671,6 +679,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
                         self.callback.errorlog('Worker %s: %s' % (num, line.rstrip()))
 
             for i, pkg in enumerate(pkgfiles):
+                # insert cached packages
+                save_keptpkgs(pkg)
+
                 # save output to local files
                 log_messages(i % self.conf.workers)
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -696,6 +707,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
                         continue
                 self.read_pkgs.append(pkgfile)
 
+        save_keptpkgs(None) # append anything left
         return self.current_pkg
 
 
commit f0574bbf35ef6d173c662c6093ed6c34dec515bc
Author: ZdenÄk Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Fri Nov 23 14:05:02 2012 +0100

    use pipe instead of tempfiles.. ~5% speedup

diff --git a/createrepo/__init__.py b/createrepo/__init__.py
index b3a3c06..75710d9 100644
--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -635,20 +635,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
                 f.write('\n'.join(worker_chunks[worker_num]))
                 f.close()
                 
-                # make the worker directory
                 workercmdline = []
                 workercmdline.extend(base_worker_cmdline)
-                thisdir = self._worker_tmp_path + '/' + str(worker_num)
-                if checkAndMakeDir(thisdir):
-                    workercmdline.append('--tmpmdpath=%s' % thisdir)
-                else:
-                    raise MDError, "Unable to create worker path: %s" % thisdir
                 workercmdline.append('--pkglist=%s/pkglist-%s' % (self._worker_tmp_path, worker_num))
                 worker_cmd_dict[worker_num] = workercmdline
             
                 
 
-            fds = {}
             for (num, cmdline) in worker_cmd_dict.items():
                 if not self.conf.quiet:
                     self.callback.log("Spawning worker %s with %s pkgs" % (num, 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -656,19 +649,35 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
                 job = subprocess.Popen(cmdline, stdout=subprocess.PIPE,
                                         stderr=subprocess.PIPE)
                 worker_jobs[num] = job
-                fds[job.stdout.fileno()] = num, job.stdout, self.callback.log
-                fds[job.stderr.fileno()] = num, job.stderr, self.callback.errorlog
             
-            while fds:
-                for fd in select(fds, [], [])[0]:
-                    num, stream, logger = fds[fd]
-                    line = stream.readline()
-                    if line == '':
-                        del fds[fd]
-                        continue
-                    logger('Worker %s: %s' % (num, line.rstrip()))
+            files = self.primaryfile, self.flfile, self.otherfile
+            def log_messages(num):
+                job = worker_jobs[num]
+                while True:
+                    # check stdout and stderr
+                    for stream in select((job.stdout, job.stderr), (), ())[0]:
+                        line = stream.readline()
+                        if line: break
+                    else:
+                        return # EOF, EOF
+                    if stream is job.stdout:
+                        if line.startswith('*** '):
+                            # get data, save to local files
+                            for out, size in zip(files, line[4:].split()):
+                                out.write(stream.read(int(size)))
+                            return
+                        self.callback.log('Worker %s: %s' % (num, line.rstrip()))
+                    else:
+                        self.callback.errorlog('Worker %s: %s' % (num, line.rstrip()))
+
+            for i, pkg in enumerate(pkgfiles):
+                # save output to local files
+                log_messages(i % self.conf.workers)
 
             for (num, job) in worker_jobs.items():
+                # process remaining messages on stderr
+                log_messages(num)
+
                 if job.wait() != 0:
                     msg = "Worker exited with non-zero value: %s. Fatal." % job.returncode
                     self.callback.errorlog(msg)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -676,18 +685,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
                     
             if not self.conf.quiet:
                 self.callback.log("Workers Finished")
-            # finished with workers
-            # go to their dirs and add the contents
-            if not self.conf.quiet:
-                self.callback.log("Gathering worker results")
-            for num in range(self.conf.workers):
-                for (fn, fo) in (('primary.xml', self.primaryfile), 
-                           ('filelists.xml', self.flfile),
-                           ('other.xml', self.otherfile)):
-                    fnpath = self._worker_tmp_path + '/' + str(num) + '/' + fn
-                    if os.path.exists(fnpath):
-                        fo.write(open(fnpath, 'r').read())
-
                     
             for pkgfile in pkgfiles:
                 if self.conf.deltas:
diff --git a/createrepo/utils.py b/createrepo/utils.py
index cfe68e6..b0d92ec 100644
--- a/createrepo/utils.py
+++ b/createrepo/utils.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -191,18 +191,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def encodefiletypelist(filetypelist):
     return result
 
 def split_list_into_equal_chunks(seq, num_chunks):
-    if num_chunks &amp;lt;= 1:
-        return [seq[:]]
-    avg = len(seq) / float(num_chunks)
-    out = []
-    last = 0.0
-    #  Due to floating point math, we do one less than the number of chunks
-    # and then the rest. Eg. range(1,6), 9
-    while len(out) &amp;lt; (num_chunks - 1):
-        out.append(seq[int(last):int(last + avg)])
-        last += avg
-    out.append(seq[int(last):])
-
+    """it's used on sorted input which is then merged in order"""
+    out = [[] for i in range(num_chunks)]
+    for i, item in enumerate(seq):
+        out[i % num_chunks].append(item)
     return out
 
 def num_cpus_online(unknown=1):
commit 3eba159db3690a516ad389a7e4e52fa2167c404c
Author: ZdenÄk Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Fri Nov 23 14:43:41 2012 +0100

    worker: no --tmpmdpath =&amp;gt; use stdout

diff --git a/worker.py b/worker.py
index 23c87a3..fe6758f 100755
--- a/worker.py
+++ b/worker.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -39,10 +39,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
     opts, pkgs = parser.parse_args(args)
     external_data = {'_packagenumber': 1}
     globalopts = {}
-    if not opts.tmpmdpath:
-        print &amp;gt;&amp;gt; sys.stderr, "tmpmdpath required for destination files"
-        sys.exit(1)
-    
     
     for strs in opts.pkgoptions:
         k,v = strs.split('=')
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -67,10 +63,19 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
     
     reldir = external_data['_reldir']
     ts = rpmUtils.transaction.initReadOnlyTransaction()
-    pri = open(opts.tmpmdpath + '/primary.xml' , 'w')
-    fl = open(opts.tmpmdpath  + '/filelists.xml' , 'w')
-    other = open(opts.tmpmdpath  + '/other.xml' , 'w')
-    
+    if opts.tmpmdpath:
+        files = [open(opts.tmpmdpath + '/%s.xml' % i, 'w')
+                 for i in ('primary', 'filelists', 'other')]
+        def output(*xml):
+            for fh, buf in zip(files, xml):
+                fh.write(buf)
+    else:
+        def output(*xml):
+            buf = ' '.join(str(len(i)) for i in xml)
+            sys.stdout.write('*** %s\n' % buf)
+            for buf in xml:
+                sys.stdout.write(buf)
+
     if opts.pkglist:
         for line in open(opts.pkglist,'r').readlines():
             line = line.strip()
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -78,10 +83,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
                 continue
             pkgs.append(line)
 
+    clog_limit=globalopts.get('clog_limit', None)
+    if clog_limit is not None:
+         clog_limit = int(clog_limit)
     for pkgfile in pkgs:
         pkgpath = reldir + '/' + pkgfile
         if not os.path.exists(pkgpath):
             print &amp;gt;&amp;gt; sys.stderr, "File not found: %s" % pkgpath
+            output()
             continue
 
         try:
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -91,21 +100,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
             pkg = createrepo.yumbased.CreateRepoPackage(ts, package=pkgpath, 
                                 sumtype=globalopts.get('sumtype', None), 
                                 external_data=external_data)
-            pri.write(pkg.xml_dump_primary_metadata())
-            fl.write(pkg.xml_dump_filelists_metadata())
-            clog_limit=globalopts.get('clog_limit', None)
-            if clog_limit is not None:
-                 clog_limit = int(clog_limit)
-            other.write(pkg.xml_dump_other_metadata(clog_limit=clog_limit))
+            output(pkg.xml_dump_primary_metadata(),
+                   pkg.xml_dump_filelists_metadata(),
+                   pkg.xml_dump_other_metadata(clog_limit=clog_limit))
         except yum.Errors.YumBaseError, e:
             print &amp;gt;&amp;gt; sys.stderr, "Error: %s" % e
+            output()
             continue
         else:
             external_data['_packagenumber']+=1
         
-    pri.close()
-    fl.close()
-    other.close()
-    
 if __name__ == "__main__":
     main(sys.argv[1:])
_______________________________________________
Rpm-metadata mailing list
Rpm-metadata&amp;lt; at &amp;gt;lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/rpm-metadata
&lt;/pre&gt;</description>
    <dc:creator>zpavlas&lt; at &gt;osuosl.org</dc:creator>
    <dc:date>2012-11-29T14:48:11</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1455">
    <title>2 commits - createrepo/__init__.py</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1455</link>
    <description>&lt;pre&gt; createrepo/__init__.py |   23 ++---------------------
 1 file changed, 2 insertions(+), 21 deletions(-)

New commits:
commit 73400ac4a9717bcedb73902c7a510f3282e1a47b
Author: ZdenÄk Pavlas &amp;lt;zpavlas&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Mon Nov 26 14:30:20 2012 +0100

    also fix os.isdir(), kill broken SplitMetadataGenerator.getFileList

diff --git a/createrepo/__init__.py b/createrepo/__init__.py
index ef51b14..b3a3c06 100644
--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -307,14 +307,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
 
         def extension_visitor(filelist, dirname, names):
             for fn in names:
+                fn = os.path.join(dirname, fn)
                 if os.path.isdir(fn):
                     continue
-                if self.conf.skip_symlinks and os.path.islink(os.path.join(dirname, fn)):
+                if self.conf.skip_symlinks and os.path.islink(fn):
                     continue
                 elif fn[-extlen:].lower() == '%s' % (ext):
-                    relativepath = dirname.replace(startdir, "", 1)
-                    relativepath = relativepath.lstrip("/")
-                    filelist.append(os.path.join(relativepath, fn))
+                    filelist.append(fn[len(startdir):])
 
         filelist = []
         startdir = directory + '/'
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1263,24 +1262,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class SplitMetaDataGenerator(MetaDataGenerator):
         (scheme, netloc, path, query, fragid) = urlparse.urlsplit(url)
         return urlparse.urlunsplit((scheme, netloc, path, query, str(fragment)))
 
-    def getFileList(self, directory, ext):
-
-        extlen = len(ext)
-
-        def extension_visitor(arg, dirname, names):
-            for fn in names:
-                if os.path.isdir(fn):
-                    continue
-                elif fn[-extlen:].lower() == '%s' % (ext):
-                    reldir = os.path.basename(dirname)
-                    if reldir == os.path.basename(directory):
-                        reldir = ""
-                    arg.append(os.path.join(reldir, fn))
-
-        rpmlist = []
-        os.path.walk(directory, extension_visitor, rpmlist)
-        return rpmlist
-
     def doPkgMetadata(self):
         """all the heavy lifting for the package metadata"""
         if len(self.conf.directories) == 1:
commit 7d15b5722db547ef6d61736641e4e47f255b34b0
Author: Tomas Mlcoch &amp;lt;tmlcoch&amp;lt; at &amp;gt;redhat.com&amp;gt;
Date:   Tue Jun 5 15:12:48 2012 +0200

    Fix --skip-symlinks

diff --git a/createrepo/__init__.py b/createrepo/__init__.py
index 167d384..ef51b14 100644
--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -309,7 +309,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; class MetaDataGenerator:
             for fn in names:
                 if os.path.isdir(fn):
                     continue
-                if self.conf.skip_symlinks and os.path.islink(fn):
+                if self.conf.skip_symlinks and os.path.islink(os.path.join(dirname, fn)):
                     continue
                 elif fn[-extlen:].lower() == '%s' % (ext):
                     relativepath = dirname.replace(startdir, "", 1)
_______________________________________________
Rpm-metadata mailing list
Rpm-metadata&amp;lt; at &amp;gt;lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/rpm-metadata
&lt;/pre&gt;</description>
    <dc:creator>zpavlas&lt; at &gt;osuosl.org</dc:creator>
    <dc:date>2012-11-26T13:33:53</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1454">
    <title>createrepo not generate deltarpm in case of update</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1454</link>
    <description>&lt;pre&gt;hi,
if i run this command:
createrepo --update --deltas --num-deltas 20 --oldpackagedirs x x
then it never generate drpms while if i remove --update ie:
createrepo --deltas --num-deltas 20 --oldpackagedirs x x
it's generate. why? i'd like to use --update since it's a rather large
repo and only a very small portion change, but i also like to generate
drpms for the updated packages.

&lt;/pre&gt;</description>
    <dc:creator>Farkas Levente</dc:creator>
    <dc:date>2012-11-20T12:56:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1453">
    <title>createrepo.bash</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1453</link>
    <description>&lt;pre&gt; createrepo.bash |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 4325dfa059c3ca6f4dd7ac923754060d01c6f9b2
Author: Ville SkyttÃ¤ &amp;lt;ville.skytta&amp;lt; at &amp;gt;iki.fi&amp;gt;
Date:   Tue Nov 20 18:12:19 2012 +0200

    Remove --xz from suggested completions.

diff --git a/createrepo.bash b/createrepo.bash
index f0695ba..f5a8bb7 100644
--- a/createrepo.bash
+++ b/createrepo.bash
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -64,7 +64,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _cr_createrepo()
             --skip-symlinks --changelog-limit --unique-md-filenames
             --simple-md-filenames --retain-old-md --distro --content --repo
             --revision --deltas --oldpackagedirs --num-deltas --read-pkgs-list
-            --max-delta-rpm-size --workers --xz --compress-type' -- "$2" ) )
+            --max-delta-rpm-size --workers --compress-type' -- "$2" ) )
     else
         COMPREPLY=( $( compgen -d -- "$2" ) )
     fi
_______________________________________________
Rpm-metadata mailing list
Rpm-metadata&amp;lt; at &amp;gt;lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/rpm-metadata
&lt;/pre&gt;</description>
    <dc:creator>Ville Skyttä</dc:creator>
    <dc:date>2012-11-20T16:14:10</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1452">
    <title>2 commits - docs/createrepo.8 modifyrepo.py</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1452</link>
    <description>&lt;pre&gt; docs/createrepo.8 |    5 +++--
 modifyrepo.py     |    2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

New commits:
commit ccbae23bf7752f7ec7f5de49cbf4c49415f773a2
Author: James Antill &amp;lt;james&amp;lt; at &amp;gt;and.org&amp;gt;
Date:   Mon Nov 19 16:18:27 2012 -0500

    Add --compress-type to createrepo man page, remove old --xz opt. BZ 874682.

diff --git a/docs/createrepo.8 b/docs/createrepo.8
index 4734392..ff359de 100644
--- a/docs/createrepo.8
+++ b/docs/createrepo.8
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -111,8 +111,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; output the paths to the pkgs actually read useful with  --update
 max size of an rpm that to run deltarpm against (in bytes)
 .IP "\fB\--workers\fP WORKERS
 number of workers to spawn to read rpms
-.IP "\fB\--xz\fP
-use xz for repodata compression
+.IP "\fB\--compress-type\fP
+specify which compression method to use: compat (default),
+xz (may not be available), gz, bz2.
 .IP
 
 .SH "EXAMPLES"
commit f3a4ebe8b9290b3df21ad3c689889e7f1ced2316
Author: James Antill &amp;lt;james&amp;lt; at &amp;gt;and.org&amp;gt;
Date:   Mon Nov 19 16:17:57 2012 -0500

    Change the compress-type for modifyrepo to .gz for compat. BZ 874682.

diff --git a/modifyrepo.py b/modifyrepo.py
index 626bb94..bf1eec0 100755
--- a/modifyrepo.py
+++ b/modifyrepo.py
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -177,7 +177,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; def main(args):
                       help="remove specified file from repodata")
     parser.add_option("--compress", action="store_true", default=False,
                       help="compress the new repodata before adding it to the repo")
-    parser.add_option("--compress-type", dest='compress_type', default='xz',
+    parser.add_option("--compress-type", dest='compress_type', default='gz',
                       help="compression format to use")
     parser.usage = "modifyrepo [options] [--remove] &amp;lt;input_metadata&amp;gt; &amp;lt;output repodata&amp;gt;"
&lt;/pre&gt;</description>
    <dc:creator>James Antill</dc:creator>
    <dc:date>2012-11-19T21:19:25</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.rpm.metadata/1454">
    <title>createrepo not generate deltarpm in case of update</title>
    <link>http://comments.gmane.org/gmane.linux.rpm.metadata/1454</link>
    <description>&lt;pre&gt;hi,
if i run this command:
createrepo --update --deltas --num-deltas 20 --oldpackagedirs x x
then it never generate drpms while if i remove --update ie:
createrepo --deltas --num-deltas 20 --oldpackagedirs x x
it's generate. why? i'd like to use --update since it's a rather large
repo and only a very small portion change, but i also like to generate
drpms for the updated packages.

&lt;/pre&gt;</description>
    <dc:creator>Farkas Levente</dc:creator>
    <dc:date>2012-11-20T12:56:51</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.rpm.metadata">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.rpm.metadata</link>
  </textinput>
</rdf:RDF>
