| <?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="downloads" default="main" basedir="."> |
| <echo>basedir is ${basedir}</echo> |
| <echo>ROYALE_COMPILER_HOME is ${ROYALE_COMPILER_HOME}</echo> |
| |
| <!-- |
| Notes: |
| For Apache, the JARS must be removed from the repository. |
| |
| Licenses: |
| commons-io (2.4) - Apache 2.0 |
| closure (9.2) - Apache 2.0 |
| --> |
| |
| <!-- this script supports the usingDownloadCache property and |
| downloadCacheFolder property to cache downloads in the |
| folder specified by downloadCacheFolder. This can make |
| a huge difference in future runs although there is some |
| risk around caching bad downloads and/or needing to |
| clean up the cache --> |
| |
| <property name="ROYALE_COMPILER_HOME" location="${basedir}/../../.."/> |
| <echo>ROYALE_COMPILER_HOME is ${ROYALE_COMPILER_HOME}</echo> |
| |
| <property name="lib.dir" value="${ROYALE_COMPILER_HOME}/lib"/> |
| <property name="download.dir" value="${ROYALE_COMPILER_HOME}/in"/> |
| |
| <property file="${basedir}/local.properties"/> |
| |
| <property name="maven.search.url" value="https://repo1.maven.org/maven2"/> |
| |
| <property file="${ROYALE_COMPILER_HOME}/env.properties"/> |
| <property environment="env"/> |
| <property file="${ROYALE_COMPILER_HOME}/local.properties"/> |
| <property file="${ROYALE_COMPILER_HOME}/build.properties"/> |
| |
| <!-- |
| Because the downloads requires a network connection and the JARs don't change very often, |
| they are each downloaded only if they don't already exist. |
| --> |
| <target name="main" depends="prepare, all" description="Downloads all the required thirdparty JARs"/> |
| |
| <target name="prepare"> |
| <echo message="Making lib directory ${lib.dir}"/> |
| <mkdir dir="${lib.dir}"/> |
| </target> |
| |
| |
| |
| <!-- |
| Downloads |
| --> |
| |
| <target name="all" description="Downloads and copies all dependencies to the lib directory."> |
| <!-- args4j --> |
| <property name="args4j.name" value="args4j"/> |
| <property name="args4j.version" value="2.0.28"/> |
| <!-- property name="args4j.version" value="2.0.16"/ --> |
| <antcall target="download-dependency"> |
| <param name="name" value="${args4j.name}"/> |
| <param name="src.server" value="${maven.search.url}"/> |
| <param name="src.folder" value="args4j/args4j/${args4j.version}"/> |
| <param name="src.filename" value="args4j-${args4j.version}.jar"/> |
| <param name="src.checksum" value="e0593b60af743a63f9678399d275272a"/> |
| <!-- param name="src.checksum" value="6571d69d142dd2a003c4ffae6138f0ee"/ --><!-- version 2.0.16 --> |
| <param name="dest.folder" value=""/> |
| <param name="dest.filename" value="${args4j.name}.jar"/> |
| </antcall> |
| <!-- the download-dependency copies ALv2, but args4j seems to be under MIT so overwrite it --> |
| <get src="https://raw.githubusercontent.com/kohsuke/args4j/master/LICENSE" dest="${lib.dir}/args4j-LICENSE.txt" ignoreerrors="true"/> |
| |
| <!-- closure --> |
| <property name="closure.version" value="20181210"/> |
| <property name="closure.name" value="closure-compiler-v${closure.version}"/> |
| <property name="closure.dest.name" value="compiler"/> |
| <property name="closure.dest.folder" value="google/closure-compiler"/> |
| <property name="closure.dest.filename" value="${closure.dest.name}.jar"/> |
| <antcall target="download-dependency-closure"> |
| <param name="name" value="${closure.name}"/> |
| <param name="src.server" value="https://dl.google.com"/> |
| <param name="src.folder" value="closure-compiler"/> |
| <param name="src.filename" value="compiler-${closure.version}.zip"/> |
| <param name="src.checksum" value="c67fdbf6512d1de6bbb84a69ed3d5b87"/> |
| </antcall> |
| |
| <!-- commons-io --> |
| <property name="commons-io.name" value="commons-io"/> |
| <property name="commons-io.version" value="2.4"/> |
| <antcall target="download-dependency"> |
| <param name="name" value="${commons-io.name}"/> |
| <param name="src.server" value="${maven.search.url}"/> |
| <param name="src.folder" value="commons-io/commons-io/${commons-io.version}"/> |
| <param name="src.filename" value="${commons-io.name}-${commons-io.version}.jar"/> |
| <param name="src.checksum" value="7f97854dc04c119d461fed14f5d8bb96"/> |
| <param name="dest.folder" value=""/> |
| <param name="dest.filename" value="${commons-io.name}.jar"/> |
| </antcall> |
| |
| <!-- guava --> |
| <property name="guava.name" value="guava"/> |
| <property name="guava.version" value="25.1-jre"/> |
| <antcall target="download-dependency"> |
| <param name="name" value="${guava.name}"/> |
| <param name="src.server" value="${maven.search.url}"/> |
| <param name="src.folder" value="com/google/guava/guava/${guava.version}"/> |
| <param name="src.filename" value="guava-${guava.version}.jar"/> |
| <param name="src.checksum" value="da3838847d109ac435f0d3ed4ae1c794"/> |
| <param name="dest.folder" value=""/> |
| <param name="dest.filename" value="${guava.name}.jar"/> |
| </antcall> |
| |
| <!-- flex-tool-api --> |
| <property name="flexToolApi.name" value="flex-tool-api"/> |
| <property name="flexToolApi.version" value="1.0.0"/> |
| <antcall target="download-dependency"> |
| <param name="name" value="${flexToolApi.name}"/> |
| <param name="src.server" value="${maven.search.url}"/> |
| <param name="src.folder" value="org/apache/flex/${flexToolApi.name}/${flexToolApi.version}"/> |
| <param name="src.filename" value="${flexToolApi.name}-${flexToolApi.version}.jar"/> |
| <param name="src.checksum" value="b8f76174b2c4d3b83e5c9fa78703c52b"/> |
| <param name="dest.folder" value=""/> |
| <param name="dest.filename" value="${flexToolApi.name}.jar"/> |
| <param name="license.use.apache" value="true"/> |
| </antcall> |
| </target> |
| |
| |
| |
| <!-- |
| Utilities |
| --> |
| |
| <target name="check-dependency" description="Checks if project jar is in lib directory."> |
| <available file="${lib.dir}/${dest.folder}/${name}.jar" property="project.jar.exists"/> |
| </target> |
| |
| <target name="check-dependency-closure" description="Checks if project jar is in lib directory."> |
| <available file="${lib.dir}/${closure.dest.folder}/${closure.dest.name}.jar" property="project.jar.exists"/> |
| </target> |
| |
| <target name="echo-project-jar" if="installer"> |
| <echo file="${basedir}/project.properties">project.echo=${INFO_DOWNLOADING_FILE_FROM}</echo> |
| <replace file="${basedir}/project.properties" token="{0}" value="${srcPath}"/> |
| <replace file="${basedir}/project.properties" token="{1}" value="${srcDomain}"/> |
| <property file="${basedir}/project.properties"/> |
| <delete file="${basedir}/project.properties"/> |
| <echo>${project.echo}</echo> |
| </target> |
| |
| <target name="download-dependency" depends="check-dependency" unless="project.jar.exists" description="Downloads a jar + license to the lib directory."> |
| <antcall target="echo-project-jar"> |
| <param name="srcDomain" value="${src.server}"/> |
| <param name="srcPath" value="${src.folder}/${src.filename}"/> |
| </antcall> |
| <mkdir dir="${lib.dir}/${dest.folder}"/> |
| |
| <get src="http://www.apache.org/licenses/LICENSE-2.0" dest="${lib.dir}/${dest.folder}/${name}-LICENSE.txt" ignoreerrors="true"/> |
| <antcall target="get-from-cache-if-needed" > |
| <param name="srcFile" value="LICENSE-2.0.html" /> |
| <param name="destFile" value="${name}-LICENSE.txt" /> |
| <param name="destDir" value="${lib.dir}/${dest.folder}" /> |
| </antcall> |
| <antcall target="fail-if-not-found" > |
| <param name="destFile" value="${name}-LICENSE.txt" /> |
| <param name="destDir" value="${lib.dir}/${dest.folder}" /> |
| </antcall> |
| |
| <condition property="project.download.jar"> |
| <contains string="${src.filename}" substring=".jar" /> |
| </condition> |
| |
| <antcall target="download-dependency-jar"> |
| <param name="server" value="${src.server}"/> |
| <param name="folder" value="${src.folder}"/> |
| <param name="srcFileName" value="${src.filename}"/> |
| <param name="destDir" value="${lib.dir}/${dest.folder}"/> |
| <param name="destFile" value="${dest.filename}"/> |
| <param name="checksum" value="${src.checksum}"/> |
| </antcall> |
| |
| <antcall target="download-dependency-zip"> |
| <param name="server" value="${src.server}"/> |
| <param name="folder" value="${src.folder}"/> |
| <param name="srcFileName" value="${src.filename}"/> |
| <param name="srcJarPath" value="${src.jarPath}"/> |
| <param name="destDir" value="${lib.dir}/${dest.folder}"/> |
| <param name="destFile" value="${dest.filename}"/> |
| <param name="checksum" value="${src.checksum}"/> |
| </antcall> |
| </target> |
| |
| <target name="download-dependency-closure" depends="check-dependency-closure" unless="project.jar.exists" description="Downloads a jar to the lib directory."> |
| <antcall target="echo-project-jar"> |
| <param name="srcDomain" value="${src.server}"/> |
| <param name="srcPath" value="${src.folder}/${src.filename}"/> |
| </antcall> |
| <mkdir dir="${lib.dir}/${closure.dest.folder}"/> |
| |
| <antcall target="download-dependency-zip-closure"> |
| <param name="server" value="${src.server}"/> |
| <param name="folder" value="${src.folder}"/> |
| <param name="srcFileName" value="${src.filename}"/> |
| <param name="checksum" value="${src.checksum}"/> |
| </antcall> |
| |
| <copy file="${download.dir}/temp/${closure.name}.jar" toFile="${lib.dir}/${closure.dest.folder}/${closure.dest.filename}" verbose="true"/> |
| <copy file="${download.dir}/temp/README.md" toFile="${lib.dir}/${closure.dest.folder}/README.md" verbose="true"/> |
| |
| </target> |
| |
| <target name="download-dependency-jar" if="project.download.jar" description="Downloads a jar to the lib directory."> |
| <antcall target="download-jar"> |
| <param name="srcDomain" value="${server}"/> |
| <param name="srcFolder" value="${folder}"/> |
| <param name="cacheFolder" value="${folder}"/> |
| <param name="srcFile" value="${srcFileName}"/> |
| <param name="md5" value="${checksum}"/> |
| </antcall> |
| </target> |
| |
| <target name="download-dependency-zip" unless="project.download.jar" description="Downloads a zip to the lib directory."> |
| <antcall target="download-zip"> |
| <param name="srcDomain" value="${server}"/> |
| <param name="srcFolder" value="${folder}"/> |
| <param name="srcFile" value="${srcFileName}"/> |
| <param name="srcJarPath" value="${srcJarPath}"/> |
| <param name="md5" value="${checksum}"/> |
| </antcall> |
| </target> |
| |
| <target name="download-dependency-zip-closure" unless="project.download.jar" description="Downloads a zip to the lib directory."> |
| <antcall target="download-zip"> |
| <param name="srcDomain" value="${server}"/> |
| <param name="srcFolder" value="${folder}"/> |
| <param name="srcFile" value="${srcFileName}"/> |
| <param name="md5" value="${checksum}"/> |
| </antcall> |
| </target> |
| |
| <!-- |
| Download a zip or gz file, extracts the jar file, and optionally copies the jar |
| file to a different location and optinally verifies the checksum and optionally |
| caches the file, and optionally pulls the file from the cache instead of downloading. |
| If the checksum fails, this script fails. |
| |
| Params are: |
| srcDomain - the domain |
| srcFolder - path to file |
| srcFile - a .gz file for untar with gzip, else unzip |
| [md5] |
| [srcJarPath] - both src and dest required for the copy |
| [destDir] |
| [destFile] |
| |
| Note: This is purposely coded without <if><else><then> so that a dependency on |
| ant-contrib.jar isn't required. |
| --> |
| <target name="download-zip" depends="check-cache" description="Downloads tar/zip, and optionally verifies checksum and copies extracted jar."> |
| <mkdir dir="${download.dir}"/> |
| <antcall target="get-if-not-cached"> |
| <param name="destDir" value="${download.dir}"/> |
| <param name="destFile" value="${srcFile}"/> |
| <param name="message" value="Checksum mismatch for ${download.dir}/${srcFile}"/> |
| </antcall> |
| <antcall target="copy-if-cached"> |
| <param name="destDir" value="${download.dir}"/> |
| <param name="destFile" value="${srcFile}"/> |
| </antcall> |
| <condition property="zip.compressed"> |
| <matches string="${srcFile}" pattern="^*.zip$"/> |
| </condition> |
| <antcall target="untar-file"/> |
| <antcall target="unzip-file"/> |
| <condition property="destination.known"> |
| <and> |
| <isset property="srcJarPath"/> |
| <isset property="destDir"/> |
| <isset property="destFile"/> |
| </and> |
| </condition> |
| <antcall target="copy-downloaded-jar"/> |
| </target> |
| |
| <target name="download-bz2" depends="check-cache" description="Downloads bz2, and optionally verifies checksum and copies extracted jar."> |
| <mkdir dir="${download.dir}"/> |
| <antcall target="get-if-not-cached"> |
| <param name="destDir" value="${download.dir}"/> |
| <param name="destFile" value="${srcFile}"/> |
| <param name="message" value="Checksum mismatch for ${download.dir}/${srcFile}"/> |
| </antcall> |
| <antcall target="copy-if-cached"> |
| <param name="destDir" value="${download.dir}"/> |
| <param name="destFile" value="${srcFile}"/> |
| </antcall> |
| <untar src="${download.dir}/${srcFile}" dest="${download.dir}/temp" compression="bzip2"/> |
| <condition property="destination.known"> |
| <and> |
| <isset property="srcJarPath"/> |
| <isset property="destDir"/> |
| <isset property="destFile"/> |
| </and> |
| </condition> |
| <antcall target="copy-downloaded-jar"/> |
| </target> |
| |
| <!-- |
| Download a jar file and optionally verify the checksum. |
| If the checksum fails, this script fails. |
| |
| Params are: |
| srcDomain |
| srcFolder |
| srcFile |
| destDir |
| destFile |
| [md5] |
| --> |
| <target name="download-jar" depends="check-cache" description="Downloads jar, and optionally verifies checksum."> |
| <antcall target="get-if-not-cached"> |
| <param name="message" value="Checksum mismatch for ${destDir}/${destFile}"/> |
| </antcall> |
| <antcall target="copy-if-cached"/> |
| </target> |
| |
| <target name="untar-file" unless="zip.compressed" description="Untars zipFile"> |
| <untar src="${download.dir}/${srcFile}" dest="${download.dir}/temp" compression="gzip"/> |
| </target> |
| |
| <target name="unzip-file" if="zip.compressed" description="Unzips zipFile"> |
| <unzip src="${download.dir}/${srcFile}" dest="${download.dir}/temp"/> |
| </target> |
| |
| <target name="get-if-not-cached" unless="found-in-cache"> |
| <get src="${srcDomain}/${srcFolder}/${srcFile}" dest="${destDir}/${destFile}" ignoreerrors="true"/> |
| <!-- this is a different cache for the CI servers. It tries the network first, then the cache if failure --> |
| <antcall target="get-from-cache-if-needed" /> |
| <antcall target="fail-if-not-found" /> |
| <antcall target="check-sum"> |
| <param name="message" value="Checksum mismatch for ${destDir}/${destFile}"/> |
| </antcall> |
| <antcall target="put-in-cache"/> |
| </target> |
| |
| <target name="copy-if-cached" if="found-in-cache"> |
| <!-- this string comes from the Royale en_US.properties because for now, this |
| target won't get called unless this script is called from the Royale install --> |
| <echo>${INFO_USING_CACHED_FILE} ${downloadCacheFolder}/${srcFolder}/${srcFile}</echo> |
| <copy file="${downloadCacheFolder}/${srcFolder}/${srcFile}" tofile="${destDir}/${destFile}" overwrite="true"/> |
| </target> |
| |
| <target name="check-cache" if="usingDownloadCache"> |
| <available file="${downloadCacheFolder}/${srcFolder}/${srcFile}" property="found-in-cache"/> |
| </target> |
| |
| <target name="put-in-cache" if="usingDownloadCache"> |
| <copy tofile="${downloadCacheFolder}/${srcFolder}/${srcFile}" file="${destDir}/${destFile}"/> |
| </target> |
| |
| <target name="check-sum" if="md5" description="Verifies MD5 checksum, and fails if checksum doesn't match"> |
| <checksum file="${destDir}/${destFile}" algorithm="MD5" verifyproperty="we.failed" property="${md5}"/> |
| <fail message="${message}"> |
| <condition> |
| <equals arg1="${we.failed}" arg2="false"/> |
| </condition> |
| </fail> |
| </target> |
| |
| <target name="copy-downloaded-jar" if="destination.known"> |
| <mkdir dir="${lib.dir}"/> |
| <copy file="${download.dir}/temp/${srcJarPath}" toFile="${destDir}/${destFile}" verbose="true"/> |
| </target> |
| |
| <target name="fail-with-message" if="we.failed" description="Conditionally fails with the specified message"> |
| <fail message="${message}"/> |
| </target> |
| |
| <target name="fail-if-not-found"> |
| <fail message="${destDir}/${destFile} could not be downloaded or found in cache"> |
| <condition> |
| <not> |
| <available file="${destDir}/${destFile}" /> |
| </not> |
| </condition> |
| </fail> |
| </target> |
| |
| <target name="double-check-file" > |
| <condition property="still-no-file" value="true"> |
| <and> |
| <not> |
| <available file="${destDir}/${destFile}" /> |
| </not> |
| <isset property="env.ROYALE_DOWNLOAD_CACHE" /> |
| </and> |
| </condition> |
| <echo>Need file: ${still_no_file}</echo> |
| </target> |
| <target name="get-from-cache-if-needed" depends="double-check-file" if="still-no-file"> |
| <copy file="${env.ROYALE_DOWNLOAD_CACHE}/${srcFile}" tofile="${destDir}/${destFile}" /> |
| </target> |
| |
| |
| <!-- |
| Cleanup |
| --> |
| <target name="clean" description="Removes thirdparty downloads."> |
| <delete failonerror="false" includeEmptyDirs="true"> |
| <fileset dir="${download.dir}"/> |
| </delete> |
| </target> |
| |
| </project> |