mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-06 12:50:22 +00:00
384 lines
18 KiB
XML
384 lines
18 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
|
|
<!-- for some information on what you could do (e.g. targets to override). -->
|
|
<!-- If you delete this file and reopen the project it will be recreated. -->
|
|
<project name="Autopsy 4" default="build" basedir=".">
|
|
<description>Builds the module suite Autopsy 4.</description>
|
|
|
|
<import file="nbproject/build-impl.xml"/>
|
|
<import file="${basedir}/TSKVersion.xml"/>
|
|
<!-- IMPORTANT: nbproject/platform.properties has a netbeans-plat-version property that MUST be kept in sync (manually) -->
|
|
<property name="netbeans-plat-version" value="15" />
|
|
<property name="nbplatform.active.dir" value="${basedir}/netbeans-plat/${netbeans-plat-version}" />
|
|
<!-- Supported java versions.-->
|
|
|
|
<condition property="supported-java-versions">
|
|
<or>
|
|
<matches string="${java.version}" pattern="[1-9][0-9]\.*\.*"/>
|
|
<matches string="${ant.java.version}" pattern="[1-9][0-9]"/>
|
|
</or>
|
|
</condition>
|
|
|
|
<!-- Verify that the java version running is . -->
|
|
<fail message="Unsupported Java version: ${ant.java.version} with Ant java version ${ant.java.version}.
|
|
Make sure that the Java version is 11 or higher."
|
|
unless="supported-java-versions"/>
|
|
|
|
<!-- Determine platform and include specific file -->
|
|
<condition property="os.family" value="unix">
|
|
<os family="unix"/>
|
|
</condition>
|
|
<condition property="os.family" value="windows">
|
|
<os family="windows"/>
|
|
</condition>
|
|
|
|
<condition property="os.family" value="mac">
|
|
<os family="mac"/>
|
|
</condition>
|
|
|
|
<import file="build-${os.family}.xml"/>
|
|
|
|
<!-- Third party tools dependencies -->
|
|
<!-- import ant-contrib tools -->
|
|
<property name="thirdparty.dir" value="${basedir}/thirdparty" />
|
|
<property name="ant-contrib.dir" value="${thirdparty.dir}/ant-contrib/1.0b3" />
|
|
<property name="ant.contrib.jar" value="${ant-contrib.dir}/ant-contrib.jar" />
|
|
<taskdef resource="net/sf/antcontrib/antlib.xml">
|
|
<classpath>
|
|
<pathelement location="${ant.contrib.jar}"/>
|
|
</classpath>
|
|
</taskdef>
|
|
|
|
<target name="getJunit">
|
|
<property name="junit.dir" value="${thirdparty.dir}/junit/${netbeans-plat-version}" />
|
|
<unzip src="${junit.dir}/junit.zip" dest="${nbplatform.active.dir}"/>
|
|
</target>
|
|
|
|
|
|
<!-- Verify that the TSK_HOME env variable is set -->
|
|
<target name="findTSK">
|
|
<property environment="env"/>
|
|
<condition property="tskFound">
|
|
<isset property="env.TSK_HOME"/>
|
|
</condition>
|
|
<fail unless="tskFound" message="TSK_HOME must be set as an environment variable."/>
|
|
<echo> TSK_HOME: ${env.TSK_HOME}</echo>
|
|
</target>
|
|
|
|
<target name="clean" depends="suite.clean">
|
|
<delete includeEmptyDirs="true" failonerror="false">
|
|
<fileset dir="docs\doxygen-user\user-docs" includes="**/*"/>
|
|
</delete>
|
|
|
|
<delete includeEmptyDirs="true" failonerror="false">
|
|
<fileset dir="docs\doxygen\doxygen_docs\api-docs" includes="**/*"/>
|
|
</delete>
|
|
|
|
<delete includeemptydirs="true" failonerror="false">
|
|
<fileset dir="${basedir}/docs/doxygen-dev/build-docs" includes="**/*"/>
|
|
</delete>
|
|
|
|
<!-- clean core test libs -->
|
|
<subant buildpath="${basedir}/CoreTestLibs/build.xml" target="clean" inheritrefs="false" inheritall="false">
|
|
<property name="nbplatform.active.dir" value="${nbplatform.active.dir}" />
|
|
<property name="nbplatform.default.harness.dir" value="${nbplatform.default.harness.dir}" />
|
|
</subant>
|
|
</target>
|
|
|
|
<!-- This target is similar to the regular test target that calls test on all nbm's,
|
|
but this target excludes the Testing nbm which runs the regression tests -->
|
|
<target name="test-no-regression" depends="build" description="Runs tests for all modules in the suite excluding the regression tests of the Testing NBM.">
|
|
<!--taken from https://stackoverflow.com/a/1176101/2375948 ; remove "Testing" from the modules and provide 'modulesNoTesting' as result. -->
|
|
<propertyregex property="modulesNoTesting"
|
|
input="${modules}"
|
|
regexp="Testing[;:]?"
|
|
replace=""
|
|
global="true" />
|
|
|
|
<sortsuitemodules unsortedmodules="${modulesNoTesting}" sortedmodulesproperty="modules.test.sorted" sorttests="true"/>
|
|
<!-- continue on fail -->
|
|
<property name="continue.after.failing.tests" value="true"/>
|
|
<subant target="test" buildpath="${modules.test.sorted}" inheritrefs="false" inheritall="false">
|
|
<property name="cluster.path.evaluated" value="${cluster.path.evaluated}"/> <!-- Just for speed of pre-7.0 projects -->
|
|
<property name="harness.taskdefs.done" value="${harness.taskdefs.done}"/> <!-- optimization -->
|
|
<property name="continue.after.failing.tests" value="${continue.after.failing.tests}"/>
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="set-release-build">
|
|
<property name="build.type" value="RELEASE"/>
|
|
</target>
|
|
|
|
<!-- This target will create a custom ZIP file for us. It first uses the general
|
|
ZIP target and then opens it up and adds in any files that we want. This is where we customize the
|
|
version number. -->
|
|
<target name="build-zip" depends="set-release-build, build, doxygen, suite.build-zip"> <!--,findJRE" -->
|
|
|
|
<property name="release.dir" value="${nbdist.dir}/${app.name}"/>
|
|
|
|
<!-- step (2) unzip the result -->
|
|
<property name="zip-tmp" value="${nbdist.dir}/tmp"/>
|
|
<delete dir="${zip-tmp}"/>
|
|
<mkdir dir="${zip-tmp}"/>
|
|
<unzip src="${nbdist.dir}/${app.name}.zip" dest="${zip-tmp}"/>
|
|
|
|
<!-- Disable the Experimental module by default for the installed version. Need to update .lastModified time for change to be seen. -->
|
|
<replace file="${zip-tmp}/autopsy/autopsy/config/Modules/org-sleuthkit-autopsy-experimental.xml" token="<param name="enabled">true</param>" value="<param name="enabled">false</param>"/>
|
|
<echo file="${zip-tmp}/autopsy/autopsy/.lastModified" message="" />
|
|
|
|
<!-- step (3) do your copying stuff here, check the ant doc for copy, move, etc file -->
|
|
<copy file="${nbplatform.active.dir}/platform/modules/ext/junit-4.10.jar"
|
|
tofile="${zip-tmp}/${app.name}/platform/modules/ext/junit-4.10.jar"/>
|
|
<copy file="${basedir}/README.txt" tofile="${zip-tmp}/${app.name}/README.txt"/>
|
|
<copy file="${basedir}/LICENSE-2.0.txt" tofile="${zip-tmp}/${app.name}/LICENSE-2.0.txt"/>
|
|
<copy file="${basedir}/NEWS.txt" tofile="${zip-tmp}/${app.name}/NEWS.txt"/>
|
|
<copy file="${basedir}/Running_Linux_OSX.md" tofile="${zip-tmp}/${app.name}/Running_Linux_OSX.md"/>
|
|
<copy file="${basedir}/unix_setup.sh" tofile="${zip-tmp}/${app.name}/unix_setup.sh"/>
|
|
<copy flatten="false" todir="${zip-tmp}/${app.name}/linux_macos_install_scripts">
|
|
<fileset dir="${basedir}/linux_macos_install_scripts"/>
|
|
</copy>
|
|
|
|
<copy file="${basedir}/Tools/ManifestTool/ManifestTool.exe" todir="${zip-tmp}/${app.name}/bin"/>
|
|
|
|
<copy file="${basedir}/icons/icon.ico" tofile="${zip-tmp}/${app.name}/icon.ico" overwrite="true"/>
|
|
|
|
<!-- Copy the Autopsy documentation to the docs folder -->
|
|
<copy flatten="true" todir="${zip-tmp}/${app.name}/docs">
|
|
<fileset dir="${basedir}/docs/doxygen-user/user-docs"/>
|
|
</copy>
|
|
|
|
<property name="app.property.file" value="${zip-tmp}/${app.name}/etc/${app.name}.conf" />
|
|
<var name="jvm-value" value="--branding ${app.name} -J-Xms24m -J-Xmx4G -J-XX:+UseStringDeduplication -J-Dprism.order=sw -J--add-opens=java.base/java.lang=ALL-UNNAMED -J--add-opens=java.base/java.net=ALL-UNNAMED -J--add-opens=java.desktop/javax.swing=ALL-UNNAMED -J--add-opens=javafx.controls/javafx.scene.control.skin=ALL-UNNAMED -J--add-exports=java.desktop/sun.awt=ALL-UNNAMED -J--add-exports=javafx.controls/com.sun.javafx.scene.control.inputmap=ALL-UNNAMED -J--add-exports=javafx.base/com.sun.javafx.event=ALL-UNNAMED"/>
|
|
<!-- for Japanese localized version add option: -Duser.language=ja -->
|
|
|
|
|
|
<if>
|
|
<equals arg1="${os.family}" arg2="mac"/>
|
|
<then>
|
|
<property name="jvm.options" value=""${jvm-value} -J-Xdock:name=${app.title}""/>
|
|
</then>
|
|
<else>
|
|
<property name="jvm.options" value=""${jvm-value}""/>
|
|
</else>
|
|
</if>
|
|
|
|
<propertyfile file="${app.property.file}">
|
|
<!-- Note: can be higher on 64 bit systems, should be in sync with project.properties -->
|
|
<entry key="default_options" value="@JVM_OPTIONS" />
|
|
</propertyfile>
|
|
<!-- workaround for ant escaping : and = when setting properties -->
|
|
<replace file="${app.property.file}" token="@JVM_OPTIONS" value="${jvm.options}" />
|
|
|
|
<!-- We want to remove the dlls in autopsy/modules/lib because they will
|
|
shadow the files in the autopsy/modules/lib/ARCHITECTURE folder in the JAR.
|
|
These files are legacy from when we used to copy the dlls to this location.
|
|
This check should do away in the future. Added Sept '13-->
|
|
<delete failonerror="false">
|
|
<fileset dir="${zip-tmp}/${app.name}/autopsy/modules/lib">
|
|
<include name="libtsk_jni.dll" />
|
|
<include name="libewf.dll" />
|
|
<include name="libvmdk.dll"/>
|
|
<include name="libvhdi.dll"/>
|
|
<include name="zlib.dll" />
|
|
<include name="libintl-8.dll"/>
|
|
<include name="libiconv-2.dll"/>
|
|
<include name="ssleay32.dll"/>
|
|
<include name="libeay32.dll"/>
|
|
<include name="libpq.dll"/>
|
|
</fileset>
|
|
</delete>
|
|
|
|
<!-- step (4) zip again, but with the version numbers in the name & root folder -->
|
|
<zip destfile="${nbdist.dir}/${app.name}-${app.version}.zip">
|
|
<zipfileset dir="${zip-tmp}/${app.name}" prefix="${app.name}-${app.version}"/>
|
|
</zip>
|
|
|
|
<delete dir="${zip-tmp}"/>
|
|
<!-- <delete file="${nbdist.dir}/${app.name}.zip"/> -->
|
|
|
|
<echo message=" "/>
|
|
<echo message="cleaning and finalizing release" />
|
|
<delete dir="${release.dir}"/>
|
|
</target>
|
|
|
|
<target name="getProps" depends="prop-files,input-build-type,input-version">
|
|
<property name="nbdist.dir" value="dist"/>
|
|
</target>
|
|
|
|
<target name="prop-files">
|
|
<property file="nbproject/private/private.properties"/>
|
|
<property file="nbproject/project.properties"/>
|
|
</target>
|
|
|
|
<target name="input-build-type" unless="build.type">
|
|
<input addProperty="build.type"
|
|
message="Enter the desired build type:"
|
|
validargs="DEVELOPMENT,RELEASE"
|
|
defaultvalue="DEVELOPMENT"/>
|
|
</target>
|
|
|
|
<target name="input-version" unless="app.version">
|
|
<tstamp/>
|
|
<property name="app.version" value="${DSTAMP}"/>
|
|
</target>
|
|
|
|
|
|
<target name="-init" depends="-taskdefs,-convert-old-project,getProps,getJunit,copyLibsToBaseDir">
|
|
<convertclusterpath from="${cluster.path.evaluated}" to="cluster.path.final" id="cluster.path.id"/>
|
|
<sortsuitemodules unsortedmodules="${modules}" sortedmodulesproperty="modules.sorted"/>
|
|
<property name="cluster" location="build/cluster"/>
|
|
<echo level="verbose">Suite in ${basedir} with clusters ${cluster.path.final}, build cluster ${cluster}, and sorted modules ${modules.sorted}</echo>
|
|
<!-- synchronize with SuiteProject -->
|
|
<property name="disabled.modules" value=""/>
|
|
<property name="enabled.clusters" value=""/>
|
|
<property name="disabled.clusters" value=""/>
|
|
|
|
<property name="branding.dir" location="branding"/>
|
|
<property name="dist.dir" location="dist"/>
|
|
|
|
<condition property="run.branding"> <!-- #84689 -->
|
|
<and>
|
|
<available file="${branding.dir}" type="dir"/>
|
|
<isset property="branding.token"/>
|
|
</and>
|
|
</condition>
|
|
</target>
|
|
|
|
<target name="-build-minimal-platform" depends="-init,clean" description="Builds a minimal autopsy platform (i.e. just Core, CoreLibs, and Tika)">
|
|
<antcall inheritAll="false" target="suite.build-zip">
|
|
<param name="modules" value="CoreLibs:Tika:Core" />
|
|
</antcall>
|
|
|
|
<move file="${dist.dir}/${app.name}.zip" tofile="${dist.dir}/${app.name}-minimal.zip"/>
|
|
<property name="build-minimal-platform-renamed" location="${dist.dir}/${app.name}-minimal.zip" />
|
|
<echo>File moved to ${build-minimal-platform-renamed}</echo>
|
|
</target>
|
|
|
|
<target name="build-core-test-libs">
|
|
<subant buildpath="${basedir}/CoreTestLibs/build.xml" target="build" inheritrefs="false" inheritall="false">
|
|
<property name="nbplatform.active.dir" value="${nbplatform.active.dir}" />
|
|
<property name="nbplatform.default.harness.dir" value="${nbplatform.default.harness.dir}" />
|
|
</subant>
|
|
</target>
|
|
|
|
<!-- override build to add branding -->
|
|
<target name="build" depends="build-core-test-libs,build-brand,suite.build,chmod_executables" description="Compiles autopsy and produces a basic branded build that can run on a dev system" />
|
|
|
|
<target name="build-brand" depends="-init">
|
|
|
|
<echo>${app.name} branding</echo>
|
|
|
|
<propertyfile
|
|
file="${branding.dir}/core/core.jar/org/netbeans/core/startup/Bundle.properties"
|
|
comment="Updated by build script">
|
|
<entry key="currentVersion" value="${app.title} ${app.version}" />
|
|
</propertyfile>
|
|
|
|
<propertyfile
|
|
file="${branding.dir}/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties"
|
|
comment="Updated by build script">
|
|
<entry key="CTL_MainWindow_Title" value="${app.title} ${app.version}" />
|
|
<entry key="CTL_MainWindow_Title_No_Project" value="${app.title} ${app.version}" />
|
|
</propertyfile>
|
|
|
|
<propertyfile
|
|
file="${basedir}/Core/src/org/sleuthkit/autopsy/coreutils/Version.properties"
|
|
comment="Updated by build script">
|
|
<entry key="app.name" value="${app.title}" />
|
|
<entry key="app.version" value="${app.version}" />
|
|
<entry key="build.type" value="${build.type}" />
|
|
</propertyfile>
|
|
</target>
|
|
|
|
<!-- This seems really bad to be hard coded, but I couldn't find a better solution -->
|
|
<path id="jni-path">
|
|
<pathelement location="${basedir}/build/cluster/modules/org-sleuthkit-datamodel.jar"/>
|
|
<path refid="cluster.path.id" />
|
|
</path>
|
|
|
|
<target name="jni" depends="build,findTSK">
|
|
<javah verbose="yes" outputFile="${env.TSK_HOME}/bindings/java/tsk_jni/tsk_jni/dataModel_SleuthkitJNI.h">
|
|
<class name="org.sleuthkit.datamodel.SleuthkitJNI" />
|
|
<classpath refid="jni-path"/>
|
|
</javah>
|
|
</target>
|
|
|
|
|
|
<target name="doxygen" description="build doxygen docs, requires doxygen in PATH" depends="-init,-hide-excluded-modules">
|
|
<!-- Delete older versions -->
|
|
<delete includeemptydirs="true">
|
|
<fileset dir="${basedir}/docs/doxygen/doxygen_docs" includes="**/*"/>
|
|
</delete>
|
|
<delete includeemptydirs="true" failonerror="false">
|
|
<fileset dir="${basedir}/docs/doxygen-user/user-docs" includes="**/*"/>
|
|
</delete>
|
|
<delete includeemptydirs="true" failonerror="false">
|
|
<fileset dir="${basedir}/docs/doxygen-dev/build-docs" includes="**/*"/>
|
|
</delete>
|
|
|
|
<!-- Generate new -->
|
|
<exec executable="doxygen" dir="${basedir}/docs/doxygen">
|
|
<arg value="Doxyfile"/>
|
|
</exec>
|
|
<exec executable="doxygen" dir="${basedir}/docs/doxygen-user">
|
|
<arg value="Doxyfile"/>
|
|
</exec>
|
|
<exec executable="doxygen" dir="${basedir}/docs/doxygen-dev">
|
|
<arg value="Doxyfile"/>
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="check-release">
|
|
<condition property="is-release">
|
|
<and>
|
|
<equals arg1="${build.type}" arg2="RELEASE"/>
|
|
<isset property="update_versions"/>
|
|
<equals arg1="${update_versions}" arg2="true"/>
|
|
</and>
|
|
</condition>
|
|
</target>
|
|
|
|
<target name="versioning-script-if-release" if="is-release">
|
|
<exec dir="${basedir}" executable="python" failonerror="true">
|
|
<arg line="update_versions.py -a" />
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="versioning-script-if-not-release" unless="is-release">
|
|
<exec dir="${basedir}" executable="python" failonerror="true">
|
|
<arg value="update_versions.py" />
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="versioning-script" depends="check-release, versioning-script-if-release, versioning-script-if-not-release"/>
|
|
|
|
<target name="build-installer" depends="build-zip" description="Builds Autopsy installer.">
|
|
<!-- Unzip file -->
|
|
<delete dir="${nbdist.dir}/${app.name}-tmp-installer" quiet="true"/>
|
|
<unzip src="${nbdist.dir}/${app.name}-${app.version}.zip" dest="${nbdist.dir}/${app.name}-tmp-installer"/>
|
|
|
|
<!-- Make a folder to move the contents into so that we get rid of the folder with the version number -->
|
|
<delete dir="${nbdist.dir}/${app.name}-installer" quiet="true"/>
|
|
<mkdir dir="${nbdist.dir}/${app.name}-installer"/>
|
|
<move todir="${nbdist.dir}/${app.name}-installer">
|
|
<fileset dir="${nbdist.dir}/${app.name}-tmp-installer/${app.name}-${app.version}">
|
|
<include name="**"/>
|
|
</fileset>
|
|
</move>
|
|
<delete dir="${nbdist.dir}/${app.name}-tmp-installer" quiet="true"/>
|
|
|
|
<antcall target="build-installer-${os.family}" />
|
|
</target>
|
|
|
|
<target name="chmod_executables" >
|
|
<chmod perm="a+x">
|
|
<fileset dir="${cluster}/markmckinnon" casesensitive="no" id="mm">
|
|
<include name="*_linux"/>
|
|
<include name="*_macos"/>
|
|
</fileset>
|
|
<fileset dir="${cluster}/solr/bin" casesensitive="no" id="solr">
|
|
<include name="autopsy-solr"/>
|
|
</fileset>
|
|
</chmod>
|
|
</target>
|
|
</project> |