Release 4.4.5
[cyberduck.git] / build-mac.xml
blob5cec45a25be92c5370d1621f3197d14d3c2117cc
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  *      Simple Ant (http://jakarta.apache.org/ant) build script for Cyberduck
4  *
5  *      $Revision: 6757 $
6  *      $Date: 2010-08-25 13:25:44 +0200 (Mi, 25 Aug 2010) $
7  *
8  *  Copyright (c) 2005-2012 David Kocher. All rights reserved.
9  *  http://cyberduck.io/
10  *
11  *      This program is free software; you can redistribute it and/or modify
12  *      it under the terms of the GNU General Public License as published by
13  *      the Free Software Foundation; either version 2 of the License, or
14  *      (at your option) any later version.package
15  *
16  *      This program is distributed in the hope that it will be useful,
17  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
18  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  *      GNU General Public License for more details.
20  *
21  *      Bug fixes, suggestions and comments should be sent to:
22  *      dkocher@cyberduck.io
23  -->
24 <project name="Cyberduck for Mac" basedir=".">
26     <import file="build.xml"/>
28     <property name="build.deploy" location="${build}/${configuration}"/>
30     <property name="app.bundle" value="${build.deploy}/${app.name}.app"/>
31     <property name="app.contents" value="${app.bundle}/Contents"/>
32     <property name="app.macos" location="${app.contents}/MacOS"/>
33     <property name="app.executable" location="${app.macos}/${ant.project.name}"/>
34     <property name="app.library" value="${app.contents}/Library"/>
35     <property name="app.frameworks" value="${app.contents}/Frameworks"/>
36     <property name="app.resources" value="${app.contents}/Resources"/>
37     <property name="app.profiles" value="${app.resources}/Profiles"/>
38     <property name="app.bookmarks" value="${app.resources}/Bookmarks"/>
39     <property name="app.java" value="${app.resources}/Java"/>
40     <property name="app.runtime" value="${app.java}/Runtime.jre"/>
41     <property name="app.runtime.lib"
42               value="@executable_path/../Resources/Java/Runtime.jre/Contents/Home/lib/server/libjvm.dylib"/>
43     <property name="app.runtime.properties.key" value="Runtime"/>
44     <property name="app.runtime.system.min" value="10.6"/>
46     <property name="app.spotlight" value="${app.library}/Spotlight"/>
47     <property name="app.spotlight.executable"
48               value="${app.spotlight}/Cyberduck Spotlight Importer.mdimporter/Contents/MacOS/Cyberduck Spotlight Importer"/>
50     <property name="apple.appstub"
51               location="/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub"/>
53     <property name="jvm.runtime.home" value="${lib}/1.7.0-u40-b30.jre"/>
54     <property name="jvm.runtime.bundle.home" value="${jvm.runtime.home}/Contents/Home"/>
55     <property name="jvm.runtime.bundle.lib" value="${jvm.runtime.home}/Contents/Home/lib"/>
57     <property name="codesign.certificate" value="Developer ID Application: David Kocher"/>
58     <property name="codesign.keychain" value="${user.home}/Library/Keychains/codesign.keychain"/>
59     <property name="codesign.entitlements" value="${home}/sandbox.plist"/>
60     <property name="codesign.resources" value="${home}/codesign-resources.plist"/>
61     <!-- Designated requirement -->
62     <property name="codesign.requirement.source" value="${home}/codesign-requirement.txt"/>
63     <property name="codesign.requirement" value="${home}/codesign-requirement.bin"/>
64     <property name="codesign.options" value="--timestamp=none --force"/>
65     <property name="codesign.arg"
66               value="--entitlements ${codesign.entitlements} --requirements ${codesign.requirement} --resource-rules ${codesign.resources}"/>
68     <property name="keychain.password" value=""/>
70     <property name="installer.certificate" value="3rd Party Mac Developer Installer: David Kocher (G69SCX94XU)"/>
71     <property name="installer.keychain" value="${user.home}/Library/Keychains/codesign.keychain"/>
73     <property name="sparkle.feed" value="/dev/null"/>
75     <property name="spotlight" value="${home}/Spotlight Importer"/>
76     <property name="build.spotlight" value="${spotlight}/build/${configuration}"/>
78     <property name="build.sdk.version" value="macosx10.9"/>
79     <property name="build.xcodeoptions" value="SDKROOT=macosx MACOSX_DEPLOYMENT_TARGET=10.6"/>
81     <property name="build.lipo.binaries" value="**/Contents/MacOS/*,**/*.framework/Versions/Current/*,**/*.dylib"/>
82     <property name="build.lipo.arch.remove" value=""/>
84     <target name="spotlight">
85         <exec dir="${spotlight}" executable="/usr/bin/xcrun" spawn="false" failonerror="true">
86             <arg line="-sdk ${build.sdk.version} xcodebuild -project 'Spotlight Importer.xcodeproj' -configuration ${configuration}"/>
87         </exec>
88         <copy todir="${app.spotlight}">
89             <fileset dir="${build.spotlight}">
90                 <include name="*.mdimporter/**"/>
91             </fileset>
92         </copy>
93         <chmod perm="a+x" type="file">
94             <fileset dir="${app.spotlight}">
95                 <include name="**/MacOS/*"/>
96             </fileset>
97         </chmod>
98     </target>
100     <target name="build" depends="archive" description="Compile, jar and copy to application bundle">
101         <copy todir="${build.deploy}">
102             <fileset dir="${build}">
103                 <include name="*.jar"/>
104             </fileset>
105             <fileset dir="${lib}">
106                 <include name="*.dylib"/>
107                 <include name="*.jar"/>
108             </fileset>
109         </copy>
110         <copy todir="${build.deploy}">
111             <fileset dir="${home}">
112                 <include name="Info.plist"/>
113             </fileset>
114         </copy>
115         <replace dir="${build.deploy}" summary="true" encoding="UTF-8">
116             <include name="Info.plist"/>
117             <replacefilter token="_REVISION_" value="${svn.revision}"/>
118             <replacefilter token="_VERSION_" value="${cyberduck.version.major}.${cyberduck.version.minor}"/>
119             <replacefilter token="_RUNTIME_" value="${app.runtime.properties.key}"/>
120             <replacefilter token="_MINIMUM_SYSTEM_" value="${app.runtime.system.min}"/>
121             <replacefilter token="_SPARKLEFEED_" value="${sparkle.feed}"/>
122         </replace>
123         <mkdir dir="${app.profiles}"/>
124         <mkdir dir="${app.bookmarks}"/>
125         <exec dir="${home}" executable="/usr/bin/xcrun" spawn="false" failonerror="true">
126             <arg line="-sdk ${build.sdk.version} xcodebuild -project ${app.name}.xcodeproj -configuration ${configuration} -target app ${build.xcodeoptions}"/>
127         </exec>
128         <copy todir="${app.java}">
129             <fileset dir="${build.deploy}">
130                 <include name="*.dylib"/>
131                 <include name="*.jar"/>
132             </fileset>
133         </copy>
134         <!-- Copy runtime -->
135         <antcall target="copy-runtime"/>
136         <!-- Copy stub for system runtime -->
137         <antcall target="copy-stub"/>
138         <!-- Remove architectures -->
139         <taskdef resource="net/sf/antcontrib/antcontrib.properties">
140             <classpath path="${lib.ext}/ant-contrib-1.0b3.jar"/>
141         </taskdef>
142         <foreach target="lipo" param="arch" list="${build.lipo.arch.remove}"/>
144         <antcall target="spotlight"/>
146         <echo message="_VERSION_=${cyberduck.version.major}.${cyberduck.version.minor}"/>
147         <echo message="_REVISION_=${svn.revision}"/>
148         <echo message="_SPARKLEFEED_=${sparkle.feed}"/>
149     </target>
151     <target name="distribution-sparkle">
152         <antcall target="codesign">
153             <param name="codesign.options" value="--force"/>
154             <!-- No sandboxing enabled -->
155             <param name="codesign.arg"
156                    value="--requirements ${codesign.requirement} --resource-rules ${codesign.resources}"/>
157             <param name="codesign.certificate" value="Developer ID Application: David Kocher"/>
158         </antcall>
159         <antcall target="tar">
160             <param name="tar.filename" value="${app.name}-${svn.revision}.tar.gz"/>
161         </antcall>
162         <antcall target="zip">
163             <param name="zip.filename" value="${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}.zip"/>
164         </antcall>
165         <antcall target="sparkle-feed"/>
166     </target>
168     <target name="sparkle-feed" depends="timestamp">
169         <copy todir="${build}" overwrite="true">
170             <fileset dir="${www.update}">
171                 <include name="changelog.rss"/>
172             </fileset>
173         </copy>
175         <echo message="_ARCHIVE_=${url.archive}"/>
176         <echo message="_CHANGELOG_=${url.changelog}"/>
178         <checksum file="${build}/${app.name}-${svn.revision}.tar.gz"
179                   algorithm="md5" property="md5sum"/>
180         <echo message="_MD5SUM_=${md5sum}"/>
182         <echo message="Calculating DSA signature..."/>
183         <exec dir="${home}" executable="sh" outputproperty="signature.dsa" failonerror="true">
184             <arg value="-o"/>
185             <arg value="pipefail"/>
186             <arg value="-c"/>
187             <arg value="openssl dgst -sha1 -binary '${build}/${app.name}-${svn.revision}.tar.gz' | openssl dgst -dss1 -sign ${www.update}/private.pem | openssl enc -base64"/>
188         </exec>
189         <property name="signature.dsa" value="${signature.dsa}"/>
190         <echo message="_DSASIGNATURE_=${signature.dsa}"/>
192         <replace dir="${build}" summary="true" encoding="UTF-8">
193             <include name="changelog.rss"/>
194             <replacefilter token="_TIMESTAMP_" value="${touch.time}"/>
195             <replacefilter token="_ARCHIVE_" value="${url.archive}"/>
196             <replacefilter token="_CHANGELOG_" value="${url.changelog}"/>
197             <replacefilter token="_REVISION_" value="${svn.revision}"/>
198             <replacefilter token="_VERSION_" value="${cyberduck.version.major}.${cyberduck.version.minor}"/>
199             <replacefilter token="_DSASIGNATURE_" value="${signature.dsa}"/>
200         </replace>
201     </target>
203     <target name="distribution-mas">
204         <replace dir="${app.contents}" summary="true" encoding="UTF-8">
205             <include name="Info.plist"/>
206             <!-- Disable Sparkle Keys -->
207             <replacefilter token="SU" value="None"/>
208         </replace>
209         <delete dir="${app.frameworks}/Sparkle.framework"/>
210         <antcall target="codesign">
211             <param name="codesign.options" value="--force"/>
212             <param name="codesign.arg"
213                    value="--entitlements ${codesign.entitlements} --resource-rules ${codesign.resources}"/>
214             <param name="codesign.certificate" value="3rd Party Mac Developer Application: David Kocher (G69SCX94XU)"/>
215         </antcall>
216         <echo message="Building ${build}/${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}.pkg"/>
217         <property name="build.absolute" location="${build}"/>
218         <exec dir="${build.deploy}" executable="/usr/bin/productbuild" spawn="false" failonerror="true">
219             <arg line="--component ${app.bundle} /Applications --version ${cyberduck.version.major}.${cyberduck.version.minor} --sign '${installer.certificate}' --keychain ${installer.keychain} ${build.absolute}/${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}.pkg"/>
220         </exec>
221         <checksum file="${build}/${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}.pkg"
222                   algorithm="md5"/>
223     </target>
225     <target name="lipo">
226         <echo message="Remove ${arch} slice from ${build.lipo.binaries}"/>
227         <apply executable="/usr/bin/lipo" failonerror="false" dest="${app.bundle}"
228                parallel="false" spawn="false" force="true">
229             <!--Remove from executables-->
230             <!--Remove from frameworks-->
231             <!--Remove from shared libraries-->
232             <fileset dir="${app.bundle}" includes="${build.lipo.binaries}"/>
233             <arg line="-remove ${arch} -output"/>
234             <srcfile/>
235             <targetfile/>
236             <identitymapper/>
237         </apply>
238     </target>
240     <target name="install" depends="mas">
241         <exec executable="/usr/bin/sudo" spawn="false" failonerror="true">
242             <arg line="installer -store -pkg ${build}/${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}.pkg -target /"/>
243         </exec>
244     </target>
246     <target name="copy-runtime" depends="bundle-runtime-eval" if="app.runtime.bundle">
247         <echo message="Copy runtime from ${jvm.runtime.home}..."/>
248         <copy todir="${app.runtime}" preservelastmodified="true">
249             <fileset followsymlinks="false" dir="${jvm.runtime.home}">
250                 <exclude name="Contents/Home/bin/**"/>
251                 <exclude name="Contents/Home/man/**"/>
252                 <exclude name="Contents/Home/lib/applet/**"/>
253                 <exclude name="Contents/Home/lib/servicetag/**"/>
254                 <exclude name="Contents/Home/lib/management/**"/>
255                 <exclude name="Contents/Home/lib/management-agent.jar"/>
256                 <exclude name="Contents/Home/lib/images/**"/>
257                 <exclude name="Contents/Home/lib/xawt/**"/>
258                 <exclude name="Contents/Home/lib/lwawt/**"/>
259                 <exclude name="Contents/Home/lib/client/**"/>
260                 <exclude name="Contents/Home/lib/headless/**"/>
261                 <exclude name="Contents/Home/lib/JObjC.jar"/>
262                 <exclude name="Contents/Home/lib/libJObjC.dylib"/>
263                 <exclude name="Contents/Home/lib/libsplashscreen.dylib"/>
264                 <exclude name="Contents/Home/lib/cmm/**"/>
265                 <exclude name="Contents/Home/lib/liblcms.dylib"/>
266                 <exclude name="Contents/Home/lib/libjava_crw_demo.dylib"/>
267                 <exclude name="Contents/Home/lib/libmlib_image.dylib"/>
268                 <exclude name="Contents/Home/lib/libfreetype.dylib"/>
269                 <exclude name="Contents/Home/lib/libmanagement.dylib"/>
270                 <exclude name="Contents/Home/lib/libfontmanager.dylib"/>
271                 <exclude name="Contents/Home/lib/libAppleScriptEngine.dylib"/>
272                 <exclude name="Contents/Home/lib/fontconfig.*"/>
273                 <exclude name="Contents/Home/lib/libawt.dylib"/>
274                 <exclude name="Contents/Home/lib/libawt_lwawt.dylib"/>
275                 <exclude name="Contents/Home/lib/libjawt.dylib"/>
276                 <exclude name="Contents/Home/lib/libhprof.dylib"/>
277                 <exclude name="Contents/Home/lib/libinstrument.dylib"/>
278                 <exclude name="Contents/Home/lib/libjsound.dylib"/>
279                 <exclude name="Contents/Home/lib/rhino.jar"/>
280                 <exclude name="Contents/Home/lib/server/*.diz"/>
281             </fileset>
282         </copy>
283         <antcall target="shared-library-install-name">
284             <param name="oldname" value="/System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM"/>
285             <param name="newname" value="${app.runtime.lib}"/>
286         </antcall>
287     </target>
289     <target name="shared-library-install-name">
290         <echo message="Change dynamic shared library install names to ${newname}"/>
291         <apply executable="/usr/bin/install_name_tool" failonerror="true"
292                type="file"
293                parallel="false" spawn="false" force="true">
294             <arg line="-change ${oldname} ${newname}"/>
295             <fileset dir="${app.java}">
296                 <include name="*.dylib"/>
297             </fileset>
298             <srcfile/>
299         </apply>
300     </target>
302     <target name="codesign" depends="unlock-keychain,compile-codesign-requirement">
303         <echo message="Code signing ${app.bundle} with certificate ${codesign.certificate} and entitlements ${codesign.arg}..."/>
304         <apply executable="/usr/bin/codesign" failonerror="true"
305                type="both"
306                parallel="false" spawn="false" force="true">
307             <arg line="${codesign.options} --identifier ch.sudo.cyberduck --sign '${codesign.certificate}' --keychain ${codesign.keychain} ${codesign.arg} -v"/>
308             <fileset dir="${app.java}">
309                 <include name="*.dylib"/>
310             </fileset>
311             <srcfile/>
312         </apply>
313         <apply executable="/usr/bin/codesign" failonerror="true"
314                type="both"
315                parallel="false" spawn="false" force="true">
316             <arg line="${codesign.options} --identifier net.java.openjdk.jre --sign '${codesign.certificate}' --keychain ${codesign.keychain} -v"/>
317             <fileset dir="${app.runtime}" erroronmissingdir="false">
318                 <include name="**/*.dylib"/>
319             </fileset>
320             <fileset dir="${app.java}">
321                 <include name="*.jre"/>
322             </fileset>
323             <srcfile/>
324         </apply>
325         <apply executable="/usr/bin/codesign" failonerror="true"
326                type="both"
327                parallel="false" spawn="false" force="true">
328             <arg line="${codesign.options} --sign '${codesign.certificate}' --keychain ${codesign.keychain} -v"/>
329             <fileset dir="${app.spotlight}">
330                 <include name="*.mdimporter"/>
331             </fileset>
332             <srcfile/>
333         </apply>
334         <apply executable="/usr/bin/codesign" failonerror="true"
335                type="both"
336                parallel="false" spawn="false" force="true">
337             <arg line="${codesign.options} --sign '${codesign.certificate}' --keychain ${codesign.keychain} -v"/>
338             <fileset dir="${app.frameworks}">
339                 <include name="Growl.framework/Versions/A"/>
340             </fileset>
341             <srcfile/>
342         </apply>
343         <apply executable="/usr/bin/codesign" failonerror="true"
344                type="both"
345                parallel="false" spawn="false" force="true">
346             <arg line="${codesign.options} --sign '${codesign.certificate}' --keychain ${codesign.keychain} -v"/>
347             <fileset dir="${app.frameworks}">
348                 <include name="Sparkle.framework/Versions/A"/>
349             </fileset>
350             <srcfile/>
351         </apply>
352         <apply executable="/usr/bin/codesign" failonerror="false"
353                type="both"
354                parallel="false" spawn="false" force="true">
355             <arg line="${codesign.options} --sign '${codesign.certificate}' --keychain ${codesign.keychain} ${codesign.arg} -v"/>
356             <fileset dir="${build.deploy}">
357                 <include name="${app.name}.app"/>
358             </fileset>
359             <srcfile/>
360         </apply>
361         <antcall target="verify-signature"/>
362     </target>
364     <target name="unlock-keychain">
365         <exec executable="/usr/bin/security" failonerror="true">
366             <arg line="unlock-keychain -p ${keychain.password} ${codesign.keychain}"/>
367         </exec>
368     </target>
370     <target name="compile-codesign-requirement">
371         <echo message="Compile codesign requirement ${codesign.requirement}..."/>
372         <exec executable="/usr/bin/csreq" failonerror="true">
373             <arg line="-r ${codesign.requirement.source} -b ${codesign.requirement}"/>
374         </exec>
375     </target>
377     <target name="verify-signature">
378         <echo message="Print codesign requirement for ${app.bundle}..."/>
379         <exec executable="/usr/bin/codesign" failonerror="true">
380             <arg line="-d -r- --deep-verify ${app.bundle}"/>
381         </exec>
382     </target>
384     <target name="tar">
385         <echo message="Creating tar.gz archive..."/>
386         <exec dir="${build.deploy}" executable="tar" spawn="false" failonerror="true">
387             <arg line="-czf ../${tar.filename} ${app.name}.app"/>
388         </exec>
389         <echo message="Calculating MD5 sum..."/>
390         <checksum file="${build}/${tar.filename}" algorithm="md5"/>
391     </target>
393     <target name="bundle-runtime-eval">
394         <echo message="Runtime property is set to ${app.runtime.properties.key}"/>
395         <condition property="app.runtime.bundle" value="true">
396             <and>
397                 <equals arg1="${app.runtime.properties.key}" arg2="Runtime"/>
398             </and>
399         </condition>
400     </target>
402     <target name="copy-stub" depends="bundle-runtime-eval" unless="app.runtime.bundle">
403         <echo message="Using stub: ${apple.appstub}"/>
404         <!-- Remove custom runtime -->
405         <delete dir="${app.runtime}"/>
406         <!-- copy application stub -->
407         <copy file="${apple.appstub}" toFile="${app.executable}" overwrite="true"/>
408         <!-- fix stub permissions -->
409         <chmod perm="755" type="file">
410             <fileset dir="${app.macos}">
411                 <include name="${ant.project.name}"/>
412             </fileset>
413         </chmod>
414         <antcall target="shared-library-install-name">
415             <param name="newname" value="/System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM"/>
416             <param name="oldname" value="${app.runtime.lib}"/>
417         </antcall>
418     </target>
420     <target name="zip">
421         <echo message="Creating ZIP archive..."/>
422         <exec dir="${build.deploy}" executable="zip" spawn="false" failonerror="true">
423             <arg line="-y -r ../${zip.filename} ${app.name}.app"/>
424         </exec>
425         <checksum file="${build}/${zip.filename}" algorithm="md5"/>
426     </target>
428     <target name="nightly" depends="clean, revision">
429         <antcall target="build">
430             <param name="app.runtime.properties.key" value="Runtime"/>
431             <param name="app.runtime.system.min" value="10.6"/>
432             <param name="build.lipo.arch.remove" value="ppc,ppc7400,i386"/>
433             <param name="sparkle.feed" value="https://version.cyberduck.io/nightly/changelog.rss"/>
434             <param name="jvm.runtime.home" value="${lib}/1.8.0.jre"/>
435         </antcall>
436         <antcall target="distribution-sparkle">
437             <param name="url.archive" value="https://update.cyberduck.io/nightly/Cyberduck-_REVISION_.tar.gz"/>
438             <param name="url.changelog" value="https://version.cyberduck.io/nightly/changelog.html"/>
439         </antcall>
440         <echo message="_REVISION_=${svn.revision}"/>
441         <scp file="${build}/${app.name}-${svn.revision}.tar.gz"
442              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/nightly/"
443              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
444              passphrase="">
445         </scp>
446         <scp file="${build}/${app.name}-${svn.revision}.tar.gz.md5"
447              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/nightly/"
448              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
449              passphrase="">
450         </scp>
451         <!-- Changelog Nightly - version.cyberduck.io -->
452         <scp file="${build}/changelog.rss"
453              todir="dkocher@version.cyberduck.io:./version.cyberduck.io/nightly/"
454              keyfile="${user.home}/.ssh/version.cyberduck.io-rsa"
455              passphrase="">
456         </scp>
457         <scp file="${www.update}/changelog.html"
458              todir="dkocher@version.cyberduck.io:./version.cyberduck.io/nightly/"
459              keyfile="${user.home}/.ssh/version.cyberduck.io-rsa"
460              passphrase="">
461         </scp>
462     </target>
464     <target name="beta" depends="clean, revision">
465         <antcall target="build">
466             <param name="app.runtime.properties.key" value="Runtime"/>
467             <param name="app.runtime.system.min" value="10.6"/>
468             <param name="build.lipo.arch.remove" value="ppc,ppc7400,i386"/>
469             <param name="sparkle.feed" value="https://version.cyberduck.io/beta/changelog.rss"/>
470             <param name="jvm.runtime.home" value="${lib}/1.8.0.jre"/>
471         </antcall>
472         <antcall target="distribution-sparkle">
473             <param name="url.archive" value="https://update.cyberduck.io/beta/Cyberduck-_REVISION_.tar.gz"/>
474             <param name="url.changelog" value="https://version.cyberduck.io/beta/changelog.html"/>
475         </antcall>
476         <echo message="_REVISION_=${svn.revision}"/>
477         <scp file="${build}/${app.name}-${svn.revision}.tar.gz"
478              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/beta/"
479              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
480              passphrase="">
481         </scp>
482         <scp file="${build}/${app.name}-${svn.revision}.tar.gz.md5"
483              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/beta/"
484              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
485              passphrase="">
486         </scp>
487         <!-- Changelog Beta - version.cyberduck.io -->
488         <scp file="${build}/changelog.rss"
489              todir="dkocher@version.cyberduck.io:./version.cyberduck.io/beta/"
490              keyfile="${user.home}/.ssh/version.cyberduck.io-rsa"
491              passphrase="">
492         </scp>
493         <scp file="${www.update}/changelog.html"
494              todir="dkocher@version.cyberduck.io:./version.cyberduck.io/beta/"
495              keyfile="${user.home}/.ssh/version.cyberduck.io-rsa"
496              passphrase="">
497         </scp>
498     </target>
500     <target name="release" depends="clean, revision">
501         <antcall target="build">
502             <param name="app.runtime.properties.key" value="Runtime"/>
503             <param name="app.runtime.system.min" value="10.6"/>
504             <param name="build.lipo.arch.remove" value="ppc,ppc7400,i386"/>
505             <param name="sparkle.feed" value="https://version.cyberduck.io/changelog.rss"/>
506         </antcall>
507         <antcall target="distribution-sparkle">
508             <param name="url.archive" value="https://update.cyberduck.io/Cyberduck-_REVISION_.tar.gz"/>
509             <param name="url.changelog" value="https://version.cyberduck.io/changelog.html"/>
510         </antcall>
511         <antcall target="confirm"/>
512         <scp file="${build}/${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}.zip"
513              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/"
514              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
515              passphrase="">
516         </scp>
517         <scp file="${build}/${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}.zip.md5"
518              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/"
519              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
520              passphrase="">
521         </scp>
522         <scp file="${build}/${app.name}-${svn.revision}.tar.gz"
523              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/"
524              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
525              passphrase="">
526         </scp>
527         <scp file="${build}/${app.name}-${svn.revision}.tar.gz.md5"
528              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/"
529              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
530              passphrase="">
531         </scp>
532         <!-- Changelog Release - version.cyberduck.io -->
533         <scp file="${build}/changelog.rss"
534              todir="dkocher@version.cyberduck.io:./version.cyberduck.io/"
535              keyfile="${user.home}/.ssh/version.cyberduck.io-rsa"
536              passphrase="">
537         </scp>
538         <scp file="${www.update}/changelog.html"
539              todir="dkocher@version.cyberduck.io:./version.cyberduck.io/"
540              keyfile="${user.home}/.ssh/version.cyberduck.io-rsa"
541              passphrase="">
542         </scp>
543     </target>
545     <target name="universal" depends="clean, revision">
546         <antcall target="build">
547             <param name="app.runtime.properties.key" value="Java"/>
548             <param name="app.runtime.system.min" value="10.6"/>
549             <param name="build.compile.target" value="1.6"/>
550         </antcall>
551         <antcall target="codesign">
552             <param name="codesign.options" value="--force"/>
553             <param name="codesign.arg"
554                    value="--requirements ${codesign.requirement} --resource-rules ${codesign.resources}"/>
555             <param name="codesign.certificate" value="Developer ID Application: David Kocher"/>
556         </antcall>
557         <antcall target="zip">
558             <param name="zip.filename" value="${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}u.zip"/>
559         </antcall>
560         <antcall target="confirm"/>
561         <scp file="${build}/${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}u.zip"
562              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/"
563              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
564              passphrase="">
565         </scp>
566         <scp file="${build}/${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}u.zip.md5"
567              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/"
568              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
569              passphrase="">
570         </scp>
571     </target>
573     <target name="mas" depends="clean, revision">
574         <antcall target="build">
575             <param name="app.runtime.properties.key" value="Runtime"/>
576             <param name="app.runtime.system.min" value="10.7.3"/>
577             <param name="build.xcodeoptions" value="SDKROOT=macosx MACOSX_DEPLOYMENT_TARGET=10.7"/>
578             <param name="build.lipo.arch.remove" value="ppc,ppc7400,i386"/>
579         </antcall>
580         <antcall target="distribution-mas"/>
581         <antcall target="confirm"/>
582         <scp file="${build}/${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}.pkg"
583              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/mas"
584              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
585              passphrase="">
586         </scp>
587         <scp file="${build}/${app.name}-${cyberduck.version.major}.${cyberduck.version.minor}.pkg.md5"
588              todir="dkocher@update.cyberduck.io:./update.cyberduck.io/mas"
589              keyfile="${user.home}/.ssh/update.cyberduck.io-rsa"
590              passphrase="">
591         </scp>
592     </target>
593 </project>