%global selinux_types %(%{__awk} '/^#[[:space:]]*SELINUXTYPE=/,/^[^#]/ { if ($3 == "-") printf "%s ", $2 }' /etc/selinux/config 2>/dev/null)
%global selinux_variants %([ -z "%{selinux_types}" ] && echo mls strict targeted || echo %{selinux_types})
%global selinux_policyver 0.0.0
%{?systemd_requires}
Summary: Light and fast Git hosting solution
Name: @PRJ@
Version: @VER@
Release: @REV@
License: AGPLv3+
Group: Development/Tools
Source: http://kernel.embedromix.ro/us/rocketgit/%{name}-%{version}.tar.gz
URL: https://rocketgit.com/
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
BuildArch: noarch
Requires: httpd-filesystem, nginx-filesystem, php-fpm, php-cli, php-pgsql, php-mbstring
Requires: git-core, cronie, xinetd, php-json, php-ldap
Requires: util-linux, qrencode
# SELinux stuff
# https://fedoraproject.org/wiki/SELinux_Policy_Modules_Packaging_Draft?rd=PackagingDrafts/SELinux/PolicyModules
BuildRequires: checkpolicy, selinux-policy-devel, systemd, php-cli
BuildRequires: util-linux, tidy, systemd-rpm-macros
%if 0%{?fedora} < 31
BuildRequires: hardlink
%endif
# This is unknown yet. TODO
%if 0%{?rhel} < 9
BuildRequires: hardlink
%endif
Requires(pre): shadow-utils
Requires(post): /usr/sbin/semodule, /sbin/restorecon, /sbin/fixfiles
Requires(postun): /usr/sbin/semodule, /sbin/restorecon, /sbin/fixfiles
%description
Light and fast Git hosting solution, similar with Gitorious/Gitolite/etc.
%pre
getent group rocketgit >/dev/null || groupadd -r rocketgit
getent passwd rocketgit >/dev/null || useradd -r -g rocketgit -s /bin/bash -m -d /home/rocketgit -c "RocketGit user" rocketgit
%post
for type in %{selinux_variants}
do
[ -r /tmp/rgsdebug ] && echo "Installing module ${type}..."
/usr/sbin/semodule -s ${type} -i \
@USR_SHARE@/selinux/${type}/@PRJ@.pp &> /dev/null || :
done
[ -r /tmp/rgsdebug ] && echo "fixfiles -R..."
/sbin/fixfiles -R @PRJ@ restore || :
# restorecon is needed because fixfiles -R will not restore the locks!
[ -r /tmp/rgsdebug ] && echo "restorecon -R..."
/sbin/restorecon -R @VAR_LIB@/@PRJ@ || :
if [ $1 -ne 0 ]; then
[ -r /tmp/rgsdebug ] && echo "Reloading xinetd..."
/usr/bin/systemctl reload xinetd &>/dev/null || :
fi
[ -r /tmp/rgsdebug ] && echo "systemd_post fpm..."
%systemd_post @PRJ@-fpm.service
[ -r /tmp/rgsdebug ] && echo "systemd_post builder..."
%systemd_post @PRJ@-builder.service
[ -r /tmp/rgsdebug ] && echo "'post' done..."
%preun
%systemd_preun @PRJ@-fpm.service
%systemd_preun @PRJ@-builder.service
%systemd_preun @PRJ@-worker@\*.service
%postun
if [ $1 = 0 ]; then
for type in %{selinux_variants}
do
/usr/sbin/semodule -s ${type} -r @PRJ@ &> /dev/null || :
done
/sbin/fixfiles -R @PRJ@ restore || :
fi
%systemd_postun_with_restart @PRJ@-fpm.service
%systemd_postun_with_restart @PRJ@-builder.service
%systemd_postun_with_restart @PRJ@-worker@\*.service
%prep
%setup -q
%build
%configure
# TODO: should we do this in configure?!
make selinux_variants="%{selinux_variants}"
%install
rm -rf ${RPM_BUILD_ROOT}
mkdir -p ${RPM_BUILD_ROOT}
make install DESTDIR=${RPM_BUILD_ROOT}
%clean
rm -rf ${RPM_BUILD_ROOT}
%files
%defattr (-,root,root,0755)
%dir @USR_SHARE@/@PRJ@
%doc README LICENSE Changelog TODO selinux/@PRJ@.* samples/*
%attr(0700,rocketgit,rocketgit) %dir @ETC@/@PRJ@
@ETC@/@PRJ@/config.php.sample
@ETC@/httpd/conf.d/rocketgit.conf.sample
@ETC@/nginx/conf.d/rocketgit.conf.sample
@ETC@/@PRJ@/worker-main.conf.sample
%config(noreplace) @ETC@/@PRJ@/config.php
%config(noreplace) @ETC@/@PRJ@/php-fpm.conf
%config(noreplace) @ETC@/@PRJ@/pool.conf
%config(noreplace) @ETC@/cron.d/rocketgit
%config(noreplace) @ETC@/xinetd.d/rocketgit
%attr(0700,rocketgit,rocketgit) %dir @VAR_LOG@/@PRJ@
%attr(0771,rocketgit,rocketgit) %dir @VAR_LIB@/@PRJ@
%attr(0700,rocketgit,rocketgit) %dir @VAR_LIB@/@PRJ@/locks
%attr(0700,rocketgit,rocketgit) %dir @VAR_LIB@/@PRJ@/repos
%attr(0700,rocketgit,rocketgit) %dir @VAR_LIB@/@PRJ@/q_merge_requests
%attr(0700,rocketgit,rocketgit) %dir @VAR_LIB@/@PRJ@/sockets
%attr(0700,rocketgit,rocketgit) %dir @VAR_LIB@/@PRJ@/tmp
%attr(0755,root,root) @USR_SBIN@/*
@USR_SHARE@/@PRJ@/*
@USR_SHARE@/selinux/*/@PRJ@.pp
%{_unitdir}/*.service
%changelog
* Fri Jun 05 2020 Catalin(ux) M. BOIE <catab at embedromix dot ro> 0.72
Lots of changes.
* Sat Oct 26 2019 Catalin(ux) M. BOIE <catab at embedromix dot ro> 0.71
Lots of changes.
* Wed Oct 17 2012 Catalin(ux) M. BOIE <catab at embedromix dot ro> 0.10
Alpha1 version released with a lot of fixes and some features.
* Mon Jun 27 2011 Catalin(ux) M. BOIE <catab at embedromix dot ro> 0.2
Another round of bulk changes.