908 lines
37 KiB
XML
908 lines
37 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
<project name="filebot" default="fatjar" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:cmp="antlib:org.apache.ant.compress">
|
|
<property file="profile.properties" />
|
|
<property file="source/net/filebot/Settings.properties" />
|
|
|
|
<property name="title" value="${application.name}" />
|
|
<property name="version" value="${application.version}" />
|
|
|
|
<tstamp>
|
|
<format property="tstamp.date" pattern="yyyy-MM-dd" />
|
|
</tstamp>
|
|
<tstamp>
|
|
<format property="tstamp.year" pattern="yyyy" />
|
|
</tstamp>
|
|
|
|
<!-- define source dirs -->
|
|
<property name="dir.source" location="${basedir}/source" />
|
|
<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" />
|
|
<property name="dir.cache" location="${basedir}/cache" />
|
|
|
|
<!-- define output paths -->
|
|
<property name="path.fatjar" location="${dir.dist}/${title}_${version}.jar" />
|
|
|
|
<property name="basedir.release" location="${basedir}/release" />
|
|
<property name="dir.release" location="${basedir.release}/${title}_${version}" />
|
|
|
|
<!-- target JRE -->
|
|
<property name="jre.major" value="8" />
|
|
<property name="jre.build" value="102" />
|
|
|
|
|
|
<target name="resolve" description="Retrieve dependencies with Apache Ivy">
|
|
<delete dir="${dir.lib}/ivy" />
|
|
<ivy:retrieve pattern="${dir.lib}/ivy/[type]/[artifact].[ext]" />
|
|
|
|
<antcall target="resolve-import-native">
|
|
<param name="arch" value="mac-x86_64" />
|
|
<param name="arch.jna" value="darwin" />
|
|
<param name="arch.7zj" value="Mac-x86_64" />
|
|
</antcall>
|
|
<antcall target="resolve-import-native">
|
|
<param name="arch" value="win32-x64" />
|
|
<param name="arch.jna" value="win32-x86-64" />
|
|
<param name="arch.7zj" value="Windows-amd64" />
|
|
</antcall>
|
|
<antcall target="resolve-import-native">
|
|
<param name="arch" value="win32-x86" />
|
|
<param name="arch.jna" value="win32-x86/" />
|
|
<param name="arch.7zj" value="Windows-x86" />
|
|
</antcall>
|
|
<antcall target="resolve-import-native">
|
|
<param name="arch" value="linux-amd64" />
|
|
<param name="arch.jna" value="linux-x86-64" />
|
|
<param name="arch.7zj" value="Linux-amd64" />
|
|
</antcall>
|
|
<antcall target="resolve-import-native">
|
|
<param name="arch" value="linux-i686" />
|
|
<param name="arch.jna" value="linux-x86" />
|
|
<param name="arch.7zj" value="Linux-i386" />
|
|
</antcall>
|
|
<antcall target="resolve-import-native">
|
|
<param name="arch" value="linux-arm" />
|
|
<param name="arch.jna" value="linux-arm" />
|
|
<param name="arch.7zj" value="Linux-arm" />
|
|
</antcall>
|
|
</target>
|
|
|
|
|
|
<target name="resolve-import-native">
|
|
<unzip src="${dir.lib}/ivy/jar/jna.jar" dest="${dir.lib}/native/${arch}" overwrite="yes">
|
|
<patternset>
|
|
<include name="**/${arch.jna}/*.dll" />
|
|
<include name="**/${arch.jna}/*.so" />
|
|
<include name="**/${arch.jna}/*.jnilib" />
|
|
</patternset>
|
|
<chainedmapper>
|
|
<flattenmapper />
|
|
<compositemapper>
|
|
<globmapper from="*.jnilib" to="*.dylib" />
|
|
<identitymapper />
|
|
</compositemapper>
|
|
</chainedmapper>
|
|
</unzip>
|
|
<unzip src="${dir.lib}/ivy/jar/sevenzipjbinding-all-platforms.jar" dest="${dir.lib}/native/${arch}" overwrite="yes">
|
|
<patternset>
|
|
<include name="**/${arch.7zj}/*.dll" />
|
|
<include name="**/${arch.7zj}/*.so" />
|
|
<include name="**/${arch.7zj}/*.dylib" />
|
|
</patternset>
|
|
<chainedmapper>
|
|
<flattenmapper />
|
|
<compositemapper>
|
|
<globmapper from="lib*.dll" to="*.dll" />
|
|
<identitymapper />
|
|
</compositemapper>
|
|
</chainedmapper>
|
|
</unzip>
|
|
</target>
|
|
|
|
|
|
<target name="jar" depends="build">
|
|
<!-- create dist dir -->
|
|
<mkdir dir="${dir.dist}" />
|
|
|
|
<!-- main jar -->
|
|
<jar destfile="${dir.dist}/filebot.jar">
|
|
<fileset dir="${dir.build}" />
|
|
<manifest>
|
|
<attribute name="Build-Date" value="${tstamp.date}" />
|
|
<attribute name="Build-Revision" value="${revision}" />
|
|
<attribute name="Application-Name" value="${title}" />
|
|
<attribute name="Application-Version" value="${version}" />
|
|
<attribute name="Main-Class" value="net.filebot.Main" />
|
|
</manifest>
|
|
</jar>
|
|
|
|
<!-- source as zip -->
|
|
<zip destfile="${dir.dist}/${title}-${version}-src.zip">
|
|
<fileset dir="source" />
|
|
</zip>
|
|
</target>
|
|
|
|
|
|
<target name="fatjar" depends="jar" description="Build executable jar">
|
|
<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}/ivy/bundle/json-io.jar">
|
|
<include name="com/cedarsoftware/util/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/glazedlists_java15.jar">
|
|
<include name="ca/odell/glazedlists/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/miglayout-core.jar">
|
|
<include name="net/miginfocom/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/miglayout-swing.jar">
|
|
<include name="net/miginfocom/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/rsyntaxtextarea.jar">
|
|
<include name="org/fife/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/jars/simmetrics.jar">
|
|
<include name="uk/ac/shef/wit/simmetrics/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/jars/xmlrpc.jar">
|
|
<include name="redstone/xmlrpc/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/bundle/args4j.jar">
|
|
<include name="org/kohsuke/args4j/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/xz.jar">
|
|
<include name="org/tukaani/xz/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/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}/ivy/jar/slf4j-api.jar">
|
|
<include name="org/slf4j/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/slf4j-jdk14.jar">
|
|
<include name="org/slf4j/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/commons-io.jar">
|
|
<include name="org/apache/commons/io/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/icu4j.jar">
|
|
<include name="com/ibm/icu/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/jars/jacksum.jar">
|
|
<include name="jonelo/jacksum/adapt/**" />
|
|
<include name="jonelo/jacksum/algorithm/**" />
|
|
<include name="jonelo/sugar/util/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/groovy-all.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>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/sevenzipjbinding.jar">
|
|
<include name="net/sf/sevenzipjbinding/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/jars/ObjCBridge.jar">
|
|
<include name="ca/weblite/**" />
|
|
<include name="com/sun/jna/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/commons-vfs2.jar">
|
|
<include name="org/apache/commons/vfs2/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/commons-logging.jar">
|
|
<include name="org/apache/commons/logging/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/junrar.jar">
|
|
<include name="com/github/junrar/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/language-detector.jar">
|
|
<include name="be/frma/langguess/**" />
|
|
<include name="com/cybozu/labs/langdetect/**" />
|
|
<include name="com/optimaize/langdetect/**" />
|
|
<include name="languages/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/bundle/guava.jar">
|
|
<include name="com/google/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/streamex.jar">
|
|
<include name="one/util/streamex/**" />
|
|
</zipfileset>
|
|
|
|
<zipfileset src="${dir.lib}/ivy/jar/controlsfx.jar">
|
|
<include name="org/controlsfx/dialog/**" />
|
|
<include name="impl/org/controlsfx/i18n/**" />
|
|
<include name="controlsfx.properties" />
|
|
</zipfileset>
|
|
|
|
<!-- include classes and native libraries -->
|
|
<zipfileset src="${dir.lib}/ivy/jar/jna.jar">
|
|
<include name="com/sun/jna/**" />
|
|
</zipfileset>
|
|
<zipfileset src="${dir.lib}/ivy/jar/jna-platform.jar">
|
|
<include name="com/sun/jna/platform/**" />
|
|
</zipfileset>
|
|
|
|
<!-- libraries used in external scripts -->
|
|
<zipfileset src="${dir.lib}/ivy/jar/jsoup.jar">
|
|
<include name="org/jsoup/**" />
|
|
</zipfileset>
|
|
|
|
<!-- Ivy for @Grapes automatic dependency management -->
|
|
<zipfileset src="${dir.lib}/ivy/jar/ivy.jar">
|
|
<include name="org/apache/ivy/**" />
|
|
</zipfileset>
|
|
|
|
<!-- AntBuilder including dependencies for ant-javamail, ant-commons-net and ant-jsch -->
|
|
<zipfileset src="${dir.lib}/ivy/jar/ant.jar">
|
|
<include name="org/apache/tools/**" />
|
|
</zipfileset>
|
|
<zipfileset src="${dir.lib}/ivy/jar/ant-launcher.jar">
|
|
<include name="org/apache/tools/**" />
|
|
</zipfileset>
|
|
<zipfileset src="${dir.lib}/ivy/jar/ant-commons-net.jar">
|
|
<include name="org/apache/tools/**" />
|
|
</zipfileset>
|
|
<zipfileset src="${dir.lib}/ivy/jar/ant-jsch.jar">
|
|
<include name="org/apache/tools/**" />
|
|
</zipfileset>
|
|
<zipfileset src="${dir.lib}/ivy/jar/ant-javamail.jar">
|
|
<include name="org/apache/tools/**" />
|
|
</zipfileset>
|
|
<zipfileset src="${dir.lib}/ivy/jar/commons-net.jar">
|
|
<include name="org/apache/commons/net/**" />
|
|
</zipfileset>
|
|
<zipfileset src="${dir.lib}/ivy/jar/jsch.jar">
|
|
<include name="com/jcraft/jsch/**" />
|
|
</zipfileset>
|
|
<zipfileset src="${dir.lib}/ivy/jar/mail.jar">
|
|
<include name="javax/mail/**" />
|
|
<include name="com/sun/mail/**" />
|
|
<include name="META-INF/*mail*" />
|
|
</zipfileset>
|
|
</jar>
|
|
</target>
|
|
|
|
|
|
<target name="appbundle" description="Build Mac application bundle" depends="revision">
|
|
<bundleapp minimumsystemversion="10.8" jvmrequired="1.8" outputdirectory="${dir.dist}" executablename="purchase.sh" hidedockicon="true" name="${application.name}" displayname="${title} ${version}" version="${revision}" shortversion="${version}" identifier="net.filebot.app" mainclassname="net.filebot.Main" icon="${dir.installer}/appbundle/filebot.icns" copyright="${tstamp.year} Reinhard Pointner" applicationcategory="public.app-category.utilities" highresolutioncapable="true" supportsautomaticgraphicsswitching="true" debug="true">
|
|
<classpath file="${path.fatjar}" />
|
|
<librarypath dir="${dir.lib}/native/mac-x86_64" />
|
|
<librarypath dir="${dir.installer}/appbundle/MacOS" />
|
|
|
|
<arch name="x86_64" />
|
|
|
|
<option value="-Dnet.filebot.UserFiles.fileChooser=COCOA" />
|
|
<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" />
|
|
|
|
<option value="-Djna.nosys=true" />
|
|
<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" />
|
|
|
|
<bundledocument role="viewer" handlerRank="none" contentTypes="public.movie" name="Video file" />
|
|
<bundledocument role="viewer" handlerRank="none" contentTypes="public.audio" name="Audio file" />
|
|
<bundledocument role="viewer" handlerRank="none" contentTypes="public.folder" name="Media folder" />
|
|
</bundleapp>
|
|
|
|
<!-- application bundle folder as .tar -->
|
|
<cmp:xz destfile="${dir.dist}/${title}_${version}-darwin.tar.xz">
|
|
<cmp:tar format="gnu" encoding="utf-8">
|
|
<cmp:tarfileset dir="${dir.dist}" includes="${application.name}.app/**" excludes="**/MacOS/**" />
|
|
<cmp:tarfileset dir="${dir.dist}" includes="${application.name}.app/**/**.dylib" />
|
|
|
|
<cmp:tarfileset dir="${dir.dist}" includes="${application.name}.app/**/fpcalc" filemode="755" />
|
|
<cmp:tarfileset dir="${dir.dist}" includes="${application.name}.app/**/**.sh" filemode="755" />
|
|
</cmp:tar>
|
|
</cmp:xz>
|
|
</target>
|
|
|
|
|
|
<target name="appbundle-maspkg-core">
|
|
<antcall target="appbundle-maspkg">
|
|
<param name="application.name" value="FileBot" />
|
|
<param name="application.executable" value="FileBot" />
|
|
<param name="application.identifier" value="net.filebot.FileBot" />
|
|
<param name="application.icon" value="${dir.installer}/appbundle/filebot.icns" />
|
|
<param name="application.cert.appbundle" value="3rd Party Mac Developer Application: Point Planck Limited" />
|
|
<param name="application.cert.installer" value="3rd Party Mac Developer Installer: Point Planck Limited" />
|
|
|
|
<!-- MAS does not allow subtitle apps -->
|
|
<param name="application.mode" value="Rename|Episodes|SFV|Filter|List" />
|
|
|
|
<!-- libjfxwebkit.dylib cannot be deployed on the MAS due to deprecated dependencies -->
|
|
<param name="application.help" value="ask" />
|
|
</antcall>
|
|
</target>
|
|
|
|
|
|
<target name="appbundle-maspkg-subtitles">
|
|
<antcall target="appbundle-maspkg">
|
|
<param name="application.name" value="FileBot Subtitles" />
|
|
<param name="application.executable" value="FileBotSubtitles" />
|
|
<param name="application.identifier" value="net.filebot.subtitles" />
|
|
<param name="application.icon" value="${dir.installer}/appbundle/subtitles.icns" />
|
|
<param name="application.cert.appbundle" value="Developer ID Application: Point Planck Limited" />
|
|
<param name="application.cert.installer" value="Developer ID Installer: Point Planck Limited" />
|
|
<param name="application.mode" value="Subtitles" />
|
|
<param name="application.help" value="skip" />
|
|
</antcall>
|
|
</target>
|
|
|
|
|
|
<target name="appbundle-maspkg" depends="revision">
|
|
<property name="path.app" value="${application.name}.app" />
|
|
<property name="path.pkg" value="${application.executable}_${version}_r${revision}.pkg" />
|
|
|
|
<property name="jre.version" value="jdk1.${jre.major}.0_${jre.build}.jdk" />
|
|
<property name="jre.path" value="/Library/Java/JavaVirtualMachines/${jre.version}/Contents/Home" />
|
|
|
|
<bundleapp minimumsystemversion="10.8" jvmrequired="1.8" outputdirectory="${dir.dist}" executablename="${application.executable}AppLauncher" name="${application.name}" displayname="${application.name}" version="${revision}" shortversion="${version}" identifier="${application.identifier}" mainclassname="net.filebot.Main" icon="${application.icon}" copyright="${tstamp.year} Point Planck" applicationcategory="public.app-category.utilities" highresolutioncapable="true" supportsautomaticgraphicsswitching="true" debug="true">
|
|
<classpath file="${path.fatjar}" />
|
|
<librarypath dir="${dir.lib}/native/mac-x86_64" />
|
|
<librarypath dir="${dir.installer}/appbundle/MacOS" excludes="purchase.sh" />
|
|
|
|
<arch name="x86_64" />
|
|
<runtime dir="${jre.path}" />
|
|
|
|
<argument value="--mode" />
|
|
<argument value="${application.mode}" />
|
|
|
|
<!-- 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" />
|
|
|
|
<option value="-Dnet.filebot.UserFiles.fileChooser=COCOA" />
|
|
<option value="-Dapplication.name=${application.name}" />
|
|
<option value="-Dapplication.help=${application.help}" />
|
|
<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" />
|
|
|
|
<option value="-Djna.nosys=true" />
|
|
<option value="-Djna.nounpack=true" />
|
|
<option value="-Djna.boot.library.name=jnidispatch" />
|
|
<option value="-Djna.boot.library.path=$APP_ROOT/Contents/MacOS" />
|
|
<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="-Dapple.laf.useScreenMenuBar=true" />
|
|
|
|
<bundledocument role="viewer" handlerRank="none" contentTypes="public.movie" name="Video file" />
|
|
<bundledocument role="viewer" handlerRank="none" contentTypes="public.audio" name="Audio file" />
|
|
<bundledocument role="viewer" handlerRank="none" contentTypes="public.folder" name="Media folder" />
|
|
</bundleapp>
|
|
|
|
<!-- fix code signing and submission issues -->
|
|
<delete verbose="yes">
|
|
<fileset dir="${dir.dist}/${path.app}/Contents/PlugIns">
|
|
<include name="**/libjfxmedia_qtkit.dylib" />
|
|
<include name="**/libjfxwebkit.dylib" />
|
|
<include name="**/Contents/Info.plist" />
|
|
<include name="**/Contents/MacOS/libjli.dylib" />
|
|
</fileset>
|
|
</delete>
|
|
<copy verbose="yes" failonerror="yes" overwrite="yes" file="/Library/Java/JavaVirtualMachines/${jre.version}/Contents/Info.plist" tofile="${dir.dist}/${path.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}/${path.app}/Contents/PlugIns/${jre.version}/Contents/MacOS/libjli.dylib" />
|
|
|
|
<!-- fix permissions -->
|
|
<chmod verbose="yes" dir="${dir.dist}" includes="**/fpcalc" perm="+x" />
|
|
<chmod verbose="yes" dir="${dir.dist}" includes="**/*.sh" perm="+x" />
|
|
<chmod verbose="yes" dir="${dir.dist}/${path.app}/Contents/PlugIns" perm="+rw" />
|
|
|
|
<!-- JRE sign all jars, dylibs and executables -->
|
|
<property name="codesign.opts" value="--verbose=4 --force --sign '${application.cert.appbundle}'" />
|
|
<property name="codesign.entitlements" value="--entitlements '${dir.installer}/appbundle/FileBot.entitlements'" />
|
|
<property name="codesign.entitlements.inherit" value="--entitlements '${dir.installer}/appbundle/inherit.entitlements'" />
|
|
|
|
<apply executable="codesign">
|
|
<arg line="${codesign.opts} ${codesign.entitlements.inherit}" />
|
|
<srcfile />
|
|
<fileset dir="${dir.dist}/${path.app}/Contents/PlugIns">
|
|
<include name="**/jspawnhelper" />
|
|
<include name="**/*.dylib" />
|
|
<include name="**/*.jar" />
|
|
</fileset>
|
|
</apply>
|
|
|
|
<!-- sign cmdline tool first -->
|
|
<exec dir="${dir.dist}/${path.app}" executable="codesign">
|
|
<arg line="${codesign.opts} ${codesign.entitlements.inherit} Contents/MacOS/fpcalc" />
|
|
</exec>
|
|
|
|
<!-- APP sign all jars, dylibs and executables -->
|
|
<apply executable="codesign">
|
|
<arg line="${codesign.opts} ${codesign.entitlements}" />
|
|
<srcfile />
|
|
<fileset dir="${dir.dist}/${path.app}/Contents">
|
|
<include name="MacOS/*.dylib" />
|
|
<include name="MacOS/*.sh" />
|
|
<include name="Java/*.jar" />
|
|
</fileset>
|
|
</apply>
|
|
|
|
<!-- sign app with entitlements -->
|
|
<exec dir="${dir.dist}" executable="codesign">
|
|
<arg line="${codesign.opts} ${codesign.entitlements} '${path.app}/Contents/PlugIns/${jre.version}'" />
|
|
</exec>
|
|
<exec dir="${dir.dist}" executable="codesign">
|
|
<arg line="${codesign.opts} ${codesign.entitlements} '${path.app}'" />
|
|
</exec>
|
|
|
|
<!-- verify signature & build pkg -->
|
|
<exec dir="${dir.dist}" executable="codesign" failonerror="on">
|
|
<arg line="--verify '${path.app}/Contents/PlugIns/${jre.version}'" />
|
|
</exec>
|
|
<exec dir="${dir.dist}" executable="codesign" failonerror="on">
|
|
<arg line="--verify '${path.app}'" />
|
|
</exec>
|
|
<exec dir="${dir.dist}" executable="productbuild" failonerror="on">
|
|
<arg line="--component '${path.app}' /Applications --sign '${application.cert.installer}' ${path.pkg}" />
|
|
</exec>
|
|
|
|
<!-- store this build in releases -->
|
|
<mkdir dir="${dir.release}" />
|
|
<copy todir="${dir.release}" file="${dir.dist}/${path.pkg}" verbose="yes" />
|
|
</target>
|
|
|
|
|
|
<target name="snap" depends="revision">
|
|
<copy tofile="${dir.dist}/snappy/filebot/FileBot.jar" file="${path.fatjar}" />
|
|
<copy todir="${dir.dist}/snappy/filebot/lib/amd64">
|
|
<fileset dir="${dir.lib}/native/linux-amd64" excludes="fpcalc, libmediainfo.so, libzen.so" />
|
|
</copy>
|
|
|
|
<!-- copy files and resolve ant variables -->
|
|
<copy todir="${dir.dist}/snappy" overwrite="yes" encoding="UTF-8" verbose="true">
|
|
<fileset dir="${dir.installer}/snappy" />
|
|
<filterset begintoken="@{" endtoken="}">
|
|
<propertyset>
|
|
<propertyref builtin="all" />
|
|
</propertyset>
|
|
</filterset>
|
|
</copy>
|
|
<chmod perm="+x" file="${dir.dist}/snappy/filebot/filebot.sh" verbose="yes" />
|
|
|
|
<exec executable="snapcraft" dir="${dir.dist}/snappy" failonerror="yes">
|
|
<arg line="snap" />
|
|
</exec>
|
|
</target>
|
|
|
|
|
|
<target name="deb" description="Build Debian Linux packages" depends="revision">
|
|
<antcall target="deb-arch">
|
|
<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" />
|
|
</antcall>
|
|
<antcall target="deb-arch">
|
|
<param name="arch" value="amd64" />
|
|
<param name="deb.arch" value="amd64" />
|
|
</antcall>
|
|
</target>
|
|
|
|
|
|
<target name="deb-arch">
|
|
<!-- stage created .deb files in a temporary folder -->
|
|
<property name="deb.staging" location="${dir.dist}/deb" />
|
|
<mkdir dir="${deb.staging}" />
|
|
<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">
|
|
<maintainer name="Reinhard Pointner" email="maintainer@filebot.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>
|
|
<move tofile="${dir.dist}/filebot_${version}_${deb.arch}.deb" file="${staging.file.deb}" overwrite="no" failonerror="yes" />
|
|
<delete dir="${deb.staging}" />
|
|
</target>
|
|
|
|
|
|
<target name="ipkg" description="Build embedded Linux packages" depends="revision">
|
|
<!-- stage created .deb files in a temporary folder -->
|
|
<property name="ipkg.staging" location="${dir.dist}/deb-ipkg" />
|
|
<mkdir dir="${ipkg.staging}" />
|
|
<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">
|
|
<maintainer name="Reinhard Pointner" email="maintainer@filebot.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>
|
|
<move tofile="${dir.dist}/filebot_${version}_noarch.ipk" file="${staging.file.deb}" overwrite="no" failonerror="yes" />
|
|
<delete dir="${ipkg.staging}" />
|
|
</target>
|
|
|
|
|
|
<target name="appx" description="Build Windows 10 package" depends="revision">
|
|
<copy tofile="${dir.dist}/appx/FileBot.jar" file="${path.fatjar}" />
|
|
<copy todir="${dir.dist}/appx">
|
|
<fileset dir="${dir.installer}/appx" includes="*.exe, *.ini, *.png" />
|
|
<fileset dir="${dir.lib}/native/win32-x64" />
|
|
</copy>
|
|
<copy todir="${dir.dist}/appx/jre">
|
|
<tarfileset>
|
|
<gzipresource>
|
|
<file file="${dir.cache}/jre-${jre.major}u${jre.build}-windows-x64.tar.gz" />
|
|
</gzipresource>
|
|
</tarfileset>
|
|
<cutdirsmapper dirs="1" />
|
|
</copy>
|
|
|
|
<!-- copy files and resolve ant variables -->
|
|
<copy todir="${dir.dist}/appx" overwrite="yes" encoding="UTF-8" verbose="true">
|
|
<fileset dir="${dir.installer}/appx" includes="AppxManifest.xml" />
|
|
<filterset begintoken="@{" endtoken="}">
|
|
<propertyset>
|
|
<propertyref builtin="all" />
|
|
</propertyset>
|
|
</filterset>
|
|
</copy>
|
|
|
|
<exec executable="makeappx" dir="${dir.dist}" failonerror="yes">
|
|
<arg line="pack /d appx /p ${title}_${version}.appx" />
|
|
</exec>
|
|
</target>
|
|
|
|
|
|
<target name="msi" description="Build Windows Installer packages" depends="revision">
|
|
<antcall target="msi-arch">
|
|
<param name="arch" value="x86" />
|
|
</antcall>
|
|
<antcall target="msi-arch">
|
|
<param name="arch" value="x64" />
|
|
</antcall>
|
|
|
|
<apply executable="signtool" dir="${dir.installer}/msi" parallel="true" failonerror="true">
|
|
<arg line="sign /fd SHA256 /t http://time.certum.pl/ /v /a" />
|
|
<srcfile />
|
|
<fileset dir="${dir.dist}" includes="*.msi" />
|
|
</apply>
|
|
</target>
|
|
|
|
|
|
<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}/gcc_s_seh-1.dll" />
|
|
<property name="fpcalc_path" location="${dir.lib}/native/win32-${arch}/fpcalc.exe" />
|
|
<property name="installer" location="${dir.dist}/${title}_${version}_${arch}.msi" />
|
|
|
|
<exec executable="candle" 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" dir="${dir.installer}/msi" failonerror="true">
|
|
<arg line="${dir.dist}/msi.wixobj -sval -ext WixUIExtension -out ${installer}" />
|
|
</exec>
|
|
</target>
|
|
|
|
|
|
<target name="portable" description="Build portable package" depends="revision">
|
|
<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>
|
|
|
|
<cmp:xz destfile="${dir.dist}/${title}_${version}-portable.tar.xz">
|
|
<cmp:tar format="gnu" encoding="utf-8">
|
|
<cmp:tarfileset dir="${dir.dist}/portable" includes="*.jar, *.exe, *.ini, *.cmd" />
|
|
<cmp:tarfileset dir="${dir.dist}/portable" includes="*.sh" filemode="755" />
|
|
</cmp:tar>
|
|
</cmp:xz>
|
|
</target>
|
|
|
|
|
|
<target name="spk" description="Build Synology NAS package" depends="revision">
|
|
<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="FileBot" />
|
|
<info name="maintainer_url" value="http://www.filebot.net/" />
|
|
<info name="distributor" value="FileBot" />
|
|
<info name="distributor_url" value="http://www.filebot.net/" />
|
|
<info name="support_url" value="https://www.filebot.net/forums/viewforum.php?f=13" />
|
|
<info name="helpurl" value="http://www.filebot.net/cli.html" />
|
|
<info name="firmware" value="5.0" />
|
|
<info name="startable" value="no" />
|
|
<info name="silent_install" value="yes" />
|
|
<info name="silent_uninstall" value="yes" />
|
|
<info name="silent_upgrade" value="yes" />
|
|
<info name="thirdparty" value="yes" />
|
|
<info name="start_dep_services" value="ssh" />
|
|
<info name="install_dep_packages" value="oracle-java" />
|
|
|
|
<icon size="72" file="${dir.installer}/icons/icon72.png" />
|
|
<icon size="256" file="${dir.installer}/icons/icon256.png" />
|
|
|
|
<scripts dir="${dir.installer}/spk/scripts" filemode="755" />
|
|
<package dir="${dir.installer}/spk/package" includes="*.sh" filemode="755" />
|
|
<package file="${path.fatjar}" fullpath="FileBot.jar" />
|
|
|
|
<codesign secring="${dir.installer}/gpg/secring.gpg" keyid="${gpg.key}" password="${gpg.pwd}" />
|
|
</spk>
|
|
</target>
|
|
|
|
|
|
<target name="build" depends="revision">
|
|
<!-- create build dir -->
|
|
<mkdir dir="${dir.build}" />
|
|
|
|
<!-- compile -->
|
|
<javac srcdir="${dir.source}" destdir="${dir.build}" target="1.8" source="1.8" encoding="utf-8" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false">
|
|
<classpath>
|
|
<fileset dir="${dir.lib}" includes="**/*.jar" />
|
|
</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="@{revision}" value="${revision}" />
|
|
<replacefilter token="@{version}" value="${version}" />
|
|
</replace>
|
|
</target>
|
|
|
|
|
|
<target name="clean" description="Delete build folders">
|
|
<delete dir="${dir.dist}" />
|
|
<delete dir="${dir.build}" />
|
|
</target>
|
|
|
|
|
|
<target name="revision" depends="taskdef">
|
|
<exec executable="git" outputproperty="revision" failonerror="true">
|
|
<arg line="rev-list --count master" />
|
|
</exec>
|
|
<echo>Revision: ${revision}</echo>
|
|
</target>
|
|
|
|
|
|
<target name="taskdef">
|
|
<path id="lib.classpath">
|
|
<fileset dir="${dir.lib}" includes="**/*.jar" excludes="**/*-jdk14.jar" />
|
|
</path>
|
|
<taskdef uri="antlib:org.apache.ant.compress" resource="org/apache/ant/compress/antlib.xml" classpathref="lib.classpath" />
|
|
<taskdef resource="net/filebot/ant/spk/antlib.xml" classpathref="lib.classpath" />
|
|
<taskdef resource="com/googlecode/ant_deb_task/antlib.xml" classpathref="lib.classpath" />
|
|
<taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" classpathref="lib.classpath" />
|
|
</target>
|
|
|
|
|
|
<target name="stage-release" depends="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.xz" />
|
|
<include name="*.msi" />
|
|
<include name="*.deb" />
|
|
<include name="*.ipk" />
|
|
<include name="*.spk" />
|
|
</fileset>
|
|
</copy>
|
|
|
|
<checksum algorithm="SHA-256" pattern="{0} {1}" todir="${dir.cache}/sha/${title}_${version}">
|
|
<fileset dir="${dir.release}" />
|
|
</checksum>
|
|
<concat destfile="${dir.release}/README.md" overwrite="true" eol="unix" outputencoding="UTF-8">
|
|
<fileset file="${dir.installer}/ant/digest.header.md" />
|
|
<fileset dir="${dir.cache}/sha/${title}_${version}" />
|
|
<fileset file="${dir.installer}/ant/digest.footer.md" />
|
|
</concat>
|
|
</target>
|
|
|
|
|
|
<target name="deploy-release" depends="stage-release" description="Upload release files to SourceForge.net FRS">
|
|
<scp todir="${deploy.release}" trust="yes" verbose="true" sftp="true" keyfile="${deploy.keyfile}">
|
|
<!-- make sure to upload README.md first -->
|
|
<fileset dir="${basedir.release}" includes="**/README.md">
|
|
<date datetime="${tstamp.date}" pattern="yyyy-MM-dd" when="after" />
|
|
</fileset>
|
|
</scp>
|
|
<scp todir="${deploy.release}" trust="yes" verbose="true" sftp="true" keyfile="${deploy.keyfile}">
|
|
<!-- upload starting with parent folders so scp will create the release folder for us -->
|
|
<fileset dir="${basedir.release}" excludes="**/README.md">
|
|
<date datetime="${tstamp.date}" pattern="yyyy-MM-dd" when="after" />
|
|
</fileset>
|
|
</scp>
|
|
</target>
|
|
|
|
|
|
<target name="deploy-website" description="Upload website resources">
|
|
<!-- copy static website resources -->
|
|
<copy todir="${dir.dist}/website" preservelastmodified="yes" verbose="yes">
|
|
<fileset dir="${dir.website}">
|
|
<include name=".htaccess" />
|
|
<include name="*.html" />
|
|
<include name="*.php" />
|
|
<include name="*.json" />
|
|
<include name="*.xml" />
|
|
<include name="*.css" />
|
|
<include name="*.js" />
|
|
<include name="*.png" />
|
|
<include name="*.ico" />
|
|
<include name="*.txt" />
|
|
<include name="syno/**" />
|
|
<include name="images/**" />
|
|
<include name="screenshots/**" />
|
|
<include name="getting-started/**" />
|
|
</fileset>
|
|
</copy>
|
|
|
|
<!-- copy files and resolve ant variables -->
|
|
<copy todir="${dir.dist}/website" overwrite="yes" encoding="UTF-8" verbose="true">
|
|
<fileset dir="${dir.website}">
|
|
<include name="*.html" />
|
|
<include name="*.php" />
|
|
</fileset>
|
|
<filterset begintoken="@{" endtoken="}">
|
|
<propertyset>
|
|
<propertyref builtin="all" />
|
|
</propertyset>
|
|
</filterset>
|
|
</copy>
|
|
|
|
<!-- upload -->
|
|
<scp todir="${deploy.website}" trust="yes" verbose="true" sftp="true" keyfile="${deploy.keyfile}">
|
|
<fileset dir="${dir.dist}/website">
|
|
<modified>
|
|
<param name="cache.cachefile" value="${dir.cache}/scp.cache" />
|
|
</modified>
|
|
</fileset>
|
|
</scp>
|
|
</target>
|
|
|
|
|
|
<target name="deploy-synology" description="Update Synology Package Source">
|
|
<mkdir dir="${dir.dist}/website/syno" />
|
|
|
|
<!-- merge all filebot related packages into a single package source file -->
|
|
<package-source file="${dir.dist}/website/syno/index.json">
|
|
<keyring file="${dir.installer}/gpg/FileBot.pub" />
|
|
<spk file="${dir.release}/filebot-${version}-noarch.spk">
|
|
<info name="link" value="http://downloads.sourceforge.net/project/filebot/filebot/FileBot_${version}/filebot-${version}-noarch.spk" />
|
|
<thumbnail url="http://app.filebot.net/syno/filebot-thumbnail.png" />
|
|
<snapshot url="http://app.filebot.net/syno/filebot-snapshot.png" />
|
|
</spk>
|
|
<source url="https://raw.githubusercontent.com/filebot/filebot-node/master/spksrc.json" />
|
|
<source url="https://raw.githubusercontent.com/rednoah/java-installer/master/spksrc.json" />
|
|
<source url="https://raw.githubusercontent.com/rednoah/ant-installer/master/spksrc.json" />
|
|
</package-source>
|
|
|
|
<!-- upload -->
|
|
<scp todir="${deploy.website}/syno" trust="yes" verbose="true" sftp="true" keyfile="${deploy.keyfile}">
|
|
<fileset dir="${dir.dist}/website/syno">
|
|
<include name="*.json" />
|
|
</fileset>
|
|
</scp>
|
|
</target>
|
|
|
|
|
|
<target name="deploy-chocolatey" description="Update Chocolatey Package Source">
|
|
<!-- prepare sha1 checksums -->
|
|
<checksum property="x86.msi.sha256" file="${dir.release}/${title}_${version}_x86.msi" algorithm="SHA-256" />
|
|
<checksum property="x64.msi.sha256" file="${dir.release}/${title}_${version}_x64.msi" algorithm="SHA-256" />
|
|
|
|
<!-- replace variables for new release -->
|
|
<copy todir="${dir.dist}/chocolatey" overwrite="yes" encoding="UTF-8" verbose="true">
|
|
<fileset dir="${dir.installer}/chocolatey">
|
|
<include name="**/*.ps1" />
|
|
<include name="**/*.nuspec" />
|
|
</fileset>
|
|
<filterset begintoken="@{" endtoken="}">
|
|
<propertyset>
|
|
<propertyref builtin="all" />
|
|
</propertyset>
|
|
</filterset>
|
|
</copy>
|
|
|
|
<!-- chocolatey pack and push -->
|
|
<exec executable="chocolatey" dir="${dir.dist}\chocolatey" failonerror="true">
|
|
<arg value="pack" />
|
|
</exec>
|
|
<exec executable="chocolatey" dir="${dir.dist}\chocolatey" failonerror="true">
|
|
<arg value="push" />
|
|
<arg value="${dir.dist}\chocolatey\filebot.${version}.nupkg" />
|
|
</exec>
|
|
</target>
|
|
|
|
|
|
<target name="upload-data" description="Upload data files">
|
|
<scp todir="${deploy.website}" trust="yes" verbose="true" sftp="true" keyfile="${deploy.keyfile}">
|
|
<fileset dir="${dir.website}">
|
|
<include name="data/*.txt" />
|
|
<include name="data/*.xz" />
|
|
<modified>
|
|
<param name="cache.cachefile" value="${dir.cache}/scp.cache" />
|
|
</modified>
|
|
</fileset>
|
|
</scp>
|
|
</target>
|
|
|
|
|
|
<target name="deploy-beta-jar" depends="fatjar" description="Build and deploy the latest jar">
|
|
<scp file="${path.fatjar}" remoteTofile="${deploy.release}/HEAD/filebot-r${revision}.jar" trust="yes" verbose="true" sftp="true" keyfile="${deploy.keyfile}" />
|
|
<scp file="${path.fatjar}" remoteTofile="${deploy.release}/HEAD/FileBot.jar" trust="yes" verbose="true" sftp="true" keyfile="${deploy.keyfile}" />
|
|
</target>
|
|
|
|
|
|
<target name="deploy-beta-release" description="Build and deploy the latest release files">
|
|
<input addproperty="mark" message="Mark:" />
|
|
<antcall target="deploy-release">
|
|
<param name="dir.release" location="${basedir.release}/HEAD/${title}_${version}_${mark}" />
|
|
</antcall>
|
|
</target>
|
|
|
|
|
|
</project>
|