<?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>311</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>

        <air.check.skip-enforcer>true</air.check.skip-enforcer>
        <air.check.skip-checkstyle>true</air.check.skip-checkstyle>
        <air.check.skip-duplicate-finder>true</air.check.skip-duplicate-finder>
        <air.check.skip-extended>true</air.check.skip-extended>

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

    <dependencies>
        <dependency>
            <groupId>io.prestosql</groupId>
            <artifactId>presto-server</artifactId>
            <version>${project.version}</version>
            <type>tar.gz</type>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

    <build>
        <!-- Untar presto-server tgz to target build folder -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack</id>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <skip>false</skip>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>io.prestosql</groupId>
                                    <artifactId>presto-server</artifactId>
                                    <version>${project.version}</version>
                                    <type>tar.gz</type>
                                    <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </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/lib/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>
</project>
