| <?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="CreateCompilerReleaseCandidate" 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" /> |
| |
| <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="Release_Step_003" 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-utils" if="utils"> |
| <get src="http://apacheroyale.francecentral.cloudapp.azure.com:8080/job/Royale_Release_Step_002a_if_utils/lastSuccessfulBuild/artifact/*zip*/archive.zip" dest="${artifactfolder}/archive_utils.zip" /> |
| </target> |
| |
| <target name="download-artifacts" if="artifactfolder"> |
| <antcall target="download-artifacts-utils" /> |
| <get src="http://apacheroyale.francecentral.cloudapp.azure.com:8080/job/Royale_Release_Step_003/lastSuccessfulBuild/artifact/*zip*/archive.zip" dest="${artifactfolder}/archive.zip" /> |
| </target> |
| |
| <target name="unzip-artifacts-utils" if="utils"> |
| <mkdir dir="${artifactfolder}/artifacts" /> |
| <unzip src="${artifactfolder}/archive_utils.zip" dest="${artifactfolder}/artifacts"/> |
| <copydir src="${artifactfolder}/artifacts/archive/target/utils/local-release-dir/org/apache/royale/compiler" |
| dest="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler"/> |
| </target> |
| <target name="unzip-artifacts" if="artifactfolder"> |
| <antcall target="unzip-artifacts-utils" /> |
| <mkdir dir="${artifactfolder}/artifacts" /> |
| <unzip src="${artifactfolder}/archive.zip" dest="${artifactfolder}/artifacts"/> |
| </target> |
| <target name="build-source-utils" if="utils"> |
| <!-- build the build tools --> |
| <exec executable="${mvn}" dir="${artifactfolder}/sources/compiler-build-tools" failonerror="true" > |
| <arg value="clean" /> |
| <arg value="install" /> |
| </exec> |
| <!-- build the jburg types --> |
| <exec executable="${mvn}" dir="${artifactfolder}/sources/compiler-jburg-types" failonerror="true" > |
| <arg value="clean" /> |
| <arg value="install" /> |
| </exec> |
| </target> |
| <target name="build-source" > |
| <mkdir dir="${artifactfolder}/sources" /> |
| <unzip src="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/royale-compiler-parent/${release.version}/royale-compiler-parent-${release.version}-source-release.zip" dest="${artifactfolder}/sources" > |
| <cutdirsmapper dirs="1" /> |
| </unzip> |
| |
| <antcall target="build-source-utils" /> |
| <!-- build the main project --> |
| <exec executable="${mvn}" dir="${artifactfolder}/sources" failonerror="true" > |
| <arg value="clean" /> |
| <arg value="install" /> |
| <arg value="-Proyale-release,option-with-swf" /> |
| </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="get-utils-version"> |
| <xmlproperty file="${artifactfolder}/sources/compiler-jburg-types/pom.xml" prefix="jburg" /> |
| <property name="utils.version" value="${jburg.project.version}" /> |
| <echo>utils version is ${utils.version}</echo> |
| </target> |
| |
| <target name="check-for-utils" unless="utils"> |
| <available file="${artifactfolder}/sources/compiler-jburg-types/target/compiler-jburg-types-${utils.version}.jar" property="utils" value="true" /> |
| </target> |
| |
| <target name="validate-bits" depends="get-artifact-folder,get-utils-version,compare-jars"> |
| </target> |
| |
| <target name="write-out-maven-utils-jars-list" if="utils" > |
| <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-with-utils" value="compiler-jburg-types,compiler-build-tools,${jars-list}"/> |
| <echo file="${artifactfolder}/jars.txt" message="${jars-list-with-utils}"/> |
| </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,compiler-common,compiler-externc,compiler-jx,compiler-test-utils,swfutils,debugger,flex-compiler-oem,royale-ant-tasks,royale-maven-plugin,linter"/> |
| <echo file="${artifactfolder}/jars.txt" message="${jars-list}"/> |
| <antcall target="write-out-maven-utils-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}" /> |
| <property name="utils.version" value="${utils.version}" /> |
| </ant> |
| </target> |
| |
| <target name="get-jar-version" > |
| <condition property="jar.version" value="${utils.version}" |
| else="${release.version}"> |
| <or> |
| <equals arg1="${thisFile}" arg2="compiler-jburg-types" /> |
| <equals arg1="${thisFile}" arg2="compiler-build-tools" /> |
| </or> |
| </condition> |
| </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}" /> |
| <property name="utils.version" value="${utils.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/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/target/local-release-dir/org/apache/royale/compiler/${thisFile}/${jar.version}/${thisFile}-${jar.version}.jar"/></resourceexists> |
| </not> |
| </condition> |
| </fail> |
| <fail message="${artifactfolder}/sources/${thisFile}/target/${thisFile}-${jar.version}.jar does not exist" > |
| <condition> |
| <not> |
| <resourceexists><file file="${artifactfolder}/sources/${thisFile}/target/${thisFile}-${jar.version}.jar"/></resourceexists> |
| </not> |
| </condition> |
| </fail> |
| <condition property="filesmatch" value="true"> |
| <filesmatch file1="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/${thisFile}/${jar.version}/${thisFile}-${jar.version}.jar" |
| file2="${artifactfolder}/sources/${thisFile}/target/${thisFile}-${jar.version}.jar" /> |
| </condition> |
| <fail message="${thisFile}-${jar.version}.jar does not match" unless="filesmatch" /> |
| </target> |
| |
| <target name="Release_Step_003_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/target/local-release-dir/org/apache/royale/compiler/royale-compiler-parent/${release.version}/royale-compiler-parent-${release.version}-source-release.zip" /> |
| </antcall> |
| <antcall target="sign-file" > |
| <param name="file" value="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/royale-compiler-parent/${release.version}/royale-compiler-parent-${release.version}.pom" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="compiler" /> |
| </antcall> |
| <antcall target="sign-file" > |
| <param name="file" value="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/compiler/${release.version}/compiler-${release.version}-scripts.jar" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="compiler-common" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="compiler-externc" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="compiler-playerglobalc" /> |
| </antcall> |
| <antcall target="sign-file" > |
| <param name="file" value="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/compiler-playerglobalc/${release.version}/compiler-playerglobalc-${release.version}-tests.jar" /> |
| </antcall> |
| <antcall target="sign-file" > |
| <param name="file" value="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/compiler-externc/${release.version}/compiler-externc-${release.version}-tests.jar" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="compiler-jx" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="compiler-test-utils" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="debugger" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="formatter" /> |
| </antcall> |
| <antcall target="sign-file" > |
| <param name="file" value="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/formatter/${release.version}/formatter-${release.version}-tests.jar" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="flex-compiler-oem" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="royale-ant-tasks" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="royale-maven-plugin" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts"> |
| <param name="jarname" value="royaleunit-ant-tasks" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="swfutils" /> |
| </antcall> |
| <antcall target="sign-jar-artifacts" > |
| <param name="jarname" value="linter" /> |
| </antcall> |
| <antcall target="sign-file" > |
| <param name="file" value="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/linter/${release.version}/linter-${release.version}-tests.jar" /> |
| </antcall> |
| <antcall target="sign-utils" /> |
| </target> |
| |
| <target name="sign-utils" depends="get-utils-version,check-for-utils" if="utils"> |
| <antcall target="sign-utils-jar-artifacts" > |
| <param name="jarname" value="compiler-build-tools" /> |
| </antcall> |
| <antcall target="sign-utils-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/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/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/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/target/local-release-dir/org/apache/royale/compiler/${jarname}/${release.version}/${jarname}-${release.version}.jar" /> |
| </antcall> |
| </target> |
| |
| <target name="sign-utils-jar-artifacts"> |
| <antcall target="sign-file" > |
| <param name="file" value="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/${jarname}/${utils.version}/${jarname}-${utils.version}.pom" /> |
| </antcall> |
| <antcall target="sign-file" > |
| <param name="file" value="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/${jarname}/${utils.version}/${jarname}-${utils.version}-javadoc.jar" /> |
| </antcall> |
| <antcall target="sign-file" > |
| <param name="file" value="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/${jarname}/${utils.version}/${jarname}-${utils.version}-sources.jar" /> |
| </antcall> |
| <antcall target="sign-file" > |
| <param name="file" value="${artifactfolder}/artifacts/archive/target/local-release-dir/org/apache/royale/compiler/${jarname}/${utils.version}/${jarname}-${utils.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="Release_Step_003_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/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=**" /> |
| <arg value="-N"/> |
| </exec> |
| </target> |
| |
| <target name="main" depends="install-rat,credentials" description="Perform required release approval steps"> |
| <antcall target="check-new-version" /> |
| <exec executable="${git}" dir="${basedir}" failonerror="true" > |
| <arg value="pull" /> |
| <arg value="--rebase" /> |
| </exec> |
| <antcall target="checkout_tag" /> |
| <ant antfile="build.xml" target="release" /> |
| <ant antfile="build.xml" target="create-md5" /> |
| <ant antfile="build.xml" target="sign" /> |
| <mkdir dir="${dist.dev}/royale/compiler/${release.version}/rc${rc}/binaries" /> |
| <copy todir="${dist.dev}/royale/compiler/${release.version}/rc${rc}" > |
| <fileset dir="${basedir}/out" > |
| <include name="apache-royale-compiler-${release.version}-src*" /> |
| </fileset> |
| </copy> |
| <copy todir="${dist.dev}/royale/compiler/${release.version}/rc${rc}/binaries" > |
| <fileset dir="${basedir}/out" > |
| <include name="apache-royale-compiler-${release.version}-bin*" /> |
| </fileset> |
| </copy> |
| <copy file="${basedir}/README" tofile="${dist.dev}/royale/compiler/${release.version}/rc${rc}/READme" /> |
| <copy file="${basedir}/ApproveCompiler.xml" tofile="${dist.dev}/royale/compiler/${release.version}/rc${rc}/ApproveCompiler.xml" /> |
| <copy file="${basedir}/apache-royale-compiler-installer-config.xml" tofile="${dist.dev}/royale/compiler/${release.version}/rc${rc}/binaries/apache-royale-compiler-installer-config.xml" /> |
| <exec executable="${svn}" dir="${dist.dev}/royale/compiler" failonerror="true" > |
| <arg value="update" /> |
| </exec> |
| <exec executable="${svn}" dir="${dist.dev}/royale/compiler" failonerror="true" > |
| <arg value="add" /> |
| <arg value="${dist.dev}/royale/compiler/${release.version}/rc${rc}" /> |
| </exec> |
| <exec executable="${svn}" dir="${dist.dev}/royale/compiler" failonerror="true" > |
| <arg value="commit" /> |
| <arg value="--username" /> |
| <arg value="${apache.username}" /> |
| <arg value="--password" /> |
| <arg value="${apache.password}" /> |
| <arg value="-m" /> |
| <arg value="rc${rc} of Apache Royale Compiler ${release.version}" /> |
| </exec> |
| <antcall target="tag_release" /> |
| <antcall target="update-installer-config" /> |
| <antcall target="mail" /> |
| </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="update-installer-config" > |
| <exec executable="${svn}" dir="${site}" failonerror="true" > |
| <arg value="update" /> |
| <arg value="trunk/content/installer/sdk-installer-config-4.0.xml" /> |
| </exec> |
| <replaceregexp byline="true"> |
| <regexp pattern="developmentVersion="${release.version}" rc="rc.*" latestVersion"/> |
| <substitution expression="developmentVersion="${release.version}" rc="rc${rc}" latestVersion"/> |
| <fileset dir="${site}/trunk/content/installer"> |
| <include name="sdk-installer-config-4.0.xml"/> |
| </fileset> |
| </replaceregexp> |
| <exec executable="${svn}" dir="${site}" failonerror="true" > |
| <arg value="commit" /> |
| <arg value="--username" /> |
| <arg value="${apache.username}" /> |
| <arg value="--password" /> |
| <arg value="${apache.password}" /> |
| <arg value="-m" /> |
| <arg value=""update sdk-installer-config-4.0 for Compiler ${release.version} rc${rc}"" /> |
| </exec> |
| <!-- pause to give buildbot chance to react --> |
| <sleep seconds="5" /> |
| <get src="https://cms.apache.org/royale/publish" username="${apache.username}" password="${apache.password}" dest="${basedir}/getresult.txt" /> |
| <delete file="${basedir}/getresult.txt" /> |
| </target> |
| |
| <target name="update-installer-config-release" depends="credentials"> |
| <exec executable="${svn}" dir="${site}" failonerror="true" > |
| <arg value="update" /> |
| <arg value="trunk/content/installer/sdk-installer-config-4.0.xml" /> |
| </exec> |
| <xmlproperty file="${site}/trunk/content/installer/sdk-installer-config-4.0.xml" semanticAttributes="true" collapseAttributes="true"/> |
| <property name="latest.release" value="${config.products.ApacheRoyaleCompiler.latestVersion}" /> |
| <replaceregexp byline="true" flags="g"> |
| <regexp pattern="ApacheRoyaleCompiler(.*)latestVersion="${latest.release}"(.*)"/> |
| <substitution expression="ApacheRoyaleCompiler\1latestVersion="${release.version}"\2"/> |
| <fileset dir="${site}/trunk/content/installer"> |
| <include name="sdk-installer-config-4.0.xml"/> |
| </fileset> |
| </replaceregexp> |
| <exec executable="${svn}" dir="${site}" failonerror="true" > |
| <arg value="commit" /> |
| <arg value="--username" /> |
| <arg value="${apache.username}" /> |
| <arg value="--password" /> |
| <arg value="${apache.password}" /> |
| <arg value="-m" /> |
| <arg value=""update sdk-installer-config-4.0 and other files for royale sdk ${release.version} rc${rc}"" /> |
| </exec> |
| <!-- pause to give buildbot chance to react --> |
| <sleep seconds="5" /> |
| <get src="https://cms.apache.org/royale/publish" username="${apache.username}" password="${apache.password}" dest="${basedir}/getresult.txt" /> |
| <delete file="${basedir}/getresult.txt" /> |
| </target> |
| |
| <target name="check-new-version" description="check if svn folder needs to be added" > |
| <condition property="version.folder" value="${dist.dev}/royale/compiler/${release.version}" > |
| <not> |
| <available file="${dist.dev}/royale/compiler/${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" failonerror="true" > |
| <arg value="add" /> |
| <arg value="${version.folder}" /> |
| </exec> |
| </target> |
| |
| <target name="mail" > |
| <!-- try to set line breaks before the vertical line | --> |
| <echo file="${basedir}/discussthread.properties">discuss.thread.body=This is the discussion thread.\n\ |
| \n\ |
| Changes in this RC include:\n\ |
| \n\ |
| \n\ |
| Thanks,\n\ |
| ${my.name} |
| </echo> |
| <replace file="${basedir}/discussthread.properties"> |
| <replacefilter token=" " value="%20" /> |
| <replacefilter token="\n" value="${CRLF}" /> |
| </replace> |
| <property file="${basedir}/discussthread.properties" /> |
| |
| <!-- try to set line breaks before the vertical line | --> |
| <echo file="${basedir}/votethread.properties">vote.thread.body=Hi,\n\ |
| \n\ |
| This is vote for the ${release.version} release of the Royale\n\ |
| compilers. The only purpose of the Compiler packages are to serve as\n\ |
| upstream packages for the Royale release.\n\ |
| \n\ |
| The release candidate can be found here;\n\ |
| https://dist.apache.org/repos/dist/dev/royale/compiler/${release.version}/rc${rc}/\n\ |
| \n\ |
| Before voting please review the section, 'What are the ASF requirements on\n\ |
| approving a release?', at:\n\ |
| http://www.apache.org/dev/release.html#approving-a-release\n\ |
| \n\ |
| At a minimum you would be expected to check that:\n\ |
| - MD5 and signed packages are correct\n\ |
| - README, RELEASE_NOTES, NOTICE and LICENSE files are all fine\n\ |
| - That the build script completes successfully\n\ |
| - That you can compile using the results of building the source package\n\ |
| \n\ |
| The source package is set up the same way as the repo. This means that\n\ |
| the results of the build are not the same as the binary package. The\n\ |
| compiled source package can be used to build Royale apps via the command\n\ |
| line and Ant, but not in Flash Builder or other IDEs. You can test the source\n\ |
| package by building it, then pointing to it from the source package of the\n\ |
| Royale release candidate and building the examples in the Royale package.\n\ |
| \n\ |
| The binary package is set up as an upstream package for the Royale\n\ |
| release. The most convenient way to use the binary package is to install\n\ |
| a Royale SDK via Ant or the Installer.\n\ |
| \n\ |
| Please vote to approve this release:\n\ |
| +1 Approve the release\n\ |
| -1 Disapprove the release (please provide specific comments to why)\n\ |
| \n\ |
| This vote will be open for 72 hours or until a result can be called.\n\ |
| \n\ |
| The vote passes if there is:\n\ |
| - At least 3 +1 votes from the PMC\n\ |
| - More positive votes than negative votes\n\ |
| \n\ |
| Remember that this is a 'beta-quality' release so there\n\ |
| will be many bugs found. The goal is not to try to find and fix bugs\n\ |
| in the RC, but to make sure we have the packaging right, and enough\n\ |
| functionality that folks will have some success trying to use it.\n\ |
| \n\ |
| People who are not in PMC are also encouraged to test out the release and\n\ |
| vote, although their votes will not be binding, they can influence how the\n\ |
| PMC votes.\n\ |
| \n\ |
| When voting please indicate what OS, IDE, Flash Player version and AIR\n\ |
| version you tested with.\n\ |
| \n\ |
| Please put all discussion about this release in the DISCUSSION thread not\n\ |
| this VOTE thread.\n\ |
| \n\ |
| For your convenience there is an ant script that automates the common\n\ |
| steps to validate a release. Instead of individually downloading the\n\ |
| package and signature files, unzipping, etc, you can instead:\n\ |
| 1) create an empty folder,\n\ |
| 2) download into that folder this file:\n\ |
| https://dist.apache.org/repos/dist/dev/royale/compiler/${release.version}/rc${rc}/ApproveCompiler.xml\n\ |
| 3) run the script:\n\ |
| ant -e -f ApproveCompiler.xml -Drelease.version=${release.version} -Drc=${rc}\n\ |
| \n\ |
| You are not required to use this script, and more testing of the packages\n\ |
| and build results are always encouraged.\n\ |
| \n\ |
| Thanks,\n\ |
| ${my.name} |
| </echo> |
| <replace file="${basedir}/votethread.properties"> |
| <replacefilter token=" " value="%20" /> |
| <replacefilter token="\n" value="${CRLF}" /> |
| </replace> |
| <property file="${basedir}/votethread.properties" /> |
| <echo file="${basedir}/votethread.html"><html><body><a href="mailto:dev@royale.apache.org?subject=[DISCUSS]%20Discuss%20Release%20Apache%20Royale%20Compiler%20${release.version}%20RC${rc}&body=${discuss.thread.body}">Click here to review discuss thread</a><br/><a href="mailto:dev@royale.apache.org?subject=[VOTE]%20Release%20Apache%20Royale%20Compiler%20${release.version}%20RC${rc}&body=${vote.thread.body}">Click here to review vote thread</a></body></html></echo> |
| <makeurl file="${basedir}/votethread.html" property="vote.thread.url" /> |
| <exec executable="${browser}"> |
| <arg value="${vote.thread.url}" /> |
| </exec> |
| <delete file="${basedir}/votethread.properties" /> |
| <delete file="${basedir}/votethread.html" /> |
| <delete file="${basedir}/discussthread.properties" /> |
| </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> |