Add exclude-from-image option to exclude specific images
authorjianzhong.fang <jz.fang@samsung.com>
Fri, 19 Aug 2016 00:27:03 +0000 (08:27 +0800)
committerSoonKyu Park <sk7.park@samsung.com>
Fri, 23 Sep 2016 07:50:30 +0000 (16:50 +0900)
Change-Id: I5651efc10e3b250af0f31f5224f9dca40a5d7124

mic/imager/baseimager.py
mic/imager/loop.py
mic/imager/raw.py
mic/kickstart/custom_commands/partition.py

index 01936a1..7b201d2 100644 (file)
@@ -1209,6 +1209,18 @@ class BaseImageCreator(object):
             f.write("%s  %s" % (md5sum, os.path.basename(image_name)))
         self.outimage.append(image_name+".md5sum")
 
+    def remove_exclude_image(self):
+        for item in self._instloops[:]:
+            if item['exclude_image']:
+                msger.info("Removing %s in image." % item['name'])
+                imgfile = os.path.join(self._imgdir, item['name'])
+                try:
+                    os.remove(imgfile)
+                except OSError as err:
+                    if err.errno == errno.ENOENT:
+                        pass
+                self._instloops.remove(item)
+
     def package(self, destdir = "."):
         """Prepares the created image for final delivery.
 
@@ -1221,6 +1233,8 @@ class BaseImageCreator(object):
                    this defaults to the current directory.
 
         """
+        self.remove_exclude_image()
+
         self._stage_final_image()
 
         if not os.path.exists(destdir):
index 51d8181..0943ec7 100644 (file)
@@ -157,6 +157,7 @@ class LoopImageCreator(BaseImageCreator):
                     'loop': None,  # to be created in _mount_instroot
                     'uuid': part.uuid or None,
                     'kspart' : part,
+                    'exclude_image' : part.exclude_image or None,
                     })
             self._instloops = allloops
 
@@ -329,7 +330,8 @@ class LoopImageCreator(BaseImageCreator):
                  "extopts": None,
                  "loop": None,
                  "uuid": None,
-                 "kspart": None
+                 "kspart": None,
+                 "exclude_image" : None
                  })
 
         self._check_imgdir()
index 08f9683..82e9a16 100755 (executable)
@@ -597,3 +597,6 @@ class RawImageCreator(BaseImageCreator):
         if self.compress_image:
             self.image_files.update({'compress': self.compress_image})
         super(RawImageCreator, self).create_manifest()
+
+    def remove_exclude_image(self):
+        pass
index d4c39bf..89dad58 100644 (file)
@@ -28,6 +28,7 @@ class Mic_PartData(FC4_PartData):
         self.extopts = kwargs.get("extopts", None)
         self.part_type = kwargs.get("part_type", None)
         self.uuid = kwargs.get("uuid", None)
+        self.exclude_image = kwargs.get("exclude_from_image", False)
 
     def _getArgsAsStr(self):
         retval = FC4_PartData._getArgsAsStr(self)
@@ -40,6 +41,8 @@ class Mic_PartData(FC4_PartData):
             retval += " --part-type=%s" % self.part_type
         if self.uuid:
             retval += " --uuid=%s" % self.uuid
+        if self.exclude_image:
+            retval += " --exclude-from-image"
 
         return retval
 
@@ -58,4 +61,6 @@ class Mic_Partition(FC4_Partition):
         op.add_option("--part-type", type="string", action="store", dest="part_type",
                       default=None)
         op.add_option("--uuid", dest="uuid", action="store", type="string")
+        op.add_option("--exclude-from-image", action="store_true", dest="exclude_image",
+                      default=False)
         return op