Support multiply repos in repomaker
authorLin Yang <lin.a.yang@intel.com>
Fri, 18 Apr 2014 05:01:39 +0000 (13:01 +0800)
committerYang Lin <lin.a.yang@intel.com>
Wed, 30 Apr 2014 02:32:24 +0000 (10:32 +0800)
Change-Id: Ib3294d690a5aef840c626093b20b22b10aa6a50a
Signed-off-by: Lin Yang <lin.a.yang@intel.com>
common/repomaker.py

index 61d8583..3a8e1ac 100644 (file)
@@ -162,7 +162,7 @@ class RepoMaker(object):
 
         repo_dir = os.path.join(self.outdir, "repos", name)
         if name not in self.repos:
-            self.repos[name] = {'archs': set(archs)}
+            self.repos[name] = {'archs': list(set(archs))}
 
         files = collect(in_dir, archs)
 
@@ -189,7 +189,7 @@ class RepoMaker(object):
                                                              filename)))
             # get names and content of .ks files from rpm
             if is_imageconf:
-                self.load_imagedata(fpath)
+                self.load_imagedata(name, fpath)
 
         # Generate or update build.xml
         self.update_builddata(name, repo_dirs)
@@ -228,7 +228,7 @@ class RepoMaker(object):
         """
         return bool(self.imagedata.images)
 
-    def load_imagedata(self, rpm):
+    def load_imagedata(self, repo, rpm):
         """
 
         Args:
@@ -236,7 +236,7 @@ class RepoMaker(object):
         Raises: ImageDataError
 
         """
-        self.imagedata.extract_image_conf(rpm)
+        self.imagedata.extract_image_conf(rpm, repo)
 
     def gen_image_info(self, updated_ks=None):
         """
@@ -246,7 +246,9 @@ class RepoMaker(object):
         if updated_ks:
             self.imagedata.ks = updated_ks
 
-        self.imagedata.save(self.outdir)
+        for repo in self.repos:
+            self.imagedata.save(os.path.join(self.outdir,
+                                                   'builddata/images/%s' % repo))
 
     def update_builddata(self, name, dirs, buildconf=None):
         """
@@ -301,9 +303,6 @@ class RepoMaker(object):
 
         if not os.path.exists(manifest_dir):
             os.makedirs(manifest_dir)
-        else:
-            raise RepoMakerError("The directory %s supposed must be clean"
-                                 % manifest_dir )
 
         repo_primary = manifest.get_repo_primary_md(self.outdir, name)
 
@@ -326,6 +325,6 @@ class RepoMaker(object):
                                                 gerrit_fetch_url,
                                                 gerrit_review_url)
             with open(os.path.join(manifest_dir,
-                                   "%s_%s.xml"  %(self.build_id, arch)),
+                                   "%s_%s_%s.xml"  %(self.build_id, name, arch)),
                       'w') as manifest_fh:
                 manifest_fh.write(manifest_string)