Browse Source

new package

master
parent
commit
150abb9e1e
  1. 133
      mimir/mimir.spec
  2. 53
      mimir/mimir.yaml
  3. 63
      mimir/rc.mimir

133
mimir/mimir.spec

@ -0,0 +1,133 @@
##
## mimir.spec -- OpenPKG RPM Package Specification
## Copyright (c) 2000-2025 OpenPKG Project <http://openpkg.org/>
##
## 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 version
%define V_base 3.0.0
%define V_snap 20251121
# package information
Name: mimir
Summary: Prometheus Long-Term Storage
URL: https://grafana.com/oss/mimir/
Vendor: Grafana Labs
Packager: OpenPKG Project
Distribution: OpenPKG Community
Class: EVAL
Group: Database
License: AGPL
Version: %{V_base}.%{V_snap}
Release: 20251121
# list of sources
Source0: http://download.openpkg.org/components/versioned/mimir/mimir-%{V_snap}.tar.xz
Source1: mimir.yaml
Source2: rc.mimir
# build information
BuildPreReq: OpenPKG, openpkg >= 20160101, go
PreReq: OpenPKG, openpkg >= 20160101
%description
Grafana Mimir provides horizontally scalable, highly available,
multi-tenant, long-term storage for Prometheus.
%track
prog mimir = {
version = %{V_base}
url = https://github.com/grafana/mimir/releases
regex = tree/v(\d+\.\d+\.\d+)
}
%prep
%setup -q -n mimir
%build
# build program
export GOPATH=`pwd`
cd src/github.com/grafana/mimir
go build -v -o bin/mimir cmd/mimir/main.go
go build -v -o bin/mimirtool cmd/mimirtool/main.go
go build -v -o bin/query-tee cmd/query-tee/main.go
go build -v -o bin/metaconvert cmd/metaconvert/main.go
%install
# create directory hierarchy
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/bin \
$RPM_BUILD_ROOT%{l_prefix}/sbin \
$RPM_BUILD_ROOT%{l_prefix}/libexec/mimir \
$RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \
$RPM_BUILD_ROOT%{l_prefix}/etc/mimir \
$RPM_BUILD_ROOT%{l_prefix}/var/mimir/log \
$RPM_BUILD_ROOT%{l_prefix}/var/mimir/run \
$RPM_BUILD_ROOT%{l_prefix}/var/mimir/db
# install program
%{l_shtool} install -c -s -m 755 \
src/github.com/grafana/mimir/bin/mimirtool \
$RPM_BUILD_ROOT%{l_prefix}/bin/
%{l_shtool} install -c -s -m 755 \
src/github.com/grafana/mimir/bin/mimir \
$RPM_BUILD_ROOT%{l_prefix}/sbin/
%{l_shtool} install -c -s -m 755 \
src/github.com/grafana/mimir/bin/query-tee \
src/github.com/grafana/mimir/bin/metaconvert \
$RPM_BUILD_ROOT%{l_prefix}/libexec/mimir/
# install default configuration
%{l_shtool} install -c -m 644 %{l_value -s -a} \
%{SOURCE mimir.yaml} $RPM_BUILD_ROOT%{l_prefix}/etc/mimir/
# install run-command script
%{l_shtool} install -c -m 755 %{l_value -s -a} \
%{SOURCE rc.mimir} $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/mimir/*' \
'%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/mimir' \
'%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/mimir/*'
%files -f files
%clean
%post
if [ $1 -eq 2 ]; then
# after upgrade, restart service
eval `%{l_rc} mimir status 2>/dev/null`
[ ".$mimir_active" = .yes ] && %{l_rc} mimir restart
fi
exit 0
%preun
if [ $1 -eq 0 ]; then
# before erase, stop service and remove log files
%{l_rc} mimir stop 2>/dev/null
rm -rf $RPM_INSTALL_PREFIX/var/mimir/log/* >/dev/null 2>&1 || true
rm -rf $RPM_INSTALL_PREFIX/var/mimir/run/* >/dev/null 2>&1 || true
rm -rf $RPM_INSTALL_PREFIX/var/mimir/db/* >/dev/null 2>&1 || true
fi
exit 0

53
mimir/mimir.yaml

@ -0,0 +1,53 @@
##
## mimir.conf -- mimir(8) startup configuration options
##
multitenancy_enabled: false
blocks_storage:
backend: filesystem
bucket_store:
sync_dir: @l_prefix@/var/mimir/db/tsdb-sync
filesystem:
dir: @l_prefix@/var/mimir/db/tsdb-data
tsdb:
dir: @l_prefix@/var/mimir/db/tsdb
compactor:
data_dir: @l_prefix@/var/mimir/db/compactor
sharding_ring:
kvstore:
store: memberlist
distributor:
ring:
instance_addr: 127.0.0.1
kvstore:
store: memberlist
ingester:
ring:
instance_addr: 127.0.0.1
kvstore:
store: memberlist
replication_factor: 1
ruler_storage:
backend: filesystem
filesystem:
dir: @l_prefix@/var/mimir/db/rules
ruler:
rule_path: @l_prefix@/var/mimir/db/ruler
server:
http_listen_port: 9009
log_level: error
store_gateway:
sharding_ring:
replication_factor: 1
activity_tracker:
filepath: @l_prefix@/var/mimir/log/mimir-activity.log

63
mimir/rc.mimir

@ -0,0 +1,63 @@
#!@l_prefix@/bin/openpkg rc
##
## rc.mimir -- Run-Commands
##
%config
mimir_enable="$openpkg_rc_def"
mimir_daemon="yes"
mimir_log_prolog="true"
mimir_log_epilog="true"
mimir_log_numfiles="10"
mimir_log_minsize="1M"
mimir_log_complevel="9"
%common
mimir_cfgfile="@l_prefix@/etc/mimir/mimir.yaml"
mimir_pidfile="@l_prefix@/var/mimir/run/mimir.pid"
mimir_logfile="@l_prefix@/var/mimir/log/mimir.log"
mimir_signal () {
[ -f $mimir_pidfile ] && kill -$1 `cat $mimir_pidfile`
}
%status -u @l_rusr@ -o
mimir_usable="unknown"
mimir_active="no"
rcService mimir enable yes && \
mimir_signal 0 && mimir_active="yes"
echo "mimir_enable=\"$mimir_enable\""
echo "mimir_usable=\"$mimir_usable\""
echo "mimir_active=\"$mimir_active\""
%start -u @l_rusr@
rcService mimir enable yes || exit 0
rcService mimir active yes && exit 0
rcVarIsYes mimir_daemon || exit 0
( eval "nohup @l_prefix@/sbin/mimir -config.file $mimir_cfgfile </dev/null >>$mimir_logfile 2>&1 &"
echo $! >$mimir_pidfile
) >/dev/null 2>&1
%stop -u @l_rusr@
rcService mimir enable yes || exit 0
rcService mimir active no && exit 0
rcVarIsYes mimir_daemon || exit 0
mimir_signal TERM
sleep 2
rm -f $mimir_pidfile >/dev/null 2>&1 || true
%restart -u @l_rusr@
rcService mimir enable yes || exit 0
rcService mimir active no && exit 0
rcVarIsYes mimir_daemon || exit 0
rc mimir stop start
%daily -u @l_susr@
rcService mimir enable yes || exit 0
rcVarIsYes mimir_daemon || exit 0
shtool rotate -f \
-n ${mimir_log_numfiles} -s ${mimir_log_minsize} -d \
-z ${mimir_log_complevel} -m 664 -o @l_rusr@ -g @l_rgrp@ \
-P "${mimir_log_prolog}" \
-E "${mimir_log_epilog}; rc mimir restart" \
$mimir_logfile
Loading…
Cancel
Save