From 933168fe48f823e3ae37c745595feec2c26823bf Mon Sep 17 00:00:00 2001 From: "Ralf S. Engelschall" Date: Sat, 27 Jan 2018 00:35:08 +0100 Subject: [PATCH] new package --- piknik/piknik.spec | 47 ++++++++++++++++++++++++++++++--- piknik/rc.piknik | 65 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 piknik/rc.piknik diff --git a/piknik/piknik.spec b/piknik/piknik.spec index 64cfb2ec42..87e9c6a22e 100644 --- a/piknik/piknik.spec +++ b/piknik/piknik.spec @@ -40,6 +40,7 @@ Release: 20180127 # list of sources Source0: http://download.openpkg.org/components/versioned/piknik/piknik-%{V_dist}.tar.xz +Source1: rc.piknik # build information BuildPreReq: OpenPKG, openpkg >= 20160101, go @@ -72,16 +73,56 @@ PreReq: OpenPKG, openpkg >= 20160101 go build -x -o piknik github.com/jedisct1/piknik %install - # install program + # create directory hierarchy %{l_shtool} mkdir -f -p -m 755 \ - $RPM_BUILD_ROOT%{l_prefix}/bin + $RPM_BUILD_ROOT%{l_prefix}/bin \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \ + $RPM_BUILD_ROOT%{l_prefix}/etc/piknik \ + $RPM_BUILD_ROOT%{l_prefix}/var/piknik/log \ + $RPM_BUILD_ROOT%{l_prefix}/var/piknik/run + + # install program %{l_shtool} install -c -s -m 755 \ piknik $RPM_BUILD_ROOT%{l_prefix}/bin/ + # install run-command script + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE rc.piknik} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + # determine installation files - %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ + %{l_files_std} \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/piknik/*' %files -f files %clean +%post + if [ $1 -eq 1 ]; then + # on initial installation, create database and certs/keys + echo "Generating Server Configuration" | %{l_rpmtool} msg -b -t notice + $RPM_INSTALL_PREFIX/bin/piknik -genkeys | \ + sed -e '1,/Configuration for a server/d' \ + -e '/Hybrid configuration/,$d' \ + -e 's;0.0.0.0;127.0.0.1;' \ + >$RPM_INSTALL_PREFIX/etc/piknik/piknik.toml + chown %{l_rusr}:%{l_rgrp} $RPM_INSTALL_PREFIX/etc/piknik/piknik.toml + chmod 644 $RPM_INSTALL_PREFIX/etc/piknik/piknik.toml + elif [ $1 -eq 2 ]; then + # after upgrade, restart service + eval `%{l_rc} piknik status 2>/dev/null` + [ ".$piknik_active" = .yes ] && %{l_rc} piknik restart + fi + exit 0 + +%preun + # before erase, stop service and remove log files + if [ $1 -eq 0 ]; then + %{l_rc} piknik stop 2>/dev/null + rm -f $RPM_INSTALL_PREFIX/etc/piknik/*.toml >/dev/null 2>&1 || true + rm -f $RPM_INSTALL_PREFIX/var/cockroach/log/* >/dev/null 2>&1 || true + rm -f $RPM_INSTALL_PREFIX/var/cockroach/run/* >/dev/null 2>&1 || true + fi + exit 0 + diff --git a/piknik/rc.piknik b/piknik/rc.piknik new file mode 100644 index 0000000000..520b0461b3 --- /dev/null +++ b/piknik/rc.piknik @@ -0,0 +1,65 @@ +#!@l_prefix@/bin/openpkg rc +## +## rc.piknik -- Run-Commands +## + +%config + piknik_enable="$openpkg_rc_def" + piknik_flags="" + piknik_log_prolog="true" + piknik_log_epilog="true" + piknik_log_numfiles="10" + piknik_log_minsize="1M" + piknik_log_complevel="9" + +%common + piknik_cfgfile="@l_prefix@/etc/piknik/piknik.toml" + piknik_pidfile="@l_prefix@/var/piknik/run/piknik.pid" + piknik_logfile="@l_prefix@/var/piknik/log/piknik.log" + piknik_signal () { + [ -f $piknik_pidfile ] && kill -$1 `cat $piknik_pidfile` + } + +%status -u @l_rusr@ -o + piknik_usable="unknown" + piknik_active="no" + rcService piknik enable yes && \ + piknik_signal 0 && piknik_active="yes" + echo "piknik_enable=\"$piknik_enable\"" + echo "piknik_usable=\"$piknik_usable\"" + echo "piknik_active=\"$piknik_active\"" + +%start -u @l_rusr@ + rcService piknik enable yes || exit 0 + rcService piknik active yes && exit 0 + ( GOMAXPROCS=32 + export GOMAXPROCS + nohup @l_prefix@/bin/piknik \ + -server \ + -config "$piknik_cfgfile" \ + $piknik_flags \ + >$piknik_logfile 2>&1 & + echo $! >$piknik_pidfile + ) >/dev/null 2>&1 + +%stop -u @l_rusr@ + rcService piknik enable yes || exit 0 + rcService piknik active no && exit 0 + piknik_signal TERM + sleep 2 + rm -f $piknik_pidfile >/dev/null 2>&1 || true + +%restart -u @l_rusr@ + rcService piknik enable yes || exit 0 + rcService piknik active no && exit 0 + rc piknik stop start + +%daily -u @l_rusr@ + rcService piknik enable yes || exit 0 + shtool rotate -f \ + -n ${piknik_log_numfiles} -s ${piknik_log_minsize} -d \ + -z ${piknik_log_complevel} -m 664 -o @l_rusr@ -g @l_rgrp@ \ + -P "${piknik_log_prolog}" \ + -E "${piknik_log_epilog}; rc piknik restart" \ + $piknik_logfile +