This is an automated email from the ASF dual-hosted git repository.
yishayw pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/develop by this push:
new f9b385a7e compiler-jburg-types: add release scaffolding
(releasesteps.xml, ApproveJBurgTypes.xml)
f9b385a7e is described below
commit f9b385a7e991ebd017a1cf958106cf0c1ba90c4f
Author: Yishay Weiss <[email protected]>
AuthorDate: Fri Jul 17 15:30:39 2026 +0100
compiler-jburg-types: add release scaffolding (releasesteps.xml,
ApproveJBurgTypes.xml)
---
compiler-jburg-types/ApproveJBurgTypes.xml | 656 +++++++++++++++++++++++++++++
compiler-jburg-types/releasesteps.xml | 437 +++++++++++++++++++
2 files changed, 1093 insertions(+)
diff --git a/compiler-jburg-types/ApproveJBurgTypes.xml
b/compiler-jburg-types/ApproveJBurgTypes.xml
new file mode 100644
index 000000000..f80ab7a67
--- /dev/null
+++ b/compiler-jburg-types/ApproveJBurgTypes.xml
@@ -0,0 +1,656 @@
+<?xml version="1.0"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+
+<project name="ApproveApacheRoyaleJBurgTypes" default="main" basedir=".">
+
+
+ <!-- Required for OSX 10.6 / Snow Leopard Performance. -->
+ <!-- Java 7 on Mac requires OSX 10.7.3 or higher and is 64-bit only -->
+ <!-- local.d32 is set/used in build.properties so this needs to be done
first. -->
+ <condition property="local.d32" value="-d32">
+ <and>
+ <os family="windows"/>
+ <equals arg1="${sun.arch.data.model}" arg2="64"/>
+ <equals arg1="${os.arch}" arg2="x86_64"/>
+ <equals arg1="${ant.java.version}" arg2="1.6"/>
+ </and>
+ </condition>
+
+ <condition property="isMac" value="mac">
+ <os family="mac" />
+ </condition>
+ <condition property="isWindows" value="windows">
+ <os family="windows" />
+ </condition>
+ <condition property="isLinux" value="linux">
+ <and>
+ <os family="unix" />
+ <not>
+ <isset property="isMac" />
+ </not>
+ </and>
+ </condition>
+ <!--
+ <condition property="package.suffix" value="zip">
+ <os family="windows" />
+ </condition>-->
+ <property name="package.suffix" value="zip" />
+
+ <condition property="mvn" value="mvn.cmd">
+ <isset property="isWindows" />
+ </condition>
+ <property name="mvn" value="mvn" />
+
+
+ <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.11.jar" />
+ <property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.11.jar" />
+ <property name="apache.rat.url"
value="https://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat/0.11"
/>
+ <property name="apache.rat.tasks.url"
value="https://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat-tasks/0.11"
/>
+
+ <property file="${basedir}/approveroyale.properties"/>
+
+ <property name="mac.text.display" value="cat" />
+ <property name="win.text.display" value="type" />
+ <property name="linux.text.display" value="cat" />
+ <property environment="env"/>
+
+ <property name="build.target" value="main" />
+
+ <condition property="do.copy.downloads" >
+ <isset property="download.cache.dir" />
+ </condition>
+
+ <available file="${basedir}/${apache.rat.jar}"
+ type="file"
+ property="apache.rat.found"/>
+ <available file="${basedir}/${apache.rat.tasks.jar}"
+ type="file"
+ property="apache.rat.tasks.found"/>
+ <available file="${env.ANT_HOME}/lib/${apache.rat.jar}"
+ type="file"
+ property="apache.rat.found"/>
+ <available file="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}"
+ type="file"
+ property="apache.rat.tasks.found"/>
+
+ <fail message="The release version is not set. Specify
-Drelease.version=<release version (e.g. 3.1, 3.2, etc)>"
+ unless="release.version"/>
+
+ <property name="package.url.path"
value="https://dist.apache.org/repos/dist/dev/royale/compiler-jburg-types/${release.version}/rc${rc}"
/>
+ <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-royale-compiler-jburg-types-${release.version}-source-release" />
+ <property name="bin.package.url.name"
value="compiler-jburg-types-${release.version}" />
+
+ <condition property="zip.package">
+ <equals arg1="zip" arg2="${package.suffix}" />
+ </condition>
+
+ <target name="display-text-mac" if="isMac">
+ <echo>========================= Begin ${file}
==============================</echo>
+ <exec executable="${mac.text.display}" >
+ <arg value="${file}" />
+ </exec>
+ <echo>========================= End ${file}
==============================</echo>
+ </target>
+ <target name="display-text-win" if="isWindows">
+ <pathconvert targetos="windows" property="winfile">
+ <path path="${file}" />
+ </pathconvert>
+ <echo>========================= Begin ${winfile}
==============================</echo>
+ <exec executable="cmd.exe" >
+ <arg value="/c" />
+ <arg value="${win.text.display}" />
+ <arg value="${winfile}" />
+ </exec>
+ <echo>========================= End ${winfile}
==============================</echo>
+ </target>
+ <target name="display-text-linux" if="isLinux">
+ <echo>========================= Begin ${file}
==============================</echo>
+ <exec executable="${linux.text.display}" >
+ <arg value="${file}" />
+ </exec>
+ <echo>========================= End ${file}
==============================</echo>
+ </target>
+
+ <target name="install-rat"
depends="install-rat.jar,install-rat.tasks.jar" />
+ <target name="install-rat.jar" unless="apache.rat.found">
+ <get src="${apache.rat.url}/${apache.rat.jar}"
dest="${basedir}/${apache.rat.jar}" />
+ </target>
+ <target name="install-rat.tasks.jar" unless="apache.rat.tasks.found">
+ <get src="${apache.rat.tasks.url}/${apache.rat.tasks.jar}"
dest="${basedir}/${apache.rat.tasks.jar}" />
+ </target>
+
+ <target name="rat-taskdef" description="Rat taskdef">
+ <taskdef
+ uri="antlib:org.apache.rat.anttasks"
+ resource="org/apache/rat/anttasks/antlib.xml">
+ <classpath>
+ <pathelement location="${basedir}/${apache.rat.jar}"/>
+ <pathelement location="${basedir}/${apache.rat.tasks.jar}"/>
+ <pathelement location="${env.ANT_HOME}/lib/${apache.rat.jar}"/>
+ <pathelement
location="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}"/>
+ </classpath>
+ </taskdef>
+ </target>
+
+ <target name="main"
depends="write-out-jars-list,install-rat,download,check-sigs,uncompress,rat-check,examine-jars,check-notices,build,approve"
description="Perform required release approval steps">
+ </target>
+
+ <target name="main-no-download"
depends="write-out-jars-list,install-rat,check-sigs,uncompress,rat-check,examine-jars,check-notices,build,approve"
description="Perform required release approval steps without downloading
release distribution (archive and signatures must already exist in same
directory)">
+ </target>
+
+ <target name="test" >
+ <echo>${rat.report}.bin.txt</echo>
+ <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="compiler-jburg-types-${release.version}.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" />
+ <antcall target="display-text-linux" />
+ </target>
+
+ <target name="display-text-test" >
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/rat-report.txt" />
+ </antcall>
+ </target>
+
+ <target name="download" description="download the release package">
+ <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}.sha512"
+ dest="${basedir}/${src.package.url.name}.${package.suffix}.sha512"
/>
+ <get src="${bin.package.url.path}/${bin.package.url.name}.jar"
+ dest="${basedir}/${bin.package.url.name}.jar" />
+ <get src="${bin.package.url.path}/${bin.package.url.name}.jar.sha512"
+ dest="${basedir}/${bin.package.url.name}.jar.sha512" />
+ <antcall target="asc_get" />
+ </target>
+
+ <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}.jar.asc"
+ dest="${basedir}/${bin.package.url.name}.jar.asc" />
+ </target>
+
+ <target name="check-sigs" description="check md5 and gpg sigs">
+ <replace
file="${basedir}/${src.package.url.name}.${package.suffix}.sha512"
+ token=" " />
+ <checksum
file="${basedir}/${src.package.url.name}.${package.suffix}" algorithm="SHA-512"
verifyproperty="src.md5.ok" fileext=".sha512"/>
+ <condition property="SourceMD5Invalid">
+ <not>
+ <equals arg1="${src.md5.ok}" arg2="true" />
+ </not>
+ </condition>
+ <fail message="Source Package SHA-512 checksum did not match"
if="SourceMD5Invalid" />
+ <replace file="${basedir}/${bin.package.url.name}.jar.sha512"
+ token=" " />
+ <checksum file="${basedir}/${bin.package.url.name}.jar"
algorithm="SHA-512" verifyproperty="bin.md5.ok" fileext=".sha512" />
+ <condition property="BinaryMD5Invalid">
+ <not>
+ <equals arg1="${bin.md5.ok}" arg2="true" />
+ </not>
+ </condition>
+ <fail message="Binary Package SHA-512 checksum did not match"
if="BinaryMD5Invalid" />
+ <echo>rc is ${rc}</echo>
+ <antcall target="gpg_check" />
+ </target>
+
+ <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}.jar.asc" />
+ <arg value="${basedir}/${bin.package.url.name}.jar" />
+ </exec>
+ </target>
+
+ <target name="uncompress" depends="pre-clean, untar-file, unzip-file" />
+
+ <target name="pre-clean" description="remove old uncompressed package" >
+ <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}/${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}/${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" depends="rat-taskdef">
+
+ <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="${src.rat.report}">
+ <fileset dir="${basedir}/${src.package.url.name}">
+ <!-- exclude media (png, gif, jpg, mp3, flv) -->
+ <exclude name="**/*.png"/>
+ <exclude name="**/*.gif"/>
+ <exclude name="**/*.jpg"/>
+ <exclude name="**/*.mp3"/>
+ <exclude name="**/*.flv"/>
+ <exclude name="**/org.apache.royale.tools.FlexToolGroup"/>
+ <exclude name="debugger/META-INF/MANIFEST.MF"/>
+ <exclude
name="flex-typedefs/target/maven-shared-archive-resources/META-INF/DEPENDENCIES"/>
+ <exclude name="**/*.patch"/>
+ <exclude name="README_MAVEN.txt"/>
+ <exclude name="RELEASE_NOTES_JX"/>
+ <exclude name="LICENSE.jx.bin"/>
+ <exclude name="NOTICE.jx"/>
+ <exclude name="README_JX"/>
+ <exclude name="NOTICE.base"/>
+ <exclude name="NOTICE.fdb"/>
+ <exclude name="NOTICE.oem"/>
+ <exclude name="NOTICE.swfutils"/>
+ </fileset>
+ </rat:report>
+ <antcall target="display-text" >
+ <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.src.license.ok"/>
+ <echo>filtering out AL files to make it easier to see binary
files</echo>
+ <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"
+ 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.bin.binaries.ok"/>
+ -->
+ </target>
+
+ <target name="binary-rat" depends="rat-taskdef">
+ <echo>${jars-list}</echo>
+ <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
+ reportFile="${bin.rat.report}">
+ <fileset dir="${basedir}/${bin.package.url.name}">
+ <!-- exclude media (png, gif, jpg, mp3, flv) -->
+ <exclude name="**/*.png"/>
+ <exclude name="**/*.gif"/>
+ <exclude name="**/*.jpg"/>
+ <exclude name="**/*.mp3"/>
+ <exclude name="**/*.flv"/>
+ <exclude name="**/org.apache.royale.tools.FlexToolGroup"/>
+ <exclude name="debugger/META-INF/MANIFEST.MF"/>
+ <exclude
name="flex-typedefs/target/maven-shared-archive-resources/META-INF/DEPENDENCIES"/>
+ <exclude name="**/*.patch"/>
+ <exclude name="LICENSE.jx.bin"/>
+ <exclude name="README_MAVEN.txt"/>
+ <exclude name="RELEASE_NOTES_JX"/>
+ <exclude name="NOTICE.jx"/>
+ <exclude name="README_JX"/>
+ <exclude name="NOTICE.base"/>
+ <exclude name="NOTICE.fdb"/>
+ <exclude name="NOTICE.oem"/>
+ <exclude name="NOTICE.swfutils"/>
+ <exclude name="compiler/target/generated-sources/**" />
+ <exclude name="flex-typedefs/js/target/downloads/svg.js" />
+ <exclude name="flex-typedefs/createjs/target/downloads/**" />
+ <exclude name="flex-typedefs//**/*.swc" />
+ <exclude name="js/libs/cordova.swc"/>
+ <exclude name="js/libs/createjs.swc"/>
+ <exclude name="js/libs/GCL.swc"/>
+ <exclude name="js/libs/google_maps.swc"/>
+ <exclude name="js/libs/jasmine.swc"/>
+ <exclude name="js/libs/jquery.swc"/>
+ <exclude name="js/libs/js.swc"/>
+ <exclude name="js/libs/node.swc"/>
+ <excludesfile name="${basedir}/jarexcludes.txt" />
+ </fileset>
+ </rat:report>
+ </target>
+
+ <target name="examine-jars">
+ <!-- comma delimited list, no spaces, not one file per line -->
+ <copy file="jars.txt" tofile="loop.txt" />
+ <ant antfile="ApproveJBurgTypes.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="ApproveJBurgTypes.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="jar-check">
+ <delete dir="${basedir}/jar" failonerror="false" />
+ <mkdir dir="${basedir}/jar" />
+ <unjar src="${basedir}/${thisFile}" dest="${basedir}/jar" />
+ <exec executable="${java.home}/bin/jar"
output="${basedir}/jarclasses.txt">
+ <arg value="tf" />
+ <arg value="${basedir}/${thisFile}" />
+ </exec>
+ <replaceregexp file="${basedir}/jarclasses.txt" match="(.*)/(.*)"
replace="\1" flags="m" byline="true"/>
+ <copy file="${basedir}/jarclasses.txt"
tofile="${basedir}/jarpaths.txt">
+ <filterchain>
+ <sortfilter/>
+ <uniqfilter/>
+ </filterchain>
+ </copy>
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/jarpaths.txt" />
+ </antcall>
+ <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}/${thisFile}">
+ <condition>
+ <not>
+ <available file="${basedir}/jar/META-INF/LICENSE" />
+ </not>
+ </condition>
+ </fail>
+ <fail message="NOTICE not in ${basedir}/${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}/${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}/${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 source package">
+ <condition>
+ <not>
+ <available file="${basedir}/${src.package.url.name}/README"
/>
+ </not>
+ </condition>
+ </fail>
+ <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 source package">
+ <condition>
+ <not>
+ <available
file="${basedir}/${src.package.url.name}/apache-royale-compiler-jburg-types-${release.version}/NOTICE"
/>
+ </not>
+ </condition>
+ </fail>
+ <fail message="LICENSE not in source package">
+ <condition>
+ <not>
+ <available
file="${basedir}/${src.package.url.name}/apache-royale-compiler-jburg-types-${release.version}/LICENSE"
/>
+ </not>
+ </condition>
+ </fail>
+ <!--
+ <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>
+ -->
+ <!--
+ <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"
+ defaultvalue="y"
+ addproperty="readme.ok"/>
+ <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"
+ defaultvalue="y"
+ addproperty="releasenotes.ok"/>
+ -->
+
+ <antcall target="display-text" >
+ <param name="file"
value="${basedir}/${src.package.url.name}/apache-royale-compiler-jburg-types-${release.version}/NOTICE"
/>
+ </antcall>
+ <input
+ message="Check the source package NOTICE for required
notices from third-parties. Is it ok?"
+ validargs="y,n"
+ defaultvalue="y"
+ addproperty="src.notice.ok"/>
+
+ <antcall target="display-text" >
+ <param name="file"
value="${basedir}/${src.package.url.name}/apache-royale-compiler-jburg-types-${release.version}/LICENSE"
/>
+ </antcall>
+ <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}/jar/META-INF/NOTICE" />
+ </antcall>
+ <input
+ message="Check the binary package NOTICE for required notices from
third-parties. Is it ok?"
+ validargs="y,n"
+ defaultvalue="y"
+ addproperty="bin.notice.ok"/>
+
+ <antcall target="display-text" >
+ <param name="file" value="${basedir}/jar/META-INF/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">
+ <input
+ 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" />
+ <exec executable="${mvn}"
dir="${basedir}/${src.package.url.name}/apache-royale-compiler-jburg-types-${release.version}"
failonerror="true" >
+ <arg value="clean" />
+ <arg value="install" />
+ </exec>
+ </target>
+
+ <target name="approve" >
+ <condition property="vote" value="+1">
+ <and>
+ <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="${src.license.ok}" arg2="y" />
+ <equals arg1="${bin.license.ok}" arg2="y" />
+ </and>
+ </condition>
+ <property name="vote" value="-1" />
+ <echo>
+${vote}
+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: ${src.notice.ok}
+LICENSE is ok: ${src.license.ok}
+No unapproved licenses or archives in source package: ${rat.src.license.ok}
+No unapproved binaries in source package: ${rat.src.binaries.ok}
+
+Package ${bin.package.url.path}/${bin.package.url.name}.jar
+Binary signatures match: y
+NOTICE is ok: ${bin.notice.ok}
+LICENSE is ok: ${bin.license.ok}
+ </echo>
+ <fail>
+ <condition>
+ <equals arg1="-1" arg2="${vote}"/>
+ </condition>
+ </fail>
+ </target>
+</project>
diff --git a/compiler-jburg-types/releasesteps.xml
b/compiler-jburg-types/releasesteps.xml
new file mode 100644
index 000000000..c3210bcca
--- /dev/null
+++ b/compiler-jburg-types/releasesteps.xml
@@ -0,0 +1,437 @@
+<?xml version="1.0"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+
+<project name="CreateCompilerJBurgTypesReleaseCandidate" default="main"
basedir=".">
+
+ <!-- use -Dtag=<tag or commit hash> to build from other than the head -->
+
+ <!-- Required for OSX 10.6 / Snow Leopard Performance. -->
+ <!-- Java 7 on Mac requires OSX 10.7.3 or higher and is 64-bit only -->
+ <!-- local.d32 is set/used in build.properties so this needs to be done
first. -->
+ <condition property="local.d32" value="-d32">
+ <and>
+ <os family="windows"/>
+ <equals arg1="${sun.arch.data.model}" arg2="64"/>
+ <equals arg1="${os.arch}" arg2="x86_64"/>
+ <equals arg1="${ant.java.version}" arg2="1.6"/>
+ </and>
+ </condition>
+
+ <condition property="isMac" value="mac">
+ <os family="mac" />
+ </condition>
+ <condition property="isWindows" value="windows">
+ <os family="windows" />
+ </condition>
+ <condition property="isLinux" value="linux">
+ <and>
+ <os family="unix" />
+ <not>
+ <isset property="isMac" />
+ </not>
+ </and>
+ </condition>
+
+ <property name="rat.report" value="${basedir}/rat-report.txt"/>
+ <property name="apache.rat.jar" value="apache-rat-0.11.jar" />
+ <property name="apache.rat.tasks.jar" value="apache-rat-tasks-0.11.jar" />
+ <property name="apache.rat.url"
value="https://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat/0.11"
/>
+ <property name="apache.rat.tasks.url"
value="https://search.maven.org/remotecontent?filepath=org/apache/rat/apache-rat-tasks/0.11"
/>
+
+ <property file="${basedir}/../local.properties" />
+ <property file="${basedir}/../build.properties" />
+
+ <property environment="env"/>
+
+ <condition property="do.copy.downloads" >
+ <isset property="download.cache.dir" />
+ </condition>
+
+ <condition property="CRLF" value="%0D%0A">
+ <isset property="isWindows" />
+ </condition>
+ <property name="CRLF" value="%0A" />
+
+ <condition property="mvn" value="mvn.cmd">
+ <isset property="isWindows" />
+ </condition>
+ <property name="mvn" value="mvn" />
+
+ <condition property="svn" value="svn.exe">
+ <isset property="isWindows" />
+ </condition>
+ <property name="svn" value="svn" />
+
+ <available file="${env.ANT_HOME}/lib/${apache.rat.jar}"
+ type="file"
+ property="apache.rat.found"/>
+ <available file="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}"
+ type="file"
+ property="apache.rat.tasks.found"/>
+
+ <fail message="The release version number is not set. Specify
-Drelease.version=<release version (e.g. 0.9.0, 1.0.0, etc)>"
+ unless="release.version"/>
+
+ <target name="install-rat"
depends="install-rat.jar,install-rat.tasks.jar" />
+ <target name="install-rat.jar" unless="apache.rat.found">
+ <get src="${apache.rat.url}/${apache.rat.jar}"
dest="${env.ANT_HOME}/lib/${apache.rat.jar}" />
+ </target>
+ <target name="install-rat.tasks.jar" unless="apache.rat.tasks.found">
+ <get src="${apache.rat.url}/${apache.rat.tasks.jar}"
dest="${env.ANT_HOME}/lib/${apache.rat.tasks.jar}" />
+ </target>
+
+ <target name="rat-taskdef" description="Rat taskdef">
+ <typedef resource="org/apache/rat/anttasks/antlib.xml"
+ uri="antlib:org.apache.rat.anttasks"
+ classpathref="anttask.classpath"/>
+ </target>
+
+ <target name="checkout_tag" if="tag" >
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="checkout" />
+ <arg value="${tag}" />
+ </exec>
+ </target>
+
+ <target name="Royale_Compiler_JBurg_Types_Release_Step_002"
depends="get-temp-folder,download-artifacts,unzip-artifacts,build-source,validate-bits">
+ </target>
+ <target name="get-temp-folder">
+ <input
+ message="Enter a temporary folder to store the downloaded artifacts:"
+ addproperty="artifactfolder"/>
+ <mkdir dir="${artifactfolder}" />
+ <available file="${artifactfolder}"
+ type="dir"
+ property="artifact.folder.found"/>
+ <fail message="Could not create artifact folder"
+ unless="artifact.folder.found"/>
+ </target>
+
+ <target name="download-artifacts" if="artifactfolder">
+ <get
src="http://apacheroyale.francecentral.cloudapp.azure.com:8080/job/Royale_Compiler_JBurg_Types_Release_Step_002/lastSuccessfulBuild/artifact/*zip*/archive.zip"
dest="${artifactfolder}/archive.zip" />
+ </target>
+
+ <target name="unzip-artifacts" if="artifactfolder">
+ <mkdir dir="${artifactfolder}/artifacts" />
+ <unzip src="${artifactfolder}/archive.zip"
dest="${artifactfolder}/artifacts"/>
+ </target>
+
+ <target name="build-source" >
+ <mkdir dir="${artifactfolder}/sources" />
+ <unzip
src="${artifactfolder}/artifacts/archive/compiler-jburg-types/target/local-release-dir/org/apache/royale/compiler/compiler-jburg-types/${release.version}/compiler-jburg-types-${release.version}-source-release.zip"
dest="${artifactfolder}/sources" >
+ <cutdirsmapper dirs="1" />
+ </unzip>
+
+ <!-- build the main project -->
+ <exec executable="${mvn}" dir="${artifactfolder}/sources"
failonerror="true" >
+ <arg value="clean" />
+ <arg value="install" />
+ <arg value="-Proyale-release" />
+ </exec>
+ </target>
+
+ <target name="get-artifact-folder" unless="artifactfolder">
+ <input
+ message="Enter the temporary folder to store the downloaded
artifacts:"
+ addproperty="artifactfolder"/>
+ <available file="${artifactfolder}"
+ type="dir"
+ property="artifact.folder.found"/>
+ <fail message="Could not find artifact folder"
+ unless="artifact.folder.found"/>
+ </target>
+
+ <target name="validate-bits" depends="get-artifact-folder,compare-jars">
+ </target>
+
+ <target name="write-out-maven-jars-list">
+ <delete file="${artifactfolder}/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="compiler-jburg-types"/>
+ <echo file="${artifactfolder}/jars.txt" message="${jars-list}"/>
+ </target>
+
+ <target name="compare-jars" depends="write-out-maven-jars-list">
+ <!-- comma delimited list, no spaces, not one file per line -->
+ <copy file="${artifactfolder}/jars.txt"
tofile="${artifactfolder}/loop.txt" />
+ <ant antfile="releasesteps.xml" target="loopOnce" inheritAll="false" >
+ <property name="artifactfolder" value="${artifactfolder}" />
+ <property name="release.version" value="${release.version}" />
+ </ant>
+ </target>
+
+ <target name="get-jar-version" >
+ <property name="jar.version" value="${release.version}" />
+ </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="${artifactfolder}/loop1.txt" />
+ <copy file="${artifactfolder}/loop.txt"
tofile="${artifactfolder}/loop1.txt" />
+ <loadfile srcFile="${artifactfolder}/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="${artifactfolder}/loop1.txt" property="echoFile" />
+ <replaceregexp file="${artifactfolder}/loop1.txt" match="^(.*),(.*)"
replace="\2" />
+ <loadfile srcFile="${artifactfolder}/loop1.txt" property="thisFile" />
+ <antcall target="compare_files" />
+ <replaceregexp file="${artifactfolder}/loop.txt" match="^(.*),(.*)"
replace="\1" />
+ <ant antfile="releasesteps.xml" target="loopOnce" inheritAll="false">
+ <property name="artifactfolder" value="${artifactfolder}" />
+ <property name="release.version" value="${release.version}" />
+ </ant>
+ </target>
+ <target name="lastone" if="islast">
+ <loadfile srcFile="${artifactfolder}/loop1.txt" property="thisFile" />
+ <antcall target="compare_files" />
+ <delete file="${artifactfolder}/loop.txt" />
+ <delete file="${artifactfolder}/loop1.txt" />
+ </target>
+
+ <target name="compare_files" depends="get-jar-version">
+ <echo>comparing ${thisFile}-${jar.version}</echo>
+ <fail
message="${artifactfolder}/artifacts/archive/compiler-jburg-types/target/local-release-dir/org/apache/royale/compiler/${thisFile}/${jar.version}/${thisFile}-${jar.version}.jar
does not exist" >
+ <condition>
+ <not>
+ <resourceexists><file
file="${artifactfolder}/artifacts/archive/compiler-jburg-types/target/local-release-dir/org/apache/royale/compiler/${thisFile}/${jar.version}/${thisFile}-${jar.version}.jar"/></resourceexists>
+ </not>
+ </condition>
+ </fail>
+ <fail
message="${artifactfolder}/sources/target/${thisFile}-${jar.version}.jar does
not exist" >
+ <condition>
+ <not>
+ <resourceexists><file
file="${artifactfolder}/sources/target/${thisFile}-${jar.version}.jar"/></resourceexists>
+ </not>
+ </condition>
+ </fail>
+ <condition property="filesmatch" value="true">
+ <filesmatch
file1="${artifactfolder}/artifacts/archive/compiler-jburg-types/target/local-release-dir/org/apache/royale/compiler/${thisFile}/${jar.version}/${thisFile}-${jar.version}.jar"
+
file2="${artifactfolder}/sources/target/${thisFile}-${jar.version}.jar" />
+ </condition>
+ <fail message="${thisFile}-${jar.version}.jar does not match"
unless="filesmatch" />
+ </target>
+
+ <target name="Royale_Compiler_JBurg_Types_Release_Step_002_Sign"
depends="get-artifact-folder">
+ <fail message="release.version not specified"
+ unless="release.version"/>
+ <antcall target="sign-file" >
+ <param name="file"
value="${artifactfolder}/artifacts/archive/compiler-jburg-types/target/local-release-dir/org/apache/royale/compiler/compiler-jburg-types/${release.version}/compiler-jburg-types-${release.version}-source-release.zip"
/>
+ </antcall>
+ <antcall target="sign-jar-artifacts" >
+ <param name="jarname" value="compiler-jburg-types" />
+ </antcall>
+ </target>
+
+ <target name="sign-jar-artifacts">
+ <antcall target="sign-file" >
+ <param name="file"
value="${artifactfolder}/artifacts/archive/compiler-jburg-types/target/local-release-dir/org/apache/royale/compiler/${jarname}/${release.version}/${jarname}-${release.version}.pom"
/>
+ </antcall>
+ <antcall target="sign-file" >
+ <param name="file"
value="${artifactfolder}/artifacts/archive/compiler-jburg-types/target/local-release-dir/org/apache/royale/compiler/${jarname}/${release.version}/${jarname}-${release.version}-javadoc.jar"
/>
+ </antcall>
+ <antcall target="sign-file" >
+ <param name="file"
value="${artifactfolder}/artifacts/archive/compiler-jburg-types/target/local-release-dir/org/apache/royale/compiler/${jarname}/${release.version}/${jarname}-${release.version}-sources.jar"
/>
+ </antcall>
+ <antcall target="sign-file" >
+ <param name="file"
value="${artifactfolder}/artifacts/archive/compiler-jburg-types/target/local-release-dir/org/apache/royale/compiler/${jarname}/${release.version}/${jarname}-${release.version}.jar"
/>
+ </antcall>
+ </target>
+
+
+
+ <target name="sign-file">
+ <exec executable="gpg">
+ <arg value="--armor" />
+ <arg value="--output" />
+ <arg value="${file}.asc" />
+ <arg value="--detach-sig" />
+ <arg value="${file}" />
+ </exec>
+ </target>
+
+ <target name="Royale_Compiler_JBurg_Types_Release_Step_002_Upload"
depends="get-artifact-folder">
+ <fail message="release.version not specified"
+ unless="release.version"/>
+ <exec executable="${mvn}" failonerror="true" >
+ <arg value="wagon:upload" />
+ <arg
value="-Dwagon.fromDir=${artifactfolder}/artifacts/archive/compiler-jburg-types/target/local-release-dir"
/>
+ <arg
value="-Dwagon.url=https://repository.apache.org/service/local/staging/deploy/maven2"
/>
+ <arg value="-Dwagon.serverId=apache.releases.https" />
+ <arg value="-Dwagon.includes=**" />
+ </exec>
+ <!--<antcall target="check-new-version" />-->
+ <!--<antcall target="post-on-dist" />-->
+ </target>
+
+ <!--
+ <target name="Release_Step_004_Post_Artifacts_To_Dist"
depends="credentials" description="Perform required release approval steps">-->
+ <target name="Release_Step_004_Post_Artifacts_To_Dist"
description="Perform required release approval steps">
+ <antcall target="check-new-version" />
+ <mkdir
dir="${dist.dev}/royale/compiler-jburg-types/${release.version}/rc${rc}/binaries"
/>
+ <get
src="https://repository.apache.org/content/repositories/orgapacheroyale-${maven.folder.number}/org/apache/royale/compiler/compiler-jburg-types/${release.version}/compiler-jburg-types-${release.version}-source-release.zip"
+
dest="${dist.dev}/royale/compiler-jburg-types/${release.version}/rc${rc}/apache-royale-compiler-jburg-types-${release.version}-source-release.zip"
>
+ </get>
+ <get
src="https://repository.apache.org/content/repositories/orgapacheroyale-${maven.folder.number}/org/apache/royale/compiler/compiler-jburg-types/${release.version}/compiler-jburg-types-${release.version}-source-release.zip.asc"
+
dest="${dist.dev}/royale/compiler-jburg-types/${release.version}/rc${rc}/apache-royale-compiler-jburg-types-${release.version}-source-release.zip.asc"
>
+ </get>
+ <checksum algorithm="SHA-512"
file="${dist.dev}/royale/compiler-jburg-types/${release.version}/rc${rc}/apache-royale-compiler-jburg-types-${release.version}-source-release.zip"
forceOverwrite="yes" fileext=".sha512"/>
+ <get
src="https://repository.apache.org/content/repositories/orgapacheroyale-${maven.folder.number}/org/apache/royale/compiler/compiler-jburg-types/${release.version}/compiler-jburg-types-${release.version}.jar"
dest="${dist.dev}/royale/compiler-jburg-types/${release.version}/rc${rc}/binaries"
>
+ </get>
+ <get
src="https://repository.apache.org/content/repositories/orgapacheroyale-${maven.folder.number}/org/apache/royale/compiler/compiler-jburg-types/${release.version}/compiler-jburg-types-${release.version}.jar.asc"
dest="${dist.dev}/royale/compiler-jburg-types/${release.version}/rc${rc}/binaries"
>
+ </get>
+ <checksum algorithm="SHA-512"
file="${dist.dev}/royale/compiler-jburg-types/${release.version}/rc${rc}/binaries/compiler-jburg-types-${release.version}.jar"
forceOverwrite="yes" fileext=".sha512"/>
+<!--
+ <copy file="${basedir}/README"
tofile="${dist.dev}/royale/compiler/${release.version}/rc${rc}/READme" />
+ -->
+ <copy file="${basedir}/ApproveJBurgTypes.xml"
tofile="${dist.dev}/royale/compiler-jburg-types/${release.version}/rc${rc}/ApproveJBurgTypes.xml"
/>
+ <exec executable="${svn}"
dir="${dist.dev}/royale/compiler-jburg-types" failonerror="true" >
+ <arg value="update" />
+ </exec>
+ <exec executable="${svn}"
dir="${dist.dev}/royale/compiler-jburg-types" failonerror="true" >
+ <arg value="add" />
+ <arg
value="${dist.dev}/royale/compiler-jburg-types/${release.version}/rc${rc}" />
+ </exec>
+ </target>
+
+ <target name="tag_release" unless="tag" >
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="tag" />
+ <arg value="-a" />
+ <arg value="apache-royale-compiler-${release.version}-rc${rc}" />
+ <arg value="-m" />
+ <arg value=""rc${rc} of
apache-royale-compiler-${release.version}"" />
+ </exec>
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="push" />
+ <arg value="--tags" />
+ </exec>
+ </target>
+
+ <target name="credentials" depends="get-username,get-password">
+ <echo>${apache.username}</echo>
+ <echo>${apache.password}</echo>
+ </target>
+ <target name="get-username" unless="apache.username" >
+ <input
+ message="Enter Apache account username:"
+ addproperty="apache.username"/>
+ <condition property="have.username">
+ <not>
+ <equals trim="true" arg1=""
arg2="${apache.username}"/>
+ </not>
+ </condition>
+ <fail message="The apache.username property is not set. It
should be the username for Apache SVN and Git."
+ unless="have.username"/>
+ </target>
+ <target name="get-password" unless="apache.password" >
+ <input
+ message="Enter Apache account password:"
+ addproperty="apache.password"/>
+ <condition property="have.password">
+ <not>
+ <equals trim="true" arg1=""
arg2="${apache.password}"/>
+ </not>
+ </condition>
+ <fail message="The apache.password property is not set. It
should be the password for Apache SVN and Git."
+ unless="have.password"/>
+ </target>
+
+
+ <target name="check-new-version" description="check if svn folder needs
to be added" >
+ <condition property="version.folder"
value="${dist.dev}/royale/compiler-jburg-types/${release.version}" >
+ <not>
+ <available
file="${dist.dev}/royale/compiler-jburg-types/${release.version}" />
+ </not>
+ </condition>
+ <antcall target="add-version-folder" />
+ </target>
+
+ <target name="add-version-folder" description="adds svn folder if
needed" if="version.folder" >
+ <mkdir dir="${version.folder}" />
+ <exec executable="${svn}"
dir="${dist.dev}/royale/compiler-jburg-types" failonerror="true" >
+ <arg value="add" />
+ <arg value="${version.folder}" />
+ </exec>
+ </target>
+
+ <target name="release" depends="credentials" >
+ <available file="${svn.dist.release}"
+ type="dir"
+ property="dist.release" value="${svn.dist.release}" />
+
+ <fail message="The svn.dist.release property is not set to the
working copy for https://dist.apache.org/repos/dist/release."
+ unless="dist.release"/>
+
+ <exec executable="${svn}" dir="${dist.release}/royale"
failonerror="true" >
+ <arg value="update" />
+ </exec>
+ <exec executable="${svn}" dir="${dist.release}/royale/compiler"
failonerror="true" >
+ <arg value="mv" />
+ <arg
value="${dist.dev}/royale/compiler/${release.version}/rc${rc}" />
+ <arg value="${dist.release}/royale/compiler/${release.version}" />
+ </exec>
+ <exec executable="${svn}" dir="${dist.release}/.."
failonerror="true" >
+ <arg value="commit" />
+ <arg value="--username" />
+ <arg value="${apache.username}" />
+ <arg value="--password" />
+ <arg value="${apache.password}" />
+ <arg value="-m" />
+ <arg value="Apache Royale Compiler ${release.version}"
/>
+ </exec>
+ <antcall target="release.tag" />
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="push" />
+ <arg value="--tags" />
+ </exec>
+ <echo>Wait at least 24 hours before running
update-installer-config-release target</echo>
+ </target>
+
+ <target name="release.tag" >
+ <condition property="tag"
value="apache-royale-compiler-${release.version}-rc${rc}">
+ <not>
+ <isset property="tag" />
+ </not>
+ </condition>
+ <exec executable="${git}" dir="${basedir}" failonerror="true"
output="${basedir}/taghash.txt">
+ <arg value="show" />
+ <arg value="${tag}" />
+ </exec>
+ <replaceregexp file="${basedir}/taghash.txt" match="(.*).commit
(.*).Author(.*)" replace="\2" byline="false" flags="s" />
+ <loadfile srcFile="${basedir}/taghash.txt" property="releasehash" />
+ <exec executable="${git}" dir="${basedir}" failonerror="true" >
+ <arg value="tag" />
+ <arg value="-a" />
+ <arg value="apache-royale-compiler-${release.version}" />
+ <arg value="${releasehash}" />
+ <arg value="-m" />
+ <arg value=""Official release of
apache-royale-compiler-${release.version}"" />
+ </exec>
+ </target>
+</project>