repomaker: use subprocess to accelerate repo creation
authorHasan Wan <hasan.wan@intel.com>
Mon, 31 Dec 2012 05:47:06 +0000 (13:47 +0800)
committerLin Yang <lin.a.yang@intel.com>
Thu, 28 Feb 2013 07:44:18 +0000 (15:44 +0800)
Change-Id: I2adc57a7dce183fe759f181e1f0e426c588037a8

repomaker/linkrepo.py

index 970b5ce..9e67a3a 100644 (file)
@@ -20,10 +20,10 @@ import optparse
 import glob
 import shutil
 import stat
-from time import sleep
 import tempfile
 import re
 import rpm
+import subprocess
 
 pjoin = os.path.join # shortcut
 
@@ -178,23 +178,26 @@ class LinkRepo():
             os.system('rm %s/repodata/repomd.xml.asc' %dest_src)
             os.system('rm %s/repodata/repomd.xml.asc' %dest_pkg)
 
-        # debug
-        os.system('createrepo --quiet -d --changelog-limit=1 --update %s' % dest_debug)
-        self.sign(dest_debug)
 
+        # use subprocess to make the createrepo non-blocking
+        # debug
+        debug_repo = subprocess.Popen('createrepo --quiet -d --changelog-limit=1 --update %s' % dest_debug, shell=True)
         # source
-        os.system('createrepo --quiet -d --changelog-limit=10 --update %s' % dest_src)
-        self.sign(dest_src)
+        src_repo = subprocess.Popen('createrepo --quiet -d --changelog-limit=10 --update %s' % dest_src, shell=True)
 
         self._rm_files(pjoin(dest_pkg, 'repodata', '*comps*'))
         self._rm_files(pjoin(dest_pkg, 'repodata', '*patterns*'))
         self._rm_files(pjoin(dest_pkg, 'repodata', '*group*'))
         self._rm_files(pjoin(dest_pkg, 'repodata', '*image-config*'))
-
         # packages
-        os.system('createrepo --quiet --unique-md-filenames -d --changelog-limit=5 --update %s' % dest_pkg)
-        self.sign(dest_pkg)
+        pkg_repo = subprocess.Popen('createrepo --quiet --unique-md-filenames -d --changelog-limit=5 --update %s' % dest_pkg, shell=True)
 
+        debug_repo.wait()
+        src_repo.wait()
+        pkg_repo.wait()
+        self.sign(dest_debug)
+        self.sign(dest_src)
+        self.sign(dest_pkg)
 
     def update_package_groups( self, dest_pkg):
         """ Checking for patterns at: rawrepo/repodata/{group.xml,patterns.xml}.gz