mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Merge pull request #215 from nikbyte/master
Spec files for Redhat (Centos/Oracle Linux/Scientific Linux), Fedora
This commit is contained in:
@@ -36,6 +36,7 @@ information, please see the [`CONTRIBUTING.md`](CONTRIBUTING.md) file.
|
||||
| --------------- | --------- |
|
||||
| @danbogos | Dan Christian Bogos |
|
||||
| @eloycoto | Eloy Coto Pereiro |
|
||||
| @nikbyte | Nick Altmann |
|
||||
|
||||
<!-- to sign, include a single line above this comment containing the following text:
|
||||
| @username | First Last |
|
||||
|
||||
98
packages/redhat_fedora/cgrates.init
Normal file
98
packages/redhat_fedora/cgrates.init
Normal file
@@ -0,0 +1,98 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Startup script for CGRateS
|
||||
#
|
||||
# chkconfig: - 85 15
|
||||
# description: Carrier Grade Real-time Charging System
|
||||
#
|
||||
# processname: cgr-engine
|
||||
# pidfile: /var/run/cgrates.pid
|
||||
# config: /etc/cgrates/cgrates.json
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Provides: cgrates
|
||||
# Required-Start: $local_fs $network $named
|
||||
# Should-Start: mysqld postgresql
|
||||
# Short-Description: start, stop CGRateS
|
||||
# Description: Carrier Grade Real-time Charging System
|
||||
### END INIT INFO
|
||||
|
||||
# Source function library.
|
||||
. /etc/rc.d/init.d/functions
|
||||
|
||||
piddir="/var/run/cgrates"
|
||||
pidfile="$piddir/cgrates.pid"
|
||||
|
||||
lockfile="/var/lock/subsys/cgrates"
|
||||
|
||||
OPTIONS=""
|
||||
RETVAL=0
|
||||
|
||||
[ -f /etc/sysconfig/cgrates ] && . /etc/sysconfig/cgrates
|
||||
|
||||
start() {
|
||||
echo -n $"Starting cgrates: "
|
||||
|
||||
# check whether CGRateS was already started
|
||||
if status -p $pidfile cgr-engine > /dev/null 2>&1 ; then
|
||||
echo -n "already running" && warning && echo
|
||||
return 0
|
||||
fi
|
||||
|
||||
mkdir -p $piddir
|
||||
chown cgrates:cgrates $piddir
|
||||
su cgrates -s /bin/sh -c "cgr-engine -pid=$pidfile $OPTIONS" 2>/dev/null &
|
||||
RETVAL=$?
|
||||
if [ $RETVAL = 0 ]; then
|
||||
touch $lockfile
|
||||
echo_success
|
||||
else
|
||||
echo_failure
|
||||
fi
|
||||
echo
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n $"Stopping cgrates: "
|
||||
# check whether CGRateS is running
|
||||
if ! status -p $pidfile cgrates > /dev/null 2>&1 ; then
|
||||
echo -n "not running" && warning && echo
|
||||
return 0
|
||||
fi
|
||||
|
||||
killproc cgr-engine 2> /dev/null
|
||||
RETVAL=$?
|
||||
echo
|
||||
[ $RETVAL = 0 ] && rm -f $lockfile $pidfile
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
# See how we were called.
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
status)
|
||||
status -p $pidfile cgrates
|
||||
RETVAL=$?
|
||||
;;
|
||||
restart|reload)
|
||||
stop
|
||||
start
|
||||
;;
|
||||
condrestart|try-restart)
|
||||
if [ -f $pidfile ] ; then
|
||||
stop
|
||||
start
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: cgrates {start|stop|reload|restart|condrestart|status|help}"
|
||||
RETVAL=2
|
||||
esac
|
||||
|
||||
exit $RETVAL
|
||||
9
packages/redhat_fedora/cgrates.options
Normal file
9
packages/redhat_fedora/cgrates.options
Normal file
@@ -0,0 +1,9 @@
|
||||
# sysconfig file for CGRateS real-time charging system
|
||||
|
||||
# what extra options to give cgrates binary?
|
||||
# See cgr-engine -h for options
|
||||
#OPTIONS=''
|
||||
|
||||
# Don't forget to create an appropriate config file,
|
||||
# else the CGRateS system will not start.
|
||||
|
||||
15
packages/redhat_fedora/cgrates.service
Normal file
15
packages/redhat_fedora/cgrates.service
Normal file
@@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=Carrier Grade Real-time Charging System
|
||||
After=network.target mysqld.service postgresql.service redis.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=cgrates
|
||||
Group=cgrates
|
||||
EnvironmentFile=-/etc/sysconfig/cgrates
|
||||
ExecStart=/usr/bin/cgr-engine $OPTIONS
|
||||
Restart=always
|
||||
TimeoutStopSec=30s
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
114
packages/redhat_fedora/cgrates.spec
Normal file
114
packages/redhat_fedora/cgrates.spec
Normal file
@@ -0,0 +1,114 @@
|
||||
%global version 0.9.1rc7
|
||||
%global git_commit cc3bebd90c24b187379027e6a618e206da89d7a9
|
||||
|
||||
%global git_short_commit %(c=%{git_commit}; echo ${c:0:7})
|
||||
%define debug_package %{nil}
|
||||
%global _logdir /var/log/%name
|
||||
|
||||
Name: cgrates
|
||||
Version: %{version}.%{git_short_commit}
|
||||
Release: 1%{dist}
|
||||
Summary: Carrier Grade Real-time Charging System
|
||||
License: GPLv3
|
||||
URL: https://github.com/cgrates/cgrates
|
||||
Source0: https://github.com/cgrates/cgrates/archive/%{git_commit}.tar.gz
|
||||
|
||||
%if 0%{?fedora} > 16 || 0%{?rhel} > 6
|
||||
Requires(pre): shadow-utils
|
||||
Requires(post): systemd
|
||||
Requires(preun): systemd
|
||||
Requires(postun): systemd
|
||||
%else
|
||||
Requires(post): chkconfig
|
||||
Requires(preun):chkconfig
|
||||
Requires(preun):initscripts
|
||||
%endif
|
||||
|
||||
%description
|
||||
CGRateS is a very fast and easy scalable real-time charging system for Telecom environments.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version} -c
|
||||
mkdir -p src/github.com/cgrates
|
||||
ln -sf ../../../%{name}-%{git_commit} src/github.com/cgrates/cgrates
|
||||
|
||||
%pre
|
||||
getent group %{name} >/dev/null || groupadd -r %{name}
|
||||
getent passwd %{name} >/dev/null || \
|
||||
useradd -r -g %{name} -d %{_localstatedir}/run/%{name} -s /sbin/nologin \
|
||||
-c "CGRateS" %{name} 2>/dev/null || :
|
||||
|
||||
%post
|
||||
%if 0%{?fedora} > 16 || 0%{?rhel} > 6
|
||||
if [ $1 -eq 1 ] ; then
|
||||
# Initial installation
|
||||
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
|
||||
fi
|
||||
%else
|
||||
/sbin/chkconfig --add %{name}
|
||||
%endif
|
||||
/bin/chown -R %{name}:%{name} %{_logdir}
|
||||
|
||||
%preun
|
||||
%if 0%{?fedora} > 16 || 0%{?rhel} > 6
|
||||
if [ $1 -eq 0 ] ; then
|
||||
# Package removal, not upgrade
|
||||
/bin/systemctl --no-reload disable %{name}.service > /dev/null 2>&1 || :
|
||||
/bin/systemctl stop %{name}.service > /dev/null 2>&1 || :
|
||||
fi
|
||||
%else
|
||||
if [ $1 = 0 ]; then
|
||||
/sbin/service %{name} stop > /dev/null 2>&1
|
||||
/sbin/chkconfig --del %{name}
|
||||
fi
|
||||
%endif
|
||||
|
||||
%build
|
||||
export GO15VENDOREXPERIMENT=1
|
||||
export GOPATH=$RPM_BUILD_DIR/%{name}-%{version}
|
||||
cd $RPM_BUILD_DIR/%{name}-%{version}/src/github.com/cgrates/cgrates
|
||||
go get -v github.com/Masterminds/glide
|
||||
$GOPATH/bin/glide up
|
||||
./build.sh
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
mkdir -p $RPM_BUILD_ROOT%{_datarootdir}/%{name}
|
||||
cp -rpf src/github.com/cgrates/cgrates/data/* $RPM_BUILD_ROOT%{_datarootdir}/%{name}
|
||||
install -D -m 0644 -p src/github.com/cgrates/cgrates/data/conf/%{name}/%{name}.json $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.json
|
||||
install -D -m 0755 -p bin/cgr-console $RPM_BUILD_ROOT%{_bindir}/cgr-console
|
||||
install -D -m 0755 -p bin/cgr-engine $RPM_BUILD_ROOT%{_bindir}/cgr-engine
|
||||
install -D -m 0755 -p bin/cgr-loader $RPM_BUILD_ROOT%{_bindir}/cgr-loader
|
||||
install -D -m 0755 -p bin/cgr-tester $RPM_BUILD_ROOT%{_bindir}/cgr-tester
|
||||
mkdir -p $RPM_BUILD_ROOT%{_logdir}/cdrc/in
|
||||
mkdir -p $RPM_BUILD_ROOT%{_logdir}/cdrc/out
|
||||
mkdir -p $RPM_BUILD_ROOT%{_logdir}/cdre/csv
|
||||
mkdir -p $RPM_BUILD_ROOT%{_logdir}/cdre/fwv
|
||||
mkdir -p $RPM_BUILD_ROOT%{_logdir}/history
|
||||
install -D -m 0644 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{name}.options $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
|
||||
%if 0%{?fedora} > 16 || 0%{?rhel} > 6
|
||||
install -D -m 0644 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{name}.service $RPM_BUILD_ROOT%{_unitdir}/%{name}.service
|
||||
%else
|
||||
install -D -m 0755 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{name}.init $RPM_BUILD_ROOT%{_initrddir}/%{name}
|
||||
%endif
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%{_datarootdir}/%{name}/*
|
||||
%{_bindir}/*
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.json
|
||||
%{_logdir}/*
|
||||
%{_sysconfdir}/sysconfig/%{name}
|
||||
%if 0%{?fedora} > 16 || 0%{?rhel} > 6
|
||||
%{_unitdir}/%{name}.service
|
||||
%else
|
||||
%{_initrddir}/%{name}
|
||||
%endif
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_DIR/%{name}-%{version}
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%changelog
|
||||
* Mon Sep 28 2015 Nick Altmann <nick.altmann@gmail.com> 0.9.1rc7-1
|
||||
- Initial rhel/fedora specification
|
||||
24
packages/redhat_fedora/readme.txt
Normal file
24
packages/redhat_fedora/readme.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
Building package for RHEL/Centos/Oracle Linux/Scientific Linux/Fedora
|
||||
|
||||
PREREQUISITES
|
||||
1. Go 1.5 or newer:
|
||||
# wget https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
|
||||
# tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz
|
||||
# export GOROOT=/usr/local/go
|
||||
# export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
|
||||
|
||||
2. Git 1.8 or newer for older systems.
|
||||
|
||||
3. rpm-build and make packages.
|
||||
# yum install rpm-build make
|
||||
|
||||
BUILD
|
||||
1. Create build environment:
|
||||
- Make directories
|
||||
# mkdir -p $HOME/cgr_build/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
||||
- Download source file
|
||||
# wget -P $HOME/cgr_build/SOURCES https://github.com/cgrates/cgrates/archive/[GIT_COMMIT].tar.gz
|
||||
- Place cgrates.spec file into $HOME/cgr_build/SPECS
|
||||
2. Build:
|
||||
# cd $HOME/cgr_build
|
||||
# rpmbuild -bb --define "_topdir $HOME/cgr_build" SPECS/cgrates.spec
|
||||
Reference in New Issue
Block a user