<!--
   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>
  <artifactId>slider-assembly</artifactId>
  <name>Slider Assembly</name>
  <packaging>pom</packaging>
  <description>Apache Slider is a tool for dynamically deploying distributed applications to an Apache YARN cluster</description>
  <parent>
    <groupId>org.apache.slider</groupId>
    <artifactId>slider</artifactId>
    <version>0.61.0-SNAPSHOT</version>
  </parent>


  <properties>
    <rpm.basedir>/usr/lib/slider</rpm.basedir>
    <rpm.confdir>${rpm.basedir}/conf</rpm.confdir>
    <rpm.bindir>${rpm.basedir}/bin</rpm.bindir>
    <rpm.libdir>${rpm.basedir}/lib</rpm.libdir>
    <rpm.agentdir>${rpm.basedir}/agent</rpm.agentdir>
    <rpm.username>root</rpm.username>
    <rpm.groupname>root</rpm.groupname>
    <src.confdir>src/conf-hdp</src.confdir>
    <src.libdir>${project.build.directory}/lib</src.libdir>
    <src.agent.ini.dir>${project.build.directory}/../../slider-agent/conf</src.agent.ini.dir>
    <python.ver>python &gt;= 2.6</python.ver>
    <executable.python>${project.basedir}/../slider-agent/src/test/python/python-wrap</executable.python>
    <python.path.l>${project.basedir}/src/main/scripts:${project.basedir}/../slider-agent/src/test/python/mock:${project.basedir}/src/test/python/scripts</python.path.l>
    <skipTests>false</skipTests>
  </properties>

  <build>
    <plugins>
      <!--read in a build.properties file if defined-->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>${maven.properties.version}</version>
        <executions>
          <execution>
            <phase>initialize</phase>
            <goals>
              <goal>read-project-properties</goal>
            </goals>
            <configuration>
              <quiet>true</quiet>
              <files>
                <file>build.properties</file>
                <file>../build.properties</file>
              </files>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>${maven-exec-plugin.version}</version>
        <executions>
          <execution>
            <configuration>
              <executable>${executable.python}</executable>
              <workingDirectory>src/test/python</workingDirectory>
              <arguments>
                <argument>unitTests.py</argument>
              </arguments>
              <environmentVariables>
                <PYTHONPATH>${python.path.l}</PYTHONPATH>
              </environmentVariables>
              <skip>${skipTests}</skip>
            </configuration>
            <id>python-test</id>
            <phase>test</phase>
            <goals>
              <goal>exec</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      
      <!-- pull in all dependencies -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>${maven-dependency-plugin.version}</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/lib</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>true</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
  <!--            <tarLongFileFormat>gnu</tarLongFileFormat>-->
            </configuration>
          </execution>
          <execution>
            <!-- copy in the agent tar file -->
            <id>copy</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.apache.slider</groupId>
                  <artifactId>slider-agent</artifactId>
                  <type>tar.gz</type>
                  <overWrite>false</overWrite>
                  <outputDirectory>${project.build.directory}/agent</outputDirectory>
                  <destFileName>slider-agent.tar.gz</destFileName>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
          <execution>
            <!-- copy in the agent tar file -->
            <id>copy-to-lib</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.apache.slider</groupId>
                  <artifactId>slider-agent</artifactId>
                  <type>tar.gz</type>
                  <overWrite>false</overWrite>
                  <outputDirectory>${project.build.directory}/lib</outputDirectory>
                  <destFileName>slider-agent.tar.gz</destFileName>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>${maven-source-plugin.version}</version>
        <inherited>true</inherited>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar</goal>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>${maven-enforcer-plugin.version}</version>
        <inherited>false</inherited>
        <configuration>
          <rules>
            <requireMavenVersion>
              <version>${maven.version.range}</version>
            </requireMavenVersion>
            <requireJavaVersion>
              <version>${project.java.src.version}</version>
            </requireJavaVersion>
          </rules>
        </configuration>
        <executions>
          <execution>
            <id>default</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>validate</phase>
          </execution>
        </executions>
      </plugin>

      <!-- assemble the tar file -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>${maven-assembly-plugin.version}</version>
        <configuration>
          <tarLongFileMode>gnu</tarLongFileMode>
          <descriptors>
            <descriptor>src/assembly/slider-bin.xml</descriptor>
          </descriptors>
          <finalName>slider-${project.version}</finalName>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      
      <!-- verification phase checks for files in the target assembly -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-verifier-plugin</artifactId>
        <version>${maven-verifier-plugin.version}</version>
        <configuration>
          <verificationFile>src/assembly/verifications.xml</verificationFile>
        </configuration>
        <executions>
          <execution>
            <id>main</id>
            <phase>verify</phase>
            <goals>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
 
    </plugins>
    
    
  </build>

  <reporting>
    <plugins>
 


    </plugins>
  </reporting>

  <profiles>
   <profile>
      <id>Windows</id>
      <activation>
        <os><family>windows</family></os>
      </activation>
      <properties>
        <executable.python>python</executable.python>
        <python.path.l>${project.basedir}\src\main\scripts;${project.basedir}\..\slider-agent\src\test\python\mock;${project.basedir}\src\test\python\scripts</python.path.l>
      </properties>
    </profile>

    <profile>
      <id>Linux</id>
      <activation>
        <os><family>!windows</family></os>
      </activation>
      <properties>
        <executable.python>${project.basedir}/../slider-agent/src/test/python/python-wrap</executable.python>
        <python.path.l>${project.basedir}/src/main/scripts:${project.basedir}/../slider-agent/src/test/python/mock:${project.basedir}/src/test/python/scripts</python.path.l>
      </properties>
    </profile>
    <profile>
      <id>rpm</id>
      <build>
        <plugins>
          <!-- RPM -->

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>rpm-maven-plugin</artifactId>
            <version>${maven-rpm-plugin.version}</version>
            <executions>
              <execution>
                <id>generate-rpm</id>
                <goals>
                  <goal>rpm</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <license>http://www.apache.org/licenses/LICENSE-2.0</license>
              <name>slider</name>
              <version>${project.version}</version>
<!--
              <release>${project.version}</release>
-->
              <!---->
              <distribution></distribution>
              <group>Applications/Engineering</group>
              <!--<icon>src/main/resources/icon.gif</icon>-->
              <!--<packager>ASF</packager>-->
              <prefix>${rpm.basedir}</prefix>
              <!--
                        <changelogFile>src/changelog</changelogFile>
              -->
              <!--          <defineStatements>
                          <defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
                        </defineStatements>-->
              <provides>
                <provide>apache-slider</provide>
              </provides>
              <mappings>
                <mapping>
                  <directory>${rpm.basedir}</directory>
                  <!-- RWXR.XR.X -->
                  <filemode>755</filemode>

                  <username>${rpm.username}</username>
                  <groupname>${rpm.groupname}</groupname>
                  <sources>

                  </sources>
                </mapping>

                <!-- binaries -->
                <mapping>
                  <directory>${rpm.bindir}</directory>
                  <!-- RWXR.XR.X -->
                  <filemode>0755</filemode>
                  <username>${rpm.username}</username>
                  <groupname>${rpm.groupname}</groupname>
                  <sources>
                    <source>
                      <location>src/main/scripts</location>
                    </source>
                  </sources>
                </mapping>

                <!-- library -->
                <mapping>
                  <directory>${rpm.libdir}</directory>
                  <!-- RWXR.XR.X -->
                  <filemode>755</filemode>

                  <username>${rpm.username}</username>
                  <groupname>${rpm.groupname}</groupname>
                  <sources>
                    <source>
                      <location>${src.libdir}</location>
                    </source>
                  </sources>
                </mapping>

                <!-- configuration -->
                <mapping>
                  <directory>${rpm.confdir}</directory>
                  <configuration>true</configuration>
                  <filemode>0755</filemode>
                  <username>${rpm.username}</username>
                  <groupname>${rpm.groupname}</groupname>
                  <sources>
                    <source>
                      <location>${src.confdir}</location>
                    </source>
                  </sources>
                </mapping>

                <!-- agent -->
                <mapping>
                  <directory>${rpm.agentdir}</directory>
                  <filemode>0755</filemode>
                  <username>${rpm.username}</username>
                  <groupname>${rpm.groupname}</groupname>
                  <directoryIncluded>false</directoryIncluded>
                  <sources>
                    <source>
                      <location>${project.build.directory}/agent</location>
                      <includes>
                        <include>slider-agent.tar.gz</include>
                      </includes>
                    </source>
                  </sources>
                </mapping>

                <!-- agent.ini -->
                <mapping>
                  <directory>${rpm.agentdir}/conf</directory>
                  <configuration>true</configuration>
                  <filemode>0755</filemode>
                  <username>${rpm.username}</username>
                  <groupname>${rpm.groupname}</groupname>
                  <directoryIncluded>false</directoryIncluded>
                  <sources>
                    <source>
                      <location>${src.agent.ini.dir}</location>
                      <includes>
                         <include>*.ini
                        </include>
                      </includes>
                    </source>
                  </sources>
                </mapping>

                <!-- needed to apply attribute to directory -->
                <mapping>
                  <directory>${rpm.agentdir}</directory>
                  <filemode>0755</filemode>
                  <username>${rpm.username}</username>
                  <groupname>${rpm.groupname}</groupname>
                  <directoryIncluded>true</directoryIncluded>
                </mapping>

                <mapping>
                  <directory>${rpm.agentdir}/conf</directory>
                  <filemode>0755</filemode>
                  <username>${rpm.username}</username>
                  <groupname>${rpm.groupname}</groupname>
                  <directoryIncluded>true</directoryIncluded>
                </mapping>

              </mappings>
              <!--
              Scripts. Very dangerous in RPMs unless you know exactly what you are doing.
              It's very easy to break the uninstall process, in particular.
              -->
<!--
              <preinstallScriptlet>
                <script>echo "installing slider"</script>
              </preinstallScriptlet>
-->
              <!--
                        <postinstallScriptlet>
                          <scriptFile>src/main/scripts/postinstall</scriptFile>
                          <fileEncoding>utf-8</fileEncoding>
                        </postinstallScriptlet>
              -->
              <!--
                        <preremoveScriptlet>
                          <scriptFile>src/main/scripts/preremove</scriptFile>
                          <fileEncoding>utf-8</fileEncoding>
                        </preremoveScriptlet>
              -->
            </configuration>
          </plugin>

        </plugins>
      </build>
    </profile>

  </profiles>

  <dependencies>

    <dependency>
      <groupId>org.apache.slider</groupId>
      <artifactId>slider-core</artifactId>
      <version>${project.version}</version>
    </dependency>

    <!--
     needed to order the build and ensure the agent tar is found
     the test scope ensures that it isn't copied into the lib dir
     -->
    <dependency>
      <groupId>org.apache.slider</groupId>
      <artifactId>slider-agent</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
      <type>tar.gz</type>
    </dependency>

    <dependency>
      <groupId>com.beust</groupId>
      <artifactId>jcommander</artifactId>
    </dependency>


    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
    </dependency>
 
  </dependencies>


</project>
