Blame SOURCES/BZ-1022028-wrong-package-count.patch

613d6f
diff --git a/createrepo/__init__.py b/createrepo/__init__.py
613d6f
index dfdc8ab..452a3ac 100644
613d6f
--- a/createrepo/__init__.py
613d6f
+++ b/createrepo/__init__.py
613d6f
@@ -399,7 +399,17 @@ class MetaDataGenerator:
613d6f
             self._setup_old_metadata_lookup()
613d6f
         # rpms we're going to be dealing with
613d6f
         if self.conf.pkglist:
613d6f
-            packages = self.conf.pkglist
613d6f
+            packages = []
613d6f
+            for pkg in self.conf.pkglist:
613d6f
+                if '://' in pkg: # remote
613d6f
+                    packages.append(pkg)
613d6f
+                    continue
613d6f
+                path = os.path.join(self.conf.basedir, self.conf.directory, pkg)
613d6f
+                if os.access(path, os.R_OK):
613d6f
+                    packages.append(pkg)
613d6f
+                    continue
613d6f
+                # not fatal, yet
613d6f
+                self.callback.errorlog('Cannot read file: %s' % path)
613d6f
         else:
613d6f
             packages = self.getFileList(self.package_dir, '.rpm')
613d6f
 
613d6f
@@ -670,6 +680,8 @@ class MetaDataGenerator:
613d6f
                         return # EOF, EOF
613d6f
                     if stream is job.stdout:
613d6f
                         if line.startswith('*** '):
613d6f
+                            if line == '*** \n':
613d6f
+                                return True
613d6f
                             # get data, save to local files
613d6f
                             for out, size in zip(files, line[4:].split()):
613d6f
                                 out.write(stream.read(int(size)))
613d6f
@@ -678,12 +690,14 @@ class MetaDataGenerator:
613d6f
                     else:
613d6f
                         self.callback.errorlog('Worker %s: %s' % (num, line.rstrip()))
613d6f
 
613d6f
+            err = 0
613d6f
             for i, pkg in enumerate(pkgfiles):
613d6f
                 # insert cached packages
613d6f
                 save_keptpkgs(pkg)
613d6f
 
613d6f
                 # save output to local files
613d6f
-                log_messages(i % self.conf.workers)
613d6f
+                if log_messages(i % self.conf.workers):
613d6f
+                    err += 1
613d6f
 
613d6f
             for (num, job) in worker_jobs.items():
613d6f
                 # process remaining messages on stderr
613d6f
@@ -697,6 +711,9 @@ class MetaDataGenerator:
613d6f
             if not self.conf.quiet:
613d6f
                 self.callback.log("Workers Finished")
613d6f
                     
613d6f
+            if err:
613d6f
+                raise MDError, "Failed to process %d package(s)." % err
613d6f
+
613d6f
             for pkgfile in pkgfiles:
613d6f
                 if self.conf.deltas:
613d6f
                     try: