xaizek / rocketgit (License: AGPLv3+) (since 2018-12-09)
Light and fast Git hosting solution suitable to serve both as a hub or as a personal code storage with its tickets, pull requests, API and much more.
<root> / rocketgit.spec.in (1d19fcac5abc96f5aa3412ee9ee4e7f0dfe0bc08) (3,742B) (mode 100644) [raw]
%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
Requires:	git, cronie, xinetd
Requires:	util-linux
# SELinux stuff
# https://fedoraproject.org/wiki/SELinux_Policy_Modules_Packaging_Draft?rd=PackagingDrafts/SELinux/PolicyModules
BuildRequires:	checkpolicy, selinux-policy-devel, hardlink, systemd, php-cli
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
	/sbin/service xinetd reload &>/dev/null || :
fi
%systemd_post @PRJ@-fpm.service

%preun
%systemd_preun @PRJ@-fpm.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 @PRJ@-fpm.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
%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(0755,root,root) %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(0700,root,root) %dir @VAR_LIB@/@PRJ@/worker
%attr(0755,root,root) @USR_SBIN@/*
@USR_SHARE@/@PRJ@/*
@USR_SHARE@/selinux/*/@PRJ@.pp
%{_unitdir}/*.service

%changelog
* 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.
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/rocketgit

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/rocketgit

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master