dist: move package build script to install.sh

Move package build script from .rpm/.deb to single script, install.sh.
We need this to support nonroot mode, and also to keep package build script
consistent between .rpm/.deb.
This commit is contained in:
Takuya ASADA 2019-09-04 08:30:35 +09:00
parent 04ea3ab7e0
commit a1044e3bd1
4 changed files with 98 additions and 39 deletions

View File

@ -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" --disttype debian
override_dh_installinit:
{{#scylla}}

View File

@ -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" --disttype "redhat"
%pre
/usr/sbin/groupadd scylla 2> /dev/null || :

94
install.sh Executable file
View File

@ -0,0 +1,94 @@
#!/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 <http://www.gnu.org/licenses/>.
#
set -e
print_usage() {
cat <<EOF
Usage: install.sh [options]
Options:
--root /path/to/root alternative install root (default /)
--prefix /prefix directory prefix (default /usr)
--disttype [redhat|debian] specify type of distribution (redhat/debian)
--help this helpful message
EOF
exit 1
}
root=/
prefix=/opt/scylladb
while [ $# -gt 0 ]; do
case "$1" in
"--root")
root="$2"
shift 2
;;
"--prefix")
prefix="$2"
shift 2
;;
"--disttype")
disttype="$2"
shift 2
;;
"--help")
shift 1
print_usage
;;
*)
print_usage
;;
esac
done
rprefix="$root/$prefix"
retc="$root/etc"
rusr="$root/usr"
if [ "$disttype" = "redhat" ]; then
MUSTACHE_DIST="\"redhat\": true"
sysconfdir=sysconfig
elif [ "$disttype" = "debian" ]; then
MUSTACHE_DIST="\"debian\": true"
sysconfdir=default
else
print_usage
exit 1
fi
mkdir -p build
pystache dist/common/systemd/scylla-jmx.service.mustache "{ $MUSTACHE_DIST }" > build/scylla-jmx.service
install -d -m755 "$retc"/"$sysconfdir"
install -d -m755 "$rusr"/lib/systemd/system
install -d -m755 "$rprefix/scripts" "$rprefix/jmx" "$rprefix/jmx/symlinks"
install -m644 dist/common/sysconfig/scylla-jmx -Dt "$retc"/"$sysconfdir"
install -m644 build/scylla-jmx.service -Dt "$rusr"/lib/systemd/system
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/"

View File

@ -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')