<?xml version="1.0" encoding="UTF-8"?>
<!--
	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 xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>org.apache.hawq</groupId>
  <artifactId>hawq</artifactId>
  <version>2.1</version>
  <packaging>pom</packaging>

  <build>  
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>0.12</version>
          <configuration>
            <consoleOutput>true</consoleOutput>
            <excludes>

              <!-- stream benchmark under BSD-like license with a few
                   exceptions around benchmarking results -->

              <exclude>tools/bin/src/stream/*</exclude> 

              <!-- PyGreSQL an open-source Python module that
                   interfaces to a PostgreSQL database under the
                   Python Software Foundation License -->

              <exclude>tools/bin/pythonSrc/PyGreSQL-4.0/**</exclude>

              <!-- Open-source Python modules with MIT license -->

              <exclude>tools/bin/pythonSrc/lockfile-0.9.1/**</exclude>
              <exclude>tools/bin/pythonSrc/PSI-0.3b2_gp/**</exclude>
              <exclude>tools/bin/ext/simplejson/**</exclude>
              <exclude>tools/bin/ext/yaml/**</exclude>

              <!-- CMake BSD 3-clause license -->

              <exclude>depends/libhdfs3/CMake/**</exclude>
              <exclude>depends/libyarn/CMake/**</exclude>
              
              <!-- Open-source Python modules with BSD license -->
              
              <exclude>tools/bin/pythonSrc/pychecker-0.8.18/**</exclude>
              <exclude>tools/bin/pythonSrc/unittest2-0.5.1/**</exclude>
              <exclude>tools/bin/ext/figleaf/**</exclude>
              <exclude>tools/bin/ext/pg8000/**</exclude>

              <!-- BZIP2 license (4 clause BSD) -->

              <exclude>src/include/port/win32_msvc/bzlib.h</exclude>

              <!-- Google license (3 clause BSD) -->

              <exclude>depends/thirdparty/googletest/**</exclude>
              
              <!-- Oraface Project BSD license
                   https://github.com/orafce -->

              <exclude>contrib/orafce/*</exclude>

              <!-- Pexpect a Python module for spawning child
                   applications and controlling them automatically,
                   BSD license -->

              <exclude>tools/bin/lib/pexpect.py</exclude>

              <!-- Open-source Python modules with ISC license -->

              <exclude>tools/bin/pythonSrc/pexpect-4.2/**</exclude>
              <exclude>tools/bin/pythonSrc/ptyprocess-0.5.1/**</exclude>

              <!-- These files came from PostgreSQL but they don't
                   have markers to identify that -->

              <exclude>src/bin/gpfdist/src/gpfdist/glob.c</exclude>
              <exclude>src/bin/gpfdist/src/gpfdist/include/glob.h</exclude>
              <exclude>src/include/port/win32_msvc/glob.h</exclude>
              <exclude>aclocal.m4</exclude>
              <exclude>GNUmakefile.in</exclude>
              <exclude>configure.in</exclude> 
              <exclude>configure</exclude>
              <exclude>Makefile</exclude>
              <exclude>config/*</exclude> <!-- This one is tricky since it is actually GPL -->
              <exclude>src/makefiles/*</exclude>
              <exclude>src/DEVELOPERS</exclude>
              <exclude>src/backend/catalog/Makefile</exclude>
              <exclude>src/backend/port/beos/*.c</exclude>
              <exclude>src/backend/port/tas/*.s</exclude>
              <exclude>src/backend/regex/re_syntax.n</exclude>
              <exclude>src/backend/utils/mb/conversion_procs/regress_epilogue</exclude>
              <exclude>src/backend/utils/mb/conversion_procs/regress_prolog</exclude>
              <exclude>src/backend/utils/mb/Unicode/ISO10646-GB18030.TXT</exclude>
              <exclude>src/backend/utils/misc/check_guc</exclude>
              <exclude>src/backend/port/hpux/tas.c.template</exclude>
              <exclude>src/backend/utils/mb/conversion_procs/proc.mk</exclude>
              <exclude>src/include/pg_config.h.win32</exclude>
              <exclude>src/bin/scripts/common.h</exclude>
              <exclude>src/include/pg_config.h.in</exclude>
              <exclude>src/bin/initdb/*</exclude>
              <exclude>src/bin/initlocation/*</exclude>
              <exclude>src/bin/ipcclean/*</exclude>
              <exclude>src/bin/pg_*/**/*</exclude>
              <exclude>src/bin/psql/**/*</exclude>
              <exclude>src/bin/scripts/*.c</exclude>
              <exclude>src/interfaces/**/*</exclude>
              <exclude>src/tools/**/*</exclude>
              <exclude>src/tutorial/*</exclude>
              <exclude>src/pl/**/*</exclude>
              <exclude>src/port/*</exclude>
              <exclude>src/template/*</exclude>
              <exclude>src/test/**/*</exclude>
              <exclude>src/timezone/**/*</exclude>
              <exclude>doc/src/sgml/fixrtf</exclude>
              <exclude>doc/**/*.sgml</exclude>
              <exclude>contrib/pgcrypto/*</exclude>

              <!-- Files which are not easy to have license headers. -->

              <exclude>depends/libhdfs3/test/data/*</exclude>
              <exclude>depends/libhdfs3/debian/**</exclude>

              <!-- Following files are licensed to ASF via the initial HAWQ SGA,
                   however it is tricky to maintain headers in them -->

              <exclude>depends/libyarn/test/data/*</exclude>
              <exclude>contrib/hawq-hadoop/hawq-mapreduce-common/src/test/resources/**/*.yaml</exclude>
              <exclude>contrib/hawq-hadoop/hawq-mapreduce-tool/test-data/**/*.yaml</exclude>

              <exclude>contrib/hawq-hadoop/hawq-mapreduce-tool/src/test/resources/dataset</exclude>
              <exclude>contrib/hawq-ambari-plugin/build.properties</exclude>
              <exclude>contrib/hawq-ambari-plugin/README.md</exclude>

              <exclude>src/backend/access/index/caql.files</exclude>
              <exclude>src/backend/gpopt/library.ver</exclude>
              <exclude>src/backend/utils/misc/etc/slaves</exclude>

              <exclude>tools/bin/.rcfile</exclude>
              <exclude>tools/bin/postgresql_conf_gp_additions</exclude>
              <exclude>tools/doc/**/*</exclude>
              <exclude>tools/demo/gpfdist_transform/*.yaml</exclude>
              <exclude>tools/bin/gppylib/operations/madlib_depcheck/changelist.yaml</exclude>

              <!-- Finally we exclude a few file types (based on
                   extension) for which comments are tough to
                   maintain. Note that this is a combination of files
                   licensed to ASF and files that came from PostgreSQL
                   and other projects (under compatible licenses).
                   You may need to engage in software archaeology to
                   find out the origins of these.
              -->

              <exclude>.git/**</exclude>
              <exclude>**/*.md</exclude>
              <exclude>**/*.md5</exclude>
              <exclude>**/*.json</exclude>
              <exclude>**/*.ans</exclude>
              <exclude>**/*.sql</exclude>
              <exclude>**/*.out</exclude>
              <exclude>**/*.po</exclude>
              <exclude>**/*.map</exclude>
              <exclude>**/*.stderr</exclude>
              <exclude>**/*.stdout</exclude>
              <exclude>**/*.source</exclude>
              <exclude>**/*.txt</exclude>
              <exclude>**/*.data</exclude>
              <exclude>**/*.csv</exclude>
              <exclude>**/*.pm</exclude>
              <exclude>**/*.1</exclude>
              <exclude>**/*.sample</exclude>
              <exclude>**/*.pgc</exclude>
              <exclude>**/*.cnf</exclude>
              <exclude>**/*.stx</exclude>
              <exclude>**/*.gdb</exclude>
              <exclude>**/*.patch</exclude>
              <exclude>**/*.commit</exclude>
              <exclude>**/__init__.py</exclude>
              <exclude>**/*README*</exclude>
              <exclude>**/.travis.yml</exclude>
              <exclude>pxf/**/*.classpath</exclude>	 
            </excludes>
            <licenses>
              <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
                <licenseFamilyName>PostgreSQL License</licenseFamilyName>
                <licenseFamilyCategory>PGSQL</licenseFamilyCategory>
                <patterns>
                  <pattern>$PostgreSQL:</pattern>
                  <pattern>PostgreSQL Global Development Group</pattern>
                </patterns>
            </license>
            </licenses>
            <licenseFamilies>
              <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
                <familyName>PostgreSQL License</familyName>
              </licenseFamily>
              <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
                <familyName>Apache License Version 2.0</familyName>
              </licenseFamily>
            </licenseFamilies>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>0.12</version>
          <executions>
            <execution>
              <phase>verify</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
  </build>
</project>
