From 97646d80c8d392eb0b0d51358afabad3acad3e18 Mon Sep 17 00:00:00 2001 From: "Ralf S. Engelschall" Date: Sun, 10 Feb 2019 20:14:25 +0100 Subject: [PATCH] new package --- orchestrator/orchestrator.patch | 32 ++++++++ orchestrator/orchestrator.spec | 138 ++++++++++++++++++++++++++++++++ orchestrator/rc.orchestrator | 59 ++++++++++++++ 3 files changed, 229 insertions(+) create mode 100644 orchestrator/orchestrator.patch create mode 100644 orchestrator/orchestrator.spec create mode 100644 orchestrator/rc.orchestrator diff --git a/orchestrator/orchestrator.patch b/orchestrator/orchestrator.patch new file mode 100644 index 0000000000..7bb36264f3 --- /dev/null +++ b/orchestrator/orchestrator.patch @@ -0,0 +1,32 @@ +Index: build.sh +--- build.sh.orig 2019-01-16 11:57:44.000000000 +0100 ++++ build.sh 2019-02-10 19:53:00.000857000 +0100 +@@ -7,7 +7,7 @@ + set -e + + mydir=$(dirname $0) +-GIT_COMMIT=$(git rev-parse HEAD) ++GIT_COMMIT=000000 + RELEASE_VERSION= + RELEASE_SUBVERSION= + TOPDIR=/tmp/orchestrator-release +@@ -56,8 +56,8 @@ + ok=1 + fi + +- if ! go version | egrep -q 'go(1\.(8|9|1[0]))' ; then +- echo "go version must be between 1.8 and 1.10" ++ if ! go version | egrep -q 'go(1\.(8|9|1[0]|11))' ; then ++ echo "go version must be between 1.8 and 1.11" + ok=1 + fi + +@@ -154,7 +154,7 @@ + prefix="$4" + ldflags="-X main.AppVersion=${RELEASE_VERSION} -X main.GitCommit=${GIT_COMMIT}" + echo "Building via $(go version)" +- gobuild="go build -i ${opt_race} -ldflags \"$ldflags\" -o $builddir/orchestrator${prefix}/orchestrator/orchestrator go/cmd/orchestrator/main.go" ++ gobuild="go build -v ${opt_race} -ldflags \"$ldflags\" -o $builddir/orchestrator${prefix}/orchestrator/orchestrator go/cmd/orchestrator/main.go" + + case $os in + 'linux') diff --git a/orchestrator/orchestrator.spec b/orchestrator/orchestrator.spec new file mode 100644 index 0000000000..023c11aaa3 --- /dev/null +++ b/orchestrator/orchestrator.spec @@ -0,0 +1,138 @@ +## +## orchestrator.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2019 OpenPKG Project +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package information +Name: orchestrator +Summary: MySQL Cluster Node Orchestrator +URL: https://github.com/github/orchestrator +Vendor: GitHub +Packager: OpenPKG Project +Distribution: OpenPKG Community +Class: EVAL +Group: RDBMS +License: Apache +Version: 3.0.14 +Release: 20190210 + +# list of sources +Source0: https://github.com/github/orchestrator/archive/v%{version}.tar.gz +Source1: rc.orchestrator +Patch0: orchestrator.patch + +# build information +BuildPreReq: OpenPKG, openpkg >= 20160101, go +PreReq: OpenPKG, openpkg >= 20160101 + +%description + Orchestrator is Github's MySQL High Availability (HA) and + replication management tool, allowing for Discovery, Refactoring + andf Recovery of nodes in a MySQL cluster. + +%track + prog orchestrator = { + version = %{version} + url = https://github.com/github/orchestrator/releases + regex = v(__VER__)\.tar\.gz + } + +%prep + %setup -q + %patch -p0 + +%build + # remove problematic files + rm -f vendor/github.com/mattn/go-sqlite3/sqlite3_go18* + + # provide Go build environment + export GOPATH=`pwd` + mkdir -p $GOPATH/.src/github.com/github/orchestrator + mv * $GOPATH/.src/github.com/github/orchestrator/ + mv $GOPATH/.src $GOPATH/src + + # build program + ( cd $GOPATH/src/github.com/github/orchestrator + go build -v \ + -ldflags "-X main.AppVersion=%{version} -X main.GitCommit=000000" \ + -o orchestrator go/cmd/orchestrator/main.go + ) || exit $? + +%install + # create installation hierarchy + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/sbin \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \ + $RPM_BUILD_ROOT%{l_prefix}/etc/orchestrator \ + $RPM_BUILD_ROOT%{l_prefix}/lib/orchestrator \ + $RPM_BUILD_ROOT%{l_prefix}/var/orchestrator/log \ + $RPM_BUILD_ROOT%{l_prefix}/var/orchestrator/run + + # install program + %{l_shtool} install -c -s -m 755 \ + src/github.com/github/orchestrator/orchestrator \ + $RPM_BUILD_ROOT%{l_prefix}/sbin/ + + # install resources + cp -rp src/github.com/github/orchestrator/resources/* \ + $RPM_BUILD_ROOT%{l_prefix}/lib/orchestrator/ + + # install default configuration + %{l_shtool} install -c -m 644 \ + -e 's;/usr/local/orchestrator/orchestrator\.sqlite3;%{l_prefix}/var/orchestrator/run/orchestrator.db;' \ + -e 's;/tmp/recovery\.log;%{l_prefix}/var/orchestrator/log/orchestrator.recovery.log;' \ + src/github.com/github/orchestrator/conf/orchestrator-sample-sqlite.conf.json \ + $RPM_BUILD_ROOT%{l_prefix}/etc/orchestrator/orchestrator.json + + # install run-command script + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE rc.orchestrator} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ + %{l_files_std} \ + '%config %{l_prefix}/etc/orchestrator/*' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/orchestrator' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/orchestrator/*' + +%files -f files + +%clean + +%post + if [ $1 -eq 2 ]; then + # after upgrade, restart service + eval `%{l_rc} orchestrator status 2>/dev/null` + [ ".$orchestrator_active" = .yes ] && %{l_rc} orchestrator restart + fi + exit 0 + +%preun + if [ $1 -eq 0 ]; then + # before erase, stop service and remove log files + %{l_rc} orchestrator stop 2>/dev/null + + # remove run-time files + rm -f $RPM_INSTALL_PREFIX/var/orchestrator/log/* >/dev/null 2>&1 || true + rm -f $RPM_INSTALL_PREFIX/var/orchestrator/run/* >/dev/null 2>&1 || true + fi + exit 0 + diff --git a/orchestrator/rc.orchestrator b/orchestrator/rc.orchestrator new file mode 100644 index 0000000000..b2522f56ab --- /dev/null +++ b/orchestrator/rc.orchestrator @@ -0,0 +1,59 @@ +#!@l_prefix@/bin/openpkg rc +## +## rc.orchestrator -- Run-Commands +## + +%config + orchestrator_enable="$openpkg_rc_def" + orchestrator_flags="" + orchestrator_log_rotsteps="10" + orchestrator_log_rotminsize="10M" + orchestrator_log_rotcomplevel="9" + orchestrator_log_rotprolog="true" + orchestrator_log_rotepilog="true" + +%common + orchestrator_cfgfile="@l_prefix@/etc/orchestrator/orchestrator.json" + orchestrator_pidfile="@l_prefix@/var/orchestrator/run/orchestrator.pid" + orchestrator_logfile="@l_prefix@/var/orchestrator/log/orchestrator.log" + +%status -u @l_susr@ -o + orchestrator_usable="no" + orchestrator_active="no" + [ -f $orchestrator_pidfile ] && \ + kill -0 `cat $orchestrator_pidfile` && \ + orchestrator_active="yes" + echo "orchestrator_enable=\"$orchestrator_enable\"" + echo "orchestrator_usable=\"$orchestrator_usable\"" + echo "orchestrator_active=\"$orchestrator_active\"" + +%start -u @l_rusr@ + rcService orchestrator enable yes || exit 0 + rcService orchestrator active yes && exit 0 + ( cd @l_prefix@/lib/orchestrator + nohup @l_prefix@/sbin/orchestrator $orchestrator_flags \ + >$orchestrator_logfile 2>&1 & + echo $! >$orchestrator_pidfile + ) >/dev/null 2>&1 + +%stop -u @l_rusr@ + rcService orchestrator enable yes || exit 0 + rcService orchestrator active no && exit 0 + [ -f $orchestrator_pidfile ] && \ + kill -TERM `cat $orchestrator_pidfile` + sleep 2 + +%restart -u @l_rusr@ + rcService orchestrator enable yes || exit 0 + rcService orchestrator active no && exit 0 + rc orchestrator stop start + +%daily -u @l_susr@ + rcService orchestrator enable yes || exit 0 + shtool rotate -f \ + -n $orchestrator_log_rotsteps -s $orchestrator_log_rotminsize -d \ + -z $orchestrator_log_rotcomplevel -o @l_rusr@ -g @l_rgrp@ -m 644 \ + -P "$orchestrator_log_rotprolog" \ + -E "$orchestrator_log_rotepilog; rc orchestrator restart" \ + $orchestrator_logfile +