<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>deb-packaging</artifactId>
    <packaging>pom</packaging>
    <name>Brooklyn DEB Package</name>
    <description>
        Brooklyn DEB Package for Debian and Ubuntu operating systems
    </description>

    <properties>
        <brooklyn.directory.permission.default>740</brooklyn.directory.permission.default>
        <brooklyn.directory.permission.root>740</brooklyn.directory.permission.root>
        <brooklyn.file.permission.default>740</brooklyn.file.permission.default>
        <brooklyn.file.permission.bin>740</brooklyn.file.permission.bin>
        <brooklyn.file.permission.global>664</brooklyn.file.permission.global>
    </properties>

    <parent>
        <groupId>org.apache.brooklyn</groupId>
        <artifactId>brooklyn-dist-root</artifactId>
        <version>0.12.0</version>  <!-- BROOKLYN_VERSION -->
        <relativePath>../pom.xml</relativePath>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.apache.brooklyn</groupId>
            <artifactId>apache-brooklyn</artifactId>
            <version>${project.version}</version>
            <type>zip</type>
        </dependency>
        <dependency>
            <groupId>org.apache.brooklyn</groupId>
            <artifactId>shared-packaging</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack</id>
                        <phase>package</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.apache.brooklyn</groupId>
                                    <artifactId>apache-brooklyn</artifactId>
                                    <version>${project.version}</version>
                                    <type>zip</type>
                                    <outputDirectory>${project.build.directory}/deps</outputDirectory>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.apache.brooklyn</groupId>
                                    <artifactId>shared-packaging</artifactId>
                                    <version>${project.version}</version>
                                    <type>jar</type>
                                    <outputDirectory>${project.build.directory}/deps/shared-packaging</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>jdeb</artifactId>
                <groupId>org.vafer</groupId>
                <version>1.5</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jdeb</goal>
                        </goals>
                        <configuration>
                            <verbose>false</verbose>
                            <skipPOMs>false</skipPOMs>
                            <!-- Try to follow the deb package naming convention, restricted by the maven artifact naming -->
                            <classifier>all</classifier>
                            <deb>${project.build.directory}/apache-brooklyn-${project.version}-all.deb</deb>
                            <controlDir>${basedir}/deb/control</controlDir>
                            <dataSet>
                                <data>
                                    <src>${project.build.directory}/deps/apache-brooklyn-${project.version}/bin</src>
                                    <type>directory</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/opt/brooklyn-${project.version}/bin</prefix>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.bin}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.build.directory}/deps/apache-brooklyn-${project.version}/catalog</src>
                                    <type>directory</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/opt/brooklyn-${project.version}/catalog</prefix>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.default}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.build.directory}/deps/apache-brooklyn-${project.version}/data</src>
                                    <type>directory</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/opt/brooklyn-${project.version}/data</prefix>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.default}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.build.directory}/deps/apache-brooklyn-${project.version}/deploy</src>
                                    <type>directory</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/opt/brooklyn-${project.version}/deploy</prefix>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.default}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.build.directory}/deps/apache-brooklyn-${project.version}/etc</src>
                                    <type>directory</type>
                                    <conffile>true</conffile>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/etc/brooklyn</prefix>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.default}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.build.directory}/deps/apache-brooklyn-${project.version}/lib</src>
                                    <type>directory</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/opt/brooklyn-${project.version}/lib</prefix>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.default}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.build.directory}/deps/apache-brooklyn-${project.version}/system</src>
                                    <type>directory</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/opt/brooklyn-${project.version}/system</prefix>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.default}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.build.directory}/deps/apache-brooklyn-${project.version}/LICENSE</src>
                                    <type>file</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/opt/brooklyn-${project.version}</prefix>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.global}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.build.directory}/deps/apache-brooklyn-${project.version}/NOTICE</src>
                                    <type>file</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/opt/brooklyn-${project.version}</prefix>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.global}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <type>template</type>
                                    <paths>
                                        <path>/opt/brooklyn-${project.version}/data/log</path>
                                    </paths>
                                    <mapper>
                                        <type>perm</type>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.default}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <type>template</type>
                                    <paths>
                                        <path>/var/lib/brooklyn</path>
                                    </paths>
                                    <mapper>
                                        <type>perm</type>
                                        <user>brooklyn</user>
                                        <group>brooklyn</group>
                                        <filemode>${brooklyn.file.permission.default}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.build.directory}/deps/shared-packaging/service/upstart/deb/brooklyn.conf</src>
                                    <type>file</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/etc/init</prefix>
                                        <filemode>${brooklyn.file.permission.global}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.build.directory}/deps/shared-packaging/service/systemd/brooklyn.service</src>
                                    <type>file</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/lib/systemd/system</prefix>
                                        <filemode>${brooklyn.file.permission.global}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <!-- TODO Probably should live in /usr/lib/systemd/system with a symlink in the following folder -->
                                    <src>${project.build.directory}/deps/shared-packaging/service/systemd/brooklyn.service</src>
                                    <type>file</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/etc/systemd/system/multi-user.target.wants</prefix>
                                        <filemode>${brooklyn.file.permission.global}</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <type>link</type>
                                    <linkName>/opt/brooklyn</linkName>
                                    <linkTarget>/opt/brooklyn-${project.version}</linkTarget>
                                    <symlink>true</symlink>
                                </data>
                                <data>
                                    <type>link</type>
                                    <linkName>/opt/brooklyn-${project.version}/etc</linkName>
                                    <linkTarget>/etc/brooklyn</linkTarget>
                                    <symlink>true</symlink>
                                </data>
                                <data>
                                    <type>link</type>
                                    <linkName>/var/log/brooklyn</linkName>
                                    <linkTarget>/opt/brooklyn-${project.version}/data/log</linkTarget>
                                    <symlink>true</symlink>
                                </data>
                            </dataSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
