2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik<?xml version="1.0" encoding="UTF-8"?>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik<!--
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen AustvikCDDL HEADER START
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen AustvikThe contents of this file are subject to the terms of the
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen AustvikCommon Development and Distribution License (the "License").
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen AustvikYou may not use this file except in compliance with the License.
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen AustvikSee LICENSE.txt included in this distribution for the specific
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austviklanguage governing permissions and limitations under the License.
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen AustvikWhen distributing Covered Code, include this CDDL HEADER in each
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvikfile and include the License file at LICENSE.txt.
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen AustvikIf applicable, add the following below this CDDL HEADER, with the
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvikfields enclosed by brackets "[]" replaced with your own identifying
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvikinformation: Portions Copyright [yyyy] [name of copyright owner]
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen AustvikCDDL HEADER END
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
6c5588deac931d8ca1d9f09fe9a5db32155d7f4cKryštof TulingerCopyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik-->
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik<project name="OpenGrok" default="jar" basedir=".">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <description>Builds, tests, and runs the project opengrok.</description>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="distname" value="opengrok"/>
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen <property name="build.classes.dir" value="target/classes"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="test.repositories" value="/testdata/repositories"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="test.sources" value="/testdata/sources"/>
6c5588deac931d8ca1d9f09fe9a5db32155d7f4cKryštof Tulinger <property name="test.plugins" value="/testdata/plugins"/>
9ee3db4398eae64b3ed232c731e241f302d086b4Knut Anders Hatlen <property name="test.cvs" value="${test.repositories}/cvs_test"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="test.cvs.repo" value="${test.cvs}/cvsrepo"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="test.cvs.root" value="${test.cvs}/cvsroot"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="test.hg" value="${test.repositories}/mercurial"/>
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <property name="test.git" value="${test.repositories}/git"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="test.svn" value="${test.repositories}/svn"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="test.razor" value="${test.repositories}/razor"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="test.razor.repo" value="/ext/SampleRazorRepository/"/>
6c5588deac931d8ca1d9f09fe9a5db32155d7f4cKryštof Tulinger <property name="test.plugins_jar" value="${test.plugins}/plugins.jar"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="build.test.reposroots" value="target/reposroot"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <property name="build.test.classes.dir" value="target/test-classes"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
6c5588deac931d8ca1d9f09fe9a5db32155d7f4cKryštof Tulinger
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <path id="lib.search.path">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <pathelement path="${user.home}/.ant/lib"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <pathelement path="${java.class.path}"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <pathelement path="lib"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <pathelement path="/lib"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </path>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <property name="git" value="git"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <!-- Get the id of the changeset we're building from using a
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik Mercurial command.
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik -->
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <target name="-get-changeset-from-command"
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco depends="-check-is-git-repo" if="build.from.repo">
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <exec executable="${git}"
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik failifexecutionfails="no"
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik outputproperty="changeset">
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <arg value="rev-parse"/>
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <arg value="HEAD"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </exec>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </target>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <!-- Check if we build from a checked out copy of the repository,
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco so that we have history information from git available.
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik -->
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <target name="-check-is-git-repo">
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <available property="build.from.repo" file=".git" filepath=".." type="dir"/>
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen </target>
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen <!-- Get the id of the changeset we're building from by reading
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco .git_archival.txt file created by git archive. This will only
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen be used when we're not building from a checked out copy of
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen the repository, for example the source distribution.
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen -->
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen <target name="-get-changeset-from-file"
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco depends="-check-is-git-repo" unless="build.from.repo">
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <tempfile property="git.archival.temp" deleteonexit="true"/>
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <copy file="/.git_archival.txt" tofile="${git.archival.temp}"/>
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <replaceregexp file="${g.archival.temp}" flags="s"
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen match=".*node: ([0-9a-f]{12}).*"
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen replace="\1"/>
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <loadfile srcFile="${git.archival.temp}" property="changeset"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </target>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen <target name="-update-build-info"
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen depends="-get-changeset-from-command,-get-changeset-from-file">
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen <mkdir dir="${build.classes.dir}/org/opensolaris/opengrok"/>
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen <propertyfile
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen file="${build.classes.dir}/org/opensolaris/opengrok/info.properties">
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen <entry key="version" value="${version}"/>
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen <entry key="changeset" value="${changeset}"/>
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen </propertyfile>
18446c8a3e64918635ecb6a71a08acc4cff95334Knut Anders Hatlen </target>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <target name="-post-compile-test">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <antcall target="-create-svn-repository"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <antcall target="-create-razor-repository"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <!-- Change root in CVS test repository -->
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <!-- Strange indentation in line two levels below to get newline correctly -->
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <concat destfile="${test.cvs.repo}/CVS/Root" append="no" force="yes" eol="unix">${basedir}/${test.cvs.root}/
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik</concat>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <!-- Generate ZIP files used for unit testing mercurial/.hg and mercurial/.hgignore are renamed -->
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <copy todir="${test.hg}/.hg">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <fileset dir="${test.hg}/hg"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </copy>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <copy file="${test.hg}/hgignore" tofile="${test.hg}/.hgignore"/>
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <!-- same for git -->
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <copy todir="${test.git}/.git">
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <fileset dir="${test.git}/git"/>
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco </copy>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <zip destfile="${build.test.classes.dir}/org/opensolaris/opengrok/index/source.zip"
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik basedir="${test.sources}"
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik update="false"
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik defaultexcludes="no"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <zip destfile="${build.test.classes.dir}/org/opensolaris/opengrok/history/repositories.zip"
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik basedir="${test.repositories}"
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco excludes="mercurial/hg/**, mercurial/hgignore, git/git"
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik update="false"
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik defaultexcludes="no"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
6c5588deac931d8ca1d9f09fe9a5db32155d7f4cKryštof Tulinger <copy
6c5588deac931d8ca1d9f09fe9a5db32155d7f4cKryštof Tulinger file="${test.plugins_jar}"
6c5588deac931d8ca1d9f09fe9a5db32155d7f4cKryštof Tulinger tofile="${build.test.classes.dir}/org/opensolaris/opengrok/authorization/plugins.jar" />
6c5588deac931d8ca1d9f09fe9a5db32155d7f4cKryštof Tulinger
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <antcall target="-delete-generated-repository-files"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </target>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <target name="-create-svn-repository">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <delete dir="${test.svn}"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <delete dir="${build.test.reposroots}/svn"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <mkdir dir="${build.test.reposroots}"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <exec executable="svnadmin" failifexecutionfails="true">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <arg value="create"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <arg value="${build.test.reposroots}/svn"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </exec>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <!-- need absolute path for svn url -->
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <pathconvert property="test.svn.url">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <map from="" to="file://"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <path location="${build.test.reposroots}/svn"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </pathconvert>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <exec executable="svn" failifexecutionfails="false">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <arg value="import"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <arg value="${test.sources}"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <arg value="${test.svn.url}"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <arg value="-m"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <arg value="Initial import"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </exec>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <exec executable="svn" failifexecutionfails="false">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <arg value="checkout"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <arg value="${test.svn.url}"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <arg value="${test.svn}"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </exec>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </target>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <target name="-create-razor-repository">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <delete dir="${test.razor}"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <copy todir="${test.razor}/Razor-Simple">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <fileset dir="${test.razor.repo}/UserSandbox"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </copy>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <copy todir="${test.razor}/Razor-Simple/SimpleCProgram/.razor">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <fileset dir="${test.razor.repo}/Repository/OpenGrokSample/RAZOR_UNIVERSE/DOMAIN_01/Simple"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </copy>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <!--
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik The support for binaries in Razor repositories is not fully
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik functional, so the next copy target is commented out for now.
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik -->
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <!--copy todir="${test.razor}/Razor-Simple/SimpleCProgram-BinaryRelease/.razor">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <fileset dir="ext/SampleRazorRepository/Repository/OpenGrokSample/RAZOR_UNIVERSE/DOMAIN_01/Simple"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </copy-->
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </target>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <!-- clean up generated test repositories -->
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <target name="-delete-generated-repository-files">
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <delete dir="${test.hg}/.hg"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <delete file="${test.hg}/.hgignore"/>
1b28b233e40eae109c16d5b1b917dffb64e45f94Lubos Kosco <delete dir="${test.git}/.git"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <delete dir="${test.svn}"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <delete dir="${test.razor}"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik <delete file="${test.cvs.repo}/CVS/Root"/>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik </target>
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik
2e3d7e6e37f660560e4b5fa41916a7270e408d37Jorgen Austvik</project>