Revise cgrates.spec files

This commit is contained in:
ionutboangiu
2023-06-15 08:50:30 -04:00
committed by Dan Christian Bogos
parent cac1dc82d0
commit 16ca2cec15
2 changed files with 106 additions and 103 deletions

View File

@@ -1,117 +1,113 @@
# Define global variables
%global version 0.10.3
%global go_version 1.20.5
%define debug_package %{nil}
# Define system paths
%global _logdir /var/log/%name
%global _spooldir /var/spool/%name
%global _libdir /var/lib/%name
%define debug_package %{nil}
# Define package metadata
Name: cgrates
Version: %{version}
Release: {{{releaseTag}}}
Version: v%{version}
Release: rc1.%{releaseTag}
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
BuildRequires:golang
BuildRequires:git
%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
%if 0%{?rhel}>7
BuildRequires: systemd-rpm-macros
%endif
BuildRequires: git curl tar
Requires(pre): shadow-utils
# Systemd service management macros
%{?systemd_requires}
BuildRequires: systemd-rpm-macros
%description
CGRateS is a very fast and easy scalable real-time charging system for Telecom environments.
%prep
# In the prep phase, the source is unpacked and set up for the build
%setup -q -n %{name}-%{version} -c
mkdir -p src/github.com/cgrates
ln -sf ../../../$(ls |grep %{name}-) src/github.com/cgrates/cgrates
curl -LO https://golang.org/dl/go%{go_version}.linux-amd64.tar.gz
tar -xzf go%{go_version}.linux-amd64.tar.gz -C %{_builddir}
%pre
# In the pre-install phase, user/group is created if not exists
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 || :
if ! getent passwd %{name} >/dev/null ; then
useradd -r -g %{name} -d %{_localstatedir}/run/%{name} -s /sbin/nologin \
-c "CGRateS" %{name} || exit $?
fi
%else
/sbin/chkconfig --add %{name}
%endif
/bin/chown -R %{name}:%{name} %{_logdir}
/bin/chown -R %{name}:%{name} %{_spooldir}
/bin/chown -R %{name}:%{name} %{_libdir}
sudo systemctl restart rsyslog
%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 GOPATH=$RPM_BUILD_DIR/%{name}-%{version}
cd $RPM_BUILD_DIR/%{name}-%{version}/src/github.com/cgrates/cgrates
# In the build phase, the CGRateS binaries are built
export GOPATH=%{_builddir}/%{name}-%{version}
cd %{_builddir}/%{name}-%{version}/src/github.com/cgrates/cgrates
export PATH=$PATH:%{_builddir}/go/bin
./build.sh
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/conf/ $RPM_BUILD_ROOT%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/diameter/ $RPM_BUILD_ROOT%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/postman/ $RPM_BUILD_ROOT%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/radius/ $RPM_BUILD_ROOT%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/tariffplans/ $RPM_BUILD_ROOT%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/tutorial_tests/ $RPM_BUILD_ROOT%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/tutorials/ $RPM_BUILD_ROOT%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/storage/mongo $RPM_BUILD_ROOT%{_datarootdir}/%{name}/storage
cp -rpf src/github.com/cgrates/cgrates/data/storage/mysql $RPM_BUILD_ROOT%{_datarootdir}/%{name}/storage
cp -rpf src/github.com/cgrates/cgrates/data/storage/postgres $RPM_BUILD_ROOT%{_datarootdir}/%{name}/storage
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
install -D -m 0755 -p bin/cgr-migrator $RPM_BUILD_ROOT%{_bindir}/cgr-migrator
mkdir -p $RPM_BUILD_ROOT%{_logdir}/cdre/csv
mkdir -p $RPM_BUILD_ROOT%{_logdir}/cdre/fwv
mkdir -p $RPM_BUILD_ROOT%{_spooldir}/cdre/csv
mkdir -p $RPM_BUILD_ROOT%{_spooldir}/cdre/fwv
mkdir -p $RPM_BUILD_ROOT%{_spooldir}/tpe
mkdir -p $RPM_BUILD_ROOT%{_spooldir}/failed_posts
mkdir -p $RPM_BUILD_ROOT%{_libdir}/cache_dump
mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
mkdir -p $RPM_BUILD_ROOT/etc/rsyslog.d
install -m 755 src/github.com/cgrates/cgrates/data/conf/logging/logrotate.conf $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
install -m 755 src/github.com/cgrates/cgrates/data/conf/logging/rsyslog.conf $RPM_BUILD_ROOT/etc/rsyslog.d/%{name}.conf
install -D -m 0644 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{name}.options $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
# In the install phase, files are copied to buildroot
rm -rf %{buildroot}
mkdir -p %{buildroot}%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/conf/ %{buildroot}%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/diameter/ %{buildroot}%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/postman/ %{buildroot}%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/radius/ %{buildroot}%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/tariffplans/ %{buildroot}%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/tutorial_tests/ %{buildroot}%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/tutorials/ %{buildroot}%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/storage/mongo %{buildroot}%{_datarootdir}/%{name}/storage
cp -rpf src/github.com/cgrates/cgrates/data/storage/mysql %{buildroot}%{_datarootdir}/%{name}/storage
cp -rpf src/github.com/cgrates/cgrates/data/storage/postgres %{buildroot}%{_datarootdir}/%{name}/storage
install -D -m 0644 -p src/github.com/cgrates/cgrates/data/conf/%{name}/%{name}.json %{buildroot}%{_sysconfdir}/%{name}/%{name}.json
install -D -m 0755 -p bin/cgr-console %{buildroot}%{_bindir}/cgr-console
install -D -m 0755 -p bin/cgr-engine %{buildroot}%{_bindir}/cgr-engine
install -D -m 0755 -p bin/cgr-loader %{buildroot}%{_bindir}/cgr-loader
install -D -m 0755 -p bin/cgr-tester %{buildroot}%{_bindir}/cgr-tester
install -D -m 0755 -p bin/cgr-migrator %{buildroot}%{_bindir}/cgr-migrator
mkdir -p %{buildroot}%{_logdir}/cdre/csv
mkdir -p %{buildroot}%{_logdir}/cdre/fwv
mkdir -p %{buildroot}%{_spooldir}/cdre/csv
mkdir -p %{buildroot}%{_spooldir}/cdre/fwv
mkdir -p %{buildroot}%{_spooldir}/tpe
mkdir -p %{buildroot}%{_spooldir}/failed_posts
mkdir -p %{buildroot}%{_libdir}/cache_dump
mkdir -p %{buildroot}/etc/logrotate.d
mkdir -p %{buildroot}/etc/rsyslog.d
install -m 0644 src/github.com/cgrates/cgrates/data/conf/logging/logrotate.conf %{buildroot}/etc/logrotate.d/%{name}
install -m 0644 src/github.com/cgrates/cgrates/data/conf/logging/rsyslog.conf %{buildroot}/etc/rsyslog.d/%{name}.conf
install -D -m 0644 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{name}.options %{buildroot}%{_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
install -D -m 0644 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{name}.service %{buildroot}%{_unitdir}/%{name}.service
%else
install -D -m 0755 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{name}.init $RPM_BUILD_ROOT%{_initrddir}/%{name}
install -D -m 0755 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{name}.init %{buildroot}%{_initrddir}/%{name}
%endif
%post
# After package installation, enable and start the service
%systemd_post %{name}.service
# Change the ownership of the directories to the created user
/bin/chown -R %{name}:%{name} %{_logdir}
/bin/chown -R %{name}:%{name} %{_spooldir}
/bin/chown -R %{name}:%{name} %{_libdir}
# Restart rsyslog to apply the /etc/rsyslog.d/cgrates.conf
sudo systemctl restart rsyslog
%preun
# Before package removal, stop the service
%systemd_preun %{name}.service
%postun
# After package removal, try to restart the service in case of an update
%systemd_postun_with_restart %{name}.service
%files
%defattr(-,root,root,-)
%{_datarootdir}/%{name}/*
@@ -123,12 +119,5 @@ install -D -m 0644 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{na
%{_sysconfdir}/sysconfig/%{name}
/etc/logrotate.d/%{name}
/etc/rsyslog.d/%{name}.conf
%if 0%{?fedora} > 16 || 0%{?rhel} > 6
%{_unitdir}/%{name}.service
%else
%{_initrddir}/%{name}
%endif
%clean
#sudo rm -rf $RPM_BUILD_DIR/%{name}-%{version}
#sudo rm -rf $RPM_BUILD_ROOT
%{?_unitdir:%{_unitdir}/%{name}.service}
%{!?_unitdir:%{_initrddir}/%{name}}

View File

@@ -2,21 +2,24 @@
%global version 0.10.3
%global git_commit %(echo $gitLastCommit)
%global releaseTag %(echo $rpmTag)
%global go_version 1.20.5
# Define system paths
%global _logdir /var/log/%name
%global _spooldir /var/spool/%name
%global _libdir /var/lib/%name
%define debug_package %{nil}
# Define package metadata
Name: cgrates
Version: %{version}
Release: %{releaseTag}
Version: v%{version}
Release: rc1.%{releaseTag}
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
BuildRequires: git wget
BuildRequires: git curl tar
Requires(pre): shadow-utils
# Systemd service management macros
@@ -27,27 +30,30 @@ BuildRequires: systemd-rpm-macros
CGRateS is a very fast and easy scalable real-time charging system for Telecom environments.
%prep
# In the prep phase, the source is unpacked and set up for the build
%setup -q -n %{name}-%{version} -c
mkdir -p src/github.com/cgrates
ln -sf ../../../$(ls |grep %{name}-) src/github.com/cgrates/cgrates
wget https://go.dev/dl/go1.20.5.linux-amd64.tar.gz
tar -xzf go1.20.5.linux-amd64.tar.gz -C %{_builddir}
curl -LO https://golang.org/dl/go%{go_version}.linux-amd64.tar.gz
tar -xzf go%{go_version}.linux-amd64.tar.gz -C %{_builddir}
%pre
# In the pre-install phase, user/group is created if not exists
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 || :
if ! getent passwd %{name} >/dev/null ; then
useradd -r -g %{name} -d %{_localstatedir}/run/%{name} -s /sbin/nologin \
-c "CGRateS" %{name} || exit $?
fi
%build
# In the build phase, the CGRateS binaries are built
export GOPATH=%{_builddir}/%{name}-%{version}
cd %{_builddir}/%{name}-%{version}/src/github.com/cgrates/cgrates
export PATH=$PATH:%{_builddir}/go/bin
./build.sh
%undefine _missing_build_ids_terminate_build
%install
# In the install phase, files are copied to buildroot
rm -rf %{buildroot}
mkdir -p %{buildroot}%{_datarootdir}/%{name}
cp -rpf src/github.com/cgrates/cgrates/data/conf/ %{buildroot}%{_datarootdir}/%{name}
@@ -75,8 +81,8 @@ mkdir -p %{buildroot}%{_spooldir}/failed_posts
mkdir -p %{buildroot}%{_libdir}/cache_dump
mkdir -p %{buildroot}/etc/logrotate.d
mkdir -p %{buildroot}/etc/rsyslog.d
install -m 755 src/github.com/cgrates/cgrates/data/conf/logging/logrotate.conf %{buildroot}/etc/logrotate.d/%{name}
install -m 755 src/github.com/cgrates/cgrates/data/conf/logging/rsyslog.conf %{buildroot}/etc/rsyslog.d/%{name}.conf
install -m 0644 src/github.com/cgrates/cgrates/data/conf/logging/logrotate.conf %{buildroot}/etc/logrotate.d/%{name}
install -m 0644 src/github.com/cgrates/cgrates/data/conf/logging/rsyslog.conf %{buildroot}/etc/rsyslog.d/%{name}.conf
install -D -m 0644 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{name}.options %{buildroot}%{_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 %{buildroot}%{_unitdir}/%{name}.service
@@ -88,6 +94,14 @@ install -D -m 0644 -p src/github.com/cgrates/cgrates/packages/redhat_fedora/%{na
# After package installation, enable and start the service
%systemd_post %{name}.service
# Change the ownership of the directories to the created user
/bin/chown -R %{name}:%{name} %{_logdir}
/bin/chown -R %{name}:%{name} %{_spooldir}
/bin/chown -R %{name}:%{name} %{_libdir}
# Restart rsyslog to apply the /etc/rsyslog.d/cgrates.conf
sudo systemctl restart rsyslog
%preun
# Before package removal, stop the service
%systemd_preun %{name}.service