<?xml version="1.0"?>

<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<project name="hadoopcontrib" default="compile" basedir=".">
  
  <!-- In case one of the contrib subdirectories -->
  <!-- fails the build or test targets and you cannot fix it: -->
  <!-- Then add to fileset: excludes="badcontrib/build.xml" -->
  <patternset id="contrib-builds">
    <include name="*/build.xml" />
      <!-- raid compilation disabled due to failure after
           federation merge. See MAPREDUCE-2465. -->
    <exclude name="raid/build.xml" />
  </patternset>

  <!-- ====================================================== -->
  <!-- Compile contribs.                                      -->
  <!-- ====================================================== -->
  <target name="compile">
    <subant target="compile">
      <fileset dir=".">
        <patternset refid="contrib-builds" />
      </fileset>
    </subant>
  </target>

  <!-- ====================================================== -->
  <!-- Compile contrib test code.                             -->
  <!-- ====================================================== -->
  <target name="compile-test">
    <subant target="compile-test">
      <fileset dir=".">
        <patternset refid="contrib-builds" />
      </fileset>
    </subant>
  </target>
  
  <!-- ====================================================== -->
  <!-- Package contrib jars.                                  -->
  <!-- ====================================================== -->
  <target name="package">
    <subant target="package">
      <fileset dir=".">
        <patternset refid="contrib-builds" />
      </fileset>
    </subant>
  </target>
  
  <!-- ====================================================== -->
  <!-- Test all the contribs.                               -->
  <!-- ====================================================== -->
  <target name="test">
      <property name="hadoop.root" location="${root}/../../../"/>
      <property name="build.contrib.dir" location="${hadoop.root}/build/contrib"/>
      <delete file="${build.contrib.dir}/testsfailed"/>
    <subant target="test">
      <property name="continueOnFailure" value="true"/>
      <fileset dir="." includes="streaming/build.xml"/> 
      <fileset dir="." includes="fairscheduler/build.xml"/> 
      <fileset dir="." includes="capacity-scheduler/build.xml"/>  
      <fileset dir="." includes="mrunit/build.xml"/> 
      <fileset dir="." includes="dynamic-scheduler/build.xml"/>
      <fileset dir="." includes="gridmix/build.xml"/>
      <fileset dir="." includes="vertica/build.xml"/>
      <!-- mumak tests disabled due to timeouts. See MAPREDUCE-2348
      <fileset dir="." includes="mumak/build.xml"/> -->
      <!-- raid tests disabled due to compilation failure after
           federation merge. See MAPREDUCE-2465.
      <fileset dir="." includes="raid/build.xml"/> -->
    </subant>
    <available file="${build.contrib.dir}/testsfailed" property="testsfailed"/>
    <fail if="testsfailed">Tests failed!</fail>
  </target>

  <!-- ====================================================== -->
  <!-- Test all the contrib system tests                     -->
  <!-- ====================================================== -->
  <target name="test-system-contrib">
      <property name="hadoop.root" location="${root}/../../../"/>
      <property name="build.contrib.dir" location="${hadoop.root}/build/contrib"/>
      <delete file="${build.contrib.dir}/testsfailed"/>
      <subant target="test-system">
          <property name="continueOnFailure" value="true"/>
          <property name="hadoop.home" value="${hadoop.home}"/>
          <property name="hadoop.conf.dir" value="${hadoop.conf.dir}"/>
          <property name="hadoop.conf.dir.deployed"
               value="${hadoop.conf.dir.deployed}"/>
          <fileset dir="." includes="hdfsproxy/build.xml"/>
          <fileset dir="." includes="streaming/build.xml"/>
          <fileset dir="." includes="fairscheduler/build.xml"/>
         <fileset dir="." includes="capacity-scheduler/build.xml"/>
         <fileset dir="." includes="gridmix/build.xml"/>
      </subant>
      <available file="${build.contrib.dir}/testsfailed" property="testsfailed"/>
      <fail if="testsfailed">Tests failed!</fail>
  </target>

  <target name="docs">
    <subant target="docs">
      <fileset dir="." includes="capacity-scheduler/build.xml"/> 
    </subant>
  </target>

  <!-- ====================================================== -->
  <!-- Clean all the contribs.                              -->
  <!-- ====================================================== -->
  <target name="clean">
    <subant target="clean">
      <fileset dir=".">
        <patternset refid="contrib-builds" />
      </fileset>
    </subant>
  </target>

</project>
