Fpm: Elasticsearch 6.3.x+ RPMs cannot be rebuilt with FPM

Created on 13 Oct 2018  ·  7Comments  ·  Source: jordansissel/fpm

Does anyone have any idea why elastic's RPMs for the newer versions of Elasticsearch cannot be used with FPM as a source? I have a separate RPM with extra scripts that I would like to merge with the official Elasticsearch RPM and I am able to do so on the older RPMs (i.e., <6.2.x). The extracted spec files do not show any breaking changes from 6.2.x to 6.3.x+.

Previously, I was unpacking the files from the RPM, but I lose the pre/post-install scripts. Is there an easier way to retain the pre/post-install scripts with RPM?


6.2

# Hello packaging friend!
#
# If you find yourself using this 'fpm --edit' feature frequently, it is
# a sign that fpm is missing a feature! I welcome your feature requests!
# Please visit the following URL and ask for a feature that helps you never
# need to edit this file again! :)
#   https://github.com/jordansissel/fpm/issues
# ------------------------------------------------------------------------

# Disable the stupid stuff rpm distros include in the build process by default:
#   Disable any prep shell actions. replace them with simply 'true'
%define __spec_prep_post true
%define __spec_prep_pre true
#   Disable any build shell actions. replace them with simply 'true'
%define __spec_build_post true
%define __spec_build_pre true
#   Disable any install shell actions. replace them with simply 'true'
%define __spec_install_post true
%define __spec_install_pre true
#   Disable any clean shell actions. replace them with simply 'true'
%define __spec_clean_post true
%define __spec_clean_pre true
# Disable checking for unpackaged files ?
#%undefine __check_files

# Use md5 file digest method.
# The first macro is the one used in RPM v4.9.1.1
%define _binary_filedigest_algorithm 1
# This is the macro I find on OSX when Homebrew provides rpmbuild (rpm v5.4.14)
%define _build_binary_file_digest_algo 1

# Use gzip payload compression
%define _binary_payload w9.gzdio


Name: elasticsearch
Version: 6.2.4
Epoch: 0
Release: 1
Summary: Elasticsearch subproject :distribution:rpm
AutoReqProv: no
# Seems specifying BuildRoot is required on older rpmbuild (like on CentOS 5)
# fpm passes '--define buildroot ...' on the commandline, so just reuse that.
BuildRoot: %buildroot

Prefix: /

Group: Application/Internet
License: 2009
Vendor: Elasticsearch
URL: https://www.elastic.co/
Packager: <[email protected]>

Requires: rpmlib(VersionedDependencies) <= 3.0.3-1
Requires: rpmlib(CompressedFileNames) <= 3.0.4-1
Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: /bin/bash
Requires: coreutils
Provides: elasticsearch = 0:6.2.4-1
%description
Elasticsearch subproject :distribution:rpm

%prep
# noop

%build
# noop

%install
# noop

%clean
# noop


%verifyscript

%posttrans

%pretrans

%pre
 RPM_ARCH=noarch
 RPM_OS=linux
 RPM_PACKAGE_NAME=elasticsearch
 RPM_PACKAGE_VERSION=6.2.4
 RPM_PACKAGE_RELEASE=1

#
# This script is executed in the pre-installation phase
#
#   On Debian,
#       $1=install : indicates an new install
#       $1=upgrade : indicates an upgrade
#
#   On RedHat,
#       $1=1       : indicates an new install
#       $1=2       : indicates an upgrade



# Source the default env file
ES_ENV_FILE="/etc/sysconfig/elasticsearch"
if [ -f "$ES_ENV_FILE" ]; then
    . "$ES_ENV_FILE"
fi

case "$1" in

    # Debian ####################################################
    install|upgrade)

        # Create elasticsearch group if not existing
        if ! getent group elasticsearch > /dev/null 2>&1 ; then
            echo -n "Creating elasticsearch group..."
            addgroup --quiet --system elasticsearch
            echo " OK"
        fi

        # Create elasticsearch user if not existing
        if ! id elasticsearch > /dev/null 2>&1 ; then
            echo -n "Creating elasticsearch user..."
            adduser --quiet \
                    --system \
                    --no-create-home \
                    --ingroup elasticsearch \
                    --disabled-password \
                    --shell /bin/false \
                    elasticsearch
            echo " OK"
        fi
    ;;
    abort-deconfigure|abort-upgrade|abort-remove)
    ;;

    # RedHat ####################################################
    1|2)

        # Create elasticsearch group if not existing
        if ! getent group elasticsearch > /dev/null 2>&1 ; then
            echo -n "Creating elasticsearch group..."
            groupadd -r elasticsearch
            echo " OK"
        fi

        # Create elasticsearch user if not existing
        if ! id elasticsearch > /dev/null 2>&1 ; then
            echo -n "Creating elasticsearch user..."
            useradd -r \
                    -M \
                    --gid elasticsearch \
                    --shell /sbin/nologin \
                    --comment "elasticsearch user" \
                    elasticsearch
            echo " OK"
        fi
    ;;

    *)
        echo "pre install script called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# Built for distribution-6.2.4 (rpm)

%post
 RPM_ARCH=noarch
 RPM_OS=linux
 RPM_PACKAGE_NAME=elasticsearch
 RPM_PACKAGE_VERSION=6.2.4
 RPM_PACKAGE_RELEASE=1

#
# This script is executed in the post-installation phase
#
#   On Debian,
#       $1=configure : is set to 'configure' and if $2 is set, it is an upgrade
#
#   On RedHat,
#       $1=0         : indicates a removal
#       $1=1         : indicates an upgrade



# Source the default env file
ES_ENV_FILE="/etc/sysconfig/elasticsearch"
if [ -f "$ES_ENV_FILE" ]; then
    . "$ES_ENV_FILE"
fi

IS_UPGRADE=false

case "$1" in

    # Debian ####################################################
    configure)

        # If $1=configure and $2 is set, this is an upgrade
        if [ -n $2 ]; then
            IS_UPGRADE=true
        fi
    ;;
    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    # RedHat ####################################################
    1)
        # If $1=1 this is an install
        IS_UPGRADE=false
    ;;
    2)
        # If $1=1 this is an upgrade
        IS_UPGRADE=true
    ;;

    *)
        echo "post install script called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# to pick up /usr/lib/sysctl.d/elasticsearch.conf
if command -v systemctl > /dev/null; then
    systemctl restart systemd-sysctl.service || true
fi

if [ "x$IS_UPGRADE" != "xtrue" ]; then
    if command -v systemctl >/dev/null; then
        echo "### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd"
        echo " sudo systemctl daemon-reload"
        echo " sudo systemctl enable elasticsearch.service"
        echo "### You can start elasticsearch service by executing"
        echo " sudo systemctl start elasticsearch.service"

    elif command -v chkconfig >/dev/null; then
        echo "### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using chkconfig"
        echo " sudo chkconfig --add elasticsearch"
        echo "### You can start elasticsearch service by executing"
        echo " sudo service elasticsearch start"

    elif command -v update-rc.d >/dev/null; then
        echo "### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using chkconfig"
        echo " sudo update-rc.d elasticsearch defaults 95 10"
        echo "### You can start elasticsearch service by executing"
        echo " sudo /etc/init.d/elasticsearch start"
    fi
elif [ "$RESTART_ON_UPGRADE" = "true" ]; then

    echo -n "Restarting elasticsearch service..."
    if command -v systemctl >/dev/null; then
        systemctl daemon-reload
        systemctl restart elasticsearch.service || true

    elif [ -x /etc/init.d/elasticsearch ]; then
        if command -v invoke-rc.d >/dev/null; then
            invoke-rc.d elasticsearch stop || true
            invoke-rc.d elasticsearch start || true
        else
            /etc/init.d/elasticsearch restart || true
        fi

    # older suse linux distributions do not ship with systemd
    # but do not have an /etc/init.d/ directory
    # this tries to start the elasticsearch service on these
    # as well without failing this script
    elif [ -x /etc/rc.d/init.d/elasticsearch ] ; then
        /etc/rc.d/init.d/elasticsearch restart || true
    fi
    echo " OK"
fi

chown -R elasticsearch:elasticsearch /var/lib/elasticsearch
chown -R elasticsearch:elasticsearch /var/log/elasticsearch
chown -R root:elasticsearch /etc/elasticsearch
chmod g+s /etc/elasticsearch
chmod 0750 /etc/elasticsearch

if [ -f /etc/default/elasticsearch ]; then
   chown root:elasticsearch /etc/default/elasticsearch
fi

if [ -f /etc/sysconfig/elasticsearch ]; then
   chown root:elasticsearch /etc/sysconfig/elasticsearch
fi

# Built for distribution-6.2.4 (rpm)

%preun
 RPM_ARCH=noarch
 RPM_OS=linux
 RPM_PACKAGE_NAME=elasticsearch
 RPM_PACKAGE_VERSION=6.2.4
 RPM_PACKAGE_RELEASE=1

#
# This script is executed in the pre-remove phase
#
#   On Debian,
#       $1=remove    : indicates a removal
#       $1=upgrade   : indicates an upgrade
#
#   On RedHat,
#       $1=0         : indicates a removal
#       $1=1         : indicates an upgrade



STOP_REQUIRED=false
REMOVE_SERVICE=false

case "$1" in

    # Debian ####################################################
    remove)
        STOP_REQUIRED=true
        REMOVE_SERVICE=true
    ;;
    upgrade)
        if [ "$RESTART_ON_UPGRADE" = "true" ]; then
            STOP_REQUIRED=true
        fi
    ;;
    deconfigure|failed-upgrade)
    ;;

    # RedHat ####################################################
    0)
        STOP_REQUIRED=true
        REMOVE_SERVICE=true
    ;;
    1)
        # Dont do anything on upgrade, because the preun script in redhat gets executed after the postinst (madness!)
    ;;

    *)
        echo "pre remove script called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# Stops the service
if [ "$STOP_REQUIRED" = "true" ]; then
    echo -n "Stopping elasticsearch service..."
    if command -v systemctl >/dev/null; then
        systemctl --no-reload stop elasticsearch.service

    elif [ -x /etc/init.d/elasticsearch ]; then
        if command -v invoke-rc.d >/dev/null; then
            invoke-rc.d elasticsearch stop
        else
            /etc/init.d/elasticsearch stop
        fi

    # older suse linux distributions do not ship with systemd
    # but do not have an /etc/init.d/ directory
    # this tries to start the elasticsearch service on these
    # as well without failing this script
    elif [ -x /etc/rc.d/init.d/elasticsearch ] ; then
        /etc/rc.d/init.d/elasticsearch stop
    fi
    echo " OK"
fi

if [ "$REMOVE_SERVICE" = "true" ]; then
    if command -v systemctl >/dev/null; then
        systemctl disable elasticsearch.service > /dev/null 2>&1 || true
    fi

    if command -v chkconfig >/dev/null; then
        chkconfig --del elasticsearch 2> /dev/null || true
    fi

    if command -v update-rc.d >/dev/null; then
        update-rc.d elasticsearch remove >/dev/null || true
    fi
fi


# Built for distribution-6.2.4 (rpm)

%postun
 RPM_ARCH=noarch
 RPM_OS=linux
 RPM_PACKAGE_NAME=elasticsearch
 RPM_PACKAGE_VERSION=6.2.4
 RPM_PACKAGE_RELEASE=1

#
# This script is executed in the post-removal phase
#
#   On Debian,
#       $1=remove    : indicates a removal
#       $1=purge     : indicates an upgrade
#
#   On RedHat,
#       $1=0         : indicates a removal
#       $1=1         : indicates an upgrade



SOURCE_ENV_FILE=true
REMOVE_DIRS=false
REMOVE_USER_AND_GROUP=false

case "$1" in

    # Debian ####################################################
    remove)
        REMOVE_DIRS=true
    ;;

    purge)
        REMOVE_USER_AND_GROUP=true
        SOURCE_ENV_FILE=false
    ;;
    failed-upgrade|abort-install|abort-upgrade|disappear|upgrade|disappear)
    ;;

    # RedHat ####################################################
    0)
        REMOVE_DIRS=true
        REMOVE_USER_AND_GROUP=true
    ;;
    1)
        # If $1=1 this is an upgrade
        IS_UPGRADE=true
    ;;

    *)
        echo "post remove script called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# Sets the default values for elasticsearch variables used in this script
LOG_DIR="/var/log/elasticsearch"
PLUGINS_DIR="/usr/share/elasticsearch/plugins"
PID_DIR="/var/run/elasticsearch"
DATA_DIR="/var/lib/elasticsearch"
ES_PATH_CONF="/etc/elasticsearch"

# Source the default env file
if [ "$SOURCE_ENV_FILE" = "true" ]; then
    ES_ENV_FILE="/etc/sysconfig/elasticsearch"
    if [ -f "$ES_ENV_FILE" ]; then
        . "$ES_ENV_FILE"
    fi
fi

if [ "$REMOVE_DIRS" = "true" ]; then

    if [ -d "$LOG_DIR" ]; then
        echo -n "Deleting log directory..."
        rm -rf "$LOG_DIR"
        echo " OK"
    fi

    if [ -d "$PLUGINS_DIR" ]; then
        echo -n "Deleting plugins directory..."
        rm -rf "$PLUGINS_DIR"
        echo " OK"
    fi

    if [ -d "$PID_DIR" ]; then
        echo -n "Deleting PID directory..."
        rm -rf "$PID_DIR"
        echo " OK"
    fi

    # Delete the data directory if and only if empty
    if [ -d "$DATA_DIR" ]; then
        rmdir --ignore-fail-on-non-empty "$DATA_DIR"
    fi

    # delete the conf directory if and only if empty
    if [ -d "$ES_PATH_CONF" ]; then
        rmdir --ignore-fail-on-non-empty "$ES_PATH_CONF"
    fi

fi

if [ "$REMOVE_USER_AND_GROUP" = "true" ]; then
    if id elasticsearch > /dev/null 2>&1 ; then
        userdel elasticsearch
    fi

    if getent group elasticsearch > /dev/null 2>&1 ; then
        groupdel elasticsearch
    fi
fi

# Built for distribution-6.2.4 (rpm)



%files
%defattr(-,root,root,-)
%config(noreplace) /etc/elasticsearch/elasticsearch.yml
%config(noreplace) /etc/elasticsearch/jvm.options
%config(noreplace) /etc/elasticsearch/log4j2.properties
%config(noreplace) /etc/init.d/elasticsearch
%config(noreplace) /etc/sysconfig/elasticsearch
%config(noreplace) /usr/lib/sysctl.d/elasticsearch.conf
%config(noreplace) /usr/lib/systemd/system/elasticsearch.service

# Reject config files already listed or parent directories, then prefix files
# with "/", then make sure paths with spaces are quoted. I hate rpm so much.
/usr/lib/tmpfiles.d/elasticsearch.conf
/usr/share/elasticsearch/LICENSE.txt
/usr/share/elasticsearch/NOTICE.txt
/usr/share/elasticsearch/README.textile
/usr/share/elasticsearch/bin/elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-env
/usr/share/elasticsearch/bin/elasticsearch-keystore
/usr/share/elasticsearch/bin/elasticsearch-plugin
/usr/share/elasticsearch/bin/elasticsearch-translog
/usr/share/elasticsearch/lib/HdrHistogram-2.1.9.jar
/usr/share/elasticsearch/lib/elasticsearch-6.2.4.jar
/usr/share/elasticsearch/lib/elasticsearch-cli-6.2.4.jar
/usr/share/elasticsearch/lib/elasticsearch-core-6.2.4.jar
/usr/share/elasticsearch/lib/elasticsearch-launchers-6.2.4.jar
/usr/share/elasticsearch/lib/hppc-0.7.1.jar
/usr/share/elasticsearch/lib/jackson-core-2.8.10.jar
/usr/share/elasticsearch/lib/jackson-dataformat-cbor-2.8.10.jar
/usr/share/elasticsearch/lib/jackson-dataformat-smile-2.8.10.jar
/usr/share/elasticsearch/lib/jackson-dataformat-yaml-2.8.10.jar
/usr/share/elasticsearch/lib/jna-4.5.1.jar
/usr/share/elasticsearch/lib/joda-time-2.9.9.jar
/usr/share/elasticsearch/lib/jopt-simple-5.0.2.jar
/usr/share/elasticsearch/lib/jts-1.13.jar
/usr/share/elasticsearch/lib/log4j-1.2-api-2.9.1.jar
/usr/share/elasticsearch/lib/log4j-api-2.9.1.jar
/usr/share/elasticsearch/lib/log4j-core-2.9.1.jar
/usr/share/elasticsearch/lib/lucene-analyzers-common-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-backward-codecs-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-core-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-grouping-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-highlighter-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-join-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-memory-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-misc-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-queries-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-queryparser-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-sandbox-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-spatial-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-spatial-extras-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-spatial3d-7.2.1.jar
/usr/share/elasticsearch/lib/lucene-suggest-7.2.1.jar
/usr/share/elasticsearch/lib/plugin-classloader-6.2.4.jar
/usr/share/elasticsearch/lib/plugin-cli-6.2.4.jar
/usr/share/elasticsearch/lib/securesm-1.2.jar
/usr/share/elasticsearch/lib/snakeyaml-1.17.jar
/usr/share/elasticsearch/lib/spatial4j-0.6.jar
/usr/share/elasticsearch/lib/t-digest-3.0.jar
/usr/share/elasticsearch/modules/aggs-matrix-stats/aggs-matrix-stats-6.2.4.jar
/usr/share/elasticsearch/modules/aggs-matrix-stats/plugin-descriptor.properties
/usr/share/elasticsearch/modules/analysis-common/analysis-common-6.2.4.jar
/usr/share/elasticsearch/modules/analysis-common/plugin-descriptor.properties
/usr/share/elasticsearch/modules/ingest-common/ingest-common-6.2.4.jar
/usr/share/elasticsearch/modules/ingest-common/jcodings-1.0.12.jar
/usr/share/elasticsearch/modules/ingest-common/joni-2.1.6.jar
/usr/share/elasticsearch/modules/ingest-common/plugin-descriptor.properties
/usr/share/elasticsearch/modules/lang-expression/antlr4-runtime-4.5.1-1.jar
/usr/share/elasticsearch/modules/lang-expression/asm-5.0.4.jar
/usr/share/elasticsearch/modules/lang-expression/asm-commons-5.0.4.jar
/usr/share/elasticsearch/modules/lang-expression/asm-tree-5.0.4.jar
/usr/share/elasticsearch/modules/lang-expression/lang-expression-6.2.4.jar
/usr/share/elasticsearch/modules/lang-expression/lucene-expressions-7.2.1.jar
/usr/share/elasticsearch/modules/lang-expression/plugin-descriptor.properties
/usr/share/elasticsearch/modules/lang-expression/plugin-security.policy
/usr/share/elasticsearch/modules/lang-mustache/compiler-0.9.3.jar
/usr/share/elasticsearch/modules/lang-mustache/lang-mustache-6.2.4.jar
/usr/share/elasticsearch/modules/lang-mustache/plugin-descriptor.properties
/usr/share/elasticsearch/modules/lang-mustache/plugin-security.policy
/usr/share/elasticsearch/modules/lang-painless/antlr4-runtime-4.5.3.jar
/usr/share/elasticsearch/modules/lang-painless/asm-debug-all-5.1.jar
/usr/share/elasticsearch/modules/lang-painless/elasticsearch-scripting-painless-spi-6.2.4.jar
/usr/share/elasticsearch/modules/lang-painless/lang-painless-6.2.4.jar
/usr/share/elasticsearch/modules/lang-painless/plugin-descriptor.properties
/usr/share/elasticsearch/modules/lang-painless/plugin-security.policy
/usr/share/elasticsearch/modules/mapper-extras/mapper-extras-6.2.4.jar
/usr/share/elasticsearch/modules/mapper-extras/plugin-descriptor.properties
/usr/share/elasticsearch/modules/parent-join/parent-join-6.2.4.jar
/usr/share/elasticsearch/modules/parent-join/plugin-descriptor.properties
/usr/share/elasticsearch/modules/percolator/percolator-6.2.4.jar
/usr/share/elasticsearch/modules/percolator/plugin-descriptor.properties
/usr/share/elasticsearch/modules/rank-eval/plugin-descriptor.properties
/usr/share/elasticsearch/modules/rank-eval/rank-eval-6.2.4.jar
/usr/share/elasticsearch/modules/reindex/commons-codec-1.10.jar
/usr/share/elasticsearch/modules/reindex/commons-logging-1.1.3.jar
/usr/share/elasticsearch/modules/reindex/elasticsearch-rest-client-6.2.4.jar
/usr/share/elasticsearch/modules/reindex/httpasyncclient-4.1.2.jar
/usr/share/elasticsearch/modules/reindex/httpclient-4.5.2.jar
/usr/share/elasticsearch/modules/reindex/httpcore-4.4.5.jar
/usr/share/elasticsearch/modules/reindex/httpcore-nio-4.4.5.jar
/usr/share/elasticsearch/modules/reindex/plugin-descriptor.properties
/usr/share/elasticsearch/modules/reindex/plugin-security.policy
/usr/share/elasticsearch/modules/reindex/reindex-6.2.4.jar
/usr/share/elasticsearch/modules/repository-url/plugin-descriptor.properties
/usr/share/elasticsearch/modules/repository-url/plugin-security.policy
/usr/share/elasticsearch/modules/repository-url/repository-url-6.2.4.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-buffer-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-codec-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-codec-http-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-common-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-handler-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-resolver-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-transport-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/plugin-descriptor.properties
/usr/share/elasticsearch/modules/transport-netty4/plugin-security.policy
/usr/share/elasticsearch/modules/transport-netty4/transport-netty4-6.2.4.jar
/usr/share/elasticsearch/modules/tribe/plugin-descriptor.properties
/usr/share/elasticsearch/modules/tribe/tribe-6.2.4.jar
/usr/share/elasticsearch/plugins
/var/lib/elasticsearch
/var/log/elasticsearch
/var/run/elasticsearch

%changelog


6.3

# Hello packaging friend!
#
# If you find yourself using this 'fpm --edit' feature frequently, it is
# a sign that fpm is missing a feature! I welcome your feature requests!
# Please visit the following URL and ask for a feature that helps you never
# need to edit this file again! :)
#   https://github.com/jordansissel/fpm/issues
# ------------------------------------------------------------------------

# Disable the stupid stuff rpm distros include in the build process by default:
#   Disable any prep shell actions. replace them with simply 'true'
%define __spec_prep_post true
%define __spec_prep_pre true
#   Disable any build shell actions. replace them with simply 'true'
%define __spec_build_post true
%define __spec_build_pre true
#   Disable any install shell actions. replace them with simply 'true'
%define __spec_install_post true
%define __spec_install_pre true
#   Disable any clean shell actions. replace them with simply 'true'
%define __spec_clean_post true
%define __spec_clean_pre true
# Disable checking for unpackaged files ?
#%undefine __check_files

# Use md5 file digest method.
# The first macro is the one used in RPM v4.9.1.1
%define _binary_filedigest_algorithm 1
# This is the macro I find on OSX when Homebrew provides rpmbuild (rpm v5.4.14)
%define _build_binary_file_digest_algo 1

# Use gzip payload compression
%define _binary_payload w9.gzdio


Name: elasticsearch
Version: 6.3.0
Epoch: 0
Release: 1
Summary: Elasticsearch subproject :distribution:packages
AutoReqProv: no
# Seems specifying BuildRoot is required on older rpmbuild (like on CentOS 5)
# fpm passes '--define buildroot ...' on the commandline, so just reuse that.
BuildRoot: %buildroot

Prefix: /

Group: Application/Internet
License: Elastic License
Vendor: Elasticsearch
URL: https://www.elastic.co/
Packager: <[email protected]>

Requires: rpmlib(VersionedDependencies) <= 3.0.3-1
Requires: rpmlib(CompressedFileNames) <= 3.0.4-1
Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: /bin/bash
Requires: coreutils
Provides: elasticsearch = 0:6.3.0-1
Conflicts: elasticsearch-oss
%description
Elasticsearch subproject :distribution:packages

%prep
# noop

%build
# noop

%install
# noop

%clean
# noop


%verifyscript

%posttrans
 RPM_ARCH=noarch
 RPM_OS=linux
 RPM_PACKAGE_NAME=elasticsearch
 RPM_PACKAGE_VERSION=6.3.0
 RPM_PACKAGE_RELEASE=1

if [ ! -f /etc/elasticsearch/elasticsearch.keystore ]; then
    /usr/share/elasticsearch/bin/elasticsearch-keystore create
    chown root:elasticsearch /etc/elasticsearch/elasticsearch.keystore
    chmod 660 /etc/elasticsearch/elasticsearch.keystore
    md5sum /etc/elasticsearch/elasticsearch.keystore > /etc/elasticsearch/.elasticsearch.keystore.initial_md5sum
fi

# Built for packages-6.3.0 (rpm)

%pretrans

%pre
 RPM_ARCH=noarch
 RPM_OS=linux
 RPM_PACKAGE_NAME=elasticsearch
 RPM_PACKAGE_VERSION=6.3.0
 RPM_PACKAGE_RELEASE=1

#
# This script is executed in the pre-installation phase
#
#   On Debian,
#       $1=install : indicates an new install
#       $1=upgrade : indicates an upgrade
#
#   On RedHat,
#       $1=1       : indicates an new install
#       $1=2       : indicates an upgrade

case "$1" in

    # Debian ####################################################
    install|upgrade)

        # Create elasticsearch group if not existing
        if ! getent group elasticsearch > /dev/null 2>&1 ; then
            echo -n "Creating elasticsearch group..."
            addgroup --quiet --system elasticsearch
            echo " OK"
        fi

        # Create elasticsearch user if not existing
        if ! id elasticsearch > /dev/null 2>&1 ; then
            echo -n "Creating elasticsearch user..."
            adduser --quiet \
                    --system \
                    --no-create-home \
                    --ingroup elasticsearch \
                    --disabled-password \
                    --shell /bin/false \
                    elasticsearch
            echo " OK"
        fi
    ;;
    abort-deconfigure|abort-upgrade|abort-remove)
    ;;

    # RedHat ####################################################
    1|2)

        # Create elasticsearch group if not existing
        if ! getent group elasticsearch > /dev/null 2>&1 ; then
            echo -n "Creating elasticsearch group..."
            groupadd -r elasticsearch
            echo " OK"
        fi

        # Create elasticsearch user if not existing
        if ! id elasticsearch > /dev/null 2>&1 ; then
            echo -n "Creating elasticsearch user..."
            useradd -r \
                    -M \
                    --gid elasticsearch \
                    --shell /sbin/nologin \
                    --comment "elasticsearch user" \
                    elasticsearch
            echo " OK"
        fi
    ;;

    *)
        echo "pre install script called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# Built for packages-6.3.0 (rpm)

%post
 RPM_ARCH=noarch
 RPM_OS=linux
 RPM_PACKAGE_NAME=elasticsearch
 RPM_PACKAGE_VERSION=6.3.0
 RPM_PACKAGE_RELEASE=1

#
# This script is executed in the post-installation phase
#
#   On Debian,
#       $1=configure : is set to 'configure' and if $2 is set, it is an upgrade
#
#   On RedHat,
#       $1=0         : indicates a removal
#       $1=1         : indicates an upgrade

IS_UPGRADE=false

case "$1" in

    # Debian ####################################################
    configure)

        # If $1=configure and $2 is set, this is an upgrade
        if [ -n $2 ]; then
            IS_UPGRADE=true
        fi
        PACKAGE=deb
    ;;
    abort-upgrade|abort-remove|abort-deconfigure)
        PACKAGE=deb
    ;;

    # RedHat ####################################################
    1)
        # If $1=1 this is an install
        IS_UPGRADE=false
        PACKAGE=rpm
    ;;
    2)
        # If $1=1 this is an upgrade
        IS_UPGRADE=true
        PACKAGE=rpm
    ;;

    *)
        echo "post install script called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# to pick up /usr/lib/sysctl.d/elasticsearch.conf
if command -v systemctl > /dev/null; then
    systemctl restart systemd-sysctl.service || true
fi

if [ "x$IS_UPGRADE" != "xtrue" ]; then
    if command -v systemctl >/dev/null; then
        echo "### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd"
        echo " sudo systemctl daemon-reload"
        echo " sudo systemctl enable elasticsearch.service"
        echo "### You can start elasticsearch service by executing"
        echo " sudo systemctl start elasticsearch.service"

    elif command -v chkconfig >/dev/null; then
        echo "### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using chkconfig"
        echo " sudo chkconfig --add elasticsearch"
        echo "### You can start elasticsearch service by executing"
        echo " sudo service elasticsearch start"

    elif command -v update-rc.d >/dev/null; then
        echo "### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using chkconfig"
        echo " sudo update-rc.d elasticsearch defaults 95 10"
        echo "### You can start elasticsearch service by executing"
        echo " sudo /etc/init.d/elasticsearch start"
    fi
elif [ "$RESTART_ON_UPGRADE" = "true" ]; then

    echo -n "Restarting elasticsearch service..."
    if command -v systemctl >/dev/null; then
        systemctl daemon-reload
        systemctl restart elasticsearch.service || true

    elif [ -x /etc/init.d/elasticsearch ]; then
        if command -v invoke-rc.d >/dev/null; then
            invoke-rc.d elasticsearch stop || true
            invoke-rc.d elasticsearch start || true
        else
            /etc/init.d/elasticsearch restart || true
        fi

    # older suse linux distributions do not ship with systemd
    # but do not have an /etc/init.d/ directory
    # this tries to start the elasticsearch service on these
    # as well without failing this script
    elif [ -x /etc/rc.d/init.d/elasticsearch ] ; then
        /etc/rc.d/init.d/elasticsearch restart || true
    fi
    echo " OK"
fi

chown -R elasticsearch:elasticsearch /var/lib/elasticsearch
chown -R elasticsearch:elasticsearch /var/log/elasticsearch
chown -R root:elasticsearch /etc/elasticsearch
chmod g+s /etc/elasticsearch
chmod 0750 /etc/elasticsearch

if [ -f /etc/sysconfig/elasticsearch ]; then
    chown root:elasticsearch /etc/sysconfig/elasticsearch
fi

# the equivalent code for rpm is in posttrans
if [ "$PACKAGE" = "deb" -a ! -f /etc/elasticsearch/elasticsearch.keystore ]; then
    /usr/share/elasticsearch/bin/elasticsearch-keystore create
    chown root:elasticsearch /etc/elasticsearch/elasticsearch.keystore
    chmod 660 /etc/elasticsearch/elasticsearch.keystore
    md5sum /etc/elasticsearch/elasticsearch.keystore > /etc/elasticsearch/.elasticsearch.keystore.initial_md5sum
fi

# Built for packages-6.3.0 (rpm)

%preun
 RPM_ARCH=noarch
 RPM_OS=linux
 RPM_PACKAGE_NAME=elasticsearch
 RPM_PACKAGE_VERSION=6.3.0
 RPM_PACKAGE_RELEASE=1

#
# This script is executed in the pre-remove phase
#
#   On Debian,
#       $1=remove    : indicates a removal
#       $1=upgrade   : indicates an upgrade
#
#   On RedHat,
#       $1=0         : indicates a removal
#       $1=1         : indicates an upgrade

STOP_REQUIRED=false
REMOVE_SERVICE=false

case "$1" in

    # Debian ####################################################
    remove)
        STOP_REQUIRED=true
        REMOVE_SERVICE=true
    ;;
    upgrade)
        if [ "$RESTART_ON_UPGRADE" = "true" ]; then
            STOP_REQUIRED=true
        fi
    ;;
    deconfigure|failed-upgrade)
    ;;

    # RedHat ####################################################
    0)
        STOP_REQUIRED=true
        REMOVE_SERVICE=true
    ;;
    1)
        # Dont do anything on upgrade, because the preun script in redhat gets executed after the postinst (madness!)
    ;;

    *)
        echo "pre remove script called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# Stops the service
if [ "$STOP_REQUIRED" = "true" ]; then
    echo -n "Stopping elasticsearch service..."
    if command -v systemctl >/dev/null; then
        systemctl --no-reload stop elasticsearch.service

    elif [ -x /etc/init.d/elasticsearch ]; then
        if command -v invoke-rc.d >/dev/null; then
            invoke-rc.d elasticsearch stop
        else
            /etc/init.d/elasticsearch stop
        fi

    # older suse linux distributions do not ship with systemd
    # but do not have an /etc/init.d/ directory
    # this tries to start the elasticsearch service on these
    # as well without failing this script
    elif [ -x /etc/rc.d/init.d/elasticsearch ] ; then
        /etc/rc.d/init.d/elasticsearch stop
    fi
    echo " OK"
fi

if [ -f /etc/elasticsearch/elasticsearch.keystore ]; then
  if md5sum --status -c /etc/elasticsearch/.elasticsearch.keystore.initial_md5sum; then
    rm /etc/elasticsearch/elasticsearch.keystore /etc/elasticsearch/.elasticsearch.keystore.initial_md5sum
  fi
fi

if [ "$REMOVE_SERVICE" = "true" ]; then
    if command -v systemctl >/dev/null; then
        systemctl disable elasticsearch.service > /dev/null 2>&1 || true
    fi

    if command -v chkconfig >/dev/null; then
        chkconfig --del elasticsearch 2> /dev/null || true
    fi

    if command -v update-rc.d >/dev/null; then
        update-rc.d elasticsearch remove >/dev/null || true
    fi
fi

# Built for packages-6.3.0 (rpm)

%postun
 RPM_ARCH=noarch
 RPM_OS=linux
 RPM_PACKAGE_NAME=elasticsearch
 RPM_PACKAGE_VERSION=6.3.0
 RPM_PACKAGE_RELEASE=1

#
# This script is executed in the post-removal phase
#
#   On Debian,
#       $1=remove    : indicates a removal
#       $1=purge     : indicates an upgrade
#
#   On RedHat,
#       $1=0         : indicates a removal
#       $1=1         : indicates an upgrade

REMOVE_DIRS=false
REMOVE_USER_AND_GROUP=false

case "$1" in

    # Debian ####################################################
    remove)
        REMOVE_DIRS=true
    ;;

    purge)
        REMOVE_USER_AND_GROUP=true
    ;;
    failed-upgrade|abort-install|abort-upgrade|disappear|upgrade|disappear)
    ;;

    # RedHat ####################################################
    0)
        REMOVE_DIRS=true
        REMOVE_USER_AND_GROUP=true
    ;;
    1)
        # If $1=1 this is an upgrade
        IS_UPGRADE=true
    ;;

    *)
        echo "post remove script called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

if [ "$REMOVE_DIRS" = "true" ]; then

    if [ -d /var/log/elasticsearch ]; then
        echo -n "Deleting log directory..."
        rm -rf /var/log/elasticsearch
        echo " OK"
    fi

    if [ -d /usr/share/elasticsearch/plugins ]; then
        echo -n "Deleting plugins directory..."
        rm -rf /usr/share/elasticsearch/plugins
        echo " OK"
    fi

    if [ -d /var/run/elasticsearch ]; then
        echo -n "Deleting PID directory..."
        rm -rf /var/run/elasticsearch
        echo " OK"
    fi

    # Delete the data directory if and only if empty
    if [ -d /var/lib/elasticsearch ]; then
        rmdir --ignore-fail-on-non-empty /var/lib/elasticsearch
    fi

    # delete the conf directory if and only if empty
    if [ -d /etc/elasticsearch ]; then
        rmdir --ignore-fail-on-non-empty /etc/elasticsearch
    fi

fi

if [ "$REMOVE_USER_AND_GROUP" = "true" ]; then
    if id elasticsearch > /dev/null 2>&1 ; then
        userdel elasticsearch
    fi

    if getent group elasticsearch > /dev/null 2>&1 ; then
        groupdel elasticsearch
    fi
fi

# Built for packages-6.3.0 (rpm)



%files
%defattr(-,root,root,-)
%config(noreplace) /etc/elasticsearch/elasticsearch.yml
%config(noreplace) /etc/elasticsearch/jvm.options
%config(noreplace) /etc/elasticsearch/log4j2.properties
%config(noreplace) /etc/elasticsearch/role_mapping.yml
%config(noreplace) /etc/elasticsearch/roles.yml
%config(noreplace) /etc/elasticsearch/users
%config(noreplace) /etc/elasticsearch/users_roles
%config(noreplace) /etc/init.d/elasticsearch
%config(noreplace) /etc/sysconfig/elasticsearch
%config(noreplace) /usr/lib/sysctl.d/elasticsearch.conf
%config(noreplace) /usr/lib/systemd/system/elasticsearch.service

# Reject config files already listed or parent directories, then prefix files
# with "/", then make sure paths with spaces are quoted. I hate rpm so much.
/usr/lib/tmpfiles.d/elasticsearch.conf
/usr/share/elasticsearch/LICENSE.txt
/usr/share/elasticsearch/NOTICE.txt
/usr/share/elasticsearch/README.textile
/usr/share/elasticsearch/bin/elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-certgen
/usr/share/elasticsearch/bin/elasticsearch-certgen.bat
/usr/share/elasticsearch/bin/elasticsearch-certutil
/usr/share/elasticsearch/bin/elasticsearch-certutil.bat
/usr/share/elasticsearch/bin/elasticsearch-croneval
/usr/share/elasticsearch/bin/elasticsearch-croneval.bat
/usr/share/elasticsearch/bin/elasticsearch-env
/usr/share/elasticsearch/bin/elasticsearch-keystore
/usr/share/elasticsearch/bin/elasticsearch-migrate
/usr/share/elasticsearch/bin/elasticsearch-migrate.bat
/usr/share/elasticsearch/bin/elasticsearch-plugin
/usr/share/elasticsearch/bin/elasticsearch-saml-metadata
/usr/share/elasticsearch/bin/elasticsearch-saml-metadata.bat
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords.bat
/usr/share/elasticsearch/bin/elasticsearch-sql-cli
/usr/share/elasticsearch/bin/elasticsearch-sql-cli-6.3.0.jar
/usr/share/elasticsearch/bin/elasticsearch-sql-cli.bat
/usr/share/elasticsearch/bin/elasticsearch-syskeygen
/usr/share/elasticsearch/bin/elasticsearch-syskeygen.bat
/usr/share/elasticsearch/bin/elasticsearch-translog
/usr/share/elasticsearch/bin/elasticsearch-users
/usr/share/elasticsearch/bin/elasticsearch-users.bat
/usr/share/elasticsearch/bin/x-pack/certgen
/usr/share/elasticsearch/bin/x-pack/certgen.bat
/usr/share/elasticsearch/bin/x-pack/certutil
/usr/share/elasticsearch/bin/x-pack/certutil.bat
/usr/share/elasticsearch/bin/x-pack/croneval
/usr/share/elasticsearch/bin/x-pack/croneval.bat
/usr/share/elasticsearch/bin/x-pack/migrate
/usr/share/elasticsearch/bin/x-pack/migrate.bat
/usr/share/elasticsearch/bin/x-pack/saml-metadata
/usr/share/elasticsearch/bin/x-pack/saml-metadata.bat
/usr/share/elasticsearch/bin/x-pack/setup-passwords
/usr/share/elasticsearch/bin/x-pack/setup-passwords.bat
/usr/share/elasticsearch/bin/x-pack/sql-cli
/usr/share/elasticsearch/bin/x-pack/sql-cli.bat
/usr/share/elasticsearch/bin/x-pack/syskeygen
/usr/share/elasticsearch/bin/x-pack/syskeygen.bat
/usr/share/elasticsearch/bin/x-pack/users
/usr/share/elasticsearch/bin/x-pack/users.bat
/usr/share/elasticsearch/bin/x-pack-env
/usr/share/elasticsearch/bin/x-pack-env.bat
/usr/share/elasticsearch/bin/x-pack-security-env
/usr/share/elasticsearch/bin/x-pack-security-env.bat
/usr/share/elasticsearch/bin/x-pack-watcher-env
/usr/share/elasticsearch/bin/x-pack-watcher-env.bat
/usr/share/elasticsearch/lib/HdrHistogram-2.1.9.jar
/usr/share/elasticsearch/lib/elasticsearch-6.3.0.jar
/usr/share/elasticsearch/lib/elasticsearch-cli-6.3.0.jar
/usr/share/elasticsearch/lib/elasticsearch-core-6.3.0.jar
/usr/share/elasticsearch/lib/elasticsearch-launchers-6.3.0.jar
/usr/share/elasticsearch/lib/elasticsearch-secure-sm-6.3.0.jar
/usr/share/elasticsearch/lib/elasticsearch-x-content-6.3.0.jar
/usr/share/elasticsearch/lib/hppc-0.7.1.jar
/usr/share/elasticsearch/lib/jackson-core-2.8.10.jar
/usr/share/elasticsearch/lib/jackson-dataformat-cbor-2.8.10.jar
/usr/share/elasticsearch/lib/jackson-dataformat-smile-2.8.10.jar
/usr/share/elasticsearch/lib/jackson-dataformat-yaml-2.8.10.jar
/usr/share/elasticsearch/lib/jna-4.5.1.jar
/usr/share/elasticsearch/lib/joda-time-2.9.9.jar
/usr/share/elasticsearch/lib/jopt-simple-5.0.2.jar
/usr/share/elasticsearch/lib/jts-core-1.15.0.jar
/usr/share/elasticsearch/lib/log4j-1.2-api-2.9.1.jar
/usr/share/elasticsearch/lib/log4j-api-2.9.1.jar
/usr/share/elasticsearch/lib/log4j-core-2.9.1.jar
/usr/share/elasticsearch/lib/lucene-analyzers-common-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-backward-codecs-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-core-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-grouping-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-highlighter-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-join-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-memory-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-misc-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-queries-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-queryparser-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-sandbox-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-spatial-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-spatial-extras-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-spatial3d-7.3.1.jar
/usr/share/elasticsearch/lib/lucene-suggest-7.3.1.jar
/usr/share/elasticsearch/lib/plugin-classloader-6.3.0.jar
/usr/share/elasticsearch/lib/plugin-cli-6.3.0.jar
/usr/share/elasticsearch/lib/snakeyaml-1.17.jar
/usr/share/elasticsearch/lib/spatial4j-0.7.jar
/usr/share/elasticsearch/lib/t-digest-3.2.jar
/usr/share/elasticsearch/modules/aggs-matrix-stats/aggs-matrix-stats-6.3.0.jar
/usr/share/elasticsearch/modules/aggs-matrix-stats/plugin-descriptor.properties
/usr/share/elasticsearch/modules/analysis-common/analysis-common-6.3.0.jar
/usr/share/elasticsearch/modules/analysis-common/plugin-descriptor.properties
/usr/share/elasticsearch/modules/ingest-common/elasticsearch-grok-6.3.0.jar
/usr/share/elasticsearch/modules/ingest-common/ingest-common-6.3.0.jar
/usr/share/elasticsearch/modules/ingest-common/jcodings-1.0.12.jar
/usr/share/elasticsearch/modules/ingest-common/joni-2.1.6.jar
/usr/share/elasticsearch/modules/ingest-common/plugin-descriptor.properties
/usr/share/elasticsearch/modules/lang-expression/antlr4-runtime-4.5.1-1.jar
/usr/share/elasticsearch/modules/lang-expression/asm-5.0.4.jar
/usr/share/elasticsearch/modules/lang-expression/asm-commons-5.0.4.jar
/usr/share/elasticsearch/modules/lang-expression/asm-tree-5.0.4.jar
/usr/share/elasticsearch/modules/lang-expression/lang-expression-6.3.0.jar
/usr/share/elasticsearch/modules/lang-expression/lucene-expressions-7.3.1.jar
/usr/share/elasticsearch/modules/lang-expression/plugin-descriptor.properties
/usr/share/elasticsearch/modules/lang-expression/plugin-security.policy
/usr/share/elasticsearch/modules/lang-mustache/compiler-0.9.3.jar
/usr/share/elasticsearch/modules/lang-mustache/lang-mustache-6.3.0.jar
/usr/share/elasticsearch/modules/lang-mustache/plugin-descriptor.properties
/usr/share/elasticsearch/modules/lang-mustache/plugin-security.policy
/usr/share/elasticsearch/modules/lang-painless/antlr4-runtime-4.5.3.jar
/usr/share/elasticsearch/modules/lang-painless/asm-debug-all-5.1.jar
/usr/share/elasticsearch/modules/lang-painless/elasticsearch-scripting-painless-spi-6.3.0.jar
/usr/share/elasticsearch/modules/lang-painless/lang-painless-6.3.0.jar
/usr/share/elasticsearch/modules/lang-painless/plugin-descriptor.properties
/usr/share/elasticsearch/modules/lang-painless/plugin-security.policy
/usr/share/elasticsearch/modules/mapper-extras/mapper-extras-6.3.0.jar
/usr/share/elasticsearch/modules/mapper-extras/plugin-descriptor.properties
/usr/share/elasticsearch/modules/parent-join/parent-join-6.3.0.jar
/usr/share/elasticsearch/modules/parent-join/plugin-descriptor.properties
/usr/share/elasticsearch/modules/percolator/percolator-6.3.0.jar
/usr/share/elasticsearch/modules/percolator/plugin-descriptor.properties
/usr/share/elasticsearch/modules/rank-eval/plugin-descriptor.properties
/usr/share/elasticsearch/modules/rank-eval/rank-eval-6.3.0.jar
/usr/share/elasticsearch/modules/reindex/commons-codec-1.10.jar
/usr/share/elasticsearch/modules/reindex/commons-logging-1.1.3.jar
/usr/share/elasticsearch/modules/reindex/elasticsearch-rest-client-6.3.0.jar
/usr/share/elasticsearch/modules/reindex/httpasyncclient-4.1.2.jar
/usr/share/elasticsearch/modules/reindex/httpclient-4.5.2.jar
/usr/share/elasticsearch/modules/reindex/httpcore-4.4.5.jar
/usr/share/elasticsearch/modules/reindex/httpcore-nio-4.4.5.jar
/usr/share/elasticsearch/modules/reindex/plugin-descriptor.properties
/usr/share/elasticsearch/modules/reindex/plugin-security.policy
/usr/share/elasticsearch/modules/reindex/reindex-6.3.0.jar
/usr/share/elasticsearch/modules/repository-url/plugin-descriptor.properties
/usr/share/elasticsearch/modules/repository-url/plugin-security.policy
/usr/share/elasticsearch/modules/repository-url/repository-url-6.3.0.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-buffer-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-codec-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-codec-http-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-common-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-handler-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-resolver-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/netty-transport-4.1.16.Final.jar
/usr/share/elasticsearch/modules/transport-netty4/plugin-descriptor.properties
/usr/share/elasticsearch/modules/transport-netty4/plugin-security.policy
/usr/share/elasticsearch/modules/transport-netty4/transport-netty4-6.3.0.jar
/usr/share/elasticsearch/modules/tribe/plugin-descriptor.properties
/usr/share/elasticsearch/modules/tribe/tribe-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/meta-plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-core/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-core/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-core/bcpkix-jdk15on-1.58.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/bcprov-jdk15on-1.58.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/commons-codec-1.10.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/commons-logging-1.1.3.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/httpasyncclient-4.1.2.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/httpclient-4.5.2.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/httpcore-4.4.5.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/httpcore-nio-4.4.5.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/netty-buffer-4.1.16.Final.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/netty-codec-4.1.16.Final.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/netty-codec-http-4.1.16.Final.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/netty-common-4.1.16.Final.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/netty-handler-4.1.16.Final.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/netty-resolver-4.1.16.Final.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/netty-transport-4.1.16.Final.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-core/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-core/transport-netty4-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/unboundid-ldapsdk-3.2.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-core/x-pack-core-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-deprecation/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-deprecation/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-deprecation/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-deprecation/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-deprecation/x-pack-deprecation-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-graph/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-graph/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-graph/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-graph/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-graph/x-pack-graph-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-logstash/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-logstash/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-logstash/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-logstash/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-logstash/x-pack-logstash-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/bin/autoconfig
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/bin/autodetect
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/bin/categorize
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/bin/controller
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/bin/normalize
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libMlApi.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libMlConfig.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libMlCore.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libMlMaths.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libMlModel.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libboost_date_time-clang-darwin42-mt-1_65_1.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libboost_filesystem-clang-darwin42-mt-1_65_1.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libboost_iostreams-clang-darwin42-mt-1_65_1.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libboost_program_options-clang-darwin42-mt-1_65_1.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libboost_regex-clang-darwin42-mt-1_65_1.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libboost_system-clang-darwin42-mt-1_65_1.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/libboost_thread-clang-darwin42-mt-1_65_1.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/darwin-x86_64/lib/liblog4cxx.10.dylib
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/bin/autoconfig
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/bin/autodetect
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/bin/categorize
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/bin/controller
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/bin/normalize
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libMlApi.so
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libMlConfig.so
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libMlCore.so
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libMlMaths.so
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libMlModel.so
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libapr-1.so.0
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libaprutil-1.so.0
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libboost_date_time-gcc62-mt-1_65_1.so.1.65.1
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libboost_filesystem-gcc62-mt-1_65_1.so.1.65.1
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libboost_iostreams-gcc62-mt-1_65_1.so.1.65.1
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libboost_program_options-gcc62-mt-1_65_1.so.1.65.1
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libboost_regex-gcc62-mt-1_65_1.so.1.65.1
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libboost_system-gcc62-mt-1_65_1.so.1.65.1
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libboost_thread-gcc62-mt-1_65_1.so.1.65.1
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libexpat.so.0
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libgcc_s.so.1
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/liblog4cxx.so.10
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libstdc++.so.6
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/linux-x86_64/lib/libxml2.so.2
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/autoconfig.exe
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/autodetect.exe
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/boost_chrono-vc120-mt-1_65_1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/boost_date_time-vc120-mt-1_65_1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/boost_filesystem-vc120-mt-1_65_1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/boost_iostreams-vc120-mt-1_65_1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/boost_program_options-vc120-mt-1_65_1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/boost_regex-vc120-mt-1_65_1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/boost_system-vc120-mt-1_65_1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/boost_thread-vc120-mt-1_65_1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/categorize.exe
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/controller.exe
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/libMlApi.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/libMlConfig.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/libMlCore.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/libMlMaths.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/libMlModel.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/libapr-1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/libapriconv-1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/libaprutil-1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/libxml2.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/log4cxx.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/msvcp120.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/msvcr120.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/normalize.exe
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/platform/windows-x86_64/bin/zlib1.dll
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/resources/date_time_zonespec.csv
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/resources/ml-en.dict
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/super-csv-2.4.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-ml/x-pack-ml-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-monitoring/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-monitoring/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-monitoring/elasticsearch-rest-client-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-monitoring/elasticsearch-rest-client-sniffer-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-monitoring/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-monitoring/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-monitoring/x-pack-monitoring-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-rollup/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-rollup/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-rollup/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-rollup/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-rollup/x-pack-rollup-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-security/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-security/cryptacular-1.2.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/guava-19.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/httpclient-cache-4.5.2.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/java-support-7.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/log4j-slf4j-impl-2.9.1.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/metrics-core-3.2.2.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-core-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-messaging-api-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-messaging-impl-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-profile-api-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-profile-impl-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-saml-api-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-saml-impl-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-security-api-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-security-impl-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-soap-api-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-soap-impl-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-storage-api-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-storage-impl-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-xmlsec-api-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/opensaml-xmlsec-impl-3.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-security/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-security/slf4j-api-1.6.2.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/x-pack-security-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-security/xmlsec-2.0.8.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-sql/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-sql/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-sql/aggs-matrix-stats-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-sql/antlr4-runtime-4.5.3.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-sql/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-sql/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-sql/sql-proto-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-sql/x-pack-sql-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-upgrade/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-upgrade/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-upgrade/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-upgrade/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-upgrade/x-pack-upgrade-6.3.0.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-watcher/LICENSE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-watcher/NOTICE.txt
/usr/share/elasticsearch/modules/x-pack/x-pack-watcher/activation-1.1.1.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-watcher/guava-16.0.1.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-watcher/javax.mail-1.5.6.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-watcher/owasp-java-html-sanitizer-r239.jar
/usr/share/elasticsearch/modules/x-pack/x-pack-watcher/plugin-descriptor.properties
/usr/share/elasticsearch/modules/x-pack/x-pack-watcher/plugin-security.policy
/usr/share/elasticsearch/modules/x-pack/x-pack-watcher/x-pack-watcher-6.3.0.jar
/usr/share/elasticsearch/plugins
/var/lib/elasticsearch
/var/log/elasticsearch
/var/run/elasticsearch

%changelog

Most helpful comment

What version of fpm are you using? I tested a few versions:

fpm -s rpm -t rpm elasticsearch-6.4.2.rpm

  • master git: ✔️
  • latest release (1.10.2): ✔️
  • v1.8.1: ❌

A commit (a996a8a404f012a4cdc95bce4b1e32b1982839e6) was added in December 2017 to set a special rpm macro (_binaries_in_noarch_packages_terminate_build) to allow binaries in noarch rpms.

If you upgrade to anything 1.10.0 or later, your rpm building should work. Let me know if you find otherwise :)

All 7 comments

Command:

fpm -s rpm -t rpm elasticsearch-6.4.2.rpm

Output:

Process failed: rpmbuild failed (exit code 1).

Full command was:

["rpmbuild",
 "-bb",
 "--target", "noarch",
 "--define", "buildroot /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-5bcb74bf5aef82db595beb434d3e5e675d886d91edec282f779a8939ef7f/BUILD",
 "--define", "_topdir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-5bcb74bf5aef82db595beb434d3e5e675d886d91edec282f779a8939ef7f",
 "--define", "_sourcedir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-5bcb74bf5aef82db595beb434d3e5e675d886d91edec282f779a8939ef7f",
 "--define", "_rpmdir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-5bcb74bf5aef82db595beb434d3e5e675d886d91edec282f779a8939ef7f/RPMS",
 "--define", "_tmppath /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T",
 "/var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-5bcb74bf5aef82db595beb434d3e5e675d886d91edec282f779a8939ef7f/SPECS/elasticsearch-6.4.2.spec"]

{:level=>:error}

Is there a way for me to pass --verbose from fpm to rpmbuild?

If you run fpm with —verbose you should get rpmbuild’s output to see what
it says for failure.

Can you try that and show the output?

On Fri, Oct 12, 2018 at 5:36 PM Michael notifications@github.com wrote:

Command:

fpm -s rpm -t rpm elasticsearch-6.4.2.rpm

Output:

Process failed: rpmbuild failed (exit code 1).

Full command was:

["rpmbuild",
"-bb",
"--target", "noarch",
"--define", "buildroot /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-5bcb74bf5aef82db595beb434d3e5e675d886d91edec282f779a8939ef7f/BUILD",
"--define", "_topdir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-5bcb74bf5aef82db595beb434d3e5e675d886d91edec282f779a8939ef7f",
"--define", "_sourcedir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-5bcb74bf5aef82db595beb434d3e5e675d886d91edec282f779a8939ef7f",
"--define", "_rpmdir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-5bcb74bf5aef82db595beb434d3e5e675d886d91edec282f779a8939ef7f/RPMS",
"--define", "_tmppath /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T",
"/var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-5bcb74bf5aef82db595beb434d3e5e675d886d91edec282f779a8939ef7f/SPECS/elasticsearch-6.4.2.spec"]

{:level=>:error}

Is there a way for me to pass --verbose from fpm to rpmbuild?


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/jordansissel/fpm/issues/1560#issuecomment-429496533,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAIC6gkKvuMZvMbbCPKeHx_qand_c7t2ks5ukTWqgaJpZM4XaS0w
.

Hey Jordan! Thank you so much for creating FPM! I've been converting everyone at work to use it for all their packaging needs :)

This is the output with the --verbose flag.

$ fpm -s rpm -t rpm --verbose dist/elasticsearch-6.4.2.rpm
Ignoring ffi-1.9.21 because its extensions are not built.  Try: gem pristine ffi --version 1.9.21
Setting workdir {:workdir=>"/var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T", :level=>:info}
Converting rpm to rpm {:level=>:info}
Reading template {:path=>"/Library/Ruby/Gems/2.3.0/gems/fpm-1.9.3/templates/rpm.erb", :level=>:info}
Running rpmbuild {:args=>["rpmbuild", "-bb", "--target", "noarch", "--define", "buildroot /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-589d93636521ff000b533b0d3433205bd986678966f142624f4382ac1b2a/BUILD", "--define", "_topdir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-589d93636521ff000b533b0d3433205bd986678966f142624f4382ac1b2a", "--define", "_sourcedir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-589d93636521ff000b533b0d3433205bd986678966f142624f4382ac1b2a", "--define", "_rpmdir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-589d93636521ff000b533b0d3433205bd986678966f142624f4382ac1b2a/RPMS", "--define", "_tmppath /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T", "/var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-589d93636521ff000b533b0d3433205bd986678966f142624f4382ac1b2a/SPECS/elasticsearch.spec"], :level=>:info}
warning: Macro expanded in comment on line 24: %undefine __check_files {:level=>:info}
 {:level=>:info}
Building target platforms: noarch {:level=>:info}
Building for target noarch {:level=>:info}
Executing(%prep): /bin/sh -e /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/rpm-tmp.j57gOk {:level=>:info}
Executing(%build): /bin/sh -e /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/rpm-tmp.jUotBJ {:level=>:info}
Executing(%install): /bin/sh -e /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/rpm-tmp.59KfC4 {:level=>:info}
Processing files: elasticsearch-6.4.2-1.noarch {:level=>:info}
Provides: elasticsearch = 0:6.4.2-1 {:level=>:info}
Requires(interp): /bin/sh /bin/sh /bin/sh /bin/sh /bin/sh /bin/sh /bin/sh {:level=>:info}
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 {:level=>:info}
Requires(verify): /bin/sh {:level=>:info}
Requires(pre): /bin/sh {:level=>:info}
error: Arch dependent binaries in noarch package {:level=>:info}
Requires(post): /bin/sh {:level=>:info}
    Macro expanded in comment on line 24: %undefine __check_files {:level=>:info}
Requires(preun): /bin/sh {:level=>:info}
 {:level=>:info}
Requires(postun): /bin/sh {:level=>:info}
    Arch dependent binaries in noarch package {:level=>:info}
Requires(pretrans): /bin/sh {:level=>:info}
Requires(posttrans): /bin/sh {:level=>:info}
Conflicts: elasticsearch-oss {:level=>:info}
 {:level=>:info}
 {:level=>:info}
RPM build errors: {:level=>:info}
Process failed: rpmbuild failed (exit code 1). Full command was:["rpmbuild", "-bb", "--target", "noarch", "--define", "buildroot /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-589d93636521ff000b533b0d3433205bd986678966f142624f4382ac1b2a/BUILD", "--define", "_topdir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-589d93636521ff000b533b0d3433205bd986678966f142624f4382ac1b2a", "--define", "_sourcedir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-589d93636521ff000b533b0d3433205bd986678966f142624f4382ac1b2a", "--define", "_rpmdir /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-589d93636521ff000b533b0d3433205bd986678966f142624f4382ac1b2a/RPMS", "--define", "_tmppath /var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T", "/var/folders/27/2k3gxrsn6jv46fcnrwjrtnt00000gn/T/package-rpm-build-589d93636521ff000b533b0d3433205bd986678966f142624f4382ac1b2a/SPECS/elasticsearch.spec"] {:level=>:error}
error: Arch dependent binaries in noarch package {:level=>:info}
Requires(post): /bin/sh {:level=>:info}
    Macro expanded in comment on line 24: %undefine __check_files {:level=>:info}

This appears to be the error. rpmbuild is rejecting the spec because the elasticsearch rpm contains files that it doesn't like. This might be related to the opening of x-pack because now Elastic's ML system is included (is executables files, not java), but I haven't confirmed.

I'll see if I can reproduce this before recommending any fixes/workarounds.

What version of fpm are you using? I tested a few versions:

fpm -s rpm -t rpm elasticsearch-6.4.2.rpm

  • master git: ✔️
  • latest release (1.10.2): ✔️
  • v1.8.1: ❌

A commit (a996a8a404f012a4cdc95bce4b1e32b1982839e6) was added in December 2017 to set a special rpm macro (_binaries_in_noarch_packages_terminate_build) to allow binaries in noarch rpms.

If you upgrade to anything 1.10.0 or later, your rpm building should work. Let me know if you find otherwise :)

I was on v1.9.x. Upgrading to v1.10.x fixed the issue. Thank you so much!!

As a bonus, I noticed that this issue wasn’t documented in the changelog!
Thanks for finding this issue and reminding me to document it :)

On Sat, Oct 13, 2018 at 3:18 PM Michael notifications@github.com wrote:

I was on v1.9.x. Upgrading to v1.10.x fixed the issue. Thank you so much!!


You are receiving this because you commented.

Reply to this email directly, view it on GitHub
https://github.com/jordansissel/fpm/issues/1560#issuecomment-429579833,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAIC6nKvGb4RQnO6jt2isXFtbgcVRRubks5ukmaagaJpZM4XaS0w
.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

weakcamel picture weakcamel  ·  6Comments

nandosola picture nandosola  ·  3Comments

samueljc picture samueljc  ·  4Comments

thedrow picture thedrow  ·  10Comments

FlorinAndrei picture FlorinAndrei  ·  7Comments