ipq: Add support to pack wififw images on availability

This change adds "optional" property to avoid pack error
on unavailability of wififw version-specific binaries and
abort while flashing.

Change-Id: I7351e3e717f12b1e730db710b4364404d177768d
Signed-off-by: Pavithra Palanisamy <pavip@codeaurora.org>
diff --git a/tools/pack.py b/tools/pack.py
index e1ed2d5..1ddd4cd 100644
--- a/tools/pack.py
+++ b/tools/pack.py
@@ -700,9 +700,11 @@
             if machid:
                 script.end_if()
 
-    def __gen_flash_script_image(self, filename, soc_version, machid, partition, flinfo, script):
+    def __gen_flash_script_image(self, filename, soc_version, file_exists, machid, partition, flinfo, script):
 
-            img_size = self.__get_img_size(filename)
+	    img_size = 0
+	    if file_exists == 1:
+                img_size = self.__get_img_size(filename)
             part_info = self.__get_part_info(partition)
 
             section_label = partition.split(":")
@@ -774,6 +776,12 @@
 
             script.start_activity("Flashing %s:" % section_conf)
 
+	    if file_exists == 0:
+		script.append('setenv stdout serial && echo "error: binary image not found" && exit 1', fatal=False)
+		if soc_version:
+		    script.end_if()
+		return
+
             if ARCH_NAME == "ipq806x":
                 script.switch_layout(layout)
             if img_size > 0:
@@ -821,6 +829,7 @@
         count = 0
 	soc_version = 0
 	diff_soc_ver_files = 0
+	file_exists = 1
 
         if self.flash_type == "norplusemmc" and flinfo.type == "emmc":
             srcDir_part = SRC_DIR + "/" + ARCH_NAME + "/flash_partition/" + flinfo.type + "-partition.xml"
@@ -954,7 +963,11 @@
 			for img in imgs:
 				filename = img.text
 				soc_version = img.get('soc_version')
-				self.__gen_flash_script_image(filename, soc_version, machid, partition, flinfo, script)
+				if 'optional' in img.attrib:
+				     if not os.path.exists(os.path.join(self.images_dname, filename)):
+					file_exists = 0
+				self.__gen_flash_script_image(filename, soc_version, file_exists, machid, partition, flinfo, script)
+				file_exists = 1 # generating flash script is mandatory by default
 
 			soc_version = 0 # Clear soc_version for next iteration
 			continue
@@ -970,15 +983,18 @@
                                 partition = section.attrib['label']
                            if filename == "":
                                 continue
-                           self.__gen_flash_script_image(filename, version, machid, partition, flinfo, script)
-
+			   if section.attrib['optional']:
+				if not os.path.exists(os.path.join(self.images_dname, filename)):
+				     file_exists = 0
+                           self.__gen_flash_script_image(filename, version, file_exists, machid, partition, flinfo, script)
+			   file_exists = 1
                         diff_soc_ver_files = 0 # Clear diff_soc_ver_files for next iteration
                         continue
                    except KeyError, e:
                         print "Skipping partition '%s'" % section.attrib['label']
                         pass
 
-	    self.__gen_flash_script_image(filename, soc_version, machid, partition, flinfo, script)
+	    self.__gen_flash_script_image(filename, soc_version, file_exists, machid, partition, flinfo, script)
 
     def __gen_script_cdt(self, images, flinfo, root, section_conf, partition):
         global ARCH_NAME
@@ -1069,6 +1085,8 @@
 	soc_version = 0
 	diff_soc_ver_files = 0
 	diff_files = ""
+	file_exists = 1
+
         self.__gen_flash_script(script, flinfo, root)
         if (self.flash_type == "norplusemmc" and flinfo.type == "emmc") or (self.flash_type != "norplusemmc"):
             if flinfo.type == "emmc":
@@ -1205,7 +1223,13 @@
 		        for img in imgs:
 				soc_version = img.get('soc_version')
 				filename = img.text
-				self.__gen_script_append_images(filename, soc_version, images, flinfo, root, section_conf, partition)
+				if 'optional' in img.attrib:
+				    if not os.path.exists(os.path.join(self.images_dname, filename)):
+					file_exists = 0
+
+				if file_exists == 1:
+				    self.__gen_script_append_images(filename, soc_version, images, flinfo, root, section_conf, partition)
+				file_exists = 1
 			soc_version = 0 # Clear soc_version for next iteration
 			continue
 		    except KeyError, e:
@@ -1220,7 +1244,14 @@
 				partition = section.attrib['label']
 			   if filename == "":
 				continue
-			   self.__gen_script_append_images(filename, version, images, flinfo, root, section_conf, partition)
+			   if section.attrib['optional']:
+				if not os.path.exists(os.path.join(self.images_dname, filename)):
+					file_exists = 0
+
+			   if file_exists == 1:
+			        self.__gen_script_append_images(filename, version, images, flinfo, root, section_conf, partition)
+			   file_exists = 1
+
 			diff_soc_ver_files = 0 # Clear diff_soc_ver_files for next iteration
 			continue
 		    except KeyError, e: