diff --git a/dist/common/systemd/scylla-jmx.service.mustache b/dist/common/systemd/scylla-jmx.service similarity index 83% rename from dist/common/systemd/scylla-jmx.service.mustache rename to dist/common/systemd/scylla-jmx.service index 4e1dd6e..e30dc3b 100644 --- a/dist/common/systemd/scylla-jmx.service.mustache +++ b/dist/common/systemd/scylla-jmx.service @@ -5,12 +5,7 @@ After=scylla-server.service [Service] Type=simple -{{#debian}} -EnvironmentFile=/etc/default/scylla-jmx -{{/debian}} -{{#redhat}} EnvironmentFile=/etc/sysconfig/scylla-jmx -{{/redhat}} User=scylla Group=scylla ExecStart=/opt/scylladb/jmx/scylla-jmx $SCYLLA_JMX_PORT $SCYLLA_API_PORT $SCYLLA_API_ADDR $SCYLLA_JMX_ADDR $SCYLLA_JMX_FILE $SCYLLA_JMX_LOCAL $SCYLLA_JMX_REMOTE $SCYLLA_JMX_DEBUG diff --git a/dist/debian/rules.mustache b/dist/debian/rules.mustache index b527d7e..a6030f6 100755 --- a/dist/debian/rules.mustache +++ b/dist/debian/rules.mustache @@ -1,31 +1,12 @@ #!/usr/bin/make -f -DOC = $(CURDIR)/debian/{{product}}-jmx/opt/scylladb/share/doc/{{product}}-jmx -DEST = $(CURDIR)/debian/{{product}}-jmx/opt/scylladb/jmx -M2_REPO= $(CURDIR)/m2 - override_dh_auto_build: override_dh_auto_clean: override_dh_auto_install: - mkdir -p $(CURDIR)/debian/{{product}}-jmx/etc/default/ && \ - cp $(CURDIR)/dist/common/sysconfig/scylla-jmx \ - $(CURDIR)/debian/{{product}}-jmx/etc/default/ - - mkdir -p $(DOC) && \ - cp $(CURDIR)/*.md $(DOC) - cp $(CURDIR)/NOTICE $(DOC) - - mkdir -p $(DEST) - cp $(CURDIR)/scylla-jmx $(DEST) - cp $(CURDIR)/scylla-jmx-1.0.jar $(DEST) - mkdir $(DEST)/symlinks - ln -sf /usr/bin/java $(DEST)/symlinks/scylla-jmx - - mkdir -p $(CURDIR)/debian/{{product}}-jmx/opt/scylladb/scripts - # Create symlink for /usr/lib/scylla/jmx - ln -sf /opt/scylladb/jmx $(CURDIR)/debian/{{product}}-jmx/opt/scylladb/scripts/ + dh_auto_install + ./install.sh --root "$(CURDIR)/debian/{{product}}-jmx" --sysconfdir /etc/default override_dh_installinit: {{#scylla}} diff --git a/dist/redhat/scylla-jmx.spec.mustache b/dist/redhat/scylla-jmx.spec.mustache index a465f76..714ea6b 100644 --- a/dist/redhat/scylla-jmx.spec.mustache +++ b/dist/redhat/scylla-jmx.spec.mustache @@ -22,26 +22,9 @@ Requires: {{product}}-server java-1.8.0-openjdk-headless %build -MUSTACHE_DIST="\"redhat\": true" -pystache dist/common/systemd/scylla-jmx.service.mustache "{ $MUSTACHE_DIST }" > scylla-jmx.service %install -rm -rf $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/ -mkdir -p $RPM_BUILD_ROOT%{_unitdir} -mkdir -p $RPM_BUILD_ROOT/opt/scylladb/ - -install -m644 dist/common/sysconfig/scylla-jmx $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/ -install -m644 scylla-jmx.service $RPM_BUILD_ROOT%{_unitdir}/ -install -d -m755 $RPM_BUILD_ROOT/opt/scylladb/ -install -d -m755 $RPM_BUILD_ROOT/opt/scylladb/jmx -install -d -m755 $RPM_BUILD_ROOT/opt/scylladb/jmx/symlinks -install -m644 scylla-jmx-1.0.jar $RPM_BUILD_ROOT/opt/scylladb/jmx/ -install -m755 scylla-jmx $RPM_BUILD_ROOT/opt/scylladb/jmx -ln -sf /usr/bin/java $RPM_BUILD_ROOT/opt/scylladb/jmx/symlinks/scylla-jmx -install -d -m755 $RPM_BUILD_ROOT/opt/scylladb/scripts -# create symlink for /usr/lib/scylla/jmx -ln -sf /opt/scylladb/jmx $RPM_BUILD_ROOT/opt/scylladb/scripts/ +./install.sh --root "$RPM_BUILD_ROOT" %pre /usr/sbin/groupadd scylla 2> /dev/null || : diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..46274c0 --- /dev/null +++ b/install.sh @@ -0,0 +1,136 @@ +#!/bin/bash +# +# Copyright (C) 2019 ScyllaDB +# + +# +# This file is part of Scylla. +# +# Scylla is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Scylla is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Scylla. If not, see . +# + +set -e + +print_usage() { + cat < "$retc"/systemd/system/scylla-jmx.service.d/sysconfdir.conf +[Service] +EnvironmentFile= +EnvironmentFile=$sysconfdir/scylla-jmx +EOS + fi +else + install -d -m755 "$retc"/systemd/system/scylla-jmx.service.d + cat << EOS > "$retc"/systemd/system/scylla-jmx.service.d/nonroot.conf +[Service] +EnvironmentFile= +EnvironmentFile=$retc/sysconfig/scylla-jmx +ExecStart= +ExecStart=$rprefix/jmx/scylla-jmx \$SCYLLA_JMX_PORT \$SCYLLA_API_PORT \$SCYLLA_API_ADDR \$SCYLLA_JMX_ADDR \$SCYLLA_JMX_FILE \$SCYLLA_JMX_LOCAL \$SCYLLA_JMX_REMOTE \$SCYLLA_JMX_DEBUG +User= +Group= +EOS + if [ ! -d ~/.config/systemd/user/scylla-jmx.service.d ]; then + mkdir -p ~/.config/systemd/user/scylla-jmx.service.d + fi + ln -srf $rsystemd/scylla-jmx.service ~/.config/systemd/user/ + ln -srf "$retc"/systemd/system/scylla-jmx.service.d/nonroot.conf ~/.config/systemd/user/scylla-jmx.service.d +fi + +install -m644 scylla-jmx-1.0.jar "$rprefix/jmx" +install -m755 scylla-jmx "$rprefix/jmx" +ln -sf /usr/bin/java "$rprefix/jmx/symlinks/scylla-jmx" +# create symlink for /usr/lib/scylla/jmx +ln -srf $rprefix/jmx "$rprefix/scripts/" + +if $nonroot; then + sed -i -e "s#/var/lib/scylla#$rprefix#g" "$rsysconfdir"/scylla-jmx + sed -i -e "s#/etc/scylla#$rprefix/etc/scylla#g" "$rsysconfdir"/scylla-jmx + sed -i -e "s#/opt/scylladb/jmx#$rprefix/jmx#g" "$rsysconfdir"/scylla-jmx + systemctl --user daemon-reload + echo "Scylla-JMX non-root install completed." +fi diff --git a/scripts/create-relocatable-package.py b/scripts/create-relocatable-package.py index e64ff30..2a70acf 100755 --- a/scripts/create-relocatable-package.py +++ b/scripts/create-relocatable-package.py @@ -43,6 +43,7 @@ ar.add('build/SCYLLA-RELEASE-FILE', arcname='SCYLLA-RELEASE-FILE') ar.add('build/SCYLLA-VERSION-FILE', arcname='SCYLLA-VERSION-FILE') ar.add('build/SCYLLA-PRODUCT-FILE', arcname='SCYLLA-PRODUCT-FILE') ar.add('dist') +ar.add('install.sh') ar.add('target/scylla-jmx-1.0.jar', arcname='scylla-jmx-1.0.jar') ar.add('scripts/scylla-jmx', arcname='scylla-jmx') ar.add('README.md')