You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2015/11/21 02:47:45 UTC
[2/2] git commit: [flex-sdk] [refs/heads/release4.15.0] - update
approval script with binary package checks
update approval script with binary package checks
Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/b36f9d6f
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/b36f9d6f
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/b36f9d6f
Branch: refs/heads/release4.15.0
Commit: b36f9d6f2cd9e74c85ce7a0a5bff7ff7aecaa562
Parents: 8e696c7
Author: Alex Harui <ah...@apache.org>
Authored: Fri Nov 20 17:46:51 2015 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Nov 20 17:46:51 2015 -0800
----------------------------------------------------------------------
ApproveSDK.xml | 1041 +++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 926 insertions(+), 115 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/b36f9d6f/ApproveSDK.xml
----------------------------------------------------------------------
diff --git a/ApproveSDK.xml b/ApproveSDK.xml
index 1048fba..77aba4a 100644
--- a/ApproveSDK.xml
+++ b/ApproveSDK.xml
@@ -52,12 +52,13 @@
</condition>
<property name="package.suffix" value="tar.gz" />
- <property name="rat.report" value="${basedir}/rat-report.txt"/>
+ <property name="src.rat.report" value="${basedir}/rat-report-src.txt"/>
+ <property name="bin.rat.report" value="${basedir}/rat-report-bin.txt"/>
<property name="apache.rat.jar" value="apache-rat-0.8.jar" />
<property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.8.jar" />
<property name="apache.rat.url" value="http://people.apache.org/~aharui/rat" />
- <property file="${basedir}/approvefalcon.properties"/>
+ <property file="${basedir}/approvesdk.properties"/>
<property name="mac.text.display" value="cat" />
<property name="win.text.display" value="type" />
@@ -108,13 +109,24 @@
<fail message="The release version is not set. Specify -Drelease.version=<release version (e.g. 3.1, 3.2, etc)>"
unless="release.version"/>
-
- <condition property="package.url.path" value="http://apacheflexbuild.cloudapp.net:8080/job/flex-sdk_release-candidate/lastSuccessfulBuild/artifact/out">
- <isset property="nightly" />
+ <condition property="package.url.path"
+ value="http://apacheflexbuild.cloudapp.net:8080/job/flex-sdk_release-candidate/lastSuccessfulBuild/artifact/out">
+ <not>
+ <isset property="rc" />
+ </not>
</condition>
-
+ <condition property="bin.package.url.path"
+ value="${package.url.path}">
+ <not>
+ <isset property="rc" />
+ </not>
+ </condition>
+
<property name="package.url.path" value="https://dist.apache.org/repos/dist/dev/flex/sdk/${release.version}/rc${rc}" />
- <property name="package.url.name" value="apache-flex-sdk-${release.version}-src" />
+ <property name="src.package.url.path" value="${package.url.path}" />
+ <property name="bin.package.url.path" value="${package.url.path}/binaries" />
+ <property name="src.package.url.name" value="apache-flex-sdk-${release.version}-src" />
+ <property name="bin.package.url.name" value="apache-flex-sdk-${release.version}-bin" />
<condition property="zip.package">
<equals arg1="zip" arg2="${package.suffix}" />
@@ -171,10 +183,10 @@
<echo>Testing nightly build of release ${release.version}</echo>
</target>
- <target name="main" depends="install-rat,echo-mode,download,check-sigs,uncompress,rat-check,check-notices,build,approve" description="Perform required release approval steps">
+ <target name="main" depends="write-out-jars-list,install-rat,download,check-sigs,uncompress,rat-check,examine-jars,external-jar-folder-dump,check-notices,build,approve" description="Perform required release approval steps">
</target>
- <target name="main-no-download" depends="install-rat,check-sigs,uncompress,rat-check,check-notices,build,approve" description="Perform required release approval steps">
+ <target name="main-no-download" depends="write-out-jars-list,install-rat,check-sigs,uncompress,rat-check,examine-jars,external-jar-folder-dump,check-notices,build,approve" description="Perform required release approval steps">
</target>
<target name="test" >
@@ -182,6 +194,16 @@
<replaceregexp file="${rat.report}.bin.txt" match="..AL.*" replace="" byline="true"/>
</target>
+ <target name="write-out-jars-list" >
+ <delete file="jars.txt" />
+ <!-- this is a comma-delimited, no spaces, no-line-breaks list used to decide which jars
+ to skip in the rat-check of the binaries and which jars to examine before approval -->
+ <property name="jars-list" value="ant/lib/flexTasks.jar,lib/asc.jar,lib/asdoc.jar,lib/batik-all-flex.jar,lib/compc.jar,lib/copylocale.jar,lib/digest.jar,lib/fcsh.jar,lib/fdb.jar,lib/flex-compiler-oem.jar,lib/flex-messaging-common.jar,lib/flex-tool-api.jar,lib/fxgutils.jar,lib/mxmlc.jar,lib/mxmlc_da.jar,lib/mxmlc_de.jar,lib/mxmlc_es.jar,lib/mxmlc_fi.jar,lib/mxmlc_fr.jar,lib/mxmlc_it.jar,lib/mxmlc_ja.jar,lib/mxmlc_ko.jar,lib/mxmlc_nb.jar,lib/mxmlc_nl.jar,lib/mxmlc_pt.jar,lib/mxmlc_ru.jar,lib/mxmlc_sv.jar,lib/mxmlc_zh_CN.jar,lib/mxmlc_zh_TW.jar,lib/optimizer.jar,lib/swcdepends.jar,lib/swfdump.jar,lib/swfutils.jar,lib/velocity-dep-1.4-flex.jar"/>
+ <echo file="${basedir}/jars.txt" message="${jars-list}"/>
+ <echo file="${basedir}/jarexcludes.txt" message="${jars-list}"/>
+ <replaceregexp file="${basedir}/jarexcludes.txt" match="," flags="g" replace="${line.separator}" />
+ </target>
+
<target name="display-text" >
<antcall target="display-text-mac" />
<antcall target="display-text-win" />
@@ -195,60 +217,89 @@
</target>
<target name="download" description="download the release package">
- <get src="${package.url.path}/${package.url.name}.${package.suffix}"
- dest="${basedir}/${package.url.name}.${package.suffix}" />
- <get src="${package.url.path}/${package.url.name}.${package.suffix}.md5"
- dest="${basedir}/${package.url.name}.${package.suffix}.md5" />
- <antcall target="downloadasc" />
+ <get src="${src.package.url.path}/${src.package.url.name}.${package.suffix}"
+ dest="${basedir}/${src.package.url.name}.${package.suffix}" />
+ <get src="${src.package.url.path}/${src.package.url.name}.${package.suffix}.md5"
+ dest="${basedir}/${src.package.url.name}.${package.suffix}.md5" />
+ <get src="${bin.package.url.path}/${bin.package.url.name}.${package.suffix}"
+ dest="${basedir}/${bin.package.url.name}.${package.suffix}" />
+ <get src="${bin.package.url.path}/${bin.package.url.name}.${package.suffix}.md5"
+ dest="${basedir}/${bin.package.url.name}.${package.suffix}.md5" />
+ <antcall target="asc_get" />
</target>
- <target name="downloadasc" if="rc" >
- <get src="${package.url.path}/${package.url.name}.${package.suffix}.asc"
- dest="${basedir}/${package.url.name}.${package.suffix}.asc" />
+
+ <target name="asc_get" if="rc" >
+ <get src="${src.package.url.path}/${src.package.url.name}.${package.suffix}.asc"
+ dest="${basedir}/${src.package.url.name}.${package.suffix}.asc" />
+ <get src="${bin.package.url.path}/${bin.package.url.name}.${package.suffix}.asc"
+ dest="${basedir}/${bin.package.url.name}.${package.suffix}.asc" />
</target>
<target name="check-sigs" description="check md5 and gpg sigs">
- <replace file="${basedir}/${package.url.name}.${package.suffix}.md5"
- token=" " />
- <checksum file="${basedir}/${package.url.name}.${package.suffix}" algorithm="md5" verifyproperty="md5.ok" />
- <condition property="MD5Invalid">
- <not>
- <equals arg1="${md5.ok}" arg2="true" />
- </not>
+ <replace file="${basedir}/${src.package.url.name}.${package.suffix}.md5"
+ token=" " />
+ <checksum file="${basedir}/${src.package.url.name}.${package.suffix}" algorithm="md5" verifyproperty="src.md5.ok" />
+ <condition property="SourceMD5Invalid">
+ <not>
+ <equals arg1="${src.md5.ok}" arg2="true" />
+ </not>
+ </condition>
+ <fail message="Source Package MD5 checksum did not match" if="SourceMD5Invalid" />
+ <replace file="${basedir}/${bin.package.url.name}.${package.suffix}.md5"
+ token=" " />
+ <checksum file="${basedir}/${bin.package.url.name}.${package.suffix}" algorithm="md5" verifyproperty="bin.md5.ok" />
+ <condition property="BinaryMD5Invalid">
+ <not>
+ <equals arg1="${bin.md5.ok}" arg2="true" />
+ </not>
</condition>
- <fail message="MD5 checksum did not match" if="MD5Invalid" />
- <antcall target="checkasc" />
+ <fail message="Binary Package MD5 checksum did not match" if="BinaryMD5Invalid" />
+ <echo>rc is ${rc}</echo>
+ <antcall target="gpg_check" />
</target>
- <target name="checkasc" if="rc" >
- <exec executable="gpg" failonerror="true">
- <arg value="--verify" />
- <arg value="${basedir}/${package.url.name}.${package.suffix}.asc" />
- <arg value="${basedir}/${package.url.name}.${package.suffix}" />
- </exec>
+
+ <target name="gpg_check" if="rc">
+ <exec executable="gpg" failonerror="true">
+ <arg value="--verify" />
+ <arg value="${basedir}/${src.package.url.name}.${package.suffix}.asc" />
+ <arg value="${basedir}/${src.package.url.name}.${package.suffix}" />
+ </exec>
+ <exec executable="gpg" failonerror="true">
+ <arg value="--verify" />
+ <arg value="${basedir}/${bin.package.url.name}.${package.suffix}.asc" />
+ <arg value="${basedir}/${bin.package.url.name}.${package.suffix}" />
+ </exec>
</target>
+
<target name="uncompress" depends="pre-clean, untar-file, unzip-file" />
<target name="pre-clean" description="remove old uncompressed package" >
- <delete dir="${basedir}/${package.url.name}" failonerror="false" />
- </target>
-
+ <delete dir="${basedir}/${src.package.url.name}" failonerror="false" />
+ <delete dir="${basedir}/${bin.package.url.name}" failonerror="false" />
+ </target>
+
<target name="untar-file" unless="zip.package" description="Untars zipFile">
- <untar src="${basedir}/${package.url.name}.${package.suffix}"
- dest="${basedir}" compression="gzip"/>
+ <untar src="${basedir}/${src.package.url.name}.${package.suffix}"
+ dest="${basedir}" compression="gzip"/>
+ <untar src="${basedir}/${bin.package.url.name}.${package.suffix}"
+ dest="${basedir}" compression="gzip"/>
</target>
<target name="unzip-file" if="zip.package" description="Unzips zipFile">
- <unzip src="${basedir}/${package.url.name}.${package.suffix}"
- dest="${basedir}/${package.url.name}"/>
+ <unzip src="${basedir}/${src.package.url.name}.${package.suffix}"
+ dest="${basedir}/${src.package.url.name}"/>
+ <unzip src="${basedir}/${bin.package.url.name}.${package.suffix}"
+ dest="${basedir}/${bin.package.url.name}"/>
</target>
<target name="rat-check" >
- <echo message="Checking files at ${basedir}/${package.url.name}, report is ${rat.report}"/>
+ <echo message="Checking files at ${basedir}/${src.package.url.name}, report is ${src.rat.report}"/>
<rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
- reportFile="${rat.report}">
- <fileset dir="${basedir}/${package.url.name}">
+ reportFile="${src.rat.report}">
+ <fileset dir="${basedir}/${src.package.url.name}">
<!-- Start of binary files -->
<!-- exclude Flash Professional file used for integration with Flash Professional -->
<exclude name="frameworks/projects/flash-integration/FLA/ContentHolder.fla"/>
@@ -289,90 +340,835 @@
</fileset>
</rat:report>
<antcall target="display-text" >
- <param name="file" value="${rat.report}" />
+ <param name="file" value="${src.rat.report}" />
</antcall>
<input
message="Check that there are no unknown or unapproved licenses or archives. Is it ok?"
validargs="y,n"
defaultvalue="y"
- addproperty="rat.license.ok"/>
+ addproperty="rat.src.license.ok"/>
<echo>filtering out AL files to make it easier to see binary files</echo>
- <copy file="${rat.report}" tofile="${rat.report}.bin.txt" />
- <replaceregexp file="${rat.report}.bin.txt" match="..AL.*" replace="" byline="true"/>
- <antcall target="display-text" >
- <param name="file" value="${rat.report}.bin.txt" />
+ <copy file="${src.rat.report}" tofile="${src.rat.report}.bin.txt" />
+ <replaceregexp file="${src.rat.report}.bin.txt" match="..AL.*" replace="__AL" byline="true"/>
+ <replaceregexp file="${src.rat.report}.bin.txt" flags="gs" match="__AL." replace="" byline="false"/>
+ <antcall target="display-text" >
+ <param name="file" value="${src.rat.report}.bin.txt" />
</antcall>
<input
- message="Check that there are no unexpected binaries. Is it ok?"
- validargs="y,n"
+ message="Check that there are no unexpected binaries. Is it ok?"
+ validargs="y,n"
+ defaultvalue="n"
+ addproperty="rat.src.binaries.ok"/>
+
+ <echo message="Checking files at ${basedir}/${bin.package.url.name}, report is ${bin.rat.report}"/>
+
+ <antcall target="binary-rat" />
+ <antcall target="display-text" >
+ <param name="file" value="${bin.rat.report}" />
+ </antcall>
+ <input
+ message="Check that there are no unknown or unapproved licenses or archives. Is it ok?"
+ validargs="y,n"
+ defaultvalue="y"
+ addproperty="rat.bin.license.ok"/>
+ <echo>filtering out AL files to make it easier to see binary files</echo>
+ <copy file="${bin.rat.report}" tofile="${bin.rat.report}.bin.txt" />
+ <replaceregexp file="${bin.rat.report}.bin.txt" match="..AL.*" replace="__AL" byline="true"/>
+ <replaceregexp file="${bin.rat.report}.bin.txt" flags="gs" match="__AL." replace="" byline="false"/>
+ <antcall target="display-text" >
+ <param name="file" value="${bin.rat.report}.bin.txt" />
+ </antcall>
+ <input
+ message="Check that there are no unexpected binaries. Is it ok?"
+ validargs="y,n"
defaultvalue="n"
- addproperty="rat.binaries.ok"/>
+ addproperty="rat.bin.binaries.ok"/>
+ </target>
+
+ <target name="binary-rat" >
+ <echo>${jars-list}</echo>
+ <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
+ reportFile="${bin.rat.report}">
+ <fileset dir="${basedir}/${bin.package.url.name}">
+ <!-- Start of binary files -->
+ <!-- exclude Flash Professional file used for integration with Flash Professional -->
+ <exclude name="frameworks/projects/flash-integration/FLA/ContentHolder.fla"/>
+ <!-- exclude font embedded in asdoc example -->
+ <exclude name="frameworks/projects/framework/asdoc/en_US/mx/effects/examples/assets/OpenSans-Regular.ttf"/>
+ <!-- exclude media (png, gif, jpg, mp3, flv) -->
+ <exclude name="**/*.png"/>
+ <exclude name="**/*.gif"/>
+ <exclude name="**/*.jpg"/>
+ <exclude name="**/*.mp3"/>
+ <exclude name="**/*.flv"/>
+ <!-- exclude batik icon -->
+ <exclude name="modules/thirdparty/batik/sources/*.icns"/>
+ <!-- End of binary files -->
+ <!-- exclude batik manifests -->
+ <exclude name="modules/thirdparty/batik/sources/*.mf"/>
+ <!-- exclude text files -->
+ <exclude name="CONTRIBUTING"/>
+ <exclude name="CONTRIBUTORS"/>
+ <exclude name="LICENSE.bin"/>
+ <exclude name="NOTICE.bin"/>
+ <exclude name="NOTICE.asc"/>
+ <exclude name="NOTICE.base"/>
+ <exclude name="modules/thirdparty/batik/lib/**/LICENSE*.txt"/>
+ <exclude name="modules/thirdparty/batik/lib/**/README*.txt"/>
+ <exclude name="frameworks/projects/flatspark/src/flatspark/assets/fonts/**/OFL.txt"/>
+ <!-- exclude w3c sources -->
+ <exclude name="modules/thirdparty/batik/resources/org/apache/flex/forks/batik/dom/svg/resources/*.mod"/>
+ <exclude name="modules/thirdparty/batik/resources/org/apache/flex/forks/batik/dom/svg/resources/*.dtd"/>
+ <exclude name="modules/thirdparty/batik/sources/org/w3c/css/sac/LexicalUnit.java"/>
+ <exclude name="modules/thirdparty/batik/sources/org/w3c/flex/forks/css/sac/*.java"/>
+ <exclude name="modules/thirdparty/batik/sources/org/w3c/flex/forks/css/sac/helpers/ParserFactory.java"/>
+ <!-- exclude config files -->
+ <exclude name="modules/thirdparty/batik/svn-revision"/>
+ <exclude name="modules/thirdparty/xerces-patch/src/java/META-INF/services/javax.xml.parsers.SAXParserFactory"/>
+ <exclude name="modules/thirdparty/xerces-patch/src/java/META-INF/services/org.apache.xerces.xni.parser.XMLParserConfiguration"/>
+ <exclude name="modules/thirdparty/xerces-patch/src/java/org/apache/xerces/jaxp/javax.xml.parsers.SAXParserFactory"/>
+ <exclude name="frameworks/libs/advancedgrids.swc"/>
+ <exclude name="frameworks/libs/air/airframework.swc"/>
+ <exclude name="frameworks/libs/air/airspark.swc"/>
+ <exclude name="frameworks/libs/apache.swc"/>
+ <exclude name="frameworks/libs/authoringsupport.swc"/>
+ <exclude name="frameworks/libs/automation/automation.swc"/>
+ <exclude name="frameworks/libs/automation/automation_agent.swc"/>
+ <exclude name="frameworks/libs/automation/automation_air.swc"/>
+ <exclude name="frameworks/libs/automation/automation_airspark.swc"/>
+ <exclude name="frameworks/libs/automation/automation_dmv.swc"/>
+ <exclude name="frameworks/libs/automation/automation_flashflexkit.swc"/>
+ <exclude name="frameworks/libs/automation/automation_spark.swc"/>
+ <exclude name="frameworks/libs/automation/tool.swc"/>
+ <exclude name="frameworks/libs/automation/tool_air.swc"/>
+ <exclude name="frameworks/libs/charts.swc"/>
+ <exclude name="frameworks/libs/core.swc"/>
+ <exclude name="frameworks/libs/experimental.swc"/>
+ <exclude name="frameworks/libs/experimental_mobile.swc"/>
+ <exclude name="frameworks/libs/flash-integration.swc"/>
+ <exclude name="frameworks/libs/flatspark.swc"/>
+ <exclude name="frameworks/libs/framework.swc"/>
+ <exclude name="frameworks/libs/mobile/mobilecomponents.swc"/>
+ <exclude name="frameworks/libs/mx/mx.swc"/>
+ <exclude name="frameworks/libs/rpc.swc"/>
+ <exclude name="frameworks/libs/spark.swc"/>
+ <exclude name="frameworks/libs/spark_dmv.swc"/>
+ <exclude name="frameworks/libs/sparkskins.swc"/>
+ <exclude name="frameworks/libs/textLayout.swc"/>
+ <exclude name="frameworks/locale/da_DK/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/apache_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/automation_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/charts_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/framework_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/mx_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/spark_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/da_DK/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/apache_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/automation_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/charts_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/framework_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/mx_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/spark_rb.swc"/>
+ <exclude name="frameworks/locale/de_CH/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/apache_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/automation_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/charts_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/flash-integration_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/framework_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/mx_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/playerglobal_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/spark_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/de_DE/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/apache_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/automation_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/charts_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/framework_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/mx_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/spark_rb.swc"/>
+ <exclude name="frameworks/locale/el_GR/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/apache_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/automation_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/charts_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/framework_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/mx_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/spark_rb.swc"/>
+ <exclude name="frameworks/locale/en_AU/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/apache_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/automation_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/charts_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/framework_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/mx_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/spark_rb.swc"/>
+ <exclude name="frameworks/locale/en_CA/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/apache_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/automation_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/charts_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/framework_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/mx_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/spark_rb.swc"/>
+ <exclude name="frameworks/locale/en_GB/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/apache_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/automation_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/charts_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/flash-integration_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/framework_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/mx_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/playerglobal_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/spark_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/en_US/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/apache_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/automation_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/charts_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/framework_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/mx_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/spark_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/es_ES/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/apache_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/automation_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/charts_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/framework_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/mx_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/spark_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/fi_FI/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/apache_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/automation_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/charts_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/framework_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/mx_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/fr_CH/spark_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/apache_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/automation_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/charts_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/flash-integration_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/framework_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/mx_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/playerglobal_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/spark_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/fr_FR/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/apache_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/automation_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/charts_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/framework_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/mx_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/spark_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/it_IT/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/apache_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/automation_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/charts_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/flash-integration_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/framework_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/mx_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/playerglobal_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/spark_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/ja_JP/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/apache_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/automation_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/charts_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/framework_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/mx_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/spark_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/ko_KR/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/apache_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/automation_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/charts_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/framework_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/mx_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/spark_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/nb_NO/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/apache_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/automation_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/charts_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/framework_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/mx_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/spark_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/nl_NL/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/apache_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/automation_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/charts_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/framework_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/mx_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/spark_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/pt_BR/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/apache_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/automation_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/charts_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/framework_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/mx_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/spark_rb.swc"/>
+ <exclude name="frameworks/locale/pt_PT/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/apache_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/automation_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/charts_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/flash-integration_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/framework_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/mx_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/playerglobal_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/spark_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/ru_RU/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/apache_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/automation_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/charts_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/framework_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/mx_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/spark_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/sv_SE/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/apache_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/automation_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/charts_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/flash-integration_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/framework_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/mx_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/playerglobal_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/spark_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/zh_CN/tool_air_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/advancedgrids_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/airframework_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/airspark_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/apache_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/automation_agent_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/automation_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/charts_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/experimental_mobile_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/experimental_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/framework_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/mobilecomponents_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/mx_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/rpc_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/spark_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/textLayout_rb.swc"/>
+ <exclude name="frameworks/locale/zh_TW/tool_air_rb.swc"/>
+ <exclude name="frameworks/projects/flash-integration/libs/flash-integration.swc"/>
+ <exclude name="frameworks/themes/Halo/halo.swc"/>
+ <exclude name="frameworks/themes/Mobile/mobile.swc"/>
+ <exclude name="frameworks/themes/Wireframe/wireframe.swc"/>
+ <exclude name="samples/themes/arcade/arcade.swc"/>
+ <exclude name="samples/themes/cobalt/cobalt.swc"/>
+ <exclude name="samples/themes/graphite/graphite.swc"/>
+ <exclude name="frameworks/localFonts.ser"/>
+ <exclude name="frameworks/macFonts.ser"/>
+ <exclude name="frameworks/projects/advancedgrids/bundles.properties"/>
+ <exclude name="frameworks/projects/airframework/bundles.properties"/>
+ <exclude name="frameworks/projects/airspark/bundles.properties"/>
+ <exclude name="frameworks/projects/apache/bundles.properties"/>
+ <exclude name="frameworks/projects/authoringsupport/bundles.properties"/>
+ <exclude name="frameworks/projects/automation/bundles.properties"/>
+ <exclude name="frameworks/projects/automation_agent/bundles.properties"/>
+ <exclude name="frameworks/projects/automation_air/bundles.properties"/>
+ <exclude name="frameworks/projects/automation_airspark/bundles.properties"/>
+ <exclude name="frameworks/projects/charts/bundles.properties"/>
+ <exclude name="frameworks/projects/core/bundles.properties"/>
+ <exclude name="frameworks/projects/experimental/bundles.properties"/>
+ <exclude name="frameworks/projects/experimental_mobile/bundles.properties"/>
+ <exclude name="frameworks/projects/flash-integration/bundles.properties"/>
+ <exclude name="frameworks/projects/flatspark/bundles.properties"/>
+ <exclude name="frameworks/projects/framework/bundles.properties"/>
+ <exclude name="frameworks/projects/halo/bundles.properties"/>
+ <exclude name="frameworks/projects/mobilecomponents/bundles.properties"/>
+ <exclude name="frameworks/projects/mobiletheme/bundles.properties"/>
+ <exclude name="frameworks/projects/mx/bundles.properties"/>
+ <exclude name="frameworks/projects/rpc/bundles.properties"/>
+ <exclude name="frameworks/projects/spark/bundles.properties"/>
+ <exclude name="frameworks/projects/spark_dmv/bundles.properties"/>
+ <exclude name="frameworks/projects/sparkskins/bundles.properties"/>
+ <exclude name="frameworks/projects/tool/bundles.properties"/>
+ <exclude name="frameworks/projects/tool_air/bundles.properties"/>
+ <exclude name="frameworks/projects/wireframe/bundles.properties"/>
+ <exclude name="frameworks/winFonts.ser"/>
+ <!-- external jars. If you add an external jar, also add it to the external-jar-folder-dump target -->
+ <exclude name="lib/external/commons-collections.jar"/>
+ <exclude name="lib/external/commons-discovery.jar"/>
+ <exclude name="lib/external/commons-logging.jar"/>
+ <exclude name="lib/external/javacc.jar"/>
+ <exclude name="lib/external/saxon9.jar"/>
+ <exclude name="lib/external/xalan.jar"/>
+ <exclude name="lib/external/xercesImpl.jar"/>
+ <exclude name="lib/external/xercesPatch.jar"/>
+ <exclude name="lib/external/xml-apis-ext.jar"/>
+ <exclude name="lib/external/xml-apis.jar"/>
+ <!-- end list of external jars. Next is their collateral files -->
+ <exclude name="lib/external/README.xml-apis-ext.txt"/>
+ <exclude name="lib/external/commons-collections-LICENSE.txt"/>
+ <exclude name="lib/external/commons-discovery-LICENSE"/>
+ <exclude name="lib/external/commons-logging-NOTICE.txt"/>
+ <exclude name="lib/external/saxon9-NOTICES/APACHE-ANT.txt"/>
+ <exclude name="lib/external/saxon9-NOTICES/APACHE-RESOLVER.txt"/>
+ <exclude name="lib/external/saxon9-NOTICES/APACHE-XERCES.txt"/>
+ <exclude name="lib/external/saxon9-NOTICES/FRIJTERS.txt"/>
+ <exclude name="lib/external/saxon9-NOTICES/GPL+CLASSPATH.txt"/>
+ <exclude name="lib/external/saxon9-NOTICES/JAMESCLARK.txt"/>
+ <exclude name="lib/external/saxon9-NOTICES/LEGAL.txt"/>
+ <exclude name="lib/external/saxon9-NOTICES/THAI.txt"/>
+ <exclude name="lib/external/xalan-LICENSES/BCEL.README.txt"/>
+ <exclude name="lib/external/xalan-LICENSES/java_cup.README.txt"/>
+ <exclude name="lib/external/xalan-LICENSES/regexp.README.txt"/>
+ <exclude name="lib/external/xalan-LICENSES/runtime.README.txt"/>
+ <exclude name="lib/external/xalan-NOTICE"/>
+ <exclude name="lib/external/xerces-LICENSE/LICENSE-SAX.html"/>
+ <exclude name="lib/external/xerces-NOTICES/NOTICE.resolver.txt"/>
+ <exclude name="lib/external/xerces-NOTICES/NOTICE.serializer.txt"/>
+ <exclude name="lib/external/xml-apis-LICENSES/LICENSE.sax.txt"/>
+ <exclude name="lib/external/xml-apis-LICENSES/README.dom.txt"/>
+ <exclude name="lib/external/xml-apis-LICENSES/README.sax.txt"/>
+ <exclude name="lib/external/xml-apis-ext-LICENSES/LICENSE.sac.html"/>
+ <exclude name="lib/external/xml-apis-ext-LICENSES/README.dom.txt"/>
+ <!-- this list is generated from a list at the top of this file -->
+ <excludesfile name="${basedir}/jarexcludes.txt" />
+ </fileset>
+ </rat:report>
+ </target>
+
+ <target name="external-jar-folder-dump" >
+ <echo>list of folders in external jars. This may impact LICENSE and NOTICE</echo>
+ <antcall target="show-jar-folders" >
+ <param name="thisFile" value="lib/external/commons-collections.jar" />
+ </antcall>
+ <antcall target="show-jar-folders" >
+ <param name="thisFile" value="lib/external/commons-discovery.jar" />
+ </antcall>
+ <antcall target="show-jar-folders" >
+ <param name="thisFile" value="lib/external/commons-logging.jar" />
+ </antcall>
+ <antcall target="show-jar-folders" >
+ <param name="thisFile" value="lib/external/javacc.jar" />
+ </antcall>
+ <antcall target="show-jar-folders" >
+ <param name="thisFile" value="lib/external/saxon9.jar" />
+ </antcall>
+ <antcall target="show-jar-folders" >
+ <param name="thisFile" value="lib/external/xalan.jar" />
+ </antcall>
+ <antcall target="show-jar-folders" >
+ <param name="thisFile" value="lib/external/xercesImpl.jar" />
+ </antcall>
+ <antcall target="show-jar-folders" >
+ <param name="thisFile" value="lib/external/xercesPatch.jar" />
+ </antcall>
+ <antcall target="show-jar-folders" >
+ <param name="thisFile" value="lib/external/xml-apis-ext.jar" />
+ </antcall>
+ <antcall target="show-jar-folders" >
+ <param name="thisFile" value="lib/external/xml-apis.jar" />
+ </antcall>
+ <echo>end of list of folders in external jars. This may impact LICENSE and NOTICE</echo>
+ </target>
+
+ <!-- someday figure out how to use
+ find . -name "*.jar" -exec tar ft {} \; | sort -u > paths.txt -->
+
+ <!-- how to do tar and sort on Windows? -->
+ <target name="examine-jars" if="isMac">
+ <!-- comma delimited list, no spaces, not one file per line -->
+ <copy file="jars.txt" tofile="loop.txt" />
+ <ant antfile="ApproveSDK.xml" target="loopOnce" inheritAll="false" />
+ </target>
+ <target name="loopOnce" >
+ <!-- make a copy of the list so we can munge it to
+ get the first item in the list -->
+ <delete file="loop1.txt" />
+ <copy file="loop.txt" tofile="loop1.txt" />
+ <loadfile srcFile="loop.txt" property="checkiflast" />
+ <condition property="islast" value="true">
+ <not>
+ <contains string="${checkiflast}" substring="," />
+ </not>
+ </condition>
+ <antcall target="notlast" />
+ <antcall target="lastone" />
+ </target>
+ <target name="notlast" unless="islast">
+ <loadfile srcFile="loop1.txt" property="echoFile" />
+ <replaceregexp file="loop1.txt" match="^(.*),(.*)" replace="\2" />
+ <loadfile srcFile="loop1.txt" property="thisFile" />
+ <antcall target="jar-check" />
+ <replaceregexp file="loop.txt" match="^(.*),(.*)" replace="\1" />
+ <ant antfile="ApproveSDK.xml" target="loopOnce" inheritAll="false"/>
+ </target>
+ <target name="lastone" if="islast">
+ <loadfile srcFile="loop1.txt" property="thisFile" />
+ <antcall target="jar-check" />
+ <delete file="loop.txt" />
+ <delete file="loop1.txt" />
+ </target>
+
+ <target name="show-jar-folders">
+ <delete dir="${basedir}/jar" failonerror="false" />
+ <mkdir dir="${basedir}/jar" />
+ <unjar src="${basedir}/${bin.package.url.name}/${thisFile}" dest="${basedir}/jar" />
+ <exec executable="tar" output="${basedir}/jarclasses.txt">
+ <arg value="tf" />
+ <arg value="${basedir}/${bin.package.url.name}/${thisFile}" />
+ </exec>
+ <replaceregexp file="${basedir}/jarclasses.txt" match="(.*)/(.*)" replace="\1" flags="m" byline="true"/>
+ <exec executable="sort" output="${basedir}/jarpaths.txt">
+ <arg value="-u" />
+ <arg value="${basedir}/jarclasses.txt" />
+ </exec>
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/jarpaths.txt" />
+ </antcall>
+ </target>
+
+ <target name="jar-check" >
+ <antcall target="show-jar-folders" />
+ <input
+ message="Above is the list of folders in this ${thisFile}.
Folder names can sometimes indicate presence of third-party content that needs to be in LICENSE and/or NOTICE files.
Press the Enter key to see the LICENSE for this jar."/>
+ <fail message="LICENSE not in ${basedir}/${bin.package.url.name}/${thisFile}">
+ <condition>
+ <not>
+ <available file="${basedir}/jar/META-INF/LICENSE" />
+ </not>
+ </condition>
+ </fail>
+ <fail message="NOTICE not in ${basedir}/${bin.package.url.name}/${thisFile}">
+ <condition>
+ <not>
+ <available file="${basedir}/jar/META-INF/NOTICE" />
+ </not>
+ </condition>
+ </fail>
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/jar/META-INF/LICENSE" />
+ </antcall>
+ <input
+ message="Check the LICENSE for the Apache License and third-party licenses. Is it ok?"
+ validargs="y,n"
+ defaultvalue="y"
+ addproperty="jar.license.ok"/>
+ <fail message="LICENSE for ${basedir}/${bin.package.url.name}/${thisFile} not correct">
+ <condition>
+ <not>
+ <equals arg1="${jar.license.ok}" arg2="y" />
+ </not>
+ </condition>
+ </fail>
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/jar/META-INF/NOTICE" />
+ </antcall>
+ <input
+ message="Check the NOTICE for required notices from third-parties. Is it ok?"
+ validargs="y,n"
+ defaultvalue="y"
+ addproperty="jar.notice.ok"/>
+ <fail message="NOTICE for ${basedir}/${bin.package.url.name}/${thisFile} not correct">
+ <condition>
+ <not>
+ <equals arg1="${jar.notice.ok}" arg2="y" />
+ </not>
+ </condition>
+ </fail>
+
</target>
<target name="check-notices" description="open each notice file for review, grep for a few things" >
- <fail message="README not in package">
- <condition>
- <not>
- <available file="${basedir}/${package.url.name}/README" />
- </not>
- </condition>
+ <fail message="README not in source package">
+ <condition>
+ <not>
+ <available file="${basedir}/${src.package.url.name}/README" />
+ </not>
+ </condition>
</fail>
- <fail message="RELEASE_NOTES not in package">
- <condition>
- <not>
- <available file="${basedir}/${package.url.name}/RELEASE_NOTES" />
- </not>
- </condition>
+ <fail message="RELEASE_NOTES not in source package">
+ <condition>
+ <not>
+ <available file="${basedir}/${src.package.url.name}/RELEASE_NOTES" />
+ </not>
+ </condition>
</fail>
- <fail message="NOTICE not in package">
- <condition>
- <not>
- <available file="${basedir}/${package.url.name}/NOTICE" />
- </not>
- </condition>
+ <fail message="NOTICE not in source package">
+ <condition>
+ <not>
+ <available file="${basedir}/${src.package.url.name}/NOTICE" />
+ </not>
+ </condition>
</fail>
- <fail message="LICENSE not in package">
- <condition>
- <not>
- <available file="${basedir}/${package.url.name}/LICENSE" />
- </not>
- </condition>
+ <fail message="LICENSE not in source package">
+ <condition>
+ <not>
+ <available file="${basedir}/${src.package.url.name}/LICENSE" />
+ </not>
+ </condition>
</fail>
- <antcall target="display-text" >
- <param name="file" value="${basedir}/${package.url.name}/README" />
+ <fail message="README not in binary package">
+ <condition>
+ <not>
+ <available file="${basedir}/${bin.package.url.name}/README" />
+ </not>
+ </condition>
+ </fail>
+ <fail message="RELEASE_NOTES not in binary package">
+ <condition>
+ <not>
+ <available file="${basedir}/${bin.package.url.name}/RELEASE_NOTES" />
+ </not>
+ </condition>
+ </fail>
+ <fail message="NOTICE not in binary package">
+ <condition>
+ <not>
+ <available file="${basedir}/${bin.package.url.name}/NOTICE" />
+ </not>
+ </condition>
+ </fail>
+ <fail message="LICENSE not in binary package">
+ <condition>
+ <not>
+ <available file="${basedir}/${bin.package.url.name}/LICENSE" />
+ </not>
+ </condition>
+ </fail>
+ <checksum file="${basedir}/${src.package.url.name}/RELEASE_NOTES" property="src.rnmd5" />
+ <checksum file="${basedir}/${bin.package.url.name}/RELEASE_NOTES" property="bin.rnmd5" />
+ <fail message="RELEASE_NOTES in binary package does not match source package">
+ <condition>
+ <not>
+ <equals arg1="${src.rnmd5}" arg2="${bin.rnmd5}" />
+ </not>
+ </condition>
+ </fail>
+ <checksum file="${basedir}/${src.package.url.name}/README" property="src.rmd5" />
+ <checksum file="${basedir}/${bin.package.url.name}/README" property="bin.rmd5" />
+ <fail message="README in binary package does not match source package">
+ <condition>
+ <not>
+ <equals arg1="${src.rmd5}" arg2="${bin.rmd5}" />
+ </not>
+ </condition>
+ </fail>
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/${src.package.url.name}/README" />
</antcall>
- <input
- message="Check the README for version numbers, spelling, grammar, accuracy. Is it ok?"
- validargs="y,n"
+ <input
+ message="Check the README for version numbers, spelling, grammar, accuracy. Is it ok?"
+ validargs="y,n"
defaultvalue="y"
addproperty="readme.ok"/>
- <antcall target="display-text" >
- <param name="file" value="${basedir}/${package.url.name}/RELEASE_NOTES" />
+
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/${src.package.url.name}/RELEASE_NOTES" />
</antcall>
- <input
- message="Check the RELEASE_NOTES for copyright years, spelling, grammar, accuracy. Is it ok?"
- validargs="y,n"
+ <input
+ message="Check the RELEASE_NOTES for copyright years, spelling, grammar, accuracy. Is it ok?"
+ validargs="y,n"
defaultvalue="y"
addproperty="releasenotes.ok"/>
-
- <antcall target="display-text" >
- <param name="file" value="${basedir}/${package.url.name}/NOTICE" />
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/${src.package.url.name}/NOTICE" />
</antcall>
- <input
- message="Check the NOTICE for required notices from third-parties. Is it ok?"
- validargs="y,n"
+ <input
+ message="Check the source package NOTICE for required notices from third-parties. Is it ok?"
+ validargs="y,n"
defaultvalue="y"
- addproperty="notice.ok"/>
-
- <antcall target="display-text" >
- <param name="file" value="${basedir}/${package.url.name}/LICENSE" />
+ addproperty="src.notice.ok"/>
+
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/${src.package.url.name}/LICENSE" />
</antcall>
- <input
- message="Check the LICENSE for the Apache License and third-party licenses. Is it ok?"
- validargs="y,n"
+ <input
+ message="Check the source package LICENSE for the Apache License and third-party licenses. Is it ok?"
+ validargs="y,n"
+ defaultvalue="y"
+ addproperty="src.license.ok"/>
+
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/${bin.package.url.name}/NOTICE" />
+ </antcall>
+ <input
+ message="Check the binary package NOTICE for required notices from third-parties. Is it ok?"
+ validargs="y,n"
defaultvalue="y"
- addproperty="license.ok"/>
+ addproperty="bin.notice.ok"/>
+
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/${bin.package.url.name}/LICENSE" />
+ </antcall>
+ <input
+ message="Check the binary package LICENSE for the Apache License and third-party licenses. Is it ok?"
+ validargs="y,n"
+ defaultvalue="y"
+ addproperty="bin.license.ok"/>
</target>
<target name="build" depends="copy.downloads">
@@ -380,16 +1176,16 @@
message="The final step is to run the build and any tests the build script runs. This can take several minutes. Press y to start the build."
validargs="y"
defaultvalue="y" />
- <chmod file="${basedir}/${package.url.name}/bin/compc" perm="ugo+rx"/>
- <chmod file="${basedir}/${package.url.name}/bin/mxmlc" perm="ugo+rx"/>
+ <chmod file="${basedir}/${src.package.url.name}/bin/compc" perm="ugo+rx"/>
+ <chmod file="${basedir}/${src.package.url.name}/bin/mxmlc" perm="ugo+rx"/>
<property name="build.noprompt" value="true" />
- <ant dir="${basedir}/${package.url.name}" target="main" />
- <ant dir="${basedir}/${package.url.name}" target="checkintests" />
+ <ant dir="${basedir}/${src.package.url.name}" target="main" />
+ <ant dir="${basedir}/${src.package.url.name}" target="checkintests" />
</target>
<target name="copy.downloads" if="${do.copy.downloads}" description="instead of actually downloading all of the dependencies, you can save lots of time by just copying from some other folder in some other SDK.">
<echo>Copying downloads</echo>
- <copy todir="${basedir}/${package.url.name}/in" >
+ <copy todir="${basedir}/${src.package.url.name}/in" >
<fileset dir="${download.cache.dir}" />
</copy>
</target>
@@ -397,28 +1193,43 @@
<target name="approve" >
<condition property="vote" value="+1">
<and>
- <equals arg1="${rat.license.ok}" arg2="y" />
- <equals arg1="${rat.binaries.ok}" arg2="y" />
- <equals arg1="${readme.ok}" arg2="y" />
- <equals arg1="${releasenotes.ok}" arg2="y" />
- <equals arg1="${notice.ok}" arg2="y" />
- <equals arg1="${license.ok}" arg2="y" />
+ <equals arg1="${rat.src.license.ok}" arg2="y" />
+ <equals arg1="${rat.src.binaries.ok}" arg2="y" />
+ <equals arg1="${rat.bin.license.ok}" arg2="y" />
+ <equals arg1="${rat.bin.binaries.ok}" arg2="y" />
+ <equals arg1="${readme.ok}" arg2="y" />
+ <equals arg1="${releasenotes.ok}" arg2="y" />
+ <equals arg1="${src.notice.ok}" arg2="y" />
+ <equals arg1="${bin.notice.ok}" arg2="y" />
+ <equals arg1="${readmejx.ok}" arg2="y" />
+ <equals arg1="${releasenotesjx.ok}" arg2="y" />
+ <equals arg1="${src.license.ok}" arg2="y" />
+ <equals arg1="${bin.license.ok}" arg2="y" />
</and>
</condition>
<property name="vote" value="-1" />
<echo>
${vote}
-Package ${package.url.path}/${package.url.name}.${package.suffix}
+Package ${src.package.url.path}/${src.package.url.name}.${package.suffix}
Java ${ant.java.version}
OS: ${os.name} ${os.arch} ${os.version}
Source kit signatures match: y
Source kit builds: y
README is ok: ${readme.ok}
RELEASE_NOTES is ok: ${releasenotes.ok}
-NOTICE is ok: ${notice.ok}
-LICENSE is ok: ${license.ok}
-No unapproved licenses or archives: ${rat.license.ok}
-No unapproved binaries: ${rat.binaries.ok}
+NOTICE is ok: ${src.notice.ok}
+LICENSE is ok: ${src.license.ok}
+No unapproved licenses or archives: ${rat.src.license.ok}
+No unapproved binaries: ${rat.src.binaries.ok}
+
+Package ${bin.package.url.path}/${bin.package.url.name}.${package.suffix}
+Binary kit signatures match: y
+NOTICE is ok: ${bin.notice.ok}
+LICENSE is ok: ${bin.license.ok}
+No unapproved licenses or files in jars: y
+No unapproved licenses or archives in binary package: ${rat.bin.license.ok}
+No unapproved binaries in binary package: ${rat.bin.binaries.ok}
+
</echo>
<fail>
<condition>