2014-08-01 07:47:39 -04:00
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<project name= "filebot" default= "fatjar" >
<!-- include default inputs (optional) -->
<property file= "profile.properties" />
<!-- include application properties -->
<property file= "source/net/filebot/Settings.properties" />
<property name= "title" value= "${application.name}" />
<property name= "version" value= "${application.version}" />
<tstamp >
<format property= "today" pattern= "yyyy-MM-dd" />
</tstamp>
<!-- define source dirs -->
<property name= "dir.source" location= "${basedir}/source" />
<property name= "dir.test" location= "${basedir}/test" />
<property name= "dir.build" location= "${basedir}/build" />
<property name= "dir.dist" location= "${basedir}/dist" />
<property name= "dir.lib" location= "${basedir}/lib" />
<property name= "dir.website" location= "${basedir}/website" />
<property name= "dir.installer" location= "${basedir}/installer" />
<!-- define output paths -->
<property name= "path.fatjar" location= "${dir.dist}/${title}_${version}.jar" />
<property name= "path.appbundle.tar.gz" location= "${dir.dist}/${title}_${version}.app.tar.gz" />
<property name= "path.source.zip" location= "${dir.dist}/filebot-${version}-src.zip" />
<property name= "basedir.release" location= "${basedir}/release" />
<property name= "dir.release" location= "${basedir.release}/${title}_${version}" />
<property name= "frs.release" value= "web.sourceforge.net:/home/frs/project/f/fi/filebot/filebot" />
<property name= "frs.website" value= "web.sourceforge.net:htdocs" />
<target name= "jar" depends= "build" >
<!-- create dist dir -->
<mkdir dir= "${dir.dist}" />
<!-- main jar -->
<jar destfile= "${dir.dist}/filebot.jar" >
<manifest >
<attribute name= "Built-By" value= "${user.name}" />
<attribute name= "Built-Date" value= "${today}" />
<attribute name= "Built-Revision" value= "${svn.revision}" />
<attribute name= "Application-Name" value= "${title}" />
<attribute name= "Application-Version" value= "${version}" />
<attribute name= "Main-Class" value= "net.filebot.Main" />
</manifest>
<fileset dir= "${dir.build}" excludes= "**/*Test*" />
</jar>
<!-- extra jar containing all the unit tests -->
<jar destfile= "${dir.dist}/filebot-test.jar" >
<fileset dir= "${dir.build}" includes= "**/*Test*" />
</jar>
<!-- source as zip -->
<zip destfile= "${path.source.zip}" >
<fileset dir= "source" />
<fileset dir= "test" />
</zip>
</target>
<target name= "fatjar" depends= "jar" description= "Merge all class files into a single executable jar file" >
<jar destfile= "${path.fatjar}" filesetmanifest= "merge" duplicate= "fail" index= "yes" >
<!-- include main jar -->
<zipfileset src= "${dir.dist}/filebot.jar" />
<!-- include libs -->
<zipfileset src= "${dir.lib}/json-simple.jar" >
<include name= "org/json/simple/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/json-io.jar" >
<include name= "com/cedarsoftware/util/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/glazedlists.jar" >
<include name= "ca/odell/glazedlists/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/miglayout-core.jar" >
<include name= "net/miginfocom/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/miglayout-swing.jar" >
<include name= "net/miginfocom/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/rsyntaxtextarea.jar" >
<include name= "org/fife/**" />
</zipfileset>
2014-08-06 08:03:16 -04:00
<zipfileset src= "${dir.lib}/simmetrics.jar" >
<include name= "uk/ac/shef/wit/simmetrics/**" />
</zipfileset>
2014-08-01 07:47:39 -04:00
<zipfileset src= "${dir.lib}/xmlrpc.jar" >
<include name= "redstone/xmlrpc/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/args4j.jar" >
<include name= "org/kohsuke/args4j/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/xz.jar" >
<include name= "org/tukaani/xz/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/ehcache.jar" >
<include name= "META-INF/services/**" />
<include name= "net/sf/ehcache/**" />
<include name= "org/terracotta/**" />
<include name= "ehcache-failsafe.xml" />
<include name= "build-info.properties" />
</zipfileset>
<zipfileset src= "${dir.lib}/slf4j-api.jar" >
<include name= "org/slf4j/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/slf4j-jdk14.jar" >
<include name= "org/slf4j/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/commons-io.jar" >
<include name= "org/apache/commons/io/**" />
</zipfileset>
2014-08-06 08:03:16 -04:00
<zipfileset src= "${dir.lib}/icu4j.jar" >
<include name= "com/ibm/icu/**" />
2014-08-01 07:47:39 -04:00
</zipfileset>
2014-08-06 08:03:16 -04:00
<zipfileset src= "${dir.lib}/jacksum.jar" >
<include name= "jonelo/jacksum/adapt/**" />
<include name= "jonelo/jacksum/algorithm/**" />
<include name= "jonelo/sugar/util/**" />
2014-08-01 07:47:39 -04:00
</zipfileset>
<zipfileset src= "${dir.lib}/groovy.jar" >
<include name= "groovy*/**" />
<include name= "org/codehaus/groovy/**" />
<include name= "META-INF/dgminfo" />
<include name= "META-INF/services/**" />
<include name= "META-INF/*.properties" />
<!-- filebot already includes it's own extension modules -->
<exclude name= "META-INF/services/org.codehaus.groovy.runtime.ExtensionModule" />
</zipfileset>
2014-08-06 08:03:16 -04:00
<zipfileset src= "${dir.lib}/sevenzipjbinding.jar" >
<include name= "net/sf/sevenzipjbinding/**" />
2014-08-01 07:47:39 -04:00
</zipfileset>
2014-08-06 08:03:16 -04:00
<zipfileset src= "${dir.lib}/ObjCBridge.jar" >
<include name= "ca/weblite/objc/**" />
<include name= "com/sun/jna/**" />
2014-08-01 07:47:39 -04:00
</zipfileset>
2014-08-06 08:03:16 -04:00
<!-- include classes and native libraries -->
<zipfileset src= "${dir.lib}/jna.jar" >
<include name= "com/sun/jna/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/jna-platform.jar" >
<include name= "com/sun/jna/platform/win32/**" />
2014-08-01 07:47:39 -04:00
</zipfileset>
2014-08-06 08:03:16 -04:00
<!-- libraries used in external scripts -->
<zipfileset src= "${dir.lib}/jsoup.jar" >
<include name= "org/jsoup/**" />
2014-08-01 07:47:39 -04:00
</zipfileset>
<!-- Ivy for @Grapes automatic dependency management -->
<zipfileset src= "${dir.lib}/scripting/ivy.jar" >
<include name= "org/apache/ivy/**" />
</zipfileset>
<!-- AntBuilder including dependencies for ant - javamail, ant - commons - net and ant - jsch -->
<zipfileset src= "${dir.lib}/scripting/ant.jar" >
<include name= "org/apache/tools/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/scripting/ant-launcher.jar" >
<include name= "org/apache/tools/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/scripting/ant-commons-net.jar" >
<include name= "org/apache/tools/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/scripting/ant-jsch.jar" >
<include name= "org/apache/tools/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/scripting/ant-javamail.jar" >
<include name= "org/apache/tools/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/scripting/commons-net.jar" >
<include name= "org/apache/commons/net/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/scripting/jsch.jar" >
<include name= "com/jcraft/jsch/**" />
</zipfileset>
<zipfileset src= "${dir.lib}/scripting/mail.jar" >
<include name= "javax/mail/**" />
<include name= "com/sun/mail/**" />
<include name= "META-INF/*mail*" />
</zipfileset>
</jar>
</target>
<target name= "appbundle" description= "Build an OSX application bundle" >
<taskdef name= "bundleapp" classname= "com.oracle.appbundler.AppBundlerTask" classpath= "${dir.lib}/build/appbundler.jar" />
2015-05-07 10:26:23 -04:00
<bundleapp minimumsystemversion= "10.8" outputdirectory= "${dir.dist}" name= "${title}" displayname= "${title}" shortversion= "${version}" identifier= "net.sourceforge.FileBot" mainclassname= "net.filebot.Main" icon= "${dir.installer}/appbundle/filebot.icns" copyright= "2015 Reinhard Pointner" applicationcategory= "public.app-category.productivity" highresolutioncapable= "false" supportsautomaticgraphicsswitching= "false" >
2014-08-01 07:47:39 -04:00
<classpath file= "${path.fatjar}" />
<librarypath dir= "${dir.lib}/native/mac-x86_64" />
2014-10-10 16:14:59 -04:00
<arch name= "x86_64" />
2015-05-07 13:01:11 -04:00
<option value= "-Dnet.filebot.UserFiles.fileChooser=COCOA" />
2014-08-01 07:47:39 -04:00
<option value= "-Dapplication.deployment=app" />
<option value= "-Dapplication.update=auto" />
<option value= "-Dunixfs=false" />
<option value= "-DuseExtendedFileAttributes=true" />
<option value= "-DuseCreationDate=false" />
<option value= "-Djava.net.useSystemProxies=true" />
<option value= "-Dsun.net.client.defaultConnectTimeout=10000" />
<option value= "-Dsun.net.client.defaultReadTimeout=60000" />
<option value= "-Dfile.encoding=UTF-8" />
2014-08-01 13:41:31 -04:00
<option value= "-Djna.nosys=true" />
2014-08-01 07:47:39 -04:00
<option value= "-Djna.library.path=$APP_ROOT/Contents/MacOS" />
<option value= "-Djava.library.path=$APP_ROOT/Contents/MacOS" />
<option value= "-Dnet.filebot.AcoustID.fpcalc=$APP_ROOT/Contents/MacOS/fpcalc" />
<option value= "-Xdock:name=${title}" />
<option value= "-Xdock:icon=Contents/Resources/filebot.icns" />
<option value= "-Dapple.laf.useScreenMenuBar=true" />
</bundleapp>
<!-- application bundle folder as .tar.gz -->
<tar destfile= "${path.appbundle.tar.gz}" compression= "gzip" longfile= "gnu" >
<tarfileset dir= "${dir.dist}" includes= "${title}.app/**" excludes= "**/MacOS/**" />
<tarfileset dir= "${dir.dist}" includes= "${title}.app/**/**.dylib" />
<!-- IMPORTANT application stub must be executable!! -->
<tarfileset dir= "${dir.dist}" includes= "${title}.app/**/**Launcher" filemode= "755" />
<tarfileset dir= "${dir.dist}" includes= "${title}.app/**/fpcalc" filemode= "755" />
<tarfileset prefix= "${title}.app/Contents/MacOS" dir= "${dir.installer}/appbundle" includes= "*.sh" filemode= "755" />
</tar>
<!-- print SHA256 since we manually need to update brew cask filebot -->
<checksum file= "${path.appbundle.tar.gz}" algorithm= "SHA-256" fileext= ".sha256" />
<checksum file= "${path.appbundle.tar.gz}" algorithm= "SHA-256" property= "appbundle.sha256" />
<echo taskname= "SHA256" message= "${appbundle.sha256}" />
</target>
<target name= "appbundle-maspkg" depends= "svn-update, fatjar" >
<taskdef name= "bundleapp" classname= "com.oracle.appbundler.AppBundlerTask" classpath= "${dir.lib}/build/appbundler.jar" />
2015-05-04 11:40:46 -04:00
<property name= "jre.version" value= "jdk1.8.0_45.jdk" />
2014-08-21 07:48:14 -04:00
<property name= "jre.path" value= "/Library/Java/JavaVirtualMachines/${jre.version}/Contents/Home" />
2015-05-07 10:26:23 -04:00
<bundleapp minimumsystemversion= "10.8" executablename= "FileBotAppLauncher" version= "${svn.revision}" outputdirectory= "${dir.dist}" name= "${title}" displayname= "${title}" shortversion= "${version}" identifier= "net.filebot.FileBot" mainclassname= "net.filebot.Main" icon= "${dir.installer}/appbundle/filebot.icns" copyright= "2015 Reinhard Pointner" applicationcategory= "public.app-category.productivity" highresolutioncapable= "true" supportsautomaticgraphicsswitching= "true" >
2014-08-01 07:47:39 -04:00
<classpath file= "${path.fatjar}" />
<librarypath dir= "${dir.lib}/native/mac-x86_64" />
<arch name= "x86_64" />
2014-08-21 07:48:14 -04:00
<runtime dir= "${jre.path}" />
2014-08-01 07:47:39 -04:00
<!-- WORKING_DIR is sandbox data folder -->
<option value= "-Dapplication.dir=./Library/Application Support/User Data" />
<option value= "-Dapplication.cache=./Library/Caches/ehcache.disk.store" />
<option value= "-Djava.io.tmpdir=./Library/Caches/java.io.tmpdir" />
2014-11-07 08:26:54 -05:00
<option value= "-Dnet.filebot.UserFiles.fileChooser=COCOA" />
2014-08-01 07:47:39 -04:00
<option value= "-Dapplication.deployment=mas" />
<option value= "-Dapplication.update=skip" />
<option value= "-Dunixfs=false" />
<option value= "-DuseExtendedFileAttributes=true" />
<option value= "-DuseCreationDate=false" />
<option value= "-Djava.net.useSystemProxies=true" />
<option value= "-Dsun.net.client.defaultConnectTimeout=10000" />
<option value= "-Dsun.net.client.defaultReadTimeout=60000" />
<option value= "-Dfile.encoding=UTF-8" />
2014-08-01 13:41:31 -04:00
<option value= "-Djna.nosys=true" />
2014-08-01 07:47:39 -04:00
<option value= "-Djna.nounpack=true" />
2014-08-01 13:41:31 -04:00
<option value= "-Djna.boot.library.name=jnidispatch" />
<option value= "-Djna.boot.library.path=$APP_ROOT/Contents/MacOS" />
2014-08-01 07:47:39 -04:00
<option value= "-Djna.library.path=$APP_ROOT/Contents/MacOS" />
<option value= "-Djava.library.path=$APP_ROOT/Contents/MacOS" />
<option value= "-Dnet.filebot.AcoustID.fpcalc=$APP_ROOT/Contents/MacOS/fpcalc" />
<option value= "-Xdock:name=${title}" />
<option value= "-Xdock:icon=Contents/Resources/filebot.icns" />
<option value= "-Dapple.laf.useScreenMenuBar=true" />
2015-05-07 10:26:23 -04:00
2015-05-05 10:27:55 -04:00
<!-- enable logging by default -->
<argument value= "--log-file" />
2015-05-05 10:31:49 -04:00
<argument value= "filebot.log" />
2015-05-05 10:27:55 -04:00
<argument value= "--log-lock" />
<argument value= "false" />
2014-08-01 07:47:39 -04:00
</bundleapp>
2014-08-21 07:48:14 -04:00
<!-- fix code signing and submission issues -->
2014-10-11 12:22:44 -04:00
<delete verbose= "yes" >
<fileset dir= "${dir.dist}/FileBot.app/Contents/PlugIns" >
2015-05-04 11:40:46 -04:00
<!-- FIXED? <include name="**/libjfxmedia.dylib" /> -->
2014-10-11 12:22:44 -04:00
<include name= "**/Contents/Info.plist" />
<include name= "**/Contents/MacOS/libjli.dylib" />
</fileset>
2014-08-21 07:53:56 -04:00
</delete>
2014-10-11 12:22:44 -04:00
<copy verbose= "yes" failonerror= "yes" overwrite= "yes" file= "/Library/Java/JavaVirtualMachines/${jre.version}/Contents/Info.plist" tofile= "${dir.dist}/FileBot.app/Contents/PlugIns/${jre.version}/Contents/Info.plist" />
<copy verbose= "yes" failonerror= "yes" overwrite= "yes" file= "/Library/Java/JavaVirtualMachines/${jre.version}/Contents/MacOS/libjli.dylib" tofile= "${dir.dist}/FileBot.app/Contents/PlugIns/${jre.version}/Contents/MacOS/libjli.dylib" />
2014-08-01 07:47:39 -04:00
<!-- fix permissions -->
2014-10-11 12:22:44 -04:00
<chmod verbose= "yes" dir= "${dir.dist}" includes= "**/fpcalc" perm= "755" />
<chmod verbose= "yes" dir= "${dir.dist}/FileBot.app/Contents/PlugIns" perm= "+rw" />
2014-08-01 07:47:39 -04:00
2014-08-01 16:35:57 -04:00
<!-- JRE sign all jars, dylibs and executables -->
<apply executable= "codesign" >
2014-08-01 17:19:27 -04:00
<arg line= "--verbose=4 --force --sign '3rd Party Mac Developer Application: Reinhard Pointner' --entitlements '${dir.installer}/appbundle/inherit.entitlements'" />
2014-08-01 16:35:57 -04:00
<srcfile />
<fileset dir= "${dir.dist}/FileBot.app/Contents/PlugIns" >
<include name= "**/jspawnhelper" />
<include name= "**/*.dylib" />
<include name= "**/*.jar" />
</fileset>
</apply>
2014-08-01 13:41:31 -04:00
2014-08-01 07:47:39 -04:00
<!-- sign cmdline tool first -->
2014-08-01 16:35:57 -04:00
<exec dir= "${dir.dist}/FileBot.app" executable= "codesign" >
<arg line= "--verbose=4 --force --sign '3rd Party Mac Developer Application: Reinhard Pointner' --entitlements '${dir.installer}/appbundle/inherit.entitlements' Contents/MacOS/fpcalc" />
2014-08-01 07:47:39 -04:00
</exec>
2014-08-01 16:35:57 -04:00
<!-- APP sign all jars, dylibs and executables -->
<apply executable= "codesign" >
2014-08-01 17:19:27 -04:00
<arg line= "--verbose=4 --force --sign '3rd Party Mac Developer Application: Reinhard Pointner' --entitlements '${dir.installer}/appbundle/FileBot.entitlements'" />
2014-08-01 16:35:57 -04:00
<srcfile />
<fileset dir= "${dir.dist}/FileBot.app/Contents" >
2014-08-01 17:19:27 -04:00
<include name= "MacOS/*.dylib" />
2014-08-01 16:35:57 -04:00
<include name= "Java/*.jar" />
</fileset>
</apply>
2014-08-01 07:47:39 -04:00
<!-- sign app with entitlements -->
2014-08-01 13:41:31 -04:00
<exec dir= "${dir.dist}" executable= "codesign" >
2014-08-21 07:56:06 -04:00
<arg line= "--verbose=4 --force --sign '3rd Party Mac Developer Application: Reinhard Pointner' --entitlements '${dir.installer}/appbundle/FileBot.entitlements' FileBot.app/Contents/PlugIns/${jre.version}" />
2014-08-01 13:41:31 -04:00
</exec>
2014-08-01 07:47:39 -04:00
<exec dir= "${dir.dist}" executable= "codesign" >
2014-08-01 16:35:57 -04:00
<arg line= "--verbose=4 --force --sign '3rd Party Mac Developer Application: Reinhard Pointner' --entitlements '${dir.installer}/appbundle/FileBot.entitlements' FileBot.app" />
2014-08-01 07:47:39 -04:00
</exec>
<!-- verify signature & build pkg -->
2014-08-01 13:41:31 -04:00
<exec dir= "${dir.dist}" executable= "codesign" failonerror= "on" >
2014-08-21 07:48:14 -04:00
<arg line= "--verify FileBot.app/Contents/PlugIns/${jre.version}" />
2014-08-01 13:41:31 -04:00
</exec>
2014-08-01 07:47:39 -04:00
<exec dir= "${dir.dist}" executable= "codesign" failonerror= "on" >
2014-08-01 16:35:57 -04:00
<arg line= "--verify FileBot.app" />
2014-08-01 07:47:39 -04:00
</exec>
<exec dir= "${dir.dist}" executable= "productbuild" failonerror= "on" >
2014-08-01 09:31:30 -04:00
<arg line= "--component FileBot.app /Applications --sign '3rd Party Mac Developer Installer: Reinhard Pointner' FileBot_${version}.pkg" />
2014-08-01 07:47:39 -04:00
</exec>
<!-- store this build in releases -->
<mkdir dir= "${dir.release}" />
<copy todir= "${dir.release}" file= "${dir.dist}/FileBot_${version}.pkg" verbose= "yes" />
</target>
2014-12-22 16:35:14 -05:00
<target name= "ubuntu-debsrc" depends= "svn-update, fatjar" >
2015-05-04 11:45:47 -04:00
<property name= "jre.version" value= "jdk-8u45" />
2014-08-21 08:12:15 -04:00
<property name= "jre.dir" value= "${basedir}/jre" />
2015-05-05 09:48:16 -04:00
2014-12-22 16:35:14 -05:00
<property name= "path.tarbin" location= "${dir.dist}/filebot-${version}-tarbin.tar.gz" />
<property name= "path.debsrc" location= "${dir.dist}/filebot-${version}-debsrc.tar.gz" />
<property name= "dir.debsrc" location= "${dir.dist}/debian-source-package/filebot/filebot-${version}" />
<!-- collect binary content -->
<tar destfile= "${path.tarbin}" compression= "gzip" longfile= "gnu" >
2014-10-30 05:03:05 -04:00
<tarfileset fullpath= "i386/filebot/FileBot.jar" file= "${path.fatjar}" />
<tarfileset fullpath= "amd64/filebot/FileBot.jar" file= "${path.fatjar}" />
2014-08-01 07:47:39 -04:00
2014-10-30 05:03:05 -04:00
<tarfileset prefix= "i386/filebot" dir= "${dir.lib}/native/linux-i686" includes= "*.so" />
<tarfileset prefix= "amd64/filebot" dir= "${dir.lib}/native/linux-amd64" includes= "*.so" />
2014-08-01 07:47:39 -04:00
2014-10-30 05:03:05 -04:00
<tarfileset prefix= "i386/filebot/bin" file= "${dir.installer}/ubuntu/filebot.sh" filemode= "755" />
<tarfileset prefix= "amd64/filebot/bin" file= "${dir.installer}/ubuntu/filebot.sh" filemode= "755" />
2014-08-01 07:47:39 -04:00
2014-10-30 05:03:05 -04:00
<tarfileset prefix= "i386/filebot" dir= "${dir.lib}/native/linux-i686" includes= "fpcalc" filemode= "755" />
<tarfileset prefix= "amd64/filebot" dir= "${dir.lib}/native/linux-amd64" includes= "fpcalc" filemode= "755" />
2014-08-01 07:47:39 -04:00
2014-10-30 05:03:05 -04:00
<tarfileset fullpath= "i386/filebot/filebot.desktop" file= "${dir.installer}/ubuntu/filebot.desktop" />
<tarfileset fullpath= "amd64/filebot/filebot.desktop" file= "${dir.installer}/ubuntu/filebot.desktop" />
<tarfileset fullpath= "i386/filebot/filebot.svg" file= "${dir.installer}/icons/icon.svg" />
<tarfileset fullpath= "amd64/filebot/filebot.svg" file= "${dir.installer}/icons/icon.svg" />
2014-08-01 07:47:39 -04:00
<!-- Include Java 8 JRE -->
2014-10-30 05:03:05 -04:00
<tarfileset prefix= "i386/filebot/jre" dir= "${jre.dir}/${jre.version}-linux-i586/jre" excludes= "bin/**" />
<tarfileset prefix= "i386/filebot/jre" dir= "${jre.dir}/${jre.version}-linux-i586/jre" includes= "bin/java" filemode= "755" />
<tarfileset prefix= "amd64/filebot/jre" dir= "${jre.dir}/${jre.version}-linux-x64/jre" excludes= "bin/**" />
<tarfileset prefix= "amd64/filebot/jre" dir= "${jre.dir}/${jre.version}-linux-x64/jre" includes= "bin/java" filemode= "755" />
2014-08-01 07:47:39 -04:00
</tar>
2014-12-22 16:35:14 -05:00
<!-- build debian source package for application binaries -->
<copy todir= "${dir.debsrc}" >
<fileset dir= "${dir.installer}/ubuntu" includes= "debian/**" />
</copy>
<untar src= "${path.tarbin}" dest= "${dir.debsrc}" compression= "gzip" />
2014-12-29 09:00:34 -05:00
<!-- restore permissions -->
<chmod perm= "755" type= "file" >
<fileset dir= "${dir.debsrc}" >
<include name= "**/bin/**" />
2015-01-23 14:40:35 -05:00
<include name= "**/fpcalc" />
2014-12-29 09:00:34 -05:00
</fileset>
</chmod>
2014-12-22 16:35:14 -05:00
<!-- debuild - S -->
2014-12-29 08:24:31 -05:00
<exec dir= "${dir.debsrc}" executable= "debuild" />
2015-01-02 03:49:59 -05:00
2014-12-22 16:35:14 -05:00
<!-- tar cvzf filebot - 4.5.2 - debsrc.tar.gz *.dsc *.changes *.tar.gz -->
<tar destfile= "${path.debsrc}" compression= "gzip" >
<tarfileset dir= "${dir.debsrc}/.." includes= "*.dsc, *.changes, *.tar.gz" />
</tar>
2014-08-01 07:47:39 -04:00
<!-- store this build in releases -->
<mkdir dir= "${dir.release}" />
2014-12-22 16:35:14 -05:00
<copy todir= "${dir.release}" file= "${path.debsrc}" verbose= "yes" />
2014-08-01 07:47:39 -04:00
</target>
2014-10-07 13:33:04 -04:00
<target name= "deb" description= "Build debian package for i686 and amd64" >
2014-08-01 07:47:39 -04:00
<taskdef resource= "ant_deb_task.properties" classpath= "${dir.lib}/build/ant-deb.jar" />
<antcall target= "deb-arch" >
2014-10-07 13:33:04 -04:00
<param name= "arch" value= "i686" />
<!-- arch i686 not allowed by deb specification, must be i386 for 32 - bit x86 systems -->
<param name= "deb.arch" value= "i386" />
2014-08-01 07:47:39 -04:00
</antcall>
<antcall target= "deb-arch" >
<param name= "arch" value= "amd64" />
2014-10-07 13:33:04 -04:00
<param name= "deb.arch" value= "amd64" />
2014-08-01 07:47:39 -04:00
</antcall>
</target>
<target name= "deb-arch" >
2014-10-07 14:00:48 -04:00
<!-- stage created .deb files in a temporary folder -->
<property name= "deb.staging" location= "${dir.dist}/deb" />
<mkdir dir= "${deb.staging}" />
2014-10-31 11:39:36 -04:00
<deb debfilenameproperty= "staging.file.deb" todir= "${deb.staging}" package= "filebot" version= "${version}" architecture= "${deb.arch}" section= "misc" homepage= "http://www.filebot.net" priority= "optional" postinst= "${dir.installer}/deb/postinst.sh" prerm= "${dir.installer}/deb/prerm.sh" >
2014-08-01 07:47:39 -04:00
<maintainer name= "Reinhard Pointner" email= "rednoah@users.sourceforge.net" />
<description synopsis= "The ultimate TV and Movie Renamer" > FileBot is the ultimate tool for renaming your movies, tv shows or anime and even downloading subtitles. It's smart, streamlined for simplicity and just works. Putting the super-efficient UI aside, it's also got a full-featured command-line interface and scripting engine for all sorts of automation. Anything is possible.</description>
<tarfileset fullpath= "usr/share/filebot/FileBot.jar" file= "${path.fatjar}" />
<tarfileset prefix= "usr/share/filebot" dir= "${dir.lib}/native/linux-${arch}" includes= "*.so" />
<tarfileset prefix= "usr/share/filebot" file= "${dir.lib}/native/linux-${arch}/fpcalc" filemode= "755" />
<tarfileset prefix= "usr/share/filebot" file= "${dir.installer}/icons/icon.svg" />
<tarfileset prefix= "usr/share/filebot/bin" file= "${dir.installer}/deb/filebot.sh" filemode= "755" />
<tarfileset prefix= "usr/share/applications" file= "${dir.installer}/deb/FileBot.desktop" />
</deb>
2014-10-24 13:40:09 -04:00
<move tofile= "${dir.dist}/filebot_${version}_${deb.arch}.deb" file= "${staging.file.deb}" overwrite= "no" failonerror= "yes" />
2014-10-07 14:00:48 -04:00
<delete dir= "${deb.staging}" />
2014-08-01 07:47:39 -04:00
</target>
2015-04-05 03:15:43 -04:00
<target name= "ipkg" description= "Build ipkg package" >
2014-08-01 07:47:39 -04:00
<taskdef resource= "ant_deb_task.properties" classpath= "${dir.lib}/build/ant-deb.jar" />
<!-- stage created .deb files in a temporary folder -->
<property name= "ipkg.staging" location= "${dir.dist}/deb-ipkg" />
<mkdir dir= "${ipkg.staging}" />
2015-04-05 03:15:43 -04:00
<deb debfilenameproperty= "staging.file.deb" todir= "${ipkg.staging}" package= "filebot" version= "${version}" architecture= "noarch" section= "misc" homepage= "http://www.filebot.net" priority= "optional" postinst= "${dir.installer}/ipkg/postinst.sh" prerm= "${dir.installer}/ipkg/prerm.sh" >
2014-08-01 07:47:39 -04:00
<maintainer name= "Reinhard Pointner" email= "rednoah@users.sourceforge.net" />
<description synopsis= "The ultimate TV and Movie Renamer" > FileBot is the ultimate tool for renaming your movies, tv shows or anime and even downloading subtitles. It's smart, streamlined for simplicity and just works. Putting the super-efficient UI aside, it's also got a full-featured command-line interface and scripting engine for all sorts of automation. Anything is possible.</description>
<tarfileset fullpath= "opt/share/filebot/FileBot.jar" file= "${path.fatjar}" />
<tarfileset prefix= "opt/share/filebot/bin" file= "${dir.installer}/ipkg/filebot.sh" filemode= "755" />
</deb>
2015-04-05 03:15:43 -04:00
<move tofile= "${dir.dist}/filebot_${version}_noarch.ipk" file= "${staging.file.deb}" overwrite= "no" failonerror= "yes" />
2014-08-01 07:47:39 -04:00
<delete dir= "${ipkg.staging}" />
</target>
<target name= "msi" description= "Build Windows Installer for x86 and x64" >
<antcall target= "msi-arch" >
<param name= "arch" value= "x86" />
<param name= "libgcc_name" value= "mingwm10.dll" />
</antcall>
<antcall target= "msi-arch" >
<param name= "arch" value= "x64" />
<param name= "libgcc_name" value= "libgcc_s_sjlj-1.dll" />
</antcall>
</target>
2015-04-05 03:15:43 -04:00
2014-08-01 07:47:39 -04:00
<target name= "msi-arch" >
<property name= "jnidispatch" location= "${dir.lib}/native/win32-${arch}/jnidispatch.dll" />
<property name= "mediainfo" location= "${dir.lib}/native/win32-${arch}/MediaInfo.dll" />
<property name= "lib7z_binding" location= "${dir.lib}/native/win32-${arch}/7-Zip-JBinding.dll" />
<property name= "libgcc_path" location= "${dir.lib}/native/win32-${arch}/${libgcc_name}" />
<property name= "fpcalc_path" location= "${dir.lib}/native/win32-${arch}/fpcalc.exe" />
<property name= "installer" location= "${dir.dist}/FileBot_${version}_${arch}.msi" />
<exec executable= "candle.exe" dir= "${dir.installer}/msi" failonerror= "true" >
<arg line= "filebot-wix.xml -out ${dir.dist}/msi.wixobj -darch=${arch} -dreleaseversion=${version} -dfatjar=${path.fatjar} -djnidispatch=${jnidispatch} -dmediainfo=${mediainfo} -dlib7z_binding=${lib7z_binding} -dlibgcc_name=${libgcc_name} -dlibgcc_path=${libgcc_path} -dfpcalc_path=${fpcalc_path}" />
</exec>
<exec executable= "light.exe" dir= "${dir.installer}/msi" failonerror= "true" >
<arg line= "${dir.dist}/msi.wixobj -sval -ext WixUIExtension -out ${installer}" />
</exec>
</target>
<target name= "portable" description= "Portable application package" >
<mkdir dir= "${dir.dist}/portable" />
<copy file= "${path.fatjar}" tofile= "${dir.dist}/portable/FileBot.jar" />
<copy todir= "${dir.dist}/portable" >
<fileset dir= "${dir.installer}/portable" includes= "*.exe, *.ini, *.cmd, *.sh" />
</copy>
<zip destfile= "${dir.dist}/FileBot_${version}-portable.zip" >
<zipfileset dir= "${dir.dist}/portable" includes= "*.jar, *.exe, *.ini, *.cmd" />
<zipfileset dir= "${dir.dist}/portable" includes= "*.sh" filemode= "755" />
</zip>
</target>
<target name= "spk" description= "Synology NAS package" >
<taskdef name= "spk" classname= "net.filebot.ant.spk.SpkTask" classpath= "${dir.lib}/build/ant-spk.jar" />
<spk destdir= "${dir.dist}" name= "filebot" version= "${version}" arch= "noarch" >
<info name= "displayname" value= "FileBot" />
<info name= "description" value= "FileBot is the ultimate tool for organizing and renaming your movies, TV shows or anime, as well as downloading subtitles and artwork. It's smart and just works." />
<info name= "maintainer" value= "rednoah" />
<info name= "distributor" value= "FileBot" />
<info name= "distributor_url" value= "http://www.filebot.net/" />
<info name= "support_url" value= "http://www.filebot.net/forums/" />
<info name= "firmware" value= "5.0" />
2015-03-29 06:17:04 -04:00
<info name= "startable" value= "no" />
2014-08-01 07:47:39 -04:00
<info name= "helpurl" value= "http://www.filebot.net/cli.html" />
<icon size= "72" file= "${dir.installer}/icons/icon72.png" />
2015-05-03 11:57:56 -04:00
<icon size= "256" file= "${dir.installer}/icons/icon256.png" />
2015-05-05 09:48:16 -04:00
2014-08-01 07:47:39 -04:00
<package file= "${path.fatjar}" fullpath= "FileBot.jar" />
2015-05-03 11:57:56 -04:00
<package dir= "${dir.installer}/spk/package" includes= "*.sh" filemode= "755" />
2014-08-01 07:47:39 -04:00
<scripts dir= "${dir.installer}/spk/scripts" filemode= "755" />
</spk>
</target>
<target name= "webstart" depends= "jar" description= "Build and compress jars used for webstart deployment" >
<!-- create dirs -->
<mkdir dir= "${dir.dist}/webstart" />
<!-- copy jnlp descriptors and icons -->
<copy todir= "${dir.dist}/webstart" >
<fileset dir= "${dir.installer}/webstart" />
<fileset dir= "${dir.installer}/icons" />
</copy>
<!-- copy jars -->
<copy todir= "${dir.dist}/webstart" >
<fileset dir= "${dir.lib}" includes= "*.jar" excludes= "jna.jar" />
</copy>
<!-- copy jna.jar without native libs -->
<jar destfile= "${dir.dist}/webstart/jna.jar" >
<zipfileset src= "${dir.lib}/jna.jar" includes= "**/*.class" />
</jar>
<!-- create mediainfo jar as seperate jar and use as trigger for lazy loading the native libs -->
<jar destfile= "${dir.dist}/webstart/mediainfo.jar" >
<fileset dir= "${dir.build}" includes= "net/filebot/mediainfo/**" />
</jar>
<!-- create indexed main jar -->
<jar destfile= "${dir.dist}/webstart/filebot.jar" index= "yes" >
<fileset dir= "${dir.build}" excludes= "**/*Test*, net/filebot/mediainfo/**" />
<indexjars >
<!-- IMPORTANT if groovy is indexed things break during runtime!! -->
<fileset dir= "${dir.dist}/webstart" includes= "**/*.jar" excludes= "filebot.jar, groovy.jar" />
</indexjars>
</jar>
<!-- create native lib jars -->
<antcall target= "webstart-nativelib" >
<param name= "arch" value= "win32-x86" />
</antcall>
<antcall target= "webstart-nativelib" >
<param name= "arch" value= "win32-x64" />
</antcall>
<antcall target= "webstart-nativelib" >
2014-10-07 13:06:37 -04:00
<param name= "arch" value= "linux-i386" />
2014-08-01 07:47:39 -04:00
</antcall>
<antcall target= "webstart-nativelib" >
<param name= "arch" value= "linux-amd64" />
</antcall>
<antcall target= "webstart-nativelib" >
<param name= "arch" value= "mac-x86_64" />
</antcall>
<!-- sign all jars -->
<apply executable= "pack200" >
<!-- workaround for bug 6575373, see http://bugs.sun.com/view_bug.do?bug_id=6575373 -->
<arg line= "--segment-limit=-1" />
<arg line= "--repack" />
<srcfile />
<fileset dir= "${dir.dist}/webstart" includes= "**/*.jar" />
</apply>
<signjar alias= "filebot" keystore= "filebot.keystore" storepass= "secret" >
<fileset id= "signjar" dir= "${dir.dist}/webstart" includes= "**/*.jar" />
</signjar>
<!-- pack200 all jars -->
<apply executable= "pack200" dest= "${dir.dist}/webstart" >
<!-- workaround for bug 6575373, see http://bugs.sun.com/view_bug.do?bug_id=6575373 -->
<arg line= "--segment-limit=-1" />
<targetfile />
<srcfile />
<fileset dir= "${dir.dist}/webstart" includes= "*.jar" />
<mapper type= "glob" from= "*.jar" to= "*.jar.pack.gz" />
</apply>
</target>
<target name= "webstart-nativelib" >
<!-- create temp dir -->
<mkdir dir= "${dir.dist}/webstart/native/${arch}" />
<!-- copy native libs to temp dir -->
<copy todir= "${dir.dist}/webstart/native/${arch}" flatten= "true" >
<zipfileset src= "${dir.lib}/jna.jar" includes= "com/sun/jna/${arch}/*" />
<fileset dir= "${dir.lib}/native" >
<include name= "${arch}/**.dll" />
<include name= "${arch}/**.dylib" />
<include name= "${arch}/**.so" />
</fileset>
</copy>
<!-- create native lib jar -->
<jar destfile= "${dir.dist}/webstart/native/${arch}.jar" basedir= "${dir.dist}/webstart/native/${arch}" />
<!-- delete temp dir -->
<delete dir= "${dir.dist}/webstart/native/${arch}" />
</target>
<target name= "genkey" >
<genkey alias= "filebot" keystore= "filebot.keystore" storepass= "secret" validity= "3650" dname= "CN=${user.name}" />
</target>
<target name= "build" >
<!-- create build dir -->
<mkdir dir= "${dir.build}" />
<!-- compile -->
<javac srcdir= "${dir.source}:${dir.test}" destdir= "${dir.build}" target= "1.8" source= "1.8" encoding= "utf-8" debug= "true" debuglevel= "lines,vars,source" includeAntRuntime= "false" >
<classpath >
2014-10-09 09:37:15 -04:00
<fileset dir= "${dir.lib}" includes= "**/*.jar" />
2014-08-01 07:47:39 -04:00
</classpath>
</javac>
<!-- copy resources -->
<copy todir= "${dir.build}" >
<fileset dir= "${dir.source}" >
<exclude name= "**/*.java" />
</fileset>
</copy>
<!-- update application properties -->
<replace dir= "${dir.build}" encoding= "utf-8" summary= "yes" >
<include name= "**/*.properties" />
<replacefilter token= "@{svn.revision}" value= "${svn.revision}" />
<replacefilter token= "@{version}" value= "${version}" />
</replace>
</target>
<target name= "clean" >
<delete dir= "${dir.dist}" />
<delete dir= "${dir.build}" />
</target>
<target name= "test" depends= "jar" >
<junit printsummary= "yes" fork= "true" >
<classpath >
<fileset dir= "${dir.dist}" includes= "*.jar" />
<fileset dir= "${dir.lib}" includes= "*.jar" />
<pathelement location= "${dir.lib}/build/junit.jar" />
</classpath>
<formatter type= "plain" />
<test name= "net.filebot.AllTests" outfile= "test-report" />
</junit>
</target>
<target name= "test-fatjar" depends= "fatjar" >
<junit printsummary= "yes" fork= "true" >
<classpath >
<pathelement location= "${path.fatjar}" />
<pathelement location= "${dir.dist}/filebot-test.jar" />
<pathelement location= "${dir.lib}/build/junit.jar" />
</classpath>
<formatter type= "plain" />
<test name= "net.filebot.AllTests" outfile= "test-report" />
</junit>
</target>
<target name= "svn-update" >
<taskdef name= "groovy" classname= "org.codehaus.groovy.ant.Groovy" classpath= "${dir.lib}/groovy.jar" />
<groovy outputproperty= "svn.revision" fork= "yes" failonerror= "yes" >
print 'svn update'.execute().text.split(/\D+/).last().toInteger()
</groovy>
<echo > Revision: ${svn.revision}</echo>
</target>
<target name= "stage-release" depends= "svn-update, fatjar, portable, spk, ipkg, deb, msi, appbundle" >
<delete dir= "${dir.release}" />
<mkdir dir= "${dir.release}" />
<!-- prepare release packages -->
<copy todir= "${dir.release}" preservelastmodified= "yes" verbose= "yes" >
<path path= "${path.fatjar}" />
<fileset dir= "${dir.dist}" >
<include name= "*.tar.gz" />
<include name= "*.deb" />
<include name= "*.ipk" />
<include name= "*.msi" />
<include name= "*.spk" />
<include name= "*-portable.zip" />
</fileset>
</copy>
</target>
<target name= "deploy-release" depends= "stage-release, login" description= "Upload to SourceForge.net FRS" >
<scp todir= "${sf.user}:${sf.password}@${frs.release}" trust= "yes" verbose= "true" sftp= "true" >
<!-- upload starting with parent folders so scp will create the release folder for us -->
<fileset dir= "${basedir.release}" >
<date datetime= "${today}" pattern= "yyyy-MM-dd" when= "after" />
</fileset>
</scp>
</target>
<target name= "deploy-website" depends= "login" >
<!-- prepare website resources -->
<copy todir= "${dir.dist}/website" >
<fileset dir= "${dir.website}" >
<include name= "*.json" />
<include name= "*.xml" />
<include name= "*.php" />
<include name= "*.html" />
<include name= "*.css" />
<include name= "*.js" />
<include name= "*.png" />
<include name= "*.ico" />
2014-10-07 11:16:46 -04:00
<include name= "*.txt" />
2014-08-01 07:47:39 -04:00
<include name= ".htaccess" />
<include name= "syno/**" />
2014-12-22 11:10:07 -05:00
<include name= "images/**" />
<include name= "screenshots/**" />
2015-05-09 05:56:35 -04:00
<include name= "getting-started/**" />
2014-08-01 07:47:39 -04:00
</fileset>
</copy>
<!-- get MD5 sum for Synology Package -->
<checksum file= "${dir.release}/filebot-${version}-noarch.spk" algorithm= "MD5" property= "spk.md5" />
<!-- replace variables for new release -->
<replace dir= "${dir.dist}/website" encoding= "utf-8" summary= "yes" >
<include name= "**/*.html" />
<include name= "**/*.php" />
<include name= "**/*.json" />
<replacefilter token= "@{version}" value= "${version}" />
<replacefilter token= "@{spk.md5}" value= "${spk.md5}" />
</replace>
<!-- upload -->
<scp todir= "${sf.user}:${sf.password}@${frs.website}" trust= "yes" verbose= "true" sftp= "true" >
<fileset dir= "${dir.dist}/website" />
</scp>
</target>
<target name= "chocolatey-push" description= "chocolatey package" >
<copy todir= "${dir.dist}/chocolatey" >
<fileset dir= "${dir.installer}/chocolatey" />
</copy>
<!-- replace variables for new release -->
<replace dir= "${dir.dist}/chocolatey" encoding= "utf-8" summary= "yes" >
<include name= "**/*.ps1" />
<include name= "**/*.nuspec" />
<replacefilter token= "@{version}" value= "${version}" />
</replace>
<!-- chocolatey pack -->
2014-11-07 02:48:12 -05:00
<exec executable= "chocolatey.exe" dir= "${dir.dist}\chocolatey" failonerror= "true" >
2014-08-01 07:47:39 -04:00
<arg line= "pack" />
</exec>
2014-11-07 02:48:12 -05:00
<exec executable= "chocolatey.exe" dir= "${dir.dist}\chocolatey" failonerror= "true" >
2014-08-01 07:47:39 -04:00
<arg line= "push ${dir.dist}\chocolatey\filebot.${version}.nupkg" />
</exec>
</target>
2014-08-07 04:51:05 -04:00
<target name= "upload-data" depends= "login" >
2014-08-01 07:47:39 -04:00
<scp todir= "${sf.user}:${sf.password}@${frs.website}" trust= "yes" verbose= "true" sftp= "true" >
<fileset dir= "${dir.website}" >
<include name= "data/.htaccess" />
<include name= "data/*.txt" />
<include name= "data/*.xz" />
</fileset>
</scp>
</target>
<target name= "deploy-beta-jar" depends= "svn-update, fatjar, login" description= "Build and deploy fatjar for the latest revision" >
<!-- deploy fatjar -->
<input message= "Mark:" addproperty= "mark" />
<scp file= "${path.fatjar}" remoteTofile= "${sf.user}:${sf.password}@${frs.release}/HEAD/filebot-${version}-r${svn.revision}-${mark}.jar" trust= "yes" verbose= "true" sftp= "true" />
<scp file= "${path.fatjar}" remoteTofile= "${sf.user}:${sf.password}@${frs.release}/HEAD/FileBot.jar" trust= "yes" verbose= "true" sftp= "true" />
</target>
2014-11-07 03:24:51 -05:00
<target name= "deploy-beta-release" >
2014-08-01 07:47:39 -04:00
<input message= "Mark:" addproperty= "mark" />
<antcall target= "deploy-release" >
<param name= "dir.release" location= "${basedir.release}/HEAD/${title}_${version}_${mark}" />
</antcall>
</target>
<target name= "login" >
<!-- ask for sourceforge password -->
<input message= "Please enter sourceforge username:" addproperty= "sf.user" />
<input message= "Please enter sourceforge password:" addproperty= "sf.password" />
</target>
</project>