| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| |
| |
| dependency |
| This script get a library from a remote repository and stores it in a local cache. |
| |
| The following properties are used by this script: |
| |
| local.cache.dir - the absolute path to the local repository for the libraries |
| dependency.url : Url to a remote repository that will be used to download the library |
| dependency.file: Name of the library that is used. If the library is platform dependent |
| it must have suffixes such as: file.linux.gtk.x86 |
| These suffixes are the same as those used by releng baseos,basews,base arch |
| baseos= linux or win32 |
| basews= gtk or win32 |
| base arch=x86 or ppc |
| dependency.name: A short user readable name for the library. |
| dependency.description: One line description for the library. |
| dependency.autodownload: [optional] default true. Set this to false if the file cannot be |
| downloaded automatically (i.e. requies license accept click through). |
| If autodownload is false, and the library is not avaialbe in the local |
| repository (cache). User must download the library and copy it into |
| the local repository. |
| dependency.releng.url: [optional] A mirror of the original repository. Useful for libraries |
| that can get deleted from their original URLs. Releng will use |
| the local cache, original url, releng.url in that order to get the |
| the dependency. If a releng.url is not provided, the library will |
| always be requested from itrs original site. |
| --> |
| <project name="dependency" default="default"> |
| <description> |
| This script get a library from a remote repository and stores it in a |
| local cache. |
| </description> |
| |
| |
| <!-- ================================= |
| target: default |
| ================================= --> |
| <target name="default" |
| description="This script get a library from a remote repository and stores it in a local cache."> |
| <condition property="dependency.download.file"> |
| <or> |
| <not> |
| <isset property="dependency.autodownload" /> |
| </not> |
| <and> |
| <isset property="dependency.autodownload" /> |
| <equals arg1="${dependency.autodownload}" |
| arg2="true" /> |
| </and> |
| </or> |
| </condition> |
| <antcall target="get" /> |
| <antcall target="checkAutoDownload" /> |
| </target> |
| |
| <!-- - - - - - - - - - - - - - - - - - |
| target: sub tasks |
| - - - - - - - - - - - - - - - - - --> |
| <target name="get" if="dependency.download.file"> |
| <mkdir dir="${local.cache.dir}" /> |
| <available file="${local.cache.dir}/${dependency.file}" |
| property="local.cache.file.exists" /> |
| <antcall target="download" /> |
| </target> |
| |
| <target name="checkAutoDownload" |
| unless="dependency.download.file"> |
| <fail unless="local.cache.file.exists" |
| message="The dependent file ${dependency.name}, must be manually downloaded and placed in ${local.cache.dir}." /> |
| </target> |
| |
| <target name="download" |
| unless="local.cache.file.exists"> |
| <get verbose="true" |
| src="${dependency.url}/${dependency.file}" |
| dest="${local.cache.dir}/${dependency.file}" |
| ignoreerrors="true" /> |
| |
| <condition property="download.from.mirror"> |
| <and> |
| <isset property="dependency.releng.url" /> |
| <not> |
| <available file="${local.cache.dir}/${dependency.file}" /> |
| </not> |
| </and> |
| </condition> |
| <antcall target="downloadMirror" /> |
| </target> |
| <target name="downloadMirror" if="download.from.mirror"> |
| <echo message="Using mirror repository: ${main.url.file.exists}" /> |
| <echo message="Using mirror repository: ${dependency.releng.url}" /> |
| <get verbose="true" |
| src="${dependency.releng.url}/${dependency.file}" |
| dest="${local.cache.dir}/${dependency.file}" /> |
| </target> |
| |
| |
| <!-- ================================= |
| target: install |
| ================================= --> |
| <target name="install"> |
| <condition property="file.type" value="zip"> |
| <isfileselected file="${dependency.file}"> |
| <selector> |
| <filename name="**/*.zip" /> |
| </selector> |
| </isfileselected> |
| </condition> |
| <condition property="file.type" value="tgz"> |
| <isfileselected file="${dependency.file}"> |
| <selector> |
| <filename name="**/*.tar.gz" /> |
| </selector> |
| </isfileselected> |
| </condition> |
| <condition property="file.type" value="tgz"> |
| <isfileselected file="${dependency.file}"> |
| <selector> |
| <filename name="**/*.tgz" /> |
| </selector> |
| </isfileselected> |
| </condition> |
| <condition property="file.type" value="tar"> |
| <isfileselected file="${dependency.file}"> |
| <selector> |
| <filename name="**/*.tar" /> |
| </selector> |
| </isfileselected> |
| </condition> |
| <condition property="file.type" value="map"> |
| <isfileselected file="${dependency.file}"> |
| <selector> |
| <filename name="**/*.map" /> |
| </selector> |
| </isfileselected> |
| </condition> |
| <condition property="file.type" value="jar"> |
| <isfileselected file="${dependency.file}"> |
| <selector> |
| <filename name="**/*.jar" /> |
| </selector> |
| </isfileselected> |
| </condition> |
| |
| <antcall target="install-${file.type}" /> |
| </target> |
| |
| <target name="install-tar"> |
| <untar dest="${install.destination}" |
| src="${local.cache.dir}/${dependency.file}" |
| overwrite="true" /> |
| </target> |
| <target name="install-tgz"> |
| <untar dest="${install.destination}" |
| src="${local.cache.dir}/${dependency.file}" |
| compression="gzip" |
| overwrite="true" /> |
| </target> |
| <target name="install-zip"> |
| <unzip dest="${install.destination}" |
| src="${local.cache.dir}/${dependency.file}" |
| overwrite="true" /> |
| </target> |
| <target name="install-map"> |
| <copy todir="${install.destination}" |
| file="${local.cache.dir}/${dependency.file}" |
| overwrite="true" /> |
| </target> |
| <target name="install-jar"> |
| <copy todir="${install.destination}" |
| file="${local.cache.dir}/${dependency.file}" |
| overwrite="true" /> |
| </target> |
| |
| <target name="checkDependency"> |
| <dirname file="${ant.file}" |
| property="dependency.dir" /> |
| |
| <copy tofile="${buildDirectory}/dependency.${groupId}.xml" |
| overwrite="true"> |
| <fileset dir="${dependency.dir}"> |
| <include name="template.xml" /> |
| </fileset> |
| </copy> |
| <echo message="Creating dependency script: ${buildDirectory}/dependency.${groupId}.xml " /> |
| <replace file="${buildDirectory}/dependency.${groupId}.xml" |
| value="${groupId}."> |
| <replacetoken>@dependencyGroupId@</replacetoken> |
| </replace> |
| <replace file="${buildDirectory}/dependency.${groupId}.xml" |
| value="${dependency.dir}"> |
| <replacetoken>@dependencyDir@</replacetoken> |
| </replace> |
| <replace file="${buildDirectory}/dependency.${groupId}.xml" |
| value="${dependency.properties}"> |
| <replacetoken>@dependencyProperties@</replacetoken> |
| </replace> |
| <ant antfile="${buildDirectory}/dependency.${groupId}.xml" |
| target="get" /> |
| |
| <!-- |
| <delete failonerror="false"> |
| <fileset dir="."> |
| <include name="${buildDirectory}/dependency.${groupId}.xml" /> |
| </fileset> |
| </delete> |
| --> |
| |
| |
| </target> |
| |
| <target name="installDependency"> |
| <dirname file="${ant.file}" |
| property="dependency.dir" /> |
| |
| <copy tofile="${buildDirectory}/dependency.${groupId}.xml"> |
| <fileset dir="${dependency.dir}"> |
| <include name="template.xml" /> |
| </fileset> |
| </copy> |
| <replace file="${buildDirectory}/dependency.${groupId}.xml" |
| value="${groupId}."> |
| <replacetoken>@dependencyGroupId@</replacetoken> |
| </replace> |
| <replace file="${buildDirectory}/dependency.${groupId}.xml" |
| value="${dependency.dir}"> |
| <replacetoken>@dependencyDir@</replacetoken> |
| </replace> |
| <replace file="${buildDirectory}/dependency.${groupId}.xml" |
| value="${dependency.properties}"> |
| <replacetoken>@dependencyProperties@</replacetoken> |
| </replace> |
| <ant antfile="${buildDirectory}/dependency.${groupId}.xml" |
| target="install"> |
| <property name="install.destination" |
| value="${install.destination}" /> |
| </ant> |
| |
| <!-- |
| <delete failonerror="false"> |
| <fileset dir="."> |
| <include name="${buildDirectory}/dependency.${groupId}.xml" /> |
| </fileset> |
| </delete> |
| --> |
| </target> |
| |
| |
| </project> |
| |