blob: c1de18af278d9e50178f2786f0ab5ea91d375e27 [file] [log] [blame]
david_williams42f9b242006-11-27 18:45:14 +00001<?xml version="1.0" encoding="UTF-8"?>
ndaib8cedc82005-09-13 18:00:32 +00002<!--
david_williams1cff0e92006-11-23 00:40:29 +00003
4
5 dependency
6 This script get a library from a remote repository and stores it in a local cache.
7
8 The following properties are used by this script:
9
10 local.cache.dir - the absolute path to the local repository for the libraries
11 dependency.url : Url to a remote repository that will be used to download the library
12 dependency.file: Name of the library that is used. If the library is platform dependent
13 it must have suffixes such as: file.linux.gtk.x86
david_williams42f9b242006-11-27 18:45:14 +000014 These suffixes are the same as those used by releng baseos,basews,base arch
david_williams1cff0e92006-11-23 00:40:29 +000015 baseos= linux or win32
16 basews= gtk or win32
david_williams42f9b242006-11-27 18:45:14 +000017 base arch=x86 or ppc
david_williams1cff0e92006-11-23 00:40:29 +000018 dependency.name: A short user readable name for the library.
19 dependency.description: One line description for the library.
20 dependency.autodownload: [optional] default true. Set this to false if the file cannot be
21 downloaded automatically (i.e. requies license accept click through).
22 If autodownload is false, and the library is not avaialbe in the local
23 repository (cache). User must download the library and copy it into
24 the local repository.
25 dependency.releng.url: [optional] A mirror of the original repository. Useful for libraries
26 that can get deleted from their original URLs. Releng will use
27 the local cache, original url, releng.url in that order to get the
28 the dependency. If a releng.url is not provided, the library will
29 always be requested from itrs original site.
ndaib8cedc82005-09-13 18:00:32 +000030-->
david_williams403beae2007-12-09 02:10:40 +000031<project
32 name="dependency"
33 default="default">
david_williams1cff0e92006-11-23 00:40:29 +000034 <description>
david_williams403beae2007-12-09 02:10:40 +000035 This script get a library from a remote repository and stores it
36 in a local cache.
ndaib8cedc82005-09-13 18:00:32 +000037 </description>
38
39
david_williams1cff0e92006-11-23 00:40:29 +000040 <!-- =================================
41 target: default
42 ================================= -->
david_williams403beae2007-12-09 02:10:40 +000043 <target
44 name="default"
45 description="This script get a library from a remote repository and stores it in a local cache.">
david_williams1cff0e92006-11-23 00:40:29 +000046 <condition property="dependency.download.file">
47 <or>
48 <not>
49 <isset property="dependency.autodownload" />
50 </not>
51 <and>
52 <isset property="dependency.autodownload" />
david_williams403beae2007-12-09 02:10:40 +000053 <equals
54 arg1="${dependency.autodownload}"
55 arg2="true" />
david_williams1cff0e92006-11-23 00:40:29 +000056 </and>
57 </or>
58 </condition>
59 <antcall target="get" />
60 <antcall target="checkAutoDownload" />
61 </target>
ndaib8cedc82005-09-13 18:00:32 +000062
david_williams1cff0e92006-11-23 00:40:29 +000063 <!-- - - - - - - - - - - - - - - - - -
64 target: sub tasks
65 - - - - - - - - - - - - - - - - - -->
david_williams403beae2007-12-09 02:10:40 +000066 <target
67 name="get"
68 if="dependency.download.file">
david_williams1cff0e92006-11-23 00:40:29 +000069 <mkdir dir="${local.cache.dir}" />
david_williams403beae2007-12-09 02:10:40 +000070 <available
71 file="${local.cache.dir}/${dependency.file}"
72 property="local.cache.file.exists" />
david_williams1cff0e92006-11-23 00:40:29 +000073 <antcall target="download" />
74 </target>
ndaib8cedc82005-09-13 18:00:32 +000075
david_williams403beae2007-12-09 02:10:40 +000076 <target
77 name="checkAutoDownload"
78 unless="dependency.download.file">
79 <fail
80 unless="local.cache.file.exists"
81 message="The dependent file ${dependency.name}, must be manually downloaded and placed in ${local.cache.dir}." />
david_williams1cff0e92006-11-23 00:40:29 +000082 </target>
ndaib8cedc82005-09-13 18:00:32 +000083
david_williams403beae2007-12-09 02:10:40 +000084 <target
85 name="download"
86 unless="local.cache.file.exists">
87 <get
88 verbose="true"
89 src="${dependency.url}/${dependency.file}"
90 dest="${local.cache.dir}/${dependency.file}"
91 ignoreerrors="true" />
ndaib8cedc82005-09-13 18:00:32 +000092
david_williams1cff0e92006-11-23 00:40:29 +000093 <condition property="download.from.mirror">
94 <and>
95 <isset property="dependency.releng.url" />
96 <not>
david_williams403beae2007-12-09 02:10:40 +000097 <available
98 file="${local.cache.dir}/${dependency.file}" />
david_williams1cff0e92006-11-23 00:40:29 +000099 </not>
100 </and>
101 </condition>
102 <antcall target="downloadMirror" />
103 </target>
david_williams403beae2007-12-09 02:10:40 +0000104 <target
105 name="downloadMirror"
106 if="download.from.mirror">
107 <echo
108 message="Using mirror repository: ${main.url.file.exists}" />
109 <echo
110 message="Using mirror repository: ${dependency.releng.url}" />
111 <get
112 verbose="true"
113 src="${dependency.releng.url}/${dependency.file}"
114 dest="${local.cache.dir}/${dependency.file}" />
david_williams1cff0e92006-11-23 00:40:29 +0000115 </target>
ndaib8cedc82005-09-13 18:00:32 +0000116
117
david_williams1cff0e92006-11-23 00:40:29 +0000118 <!-- =================================
119 target: install
120 ================================= -->
121 <target name="install">
david_williams403beae2007-12-09 02:10:40 +0000122 <condition
123 property="file.type"
124 value="zip">
david_williams1cff0e92006-11-23 00:40:29 +0000125 <isfileselected file="${dependency.file}">
126 <selector>
127 <filename name="**/*.zip" />
128 </selector>
129 </isfileselected>
130 </condition>
david_williams403beae2007-12-09 02:10:40 +0000131 <condition
132 property="file.type"
133 value="tgz">
david_williams1cff0e92006-11-23 00:40:29 +0000134 <isfileselected file="${dependency.file}">
135 <selector>
136 <filename name="**/*.tar.gz" />
137 </selector>
138 </isfileselected>
139 </condition>
david_williams403beae2007-12-09 02:10:40 +0000140 <condition
141 property="file.type"
142 value="tgz">
david_williams1cff0e92006-11-23 00:40:29 +0000143 <isfileselected file="${dependency.file}">
144 <selector>
145 <filename name="**/*.tgz" />
146 </selector>
147 </isfileselected>
148 </condition>
david_williams403beae2007-12-09 02:10:40 +0000149 <condition
150 property="file.type"
151 value="tar">
david_williams1cff0e92006-11-23 00:40:29 +0000152 <isfileselected file="${dependency.file}">
153 <selector>
154 <filename name="**/*.tar" />
155 </selector>
156 </isfileselected>
157 </condition>
david_williams403beae2007-12-09 02:10:40 +0000158 <condition
159 property="file.type"
160 value="map">
david_williamsdf8c92e2007-02-17 04:55:27 +0000161 <isfileselected file="${dependency.file}">
162 <selector>
163 <filename name="**/*.map" />
164 </selector>
165 </isfileselected>
166 </condition>
david_williams403beae2007-12-09 02:10:40 +0000167 <condition
168 property="file.type"
169 value="jar">
david_williams948bf552007-02-26 05:17:22 +0000170 <isfileselected file="${dependency.file}">
171 <selector>
172 <filename name="**/*.jar" />
173 </selector>
174 </isfileselected>
175 </condition>
ndaib8cedc82005-09-13 18:00:32 +0000176
david_williams1cff0e92006-11-23 00:40:29 +0000177 <antcall target="install-${file.type}" />
178 </target>
ndaib8cedc82005-09-13 18:00:32 +0000179
david_williams1cff0e92006-11-23 00:40:29 +0000180 <target name="install-tar">
david_williams403beae2007-12-09 02:10:40 +0000181 <untar
182 dest="${install.destination}"
183 src="${local.cache.dir}/${dependency.file}"
184 overwrite="true" />
david_williams1cff0e92006-11-23 00:40:29 +0000185 </target>
186 <target name="install-tgz">
david_williams403beae2007-12-09 02:10:40 +0000187 <untar
188 dest="${install.destination}"
189 src="${local.cache.dir}/${dependency.file}"
190 compression="gzip"
191 overwrite="true" />
david_williams1cff0e92006-11-23 00:40:29 +0000192 </target>
193 <target name="install-zip">
david_williams403beae2007-12-09 02:10:40 +0000194 <unzip
195 dest="${install.destination}"
196 src="${local.cache.dir}/${dependency.file}"
197 overwrite="true" />
david_williams1cff0e92006-11-23 00:40:29 +0000198 </target>
david_williamsdf8c92e2007-02-17 04:55:27 +0000199 <target name="install-map">
david_williams403beae2007-12-09 02:10:40 +0000200 <copy
201 todir="${install.destination}"
202 file="${local.cache.dir}/${dependency.file}"
203 overwrite="true" />
david_williamsdf8c92e2007-02-17 04:55:27 +0000204 </target>
david_williams948bf552007-02-26 05:17:22 +0000205 <target name="install-jar">
david_williams403beae2007-12-09 02:10:40 +0000206 <copy
207 todir="${install.destination}"
208 file="${local.cache.dir}/${dependency.file}"
209 overwrite="true" />
david_williams948bf552007-02-26 05:17:22 +0000210 </target>
ndaib8cedc82005-09-13 18:00:32 +0000211
david_williams1cff0e92006-11-23 00:40:29 +0000212 <target name="checkDependency">
david_williams403beae2007-12-09 02:10:40 +0000213 <dirname
214 file="${ant.file}"
215 property="dependency.dir" />
ndaib8cedc82005-09-13 18:00:32 +0000216
david_williams403beae2007-12-09 02:10:40 +0000217 <copy
218 tofile="${buildDirectory}/dependency.${groupId}.xml"
219 overwrite="true">
david_williams1cff0e92006-11-23 00:40:29 +0000220 <fileset dir="${dependency.dir}">
221 <include name="template.xml" />
222 </fileset>
223 </copy>
david_williams403beae2007-12-09 02:10:40 +0000224 <echo
225 message="Creating dependency script: ${buildDirectory}/dependency.${groupId}.xml " />
226 <replace
227 file="${buildDirectory}/dependency.${groupId}.xml"
228 value="${groupId}.">
david_williams1cff0e92006-11-23 00:40:29 +0000229 <replacetoken>@dependencyGroupId@</replacetoken>
230 </replace>
david_williams403beae2007-12-09 02:10:40 +0000231 <replace
232 file="${buildDirectory}/dependency.${groupId}.xml"
233 value="${dependency.dir}">
david_williams1cff0e92006-11-23 00:40:29 +0000234 <replacetoken>@dependencyDir@</replacetoken>
235 </replace>
david_williams403beae2007-12-09 02:10:40 +0000236 <replace
237 file="${buildDirectory}/dependency.${groupId}.xml"
238 value="${dependency.properties}">
david_williams1cff0e92006-11-23 00:40:29 +0000239 <replacetoken>@dependencyProperties@</replacetoken>
240 </replace>
david_williams403beae2007-12-09 02:10:40 +0000241 <ant
242 antfile="${buildDirectory}/dependency.${groupId}.xml"
243 target="get" />
ndaib8cedc82005-09-13 18:00:32 +0000244
david_williams1cff0e92006-11-23 00:40:29 +0000245 <!--
david_williams403beae2007-12-09 02:10:40 +0000246 <delete failonerror="false">
david_williams1cff0e92006-11-23 00:40:29 +0000247 <fileset dir=".">
david_williams403beae2007-12-09 02:10:40 +0000248 <include name="${buildDirectory}/dependency.${groupId}.xml" />
david_williams1cff0e92006-11-23 00:40:29 +0000249 </fileset>
david_williams403beae2007-12-09 02:10:40 +0000250 </delete>
251 -->
ndaib8cedc82005-09-13 18:00:32 +0000252
253
david_williams1cff0e92006-11-23 00:40:29 +0000254 </target>
ndaib8cedc82005-09-13 18:00:32 +0000255
david_williams1cff0e92006-11-23 00:40:29 +0000256 <target name="installDependency">
david_williams403beae2007-12-09 02:10:40 +0000257 <dirname
258 file="${ant.file}"
259 property="dependency.dir" />
ndaib8cedc82005-09-13 18:00:32 +0000260
david_williams1cff0e92006-11-23 00:40:29 +0000261 <copy tofile="${buildDirectory}/dependency.${groupId}.xml">
262 <fileset dir="${dependency.dir}">
263 <include name="template.xml" />
264 </fileset>
265 </copy>
david_williams403beae2007-12-09 02:10:40 +0000266 <replace
267 file="${buildDirectory}/dependency.${groupId}.xml"
268 value="${groupId}.">
david_williams1cff0e92006-11-23 00:40:29 +0000269 <replacetoken>@dependencyGroupId@</replacetoken>
270 </replace>
david_williams403beae2007-12-09 02:10:40 +0000271 <replace
272 file="${buildDirectory}/dependency.${groupId}.xml"
273 value="${dependency.dir}">
david_williams1cff0e92006-11-23 00:40:29 +0000274 <replacetoken>@dependencyDir@</replacetoken>
275 </replace>
david_williams403beae2007-12-09 02:10:40 +0000276 <replace
277 file="${buildDirectory}/dependency.${groupId}.xml"
278 value="${dependency.properties}">
david_williams1cff0e92006-11-23 00:40:29 +0000279 <replacetoken>@dependencyProperties@</replacetoken>
280 </replace>
david_williams403beae2007-12-09 02:10:40 +0000281 <ant
282 antfile="${buildDirectory}/dependency.${groupId}.xml"
283 target="install">
284 <property
285 name="install.destination"
286 value="${install.destination}" />
david_williams1cff0e92006-11-23 00:40:29 +0000287 </ant>
ndaib8cedc82005-09-13 18:00:32 +0000288
david_williams1cff0e92006-11-23 00:40:29 +0000289 <!--
david_williams403beae2007-12-09 02:10:40 +0000290 <delete failonerror="false">
david_williams1cff0e92006-11-23 00:40:29 +0000291 <fileset dir=".">
david_williams403beae2007-12-09 02:10:40 +0000292 <include name="${buildDirectory}/dependency.${groupId}.xml" />
david_williams1cff0e92006-11-23 00:40:29 +0000293 </fileset>
david_williams403beae2007-12-09 02:10:40 +0000294 </delete>
david_williams1cff0e92006-11-23 00:40:29 +0000295 -->
296 </target>
ndaib8cedc82005-09-13 18:00:32 +0000297
298
299</project>
300