mirror of
https://github.com/moparisthebest/k-9
synced 2024-11-30 13:12:25 -05:00
473 lines
20 KiB
XML
473 lines
20 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project name="K9" default="help">
|
|
|
|
<!-- The local.properties file is created and updated by the 'android' tool.
|
|
It contains the path to the SDK. It should *NOT* be checked into
|
|
Version Control Systems. -->
|
|
<property file="local.properties" />
|
|
|
|
<!-- The ant.properties file can be created by you. It is only edited by the
|
|
'android' tool to add properties to it.
|
|
This is the place to change some Ant specific build properties.
|
|
Here are some properties you may want to change/update:
|
|
|
|
source.dir
|
|
The name of the source directory. Default is 'src'.
|
|
out.dir
|
|
The name of the output directory. Default is 'bin'.
|
|
|
|
For other overridable properties, look at the beginning of the rules
|
|
files in the SDK, at tools/ant/build.xml
|
|
|
|
Properties related to the SDK location or the project target should
|
|
be updated using the 'android' tool with the 'update' action.
|
|
|
|
This file is an integral part of the build system for your
|
|
application and should be checked into Version Control Systems.
|
|
|
|
-->
|
|
<property file="ant.properties" />
|
|
|
|
<!-- The project.properties file is created and updated by the 'android'
|
|
tool, as well as ADT.
|
|
|
|
This contains project specific properties such as project target, and library
|
|
dependencies. Lower level build properties are stored in ant.properties
|
|
(or in .classpath for Eclipse projects).
|
|
|
|
This file is an integral part of the build system for your
|
|
application and should be checked into Version Control Systems. -->
|
|
<loadproperties srcFile="project.properties" />
|
|
|
|
<!-- quick check on sdk.dir -->
|
|
<fail
|
|
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
|
|
unless="sdk.dir"
|
|
/>
|
|
|
|
<!--
|
|
Import per project custom build rules if present at the root of the project.
|
|
This is the place to put custom intermediary targets such as:
|
|
-pre-build
|
|
-pre-compile
|
|
-post-compile (This is typically used for code obfuscation.
|
|
Compiled code location: ${out.classes.absolute.dir}
|
|
If this is not done in place, override ${out.dex.input.absolute.dir})
|
|
-post-package
|
|
-post-build
|
|
-pre-clean
|
|
-->
|
|
<import file="custom_rules.xml" optional="true" />
|
|
|
|
<!-- Import the actual build file.
|
|
|
|
To customize existing targets, there are two options:
|
|
- Customize only one target:
|
|
- copy/paste the target into this file, *before* the
|
|
<import> task.
|
|
- customize it to your needs.
|
|
- Customize the whole content of build.xml
|
|
- copy/paste the content of the rules files (minus the top node)
|
|
into this file, replacing the <import> task.
|
|
- customize to your needs.
|
|
|
|
***********************
|
|
****** IMPORTANT ******
|
|
***********************
|
|
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
|
|
in order to avoid having your file be overridden by tools such as "android update project"
|
|
-->
|
|
<!-- version-tag: custom -->
|
|
<import file="${sdk.dir}/tools/ant/build.xml" />
|
|
|
|
<!-- K9 CUSTOM STUFF -->
|
|
|
|
<!-- out folders for a parent project if this project is an instrumentation project -->
|
|
<property name="rclib" value="${out.dir}/K9RemoteControl.jar" />
|
|
<property name="rcdir" value="com/fsck/k9/remotecontrol/**" />
|
|
|
|
<property name="changelog-path-src" value="res/xml/changelog_master.xml" />
|
|
|
|
<!-- Name given to the remote git repository -->
|
|
<property name="origin" value="origin" />
|
|
|
|
<!-- Name used for the temporary gh-pages branch in the local git repo -->
|
|
<property name="gh-pages-tmp" value="gh-pages-tmp" />
|
|
|
|
<condition property="android.executable" value="android.bat">
|
|
<os family="windows" />
|
|
</condition>
|
|
<property name="android.executable" value="android" />
|
|
|
|
<target name="-get-version" depends="-get-version-name">
|
|
<echo>Building version number ${current-version-name}</echo>
|
|
</target>
|
|
|
|
<target name="-get-version-name">
|
|
<xpath input="AndroidManifest.xml" expression="/manifest/@android:versionName" output="current-version-name" />
|
|
</target>
|
|
|
|
<target name="-get-version-code">
|
|
<xpath input="AndroidManifest.xml" expression="/manifest/@android:versionCode" output="current-version-code" />
|
|
</target>
|
|
|
|
<target name="-get-version-from-git">
|
|
<exec executable="git" failonerror="true" outputproperty="current-version-name" errorproperty="current-version-error">
|
|
<arg line="describe --tags" />
|
|
</exec>
|
|
<echo>Building version number ${current-version-name}</echo>
|
|
</target>
|
|
|
|
<target name="-auto-incr-version">
|
|
<regex property="major" input="${current-version-name}" regexp="(\d+)\.\d+" select="\1" />
|
|
<regex property="minor" input="${current-version-name}" regexp="\d+\.(\d+)" select="\1" />
|
|
<math result="minor" operand1="${minor}" operation="+" operand2="1" datatype="int"/>
|
|
<if.contrib>
|
|
<length string="${minor}" when="eq" length="1" />
|
|
<then>
|
|
<var name="minor" value="00${minor}" />
|
|
</then>
|
|
<elseif>
|
|
<length string="${minor}" when="eq" length="2" />
|
|
<then>
|
|
<var name="minor" value="0${minor}" />
|
|
</then>
|
|
</elseif>
|
|
</if.contrib>
|
|
<regex property="version-name" input="${major}." regexp="(\d+.)" replace="\1${minor}" />
|
|
</target>
|
|
|
|
<target name="-pre-bump-check" depends="-get-version-name,-auto-incr-version">
|
|
<xpath
|
|
input="${changelog-path-src}"
|
|
expression="/changelog/release[@version='${version-name}']/@version"
|
|
output="changelog-test" />
|
|
|
|
<if.contrib>
|
|
<equals arg1="${changelog-test}" arg2="${version-name}" />
|
|
<else>
|
|
<fail>No changelog for ${version-name}.</fail>
|
|
</else>
|
|
</if.contrib>
|
|
|
|
<exec executable="git" failonerror="true" outputproperty="git-status" errorproperty="git-status-error">
|
|
<arg line="status -s ${changelog-path-src}" />
|
|
</exec>
|
|
<if.contrib>
|
|
<equals arg1="${git-status}" arg2="" />
|
|
<else>
|
|
<fail>Uncomitted changelog edits.</fail>
|
|
</else>
|
|
</if.contrib>
|
|
|
|
<!-- Check for a clean index, because it will be reset in -update-gh-pages-branch -->
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="diff-index --cached --quiet HEAD" />
|
|
</exec>
|
|
|
|
<!-- Check that the temporary gh-pages branch doesn't exist in the local git repo -->
|
|
<exec executable="git" failonerror="true" outputproperty="gh-pages-tmp-status" errorproperty="gh-pages-tmp-status-error">
|
|
<arg line="branch --list ${gh-pages-tmp}" />
|
|
</exec>
|
|
<if.contrib>
|
|
<equals arg1="${gh-pages-tmp-status}" arg2="" />
|
|
<else>
|
|
<fail>Temporary branch ${gh-pages-tmp} exists (but should not).</fail>
|
|
</else>
|
|
</if.contrib>
|
|
|
|
<!-- Check that there is no existing git tag for the new version -->
|
|
<exec executable="git" failonerror="true" outputproperty="git-tag-status" errorproperty="git-tag-status-error">
|
|
<arg line="tag --list ${version-name}" />
|
|
</exec>
|
|
<if.contrib>
|
|
<equals arg1="${git-tag-status}" arg2="" />
|
|
<else>
|
|
<fail>A git tag for version ${version-name} already exists (but should not).</fail>
|
|
</else>
|
|
</if.contrib>
|
|
|
|
<!-- Assure that we have the latest gh-pages branch -->
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="fetch ${origin} +refs/heads/gh-pages:refs/remotes/${origin}/gh-pages" />
|
|
</exec>
|
|
|
|
</target>
|
|
|
|
<target name="-set-version" depends="-get-version-name,-get-version-code">
|
|
<!-- pass -Dversion-name=4.200 to define the version instead of auto-incrementing it -->
|
|
<if.contrib>
|
|
<isset property="version-name" />
|
|
<else>
|
|
<runtarget target="-auto-incr-version" />
|
|
</else>
|
|
</if.contrib>
|
|
|
|
<echo>Setting version to ${version-name}</echo>
|
|
|
|
<replace file="AndroidManifest.xml"
|
|
token="android:versionName="${current-version-name}""
|
|
value="android:versionName="${version-name}"" summary="true"
|
|
/>
|
|
|
|
<math result="new-version-code" operand1="${current-version-code}" operation="+" operand2="1" datatype="int"/>
|
|
<replace file="AndroidManifest.xml"
|
|
token="android:versionCode="${current-version-code}""
|
|
value="android:versionCode="${new-version-code}"" summary="true"
|
|
/>
|
|
</target>
|
|
|
|
<!-- rules -->
|
|
<target name="bump-version" depends="-pre-bump-check,-set-version,-commit-version,-update-gh-pages-branch,-push-version">
|
|
<echo>Bumped K-9 to ${version-name}</echo>
|
|
</target>
|
|
|
|
<target name="-commit-version">
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="commit -m'Bumped manifest to ${version-name}' AndroidManifest.xml" />
|
|
</exec>
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="tag ${version-name}" />
|
|
</exec>
|
|
</target>
|
|
|
|
<!-- Copy the changelog to the gh-pages branch. -->
|
|
<target name="-update-gh-pages-branch">
|
|
|
|
<!-- Create a temporary branch for use in updating the remote gh-pages branch. -->
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="branch ${gh-pages-tmp} ${origin}/gh-pages" />
|
|
</exec>
|
|
|
|
<!-- Save HEAD before switching branches -->
|
|
<exec executable="git" failonerror="true" outputproperty="git-branch-ref" errorproperty="git-branch-ref-error">
|
|
<arg line="symbolic-ref HEAD" />
|
|
</exec>
|
|
|
|
<!-- Switch to the temporary branch with no checkout. The working tree remains untouched. -->
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="symbolic-ref HEAD refs/heads/${gh-pages-tmp}" />
|
|
</exec>
|
|
|
|
<!-- Clean up the index on the temporary branch -->
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="reset -q" />
|
|
</exec>
|
|
|
|
<!-- Retrieve tree info for the changelog file to be copied from HEAD -->
|
|
<exec executable="git" failonerror="true" outputproperty="git-ls-tree" errorproperty="git-ls-tree-error">
|
|
<arg line="ls-tree ${git-branch-ref} ${changelog-path-src}" />
|
|
</exec>
|
|
|
|
<!-- Update the path and name of the changelog for where it will be stored in the temp. branch -->
|
|
<regex property="changelog-path-dst" input="${git-branch-ref}" regexp=".*/([^/]+$)" select="changelog_\1_branch.xml" />
|
|
<regex property="git-index-info" input="${git-ls-tree}" regexp="(.*\t).*" select="\1${changelog-path-dst}" />
|
|
|
|
<!-- Add the changelog to the index -->
|
|
<exec executable="git" failonerror="true" inputstring="${git-index-info}">
|
|
<arg line="update-index --index-info" />
|
|
</exec>
|
|
|
|
<!-- Commit the changelog -->
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="commit -m'Update changelog for version ${version-name}'" />
|
|
</exec>
|
|
|
|
<!-- Switch back to HEAD, again without touching the (original) working tree -->
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="symbolic-ref HEAD ${git-branch-ref}" />
|
|
</exec>
|
|
|
|
<!-- Clean up the index for HEAD -->
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="reset -q" />
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="-push-version">
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="push ${origin} HEAD ${gh-pages-tmp}:gh-pages tag ${version-name}" />
|
|
</exec>
|
|
|
|
<!-- Delete the temporary branch -->
|
|
<exec executable="git" failonerror="true">
|
|
<arg line="branch -D ${gh-pages-tmp}" />
|
|
</exec>
|
|
</target>
|
|
|
|
<!-- Create the output directories if they don't exist yet. -->
|
|
<target name="rclib" depends="-compile">
|
|
<echo>Creating library ${rclib} for remote control applications</echo>
|
|
<jar destfile="${rclib}" basedir="${out.classes.dir}" includes="${rcdir}" />
|
|
</target>
|
|
|
|
<target name="upload" depends="clean,-get-version,release">
|
|
<echo>Uploading to Google Code using Google::Code::Upload</echo>
|
|
<move file="${out.final.file}" tofile="bin/k9-${current-version-name}-release.apk" />
|
|
<property name="gcode-project" value="k9mail" />
|
|
<exec executable="googlecode_upload.pl" failonerror="true">
|
|
<arg value="--summary" />
|
|
<arg value="${ant.project.name} ${current-version-name}" />
|
|
<arg value="--project" />
|
|
<arg value="${gcode-project}" />
|
|
<arg value="--user" />
|
|
<arg value="${gcode-user}" />
|
|
<arg value="--pass" />
|
|
<arg value="${gcode-pass}" />
|
|
<arg value="--labels" />
|
|
<arg value="Type-Installer" />
|
|
<arg value="bin/k9-${current-version-name}-release.apk" />
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="astyle">
|
|
<exec executable="astyle" failonerror="true">
|
|
<arg line="--style=java --indent=spaces=4 --indent-switches --max-instatement-indent=40 --add-brackets --convert-tabs --unpad-paren --pad-header --pad-oper --suffix=none --recursive 'src/com/fsck/k9/*.java' 'tests/src/com/fsck/k9/*.java'" />
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="help" depends="android_rules.help">
|
|
<!-- displays starts at col 13
|
|
|13 80| -->
|
|
<echo>Additional targets:</echo>
|
|
<!--echo> bump-version: ant -Dversion-name=3.123</echo>
|
|
<echo> Bumps the project version to 3.123,tags and commits it.</echo>
|
|
<echo> If version-name is not given, it will auto-increment.</echo>
|
|
<echo> upload: Uploads a new release to google code.</echo-->
|
|
<echo> rclib: Creates library for remote control applications.</echo>
|
|
<echo> astyle: Make K-9's source look like it's supposed to.</echo>
|
|
<echo> eclipse: Apply template Eclipse settings.</echo>
|
|
<echo> javadoc: Javadoc output to javadoc/. ANDROID_HOME environment</echo>
|
|
<echo> variable must be set (i.e. /opt/android-sdk-linux/).</echo>
|
|
<echo> lint-xml: Lint output lint-results.xml.</echo>
|
|
<echo> lint-html: Lint output to lint-results.html.</echo>
|
|
<echo> monkey: Runs monkey on the running emulator. Change the</echo>
|
|
<echo> defaults -Dmonkey.seed=NUM and -Dmonkey.count=NUM</echo>
|
|
<echo> from 0 and 200, respectively.</echo>
|
|
</target>
|
|
|
|
<target name="eclipse" description="Apply template Eclipse settings">
|
|
<copy todir=".settings">
|
|
<fileset dir="tools/eclipse-settings" />
|
|
</copy>
|
|
</target>
|
|
|
|
<target name="monkey">
|
|
<xpath input="AndroidManifest.xml" expression="/manifest/@package" output="manifest.package" />
|
|
<property name="monkey.count" value="200" />
|
|
<property name="monkey.seed" value="0" /><!-- largest == 9223372036854775807 == 2**63 - 1 -->
|
|
<exec executable="${adb}" output="monkey.txt" failonerror="true">
|
|
<arg line="${adb.device.arg}" />
|
|
<arg value="-e" />
|
|
<arg value="shell" />
|
|
<arg value="monkey" />
|
|
<arg value="-p" />
|
|
<arg value="${manifest.package}" />
|
|
<arg value="-v" />
|
|
<arg value="-v" />
|
|
<arg value="-s" />
|
|
<arg value="${monkey.seed}" />
|
|
<arg value="${monkey.count}" />
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="reg" depends="-get-version-code">
|
|
<regex property="branch" input="${env.GIT_BRANCH}" regexp="(?:.*/)?(.+)" select="\1" global="true"/>
|
|
<regex property="commit" input="${env.GIT_COMMIT}" regexp="([\da-fA-F]{10})" select="\1" global="true"/>
|
|
<math result="version-code" operand1="${current-version-code}" operation="+" operand2="1" datatype="int"/>
|
|
<echo message="branch = ${branch} ${commit} ${current-version-code} ${version-code}" />
|
|
</target>
|
|
|
|
<!-- this is for CloudBees. see tests/build.xml -->
|
|
<target name="-artifactd" depends="-set-debug-files, -artifact" />
|
|
<target name="-artifacti" depends="-set-instrumented-mode, -artifact" />
|
|
<target name="-artifact">
|
|
<regex property="branch" input="${env.GIT_BRANCH}" regexp="(?:.*/)?(.+)" select="\1" global="true" />
|
|
<regex property="commit" input="${env.GIT_COMMIT}" regexp="([\da-fA-F]{10})" select="\1" />
|
|
|
|
<copy file="${out.final.file}"
|
|
tofile="${out.dir}/${ant.project.name}-${branch}-${env.BUILD_ID}-${commit}-${env.BUILD_NUMBER}.apk"
|
|
verbose="on"
|
|
/>
|
|
</target>
|
|
|
|
<target name="-pre-clean" description="Removes testing output and javadoc">
|
|
<delete file="monkey.txt" verbose="${verbose}" />
|
|
<delete file="lint-results.xml" verbose="${verbose}" />
|
|
<delete file="lint-results.html" verbose="${verbose}" />
|
|
<delete dir="lint-results_files" verbose="${verbose}" />
|
|
<delete dir="${javadoc-dir}" verbose="${verbose}" />
|
|
</target>
|
|
|
|
<target name="-update-ptr">
|
|
<if.contrib>
|
|
<resourceexists>
|
|
<file file="plugins/Android-PullToRefresh/library/build.xml" />
|
|
</resourceexists>
|
|
<else>
|
|
<echo message="android update lib-project -p plugins/Android-PullToRefresh/library/" />
|
|
<exec executable="${sdk.dir}/tools/${android.executable}" failonerror="true">
|
|
<arg line="update lib-project -p plugins/Android-PullToRefresh/library/" />
|
|
</exec>
|
|
</else>
|
|
</if.contrib>
|
|
</target>
|
|
|
|
<target name="-update-cl">
|
|
<if.contrib>
|
|
<resourceexists>
|
|
<file file="plugins/ckChangeLog/library/build.xml" />
|
|
</resourceexists>
|
|
<else>
|
|
<echo message="android update lib-project -p plugins/ckChangeLog/library/" />
|
|
<exec executable="${sdk.dir}/tools/${android.executable}" failonerror="true">
|
|
<arg line="update lib-project -p plugins/ckChangeLog/library/" />
|
|
</exec>
|
|
</else>
|
|
</if.contrib>
|
|
</target>
|
|
|
|
<target name="-update-hcp">
|
|
<if.contrib>
|
|
<resourceexists>
|
|
<file file="plugins/HoloColorPicker/build.xml" />
|
|
</resourceexists>
|
|
<else>
|
|
<echo message="android update lib-project -p plugins/HoloColorPicker/" />
|
|
<exec executable="${sdk.dir}/tools/${android.executable}" failonerror="true">
|
|
<arg line="update lib-project -p plugins/HoloColorPicker/" />
|
|
</exec>
|
|
</else>
|
|
</if.contrib>
|
|
</target>
|
|
|
|
<target name="-update-opa">
|
|
<if.contrib>
|
|
<resourceexists>
|
|
<file file="plugins/openpgp-api-library/build.xml" />
|
|
</resourceexists>
|
|
<else>
|
|
<echo message="android update lib-project -p plugins/openpgp-api-library/" />
|
|
<exec executable="${sdk.dir}/tools/${android.executable}" failonerror="true">
|
|
<arg line="update lib-project -p plugins/openpgp-api-library/" />
|
|
</exec>
|
|
</else>
|
|
</if.contrib>
|
|
</target>
|
|
|
|
<target name="init" depends="-update-ptr, -update-cl, -update-hcp, -update-opa"
|
|
description="Initialize environment for building" />
|
|
|
|
<!-- overrides default "debug" target" -->
|
|
<!-- Builds debug output package -->
|
|
<target name="debug" depends="init, -set-debug-files, -do-debug, -post-build"
|
|
description="Builds the application and signs it with a debug key.">
|
|
</target>
|
|
|
|
<!-- common to both build.xml and tests/build.xml -->
|
|
<import file="build_common.xml" />
|
|
|
|
<!-- END K-9 CUSTOM STUFF -->
|
|
|
|
</project>
|