<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>io.prestosql</groupId>
        <artifactId>presto-root</artifactId>
        <version>332</version>
    </parent>

    <artifactId>presto-server-rpm</artifactId>
    <name>presto-server-rpm</name>
    <packaging>rpm</packaging>

    <properties>
        <air.main.basedir>${project.parent.basedir}</air.main.basedir>

        <server.tar.package>presto-server-${project.version}</server.tar.package>
    </properties>

    <dependencies>
        <!-- for testing -->
        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>testcontainers</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.prestosql</groupId>
            <artifactId>presto-main</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.prestosql</groupId>
            <artifactId>presto-jdbc</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.airlift</groupId>
            <artifactId>units</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.mycila</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <configuration>
                        <excludes combine.children="append">
                            <exclude>src/main/rpm/**</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <!-- the default RPM lifecycle does not include testCompile -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>ca.vanzyl.provisio.maven.plugins</groupId>
                <artifactId>provisio-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>provision</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- Build presto-server rpm using the untarred artifacts -->
            <plugin>
                <groupId>com.teradata</groupId>
                <artifactId>redlinerpm-maven-plugin-td</artifactId>
                <version>2.1.5</version>
                <extensions>true</extensions>

                <configuration>
                    <performCheckingForExtraFiles>false</performCheckingForExtraFiles>

                    <packages>
                        <package>
                            <name>presto-server-rpm</name>
                            <nameOverride>presto-server-rpm-${project.version}.x86_64.rpm</nameOverride>
                            <version>${project.version}</version>
                            <release>1</release>

                            <group>Applications/Databases</group>
                            <description>Presto Server RPM Package.</description>
                            <architecture>x86_64</architecture>
                            <preInstallScriptFile>src/main/rpm/preinstall</preInstallScriptFile>
                            <postInstallScriptFile>src/main/rpm/postinstall</postInstallScriptFile>
                            <preUninstallScriptFile>src/main/rpm/preremove</preUninstallScriptFile>
                            <postUninstallScriptFile>src/main/rpm/postremove</postUninstallScriptFile>

                            <dependencies>
                                <dependency>
                                    <name>python</name>
                                    <version>[2.4,)</version>
                                </dependency>
                                <dependency>
                                    <name>/usr/sbin/useradd</name>
                                </dependency>
                                <dependency>
                                    <name>/usr/sbin/groupadd</name>
                                </dependency>
                                <dependency>
                                    <!-- Used e.g. to generate node.properties -->
                                    <name>/usr/bin/uuidgen</name>
                                </dependency>
                                <dependency>
                                    <!-- Used e.g. by service launcher -->
                                    <name>/usr/bin/sudo</name>
                                </dependency>
                            </dependencies>

                            <links>
                                <link>
                                    <path>/usr/lib/presto/etc</path>
                                    <target>/etc/presto</target>
                                </link>
                            </links>

                            <rules>
                                <rule>
                                    <destination>/usr/lib/presto/bin</destination>
                                    <base>${server.tar.package}/bin</base>
                                    <!-- make sure launcher scripts are executable -->
                                    <fileMode>0755</fileMode>
                                    <includes>
                                        <include>*</include>
                                    </includes>
                                </rule>

                                <rule>
                                    <destination>/usr/lib/presto/bin</destination>
                                    <base>${server.tar.package}/bin</base>
                                    <!-- copy sub folders -->
                                    <includes>
                                        <include>*/**</include>
                                    </includes>
                                </rule>

                                <rule>
                                    <destination>/etc/init.d</destination>
                                    <base>dist/etc/init.d</base>
                                    <!-- make sure init.d scripts are executable -->
                                    <fileMode>0755</fileMode>
                                    <includes>
                                        <include>*</include>
                                    </includes>
                                </rule>

                                <rule>
                                    <!-- This should go to just /usr/lib/presto eventually. But that needs modifying
                                    launcher.py in airlift, to have a configurable option for install_path -->
                                    <destination>/usr/lib/presto/lib</destination>
                                    <base>${server.tar.package}/lib</base>
                                    <includes>
                                        <include>*</include>
                                    </includes>
                                </rule>

                                <rule>
                                    <destination>/usr/lib/presto/plugin</destination>
                                    <base>${server.tar.package}/plugin</base>
                                    <includes>
                                        <include>*/*</include>
                                    </includes>
                                </rule>

                                <rule>
                                    <destination>/etc/presto</destination>
                                    <base>dist/config</base>
                                    <includes>
                                        <include>*</include>
                                    </includes>
                                    <directives>
                                        <directive>config</directive>
                                        <directive>noreplace</directive>
                                    </directives>
                                </rule>

                                <rule>
                                    <destination>/usr/shared/doc/presto</destination>
                                    <base>${server.tar.package}</base>
                                    <includes>
                                        <include>README.txt</include>
                                    </includes>
                                </rule>

                                <!-- Add these rules so that .spec knows these dirs are to be removed too on rpm -e -->
                                <rule>
                                    <destination>/usr/lib/presto</destination>
                                </rule>
                                <rule>
                                    <destination>/usr/lib/presto/lib</destination>
                                </rule>
                            </rules>
                        </package>
                    </packages>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>ci</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <version>2.22.2</version>
                        <configuration>
                            <systemPropertyVariables>
                                <rpm>${project.build.directory}/${project.build.finalName}.x86_64.rpm</rpm>
                            </systemPropertyVariables>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>integration-test</goal>
                                    <goal>verify</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
