Repository: ignite
Updated Branches:
  refs/heads/master 19311d422 -> d4606cb1e


IGNITE-7108 Apache Ignite 2.5 RPM and DEB packages
* added package.sh script for automation DEB and RPM packages build
* added DEB package build
* updated RPM package version to 2.5.0
* refactored RPM files layout for unification of build process
* improved packages layout hierarchy

Signed-off-by: Andrey Gura <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d4606cb1
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d4606cb1
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d4606cb1

Branch: refs/heads/master
Commit: d4606cb1e4e0766d7252ad6c85c0c1e58054e94e
Parents: 19311d4
Author: Ivanov Petr <[email protected]>
Authored: Wed Apr 25 19:59:14 2018 +0300
Committer: Andrey Gura <[email protected]>
Committed: Wed Apr 25 20:00:30 2018 +0300

----------------------------------------------------------------------
 DEVNOTES.txt                           |  35 ++--
 packaging/deb/changelog                |  12 ++
 packaging/deb/control                  |  17 ++
 packaging/deb/copyright                |  12 ++
 packaging/deb/rules                    |  44 +++++
 packaging/package.sh                   | 257 ++++++++++++++++++++++++++++
 packaging/rpm/SOURCES/name.service     |  17 --
 packaging/rpm/SOURCES/service.sh       |  28 ---
 packaging/rpm/SPECS/apache-ignite.spec | 214 -----------------------
 packaging/rpm/apache-ignite.spec       | 245 ++++++++++++++++++++++++++
 packaging/rpm/name.service             |  17 ++
 packaging/rpm/service.sh               |  28 +++
 parent/pom.xml                         |   6 +-
 13 files changed, 653 insertions(+), 279 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/DEVNOTES.txt
----------------------------------------------------------------------
diff --git a/DEVNOTES.txt b/DEVNOTES.txt
index 6ec0f39..7785ee7 100644
--- a/DEVNOTES.txt
+++ b/DEVNOTES.txt
@@ -75,36 +75,39 @@ Instructions can be found at 
modules/platforms/cpp/DEVNOTES.txt.
 
 Apache Ignite RPM Package Build Instructions
 ============================================
-1) Install dependencies
+1) Build Apache Ignite binary archive (instructions above)
 
-        yum install -y rpmdevtools rpm-build
+2) Run packaging script and follow messages if they required interaction
 
-2) Create directory layout
+        packaging/package.sh --rpm
 
-        rpmdev-setuptree
+   Packages will be available in packaging/ directory
 
-3) Copy build specification and additional sources required for build
 
-        cp -rfv packaging/rpm/* ~/rpmbuild
+Apache Ignite DEB Package Build Instructions
+============================================
+1) Build Apache Ignite binary archive (instructions above)
 
-4) Copy built binary from target/bin to sources directory
+2) Build Apache Ignite RPM package (also above)
 
-        cp -rfv target/bin/apache-ignite-<version>-bin.zip 
~/rpmbuild/SOURCES/apache-ignite.zip
+3) Run packaging script and follow messages if they required interaction
 
-5) Run build process
+        packaging/package.sh --deb
 
-        rpmbuild -bb ~/rpmbuild/SPECS/apache-ignite.spec
+   Packages will be available in packaging/ directory
 
-   NOTE: to build also SRPM package, run with -ba flag instead
+   NOTE: to build both packages type at once, run
 
-   Package will be available in ~/rpmbuild/RPMS/noarch
+        packaging/package.sh --rpm --deb
 
 
-Install and Run Apache Ignite from RPM
-======================================
-1) Install package
+Install and Run Apache Ignite from packages
+===========================================
+1) Install package with YUM or APT respectively
 
-        yum localinstall -y apache-ignite-<version>.rpm
+        yum localinstall -y apache-ignite-<version>.noarch.rpm
+            or
+        dpkg -i apache-ignite_<version>_all.deb
 
 2) Start Apache Ignite service
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/deb/changelog
----------------------------------------------------------------------
diff --git a/packaging/deb/changelog b/packaging/deb/changelog
new file mode 100644
index 0000000..99106f1
--- /dev/null
+++ b/packaging/deb/changelog
@@ -0,0 +1,12 @@
+apache-ignite (2.5.0-1) unstable; urgency=low
+
+  * Updated Apache Ignite to version 2.5.0
+
+ -- Petr Ivanov <[email protected]>  Tue, 17 Apr 2018 12:00:00 +0300
+
+apache-ignite (2.4.0-1) unstable; urgency=low
+
+  * Initial package release
+
+ -- Petr Ivanov <[email protected]>  Wed, 17 Jan 2018 12:00:00 +0300
+

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/deb/control
----------------------------------------------------------------------
diff --git a/packaging/deb/control b/packaging/deb/control
new file mode 100644
index 0000000..40467c0
--- /dev/null
+++ b/packaging/deb/control
@@ -0,0 +1,17 @@
+Source: apache-ignite
+Maintainer: Petr Ivanov <[email protected]>
+Section: misc
+Priority: optional
+Standards-Version: 4.1.1.1
+
+Package: apache-ignite
+Architecture: all
+Section: misc
+Priority: optional
+Depends: openjdk-8-jdk | oracle-java8-installer, systemd, passwd
+Description: Apache Ignite In-Memory Computing, Database and Caching Platform
+ Ignite™ is a memory-centric distributed database, caching, and processing
+ platform for transactional, analytical, and streaming workloads, delivering
+ in-memory speeds at petabyte scale
+Homepage: https://ignite.apache.org
+

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/deb/copyright
----------------------------------------------------------------------
diff --git a/packaging/deb/copyright b/packaging/deb/copyright
new file mode 100644
index 0000000..7a6cacb
--- /dev/null
+++ b/packaging/deb/copyright
@@ -0,0 +1,12 @@
+Licensed 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.
+

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/deb/rules
----------------------------------------------------------------------
diff --git a/packaging/deb/rules b/packaging/deb/rules
new file mode 100755
index 0000000..d09d18c
--- /dev/null
+++ b/packaging/deb/rules
@@ -0,0 +1,44 @@
+#!/usr/bin/make -f
+# debian/rules for alien
+
+PACKAGE=$(shell dh_listpackages)
+DOC_DIR=$(shell ls usr/share/doc | grep -E "[0-9]")
+
+clean:
+       dh_testdir
+       dh_testroot
+       dh_clean -d
+
+binary-arch: clean
+       dh_testdir
+       dh_testroot
+       dh_prep
+       dh_installdirs
+
+       dh_installdocs
+       dh_installchangelogs
+
+# Copy the packages's files.
+       find . -maxdepth 1 -mindepth 1 -not -name debian -print0 | \
+               xargs -0 -r -i cp -a {} debian/$(PACKAGE)
+
+#
+# If you need to move files around in debian/$(PACKAGE) or do some
+# binary patching, do it here
+#
+# Fix doc directory
+       if [ "$(DOC_DIR)" != ""  ];\
+       then mv -v debian/$(PACKAGE)/usr/share/doc/$(DOC_DIR)/* 
debian/$(PACKAGE)/usr/share/doc/$(shell echo $(DOC_DIR) | sed -r 
's|-[0-9].*||');\
+       rm -rf debian/$(PACKAGE)/usr/share/doc/$(DOC_DIR);\
+       fi;\
+
+# This has been known to break on some wacky binaries.
+       dh_compress
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-arch
+

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/package.sh
----------------------------------------------------------------------
diff --git a/packaging/package.sh b/packaging/package.sh
new file mode 100755
index 0000000..622fd32
--- /dev/null
+++ b/packaging/package.sh
@@ -0,0 +1,257 @@
+#!/usr/bin/env bash
+set -o nounset
+set -o errexit
+set -o pipefail
+set -o errtrace
+set -o functrace
+
+cd "$(dirname "${BASH_SOURCE[0]}")"    # Run from the script's root
+
+
+
+##############
+#  SETTINGS  #
+##############
+APT_YUM_Y=                   # Install with no user interaction option for apt 
| yum
+BIN_NAME=                    # Name of binary archive used as a source for 
package building
+IGNITE_VERSION=              # Main product version
+PACKAGING_DIR=               # Root directory of packaging script
+DEB_WORK_DIR=                # Main directory for building DEB packages
+RPM_WORK_DIR=                # Main directory for building RPM packages
+
+BUILD_DEB_FLAG=false         # Whether to build DEB
+BUILD_RPM_FLAG=false         # Whether to build RPM
+
+
+
+###############
+#  FUNCTIONS  #
+###############
+
+# Usage help
+usage () {
+    cat <<EOF
+
+#######################################################################
+#  Build RPM or DEB package from Apache Ignite's sources or binaries  #
+#######################################################################
+
+Prerequisites:
+     - RPM: binary archive with name 'apache-ignite-fabric-<version>-bin.zip'
+     - DEB: previously built corresponding RPM package
+
+Usage: ./$(basename ${BASH_SOURCE[0]}) --rpm,--deb [--batch]
+
+Options:
+    --rpm, --deb     select package type for building (multiselect)
+
+    --batch          do not ask user for any interation
+
+EOF
+}
+
+
+# Check and prepare build environment
+prepEnv () {
+    installCmd=""
+    packages="unzip curl alien gcc"
+    executables="rpmbuild unzip curl alien gcc"
+
+    # Check OS
+    name=$(cat /etc/*release | grep ^NAME | sed -r 's|.*"(.*)".*|\1|')
+    case ${name} in
+        "Ubuntu")
+            installCmd="apt --no-install-recommends"
+            packages="${packages} rpm"
+            ;;
+        "CentOS Linux")
+            installCmd="yum"
+            packages="${packages} rpm-build"
+            ;;
+        *)
+            echo "Unknown or unsupported linux detected"
+            echo "Will skip 'Check and prepare build environment' step"
+            echo "Please, prepare you environment manually"
+            ;;
+    esac
+
+    # Install missing software if necessary
+    installFlag=false
+    if [[ ! -z "${installCmd}" ]]; then
+        for executable in ${executables}; do
+            command -v ${executable} &>/dev/null || {
+                installFlag=true
+                break
+            }
+        done
+        if ${installFlag}; then
+            ${installCmd} ${APT_YUM_Y} install ${packages}
+        fi
+    fi
+}
+
+
+# Check that binary archive exists and try to download it from Apache Dist 
Archive is not
+getBin () {
+    set -x
+    IGNITE_VERSION=$(cat rpm/apache-ignite.spec | grep Version: | head -1 | 
sed -r 's|.*:\s+(.*)|\1|')
+    BIN_NAME="apache-ignite-fabric-${IGNITE_VERSION}-bin.zip"
+    binPreparedFlag=false
+
+    # Search binary in packaging root directory 
+    if [ -f "${BIN_NAME}" ]; then
+        binPreparedFlag=true
+    fi
+
+    # Get from target
+    if ! ${binPreparedFlag}; then
+        if $(cp -rf ../target/bin/${BIN_NAME} ./ &>/dev/null); then
+            binPreparedFlag=true
+        fi
+    fi
+
+    # Get from Apache Dist
+    if ! ${binPreparedFlag}; then
+        if $(curl --fail -O 
https://archive.apache.org/dist/ignite/${IGNITE_VERSION}/${BIN_NAME} 
&>/dev/null); then
+            binPreparedFlag=true
+        else
+           rm -rf ${BIN_NAME} 
+        fi
+    fi
+
+    # Fail if none of the above acquiring method succeeded
+    if ! ${binPreparedFlag}; then
+        echo "[ERROR] Can't find Apache Ignite's binary archive '${BIN_NAME}'"
+        exit 1
+    fi
+}
+
+
+# Build RPM package
+buildRPM () {
+    RPM_WORK_DIR="$(mktemp -d)"
+    rm -rfv *.rpm
+
+    # Prepare build layout
+    mkdir -pv ${RPM_WORK_DIR}/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
+    cp -rfv ${BIN_NAME} rpm/{name.service,service.sh} ${RPM_WORK_DIR}/SOURCES
+    cp -rfv rpm/apache-ignite.spec ${RPM_WORK_DIR}/SPECS
+
+    # Assemble RPM packages
+    rpmbuild -bb -v --define "_topdir ${RPM_WORK_DIR}" 
${RPM_WORK_DIR}/SPECS/apache-ignite.spec
+
+    # Gather RPMS
+    find ${RPM_WORK_DIR} -name "*.rpm" -exec mv -fv {} ${PACKAGING_DIR} \;
+}
+
+
+# Build DEB package
+buildDEB () {
+    DEB_WORK_DIR="$(mktemp -d)"
+    rm -rfv *.deb
+
+    # Check that RPMs for building exists
+    packageVersion="$(cat deb/changelog | head -1 | sed -r 
's|.*\((.*)\).*|\1|')"
+    if [ ! -f "apache-ignite-${packageVersion}.noarch.rpm" ]; then
+        echo "[ERROR] RPM for converting to DEB not found"
+        exit 1
+    fi
+
+    # Unpack RPMs and prepare DEBs build layout
+    cd ${DEB_WORK_DIR}
+    cp -rfv ${PACKAGING_DIR}/apache-ignite-${packageVersion}.noarch.rpm 
${DEB_WORK_DIR}
+    alien --scripts --verbose --keep-version --single 
apache-ignite-${packageVersion}.noarch.rpm
+
+    # Copy custom DEBs control files and make some modifications on the fly
+    buildDirVersion="$(echo ${packageVersion} | cut -f1 -d-)"
+    cp -rfv ${PACKAGING_DIR}/deb/{changelog,control,copyright,rules} 
${DEB_WORK_DIR}/apache-ignite-${buildDirVersion}/debian
+    sed -i -r -e 's|/usr/bin/mkdir|/bin/mkdir|' -e 
's|/usr/bin/chown|/bin/chown|' 
${DEB_WORK_DIR}/apache-ignite-${buildDirVersion}/etc/systemd/system/[email protected]
+
+    # Assemble DEB packages
+    cd ${DEB_WORK_DIR}/apache-ignite-${buildDirVersion}
+    debian/rules binary
+
+    # Gather DEBs
+    find ${DEB_WORK_DIR} -name "*.deb" -exec mv -fv {} ${PACKAGING_DIR} \;
+}
+
+
+# Trap function
+processTrap () {
+    # Removing temporary files
+    echo "Removing temporary work directories: ${DEB_WORK_DIR} ${RPM_WORK_DIR}"
+    rm -rf ${DEB_WORK_DIR} ${RPM_WORK_DIR}
+
+    # Finish
+    echo
+    TIME="$(($(date +%s) - START_TIME))"
+    echo "=== Run time: $(printf '%dh:%02dm:%02ds\n' $((TIME/3600)) 
$((TIME%3600/60)) $((TIME%60))) ==="
+    echo
+}
+
+
+
+###########
+#  START  #
+###########
+START_TIME=$(date +%s)
+clear
+
+
+# Check for sudo
+if [ $EUID -ne 0 ]; then
+    echo "[ERROR] Packages building requires root | sudo privileges"
+    exit 1
+fi
+
+
+# Parse input options
+while [ $# -gt 0 ]; do
+    case "$1" in
+        --rpm)
+            shift
+            BUILD_RPM_FLAG=true
+            ;;
+        --deb)
+            BUILD_DEB_FLAG=true
+            shift
+            ;;
+        --batch)
+            shift
+            APT_YUM_Y="-y"
+            ;;
+        --help)
+            usage
+            exit 0
+        ;;
+        *)
+            echo "[ERROR] Unknown argument '${1}'"
+            usage
+            exit 1
+        ;;
+    esac
+done
+if [ ${BUILD_RPM_FLAG} == false -a ${BUILD_DEB_FLAG} == false ]; then
+    echo "[ERROR] At least one type of package should be specified: RPM or DEB"
+    usage
+    exit 1
+fi
+
+
+PACKAGING_DIR="$(pwd)"
+
+
+# Trap
+trap 'processTrap' EXIT
+
+
+# Build packages
+prepEnv
+
+if ${BUILD_RPM_FLAG}; then
+    getBin
+    buildRPM
+fi
+
+if ${BUILD_DEB_FLAG}; then buildDEB; fi
+

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/rpm/SOURCES/name.service
----------------------------------------------------------------------
diff --git a/packaging/rpm/SOURCES/name.service 
b/packaging/rpm/SOURCES/name.service
deleted file mode 100644
index d03a7fc..0000000
--- a/packaging/rpm/SOURCES/name.service
+++ /dev/null
@@ -1,17 +0,0 @@
-[Unit]
-Description=Apache Ignite In-Memory Computing Platform Service
-After=syslog.target network.target
-
-[Service]
-Type=forking
-User=#user#
-WorkingDirectory=/usr/share/#name#/work
-PermissionsStartOnly=true
-ExecStartPre=-/usr/bin/mkdir /var/run/#name#
-ExecStartPre=-/usr/bin/chown #user#:#user# /var/run/#name#
-ExecStartPre=-/usr/bin/env bash /usr/share/#name#/bin/service.sh set-firewall
-ExecStart=/usr/share/#name#/bin/service.sh start %i
-PIDFile=/var/run/#name#/#name#.%i.pid
-
-[Install]
-WantedBy=multi-user.target

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/rpm/SOURCES/service.sh
----------------------------------------------------------------------
diff --git a/packaging/rpm/SOURCES/service.sh b/packaging/rpm/SOURCES/service.sh
deleted file mode 100644
index 4163676..0000000
--- a/packaging/rpm/SOURCES/service.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env bash
-
-firewallCmd="firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0"
-
-# Define function to check whether firewalld is present and started and apply 
firewall rules for grid nodes
-setFirewall ()
-{
-       if [[ "$(type firewall-cmd &>/dev/null; echo $?)" -eq 0 && "$(systemctl 
is-active firewalld)" == "active" ]]
-       then
-           for port in s d
-           do
-               ${firewallCmd} -p tcp -m multiport --${port}ports 
11211:11220,47500:47509,47100:47109 -j ACCEPT &>/dev/null
-               ${firewallCmd} -p udp -m multiport --${port}ports 47400:47409 
-j ACCEPT &>/dev/null
-           done
-           ${firewallCmd} -m pkttype --pkt-type multicast -j ACCEPT &>/dev/null
-
-           systemctl restart firewalld
-       fi
-}
-
-case $1 in
-       start)
-               /usr/share/#name#/bin/ignite.sh /etc/#name#/$2 & echo $! >> 
/var/run/#name#/#name#.$2.pid
-               ;;
-       set-firewall)
-               setFirewall
-               ;;
-esac

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/rpm/SPECS/apache-ignite.spec
----------------------------------------------------------------------
diff --git a/packaging/rpm/SPECS/apache-ignite.spec 
b/packaging/rpm/SPECS/apache-ignite.spec
deleted file mode 100644
index b900073..0000000
--- a/packaging/rpm/SPECS/apache-ignite.spec
+++ /dev/null
@@ -1,214 +0,0 @@
-%define __jar_repack %{nil}
-%define user ignite
-
-
-#-------------------------------------------------------------------------------
-#
-# Packages' descriptions
-#
-
-Name:             apache-ignite
-Version:          2.4.0
-Release:          1%{?dist}
-Summary:          Apache Ignite In-Memory Computing Platform
-Group:            Development/System
-License:          ASL 2.0
-URL:              https://ignite.apache.org/
-Source:           %{name}.zip
-Requires:         java-1.8.0, chkconfig
-Requires(pre):    shadow-utils
-Provides:         %{name}
-AutoReq:          no
-AutoProv:         no
-BuildArch:        noarch
-%description
-Apache Ignite™ is the in-memory computing platform composed of a strongly
-consistent distributed database with powerful SQL, key-value and processing 
APIs
-
-
-#-------------------------------------------------------------------------------
-#
-# Prepare step: unpack sources
-#
-
-%prep
-%setup -q -c -n %{name}
-
-
-#-------------------------------------------------------------------------------
-#
-# Preinstall scripts
-# $1 can be:
-#     1 - Initial install 
-#     2 - Upgrade
-#
-
-
-#-------------------------------------------------------------------------------
-#
-# Postinstall scripts
-# $1 can be:
-#     1 - Initial installation
-#     2 - Upgrade
-#
-
-%post
-case $1 in
-    1)
-        # Add user for service operation
-        useradd -r -d %{_datadir}/%{name} -s /usr/sbin/nologin %{user}
-        # Change ownership for work and log directories
-        chown -vR %{user}:%{user} %{_sharedstatedir}/%{name} 
%{_var}/log/%{name}
-        # Install alternatives
-        # Commented out until ignitevisorcmd / ignitesqlline is ready to work 
from any user
-        #update-alternatives --install %{_bindir}/ignitevisorcmd 
ignitevisorcmd %{_datadir}/%{name}/bin/ignitevisorcmd.sh 0
-        #update-alternatives --auto ignitevisorcmd
-        #update-alternatives --display ignitevisorcmd
-        #update-alternatives --install %{_bindir}/ignitesqlline ignitesqlline 
%{_datadir}/%{name}/bin/sqlline.sh 0
-        #update-alternatives --auto ignitesqlline
-        #update-alternatives --display ignitesqlline
-        ;;
-    2)
-        :
-        ;;
-esac
-
-
-#-------------------------------------------------------------------------------
-#
-# Pre-uninstall scripts
-# $1 can be:
-#     0 - Uninstallation
-#     1 - Upgrade
-#
-
-%preun
-case $1 in
-    0)
-        # Remove alternatives
-        # Commented out until ignitevisorcmd / ignitesqlline is ready to work 
from any user
-        #update-alternatives --remove ignitevisorcmd 
/usr/share/%{name}/bin/ignitevisorcmd.sh
-        #update-alternatives --display ignitevisorcmd || true
-        #update-alternatives --remove ignitesqlline 
/usr/share/%{name}/bin/sqlline.sh
-        #update-alternatives --display ignitesqlline || true
-        ;;
-    1)
-        :
-        ;;
-esac
-
-
-#-------------------------------------------------------------------------------
-#
-# Post-uninstall scripts
-# $1 can be:
-#     0 - Uninstallation
-#     1 - Upgrade
-#
-
-%postun
-case $1 in
-    0)
-        # Remove user
-        userdel %{user}
-        # Remove service PID directory
-        rm -rfv /var/run/%{name}
-        # Remove firewalld rules if firewalld is installed and running
-        if [[ "$(type firewall-cmd &>/dev/null; echo $?)" -eq 0 && 
"$(systemctl is-active firewalld)" == "active" ]]
-        then
-            for port in s d
-            do
-                firewall-cmd --permanent --direct --remove-rule ipv4 filter 
INPUT 0 -p tcp -m multiport --${port}ports 11211:11220,47500:47509,47100:47109 
-j ACCEPT &>/dev/null
-                firewall-cmd --permanent --direct --remove-rule ipv4 filter 
INPUT 0 -p udp -m multiport --${port}ports 47400:47409 -j ACCEPT &>/dev/null
-            done
-            firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 
0 -m pkttype --pkt-type multicast -j ACCEPT &>/dev/null
-            systemctl restart firewalld
-        fi
-        ;;
-    1)
-        :
-        ;;
-esac
-
-
-#-------------------------------------------------------------------------------
-#
-# Prepare packages' layout
-#
-
-%install
-cd $(ls)
-
-# Create base directory structure
-mkdir -p %{buildroot}%{_datadir}/%{name}
-mkdir -p %{buildroot}%{_libdir}/%{name}
-mkdir -p %{buildroot}%{_datadir}/doc/%{name}-%{version}/bin
-mkdir -p %{buildroot}%{_var}/log/%{name}
-mkdir -p %{buildroot}%{_sharedstatedir}/%{name}
-mkdir -p %{buildroot}%{_sysconfdir}/systemd/system
-mkdir -p %{buildroot}%{_bindir}
-
-# Copy nessessary files and remove *.bat files
-cp -rf benchmarks bin platforms %{buildroot}%{_datadir}/%{name}
-cp -rf docs/* examples %{buildroot}%{_datadir}/doc/%{name}-%{version}
-mv -f %{buildroot}%{_datadir}/%{name}/bin/ignitevisorcmd.sh 
%{buildroot}%{_datadir}/doc/%{name}-%{version}/bin/
-find %{buildroot}%{_datadir}/%{name}/ -name *.bat -exec rm -rf {} \;
-
-# Copy libs to /usr/lib and map them to IGNITE_HOME
-cp -rf libs/* %{buildroot}%{_libdir}/%{name}
-ln -sf %{_libdir}/%{name} %{buildroot}%{_datadir}/%{name}/libs
-
-# Setup configuration
-cp -rf config %{buildroot}%{_sysconfdir}/%{name}
-ln -sf %{_sysconfdir}/%{name} %{buildroot}%{_datadir}/%{name}/config
-
-# Setup systemctl service
-cp -rf %{_sourcedir}/name.service 
%{buildroot}%{_sysconfdir}/systemd/system/%{name}@.service
-cp -rf %{_sourcedir}/service.sh %{buildroot}%{_datadir}/%{name}/bin/
-chmod +x %{buildroot}%{_datadir}/%{name}/bin/service.sh
-for file in %{buildroot}%{_sysconfdir}/systemd/system/%{name}@.service 
%{buildroot}%{_datadir}/%{name}/bin/service.sh
-do
-    sed -i -r -e "s|#name#|%{name}|g" \
-              -e "s|#user#|%{user}|g" \
-        ${file}
-done
-
-# Map work and log directories
-ln -sf %{_sharedstatedir}/%{name} %{buildroot}%{_datadir}/%{name}/work
-ln -sf %{_var}/log/%{name} %{buildroot}%{_sharedstatedir}/%{name}/log
-
-
-#-------------------------------------------------------------------------------
-#
-# Package file list check
-#
-%files
-%dir %{_datadir}/%{name}
-%dir %{_sysconfdir}/%{name}
-%dir %{_sharedstatedir}/%{name}
-%dir %{_var}/log/%{name}
-
-%{_datadir}/%{name}/benchmarks
-%{_datadir}/%{name}/bin
-%{_datadir}/%{name}/config
-%{_datadir}/%{name}/libs
-%{_datadir}/%{name}/platforms
-%{_datadir}/%{name}/work
-%{_libdir}/%{name}
-%{_sysconfdir}/systemd/system/%{name}@.service
-%{_sharedstatedir}/%{name}/log
-
-%config(noreplace) %{_sysconfdir}/%{name}/*
-
-%doc %{name}-*/README.txt
-%doc %{name}-*/NOTICE
-%doc %{name}-*/RELEASE_NOTES.txt
-%license %{name}-*/LICENSE
-
-#-------------------------------------------------------------------------------
-#
-# Changelog
-#
-%changelog
-* Wed Jan 17 2018 GridGain Systems <[email protected]> - 2.4.0-1
-- Initial package release

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/rpm/apache-ignite.spec
----------------------------------------------------------------------
diff --git a/packaging/rpm/apache-ignite.spec b/packaging/rpm/apache-ignite.spec
new file mode 100644
index 0000000..78c112a
--- /dev/null
+++ b/packaging/rpm/apache-ignite.spec
@@ -0,0 +1,245 @@
+%define __jar_repack %{nil}
+%define user ignite
+%define _libdir /usr/lib
+%define _log %{_var}/log
+%define _sharedstatedir /var/lib
+
+
+#-------------------------------------------------------------------------------
+#
+# Packages' descriptions
+#
+
+Name:             apache-ignite
+Version:          2.5.0
+Release:          1
+Summary:          Apache Ignite In-Memory Computing, Database and Caching 
Platform
+Group:            Development/System
+License:          ASL 2.0
+URL:              https://ignite.apache.org/
+Source:           %{name}-fabric-%{version}-bin.zip
+Requires:         java-1.8.0, chkconfig
+Requires(pre):    shadow-utils
+Provides:         %{name}
+AutoReq:          no
+AutoProv:         no
+BuildArch:        noarch
+%description
+Ignite™ is a memory-centric distributed database, caching, and processing
+platform for transactional, analytical, and streaming workloads, delivering
+in-memory speeds at petabyte scale
+
+
+%prep
+#-------------------------------------------------------------------------------
+#
+# Prepare step: unpack sources
+#
+
+%setup -q -n %{name}-fabric-%{version}-bin
+
+
+#%pre
+#-------------------------------------------------------------------------------
+#
+# Preinstall scripts
+# $1 can be:
+#     1 - Initial install 
+#     2 - Upgrade
+#
+
+
+%post
+#-------------------------------------------------------------------------------
+#
+# Postinstall scripts
+# $1 can be:
+#     1 - Initial installation
+#     2 - Upgrade
+#
+
+echoUpgradeMessage () {
+    echo 
"======================================================================================================="
+    echo "  WARNING: Updating Apache Ignite's cluster version requires 
updating every node before starting grid  "
+    echo 
"======================================================================================================="
+}
+
+case $1 in
+    1|configure)
+        # DEB postinst upgrade
+        if [ ! -z "${2}" ]; then
+            echoUpgradeMessage
+        fi
+
+        # Add user for service operation
+        useradd -r -d %{_datadir}/%{name} -s /usr/sbin/nologin %{user}
+
+        # Change ownership for work and log directories
+        chown -vR %{user}:%{user} %{_sharedstatedir}/%{name} %{_log}/%{name}
+
+        # Install alternatives
+        # Commented out until ignitevisorcmd / ignitesqlline is ready to work 
from any user
+        #update-alternatives --install %{_bindir}/ignitevisorcmd 
ignitevisorcmd %{_datadir}/%{name}/bin/ignitevisorcmd.sh 0
+        #update-alternatives --auto ignitevisorcmd
+        #update-alternatives --display ignitevisorcmd
+        #update-alternatives --install %{_bindir}/ignitesqlline ignitesqlline 
%{_datadir}/%{name}/bin/sqlline.sh 0
+        #update-alternatives --auto ignitesqlline
+        #update-alternatives --display ignitesqlline
+        ;;
+    2)
+        # RPM postinst upgrade
+        echoUpgradeMessage
+        ;;
+esac
+
+
+%preun
+#-------------------------------------------------------------------------------
+#
+# Pre-uninstall scripts
+# $1 can be:
+#     0 - Uninstallation
+#     1 - Upgrade
+#
+
+case $1 in
+    0|remove)
+        # Stop all nodes
+        systemctl stop 'apache-ignite@*'
+
+        # Remove alternatives
+        # Commented out until ignitevisorcmd / ignitesqlline is ready to work 
from any user
+        #update-alternatives --remove ignitevisorcmd 
/usr/share/%{name}/bin/ignitevisorcmd.sh
+        #update-alternatives --display ignitevisorcmd || true
+        #update-alternatives --remove ignitesqlline 
/usr/share/%{name}/bin/sqlline.sh
+        #update-alternatives --display ignitesqlline || true
+        ;;
+    1|upgrade)
+        echo 
"=================================================================================="
+        echo "  WARNING: All running Apache Ignite's nodes will be stopped 
upon package update  "
+        echo 
"=================================================================================="
+        systemctl stop 'apache-ignite@*'
+        ;;
+esac
+
+
+%postun
+#-------------------------------------------------------------------------------
+#
+# Post-uninstall scripts
+# $1 can be:
+#     0 - Uninstallation
+#     1 - Upgrade
+#
+
+case $1 in
+    0|remove)
+        # Remove user
+        userdel %{user}
+
+        # Remove service PID directory
+        rm -rfv /var/run/%{name}
+
+        # Remove firewalld rules if firewalld is installed and running
+        if [[ "$(type firewall-cmd &>/dev/null; echo $?)" -eq 0 && 
"$(systemctl is-active firewalld)" == "active" ]]
+        then
+            for port in s d
+            do
+                firewall-cmd --permanent --direct --remove-rule ipv4 filter 
INPUT 0 -p tcp -m multiport --${port}ports 11211:11220,47500:47509,47100:47109 
-j ACCEPT &>/dev/null
+                firewall-cmd --permanent --direct --remove-rule ipv4 filter 
INPUT 0 -p udp -m multiport --${port}ports 47400:47409 -j ACCEPT &>/dev/null
+            done
+            firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 
0 -m pkttype --pkt-type multicast -j ACCEPT &>/dev/null
+            systemctl restart firewalld
+        fi
+        ;;
+    1|upgrade)
+        :
+        ;;
+esac
+
+
+%install
+#-------------------------------------------------------------------------------
+#
+# Prepare packages' layout
+#
+
+# Create base directory structure
+mkdir -p %{buildroot}%{_datadir}/%{name}
+mkdir -p %{buildroot}%{_libdir}/%{name}
+mkdir -p %{buildroot}%{_datadir}/doc/%{name}-%{version}/bin
+mkdir -p %{buildroot}%{_log}/%{name}
+mkdir -p %{buildroot}%{_sharedstatedir}/%{name}
+mkdir -p %{buildroot}%{_sysconfdir}/systemd/system
+mkdir -p %{buildroot}%{_bindir}
+
+# Copy nessessary files and remove *.bat files
+cp -rf benchmarks bin platforms %{buildroot}%{_datadir}/%{name}
+cp -rf docs/* examples %{buildroot}%{_datadir}/doc/%{name}-%{version}
+mv -f %{buildroot}%{_datadir}/%{name}/bin/ignitevisorcmd.sh 
%{buildroot}%{_datadir}/doc/%{name}-%{version}/bin/
+find %{buildroot}%{_datadir}/%{name}/ -name *.bat -exec rm -rf {} \;
+
+# Copy libs to /usr/lib and map them to IGNITE_HOME
+cp -rf libs/* %{buildroot}%{_libdir}/%{name}
+ln -sf %{_libdir}/%{name} %{buildroot}%{_datadir}/%{name}/libs
+
+# Setup configuration
+cp -rf config %{buildroot}%{_sysconfdir}/%{name}
+ln -sf %{_sysconfdir}/%{name} %{buildroot}%{_datadir}/%{name}/config
+
+# Setup systemctl service
+cp -rf %{_sourcedir}/name.service 
%{buildroot}%{_sysconfdir}/systemd/system/%{name}@.service
+cp -rf %{_sourcedir}/service.sh %{buildroot}%{_datadir}/%{name}/bin/
+chmod +x %{buildroot}%{_datadir}/%{name}/bin/service.sh
+for file in %{buildroot}%{_sysconfdir}/systemd/system/%{name}@.service 
%{buildroot}%{_datadir}/%{name}/bin/service.sh
+do
+    sed -i -r -e "s|#name#|%{name}|g" \
+              -e "s|#user#|%{user}|g" \
+        ${file}
+done
+
+# Map work and log directories
+ln -sf %{_sharedstatedir}/%{name} %{buildroot}%{_datadir}/%{name}/work
+ln -sf %{_log}/%{name} %{buildroot}%{_sharedstatedir}/%{name}/log
+
+
+%files
+#-------------------------------------------------------------------------------
+#
+# Package file list check
+#
+
+%dir %{_datadir}/%{name}
+%dir %{_sysconfdir}/%{name}
+%dir %{_sharedstatedir}/%{name}
+%dir %{_log}/%{name}
+
+%{_datadir}/%{name}/benchmarks
+%{_datadir}/%{name}/bin
+%{_datadir}/%{name}/config
+%{_datadir}/%{name}/libs
+%{_datadir}/%{name}/platforms
+%{_datadir}/%{name}/work
+%{_libdir}/%{name}
+%{_sysconfdir}/systemd/system/%{name}@.service
+%{_sharedstatedir}/%{name}/log
+
+%config(noreplace) %{_sysconfdir}/%{name}/*
+
+%doc README.txt
+%doc NOTICE
+%doc RELEASE_NOTES.txt
+%license LICENSE
+
+
+%changelog
+#-------------------------------------------------------------------------------
+#
+# Changelog
+#
+
+* Tue Apr 17 2018 Peter Ivanov <[email protected]> - 2.5.0-1
+- Updated Apache Ignite to version 2.5.0
+
+* Wed Jan 17 2018 Peter Ivanov <[email protected]> - 2.4.0-1
+- Initial package release

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/rpm/name.service
----------------------------------------------------------------------
diff --git a/packaging/rpm/name.service b/packaging/rpm/name.service
new file mode 100644
index 0000000..0929f2c
--- /dev/null
+++ b/packaging/rpm/name.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=Apache Ignite In-Memory Computing Platform Service
+After=syslog.target network.target
+
+[Service]
+Type=forking
+User=#user#
+WorkingDirectory=/usr/share/#name#/work
+PermissionsStartOnly=true
+ExecStartPre=-/usr/bin/mkdir /var/run/#name#
+ExecStartPre=-/usr/bin/chown #user#:#user# /var/run/#name#
+ExecStartPre=-/usr/bin/env bash /usr/share/#name#/bin/service.sh set-firewall
+ExecStart=/usr/share/#name#/bin/service.sh start %i
+PIDFile=/var/run/#name#/%i.pid
+
+[Install]
+WantedBy=multi-user.target

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/packaging/rpm/service.sh
----------------------------------------------------------------------
diff --git a/packaging/rpm/service.sh b/packaging/rpm/service.sh
new file mode 100644
index 0000000..454478d
--- /dev/null
+++ b/packaging/rpm/service.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+firewallCmd="firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0"
+
+# Define function to check whether firewalld is present and started and apply 
firewall rules for grid nodes
+setFirewall ()
+{
+       if [[ "$(type firewall-cmd &>/dev/null; echo $?)" -eq 0 && "$(systemctl 
is-active firewalld)" == "active" ]]
+       then
+           for port in s d
+           do
+               ${firewallCmd} -p tcp -m multiport --${port}ports 
11211:11220,47500:47509,47100:47109 -j ACCEPT &>/dev/null
+               ${firewallCmd} -p udp -m multiport --${port}ports 47400:47409 
-j ACCEPT &>/dev/null
+           done
+           ${firewallCmd} -m pkttype --pkt-type multicast -j ACCEPT &>/dev/null
+
+           systemctl restart firewalld
+       fi
+}
+
+case $1 in
+       start)
+               /usr/share/#name#/bin/ignite.sh /etc/#name#/$2 & echo $! >> 
/var/run/#name#/$2.pid
+               ;;
+       set-firewall)
+               setFirewall
+               ;;
+esac

http://git-wip-us.apache.org/repos/asf/ignite/blob/d4606cb1/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 3decc16..490c531 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -935,10 +935,8 @@
                                         
<exclude>**/frontend/ignite_modules/**</exclude>
                                         
<exclude>**/frontend/ignite_modules_temp/**</exclude>
                                         
<exclude>**/frontend/node_modules/**</exclude>
-                                        <!--RPM packaging, IGNITE-7107-->
-                                        
<exclude>**/packaging/rpm/SOURCES/name.service</exclude>
-                                        
<exclude>**/packaging/rpm/SOURCES/service.sh</exclude>
-                                        
<exclude>**/packaging/rpm/SPECS/apache-ignite.spec</exclude>
+                                        <!--Packaging -->
+                                        <exclude>packaging/**</exclude>
                                     </excludes>
                                 </configuration>
                             </execution>

Reply via email to