Add re-packaging for prebuilt binaries into the PDK, driven from a manifest_* file delivered with the prebuilt zip file
authorShabe Razvi <shaber@symbian.org>
Mon, 17 May 2010 18:01:42 +0100
changeset 1035 62b7cda1c2bb
parent 1034 24bd01e430fd
child 1036 1f465f774089
Add re-packaging for prebuilt binaries into the PDK, driven from a manifest_* file delivered with the prebuilt zip file
common/build.postbuild.xml
common/templates/zip.cfg.xml.ftl.template
--- a/common/build.postbuild.xml	Mon May 17 15:13:30 2010 +0100
+++ b/common/build.postbuild.xml	Mon May 17 18:01:42 2010 +0100
@@ -220,7 +220,7 @@
         </zip>
     </target>    
     
-    <target name="sf-package-binary" depends="sf-package-postbuild-rnd">
+    <target name="sf-package-binary" depends="sf-package-postbuild-rnd,sf-merge-manifest">
         <!-- Warning: Reverting to using the He zipper will also revert to a single zip for the binaries:
              would need to update the template and possibly the script that populates it -->
         <!--antcall target="sf-zip-content">
@@ -239,8 +239,9 @@
                 <exec executable="7za" dir="${build.drive}" output="${build.log.dir}/zip_${build.id}_binaries_epoc32.log">
                     <arg value="a"/>
                     <arg value="-t${sf.spec.package.zip.format}"/>
-                    <arg value="-x@${build.log.dir}/rnd_excludefile.txt"/>
+                    <arg value="-x@${build.log.dir}/rnd_excludefile.txt"/> <!-- rnd content taken from internal hg repos -->
                     <arg value="-x@${sf.spec.prebuilt.excludelist}"/>
+                    <arg value="-x@$output/temp_build_files/manifest_excludelist.txt"/> <!-- merged list of prebuilt content such as binaries_prebuilt -->
                     <arg value="-x@${sf.epoc32.exclusions.file}"/>
                     <arg value="-x!epoc32\gcc"/>
                     <arg value="-x!epoc32\gcc_mingw"/>
@@ -265,6 +266,7 @@
                         <arg value="-t${sf.spec.package.zip.format}"/>
                         <arg value="-i@${sf.sdk.header.list.file}"/>
                         <arg value="-x@${build.log.dir}/rnd_excludefile.txt"/>
+                        <arg value="-x@$output/temp_build_files/manifest_excludelist.txt"/>
                         <arg value="-x@${sf.spec.prebuilt.excludelist}"/>
                         <arg value="${build.drive}/output/zips/release/binaries_epoc_sdk.zip"/>
                     </exec>
@@ -288,6 +290,7 @@
                 <arg value="a"/>
                 <arg value="-t${sf.spec.package.zip.format}"/>
                 <arg value="-x@${build.log.dir}/rnd_excludefile.txt"/>
+                <arg value="-x@$output/temp_build_files/manifest_excludelist.txt"/>
                 <arg value="-x@${sf.spec.prebuilt.excludelist}"/>
                 <arg value="-xr!*.sym"/>
                 <arg value="-xr!*.lib"/>
@@ -298,6 +301,7 @@
                 <arg value="a"/>
                 <arg value="-t${sf.spec.package.zip.format}"/>
                 <arg value="-x@${build.log.dir}/rnd_excludefile.txt"/>
+                <arg value="-x@$output/temp_build_files/manifest_excludelist.txt"/>
                 <arg value="-x@${sf.spec.prebuilt.excludelist}"/>
                 <arg value="-xr!*.sym"/>
                 <arg value="-xr!*.lib"/>
@@ -309,6 +313,7 @@
                 <arg value="-t${sf.spec.package.zip.format}"/>
                 <arg value="-ir!epoc32/release/winscw/*.lib"/>
                 <arg value="-x@${build.log.dir}/rnd_excludefile.txt"/>
+                <arg value="-x@$output/temp_build_files/manifest_excludelist.txt"/>
                 <arg value="-x@${sf.spec.prebuilt.excludelist}"/>
                 <arg value="${build.drive}/output/zips/release/binaries_winscw_lib.zip"/>
             </exec>
@@ -318,6 +323,7 @@
                 <arg value="a"/>
                 <arg value="-t${sf.spec.package.zip.format}"/>
                 <arg value="-x@${build.log.dir}/rnd_excludefile.txt"/>
+                <arg value="-x@$output/temp_build_files/manifest_excludelist.txt"/>
                 <arg value="-x@${sf.spec.prebuilt.excludelist}"/>
                 <arg value="-xr!*.sym"/>
                 <arg value="${build.drive}/output/zips/release/binaries_armv5_udeb.zip"/>
@@ -327,6 +333,7 @@
                 <arg value="a"/>
                 <arg value="-t${sf.spec.package.zip.format}"/>
                 <arg value="-x@${build.log.dir}/rnd_excludefile.txt"/>
+                <arg value="-x@$output/temp_build_files/manifest_excludelist.txt"/>
                 <arg value="-x@${sf.spec.prebuilt.excludelist}"/>
                 <arg value="-xr!*.sym"/>
                 <arg value="${build.drive}/output/zips/release/binaries_armv5_urel.zip"/>
@@ -336,6 +343,7 @@
                 <arg value="a"/>
                 <arg value="-t${sf.spec.package.zip.format}"/>
                 <arg value="-x@${build.log.dir}/rnd_excludefile.txt"/>
+                <arg value="-x@$output/temp_build_files/manifest_excludelist.txt"/>
                 <arg value="-x@${sf.spec.prebuilt.excludelist}"/>
                 <arg value="-xr!*.sym"/>
                 <arg value="-ir!epoc32/release/armv5/_*.bin"/> <!-- include bootloaders in common lib zipfile -->
@@ -345,6 +353,7 @@
         </parallel>
         
         <runtarget target="sf-package-tools"/>
+        <runtarget target="sf-package-prebuilt"/>
         
         <!-- Generate release_metadata entries for the above zips -->
         <antcall target="sf-zip-content">
@@ -365,6 +374,7 @@
             <arg value="a"/>
             <arg value="-t${sf.spec.package.zip.format}"/>
             <arg value="-x@${build.log.dir}/rnd_excludefile.txt"/>
+            <arg value="-x@$output/temp_build_files/manifest_excludelist.txt"/>
             <arg value="-x@${sf.spec.prebuilt.excludelist}"/>
             <arg value="${build.drive}/output/zips/release/tools_epoc.zip"/>
             <arg value="epoc32/tools"/>
@@ -390,6 +400,53 @@
         </exec>  
     </target>
 
+    <!-- merge manifests for prebuilt stuff delivered at the start of build process -->
+    <target name="sf-merge-manifest">
+      <echo message="INFO Build drive is ${build.drive} "/>
+      <concat destfile="${build.drive}\output\temp_build_files\manifest_excludelist.txt">
+        <fileset dir="${build.drive}" includes="*manifest*"/>
+      </concat>
+       
+       <!-- touch file to update/create it in the event that there are no manifest* files available 
+            as 7z will not be happy being given a non-existent file -->  
+      <touch file="${build.drive}\output\temp_build_files\manifest_excludelist.txt"/>
+    </target>
+
+    <target name="sf-package-prebuilt" depends="sf-merge-manifest">
+    <!-- for each prebuilt manifest* file, repackage -->  
+
+      <for param="manifest">
+        <path>
+          <fileset dir="${build.drive}\">
+            <include name="manifest*.txt"/>
+            <exclude name="manifest*restricted*.txt"/> <!-- dont repack restricted content such as testconfigfileparser -->
+          </fileset>
+        </path>
+        <!-- strip manifest_ and .txt extension for matched file -->
+        <sequential>
+        <propertyregex property="manifest.shortname" override="true" input="@{manifest}" regexp="manifest_(\S+)(.txt)" select="\1" global="true"  casesensitive="false"/>
+        <propertyregex property="manifest.fullname"  override="true" input="@{manifest}" regexp="(.*)" select="\1" global="true"  casesensitive="false"/>
+        <propertyregex property="manifest.pkgname"   override="true" input="@{manifest}" regexp="manifest_binaries_(\S+)(.txt)" select="\1" global="true"  casesensitive="false"/>
+
+        <echo message="INFO Packaging ${manifest.fullname} into ${manifest.shortname}.zip"/>
+
+        <exec executable="7za" dir="${build.drive}/" output="${build.drive}/zip_${manifest.shortname}.log">
+            <arg value="a"/>
+            <arg value="-t${sf.spec.package.zip.format}"/>
+            <arg value="-i@${manifest.fullname}"/>
+            <arg value="${build.drive}/output/zips/release/${manifest.shortname}.zip"/> 
+        </exec>
+
+        <!-- merge release metadata -->
+        <antcall target="sf-zip-content">
+            <param name="zip.config.file"  value="${temp.build.dir}/zip.cfg.xml.ftl"/>
+            <param name="zip.target.name"  value="bin-${manifest.pkgname}-metadata" />
+            <param name="sf.spec.job.name" value="${manifest.pkgname}" />
+        </antcall>
+        </sequential>  
+      </for>
+
+    </target>
     <!-- runs analysis of missing bins and source -->
     <target name="sf-run-analysis">
         <stopwatch name="sf-run-analysis"/>
--- a/common/templates/zip.cfg.xml.ftl.template	Mon May 17 15:13:30 2010 +0100
+++ b/common/templates/zip.cfg.xml.ftl.template	Mon May 17 18:01:42 2010 +0100
@@ -118,7 +118,7 @@
 			</config>
 		</config>
 
-                <!-- For packaging tools builds such as "overlay", identified by sf.spec.job.name -->
+		<!-- For packaging tools builds such as "prebuilt", identified by sf.spec.job.name -->
 		<config name="bin-${sf.spec.job.name}-metadata" abstract="true">
 			<set name="archives.dir" value="${build.output.dir}/zips/release" />
 			<set name="grace.filters" value="emu"/>
@@ -129,6 +129,7 @@
 			</config>
 		</config>
 
+		
 		<!-- "Null" info entries, which match no files, but do populate the release_metadata.xml -->
 		<config name="info-just-metadata" abstract="true">
 			<set name="archives.dir" value="${build.output.dir}/zips/release" />