%define gitosis_uid 65418 %define gitosis_gid 65418 %define cgidir %(/usr/sbin/apxs -q cgidir 2>/dev/null) %define serverdir %(/usr/sbin/apxs -q htdocsdir 2>/dev/null) # To create a customized installation of git-web: # autospec -u gitosis -a5 \ # -d "username=gitosis-example, \ # sitename=git.example.com, \ # adminmail=webmaster@example.com" %if "%{?installdir}" == "" %define installdir %{serverdir}/gitweb %endif %if "%{?sitename}" != "" %define cgidir %{installdir} %define serverlogdir %(/usr/sbin/apxs -q logfiledir 2>/dev/null) %else %if "%{?aliasdir}" == "" %define aliasdir /gitweb %endif %endif Name: %{?sitename:%sitename-website-}gitosis Version: 0.2.git20090916 Release: 4mamba Summary: A software for hosting git repositories Group: System/Libraries/Python Vendor: openmamba Distribution: openmamba Packager: Stefano Cotta Ramusino URL: http://eagain.net/software/gitosis/ # Package got with: # git_server=git://eagain.net/gitosis.git # stable_version=0.2 # git clone --bare ${git_server:?no server URL} # directory=${git_server##*/} # [ ! -d "$directory" ] && echo "Error retrieving $name." >&2 || cd $directory # name=${name:-$(basename $directory .git)}-${stable_version:-0.0}.git$(date -d "$(echo $(git whatchanged -1 | grep Date) | cut -d' ' -f3,4,6)" "+%Y%m%d") # git archive --format=tar --prefix=$name/ HEAD | bzip2 -9 > $(rpm --eval %_sourcedir)/$name.tar.bz2 Source: gitosis-%{version}.tar.bz2 Source1: gitosis-httpconf Source2: gitosis-gitwebconf # Patch from git://github.com/Necoro/gitosis.git Patch: gitosis-0.2.git20090916-cgit.patch License: GPL Requires: python >= %python_version Requires: python-setuptools ## AUTOBUILDREQ-BEGIN BuildRequires: libpython-devel BuildRequires: python ## AUTOBUILDREQ-END BuildRoot: %{_tmppath}/%{name}-%{version}-root Requires: gitweb Requires: gitosis-common BuildArch: noarch %description gitosis aims to make hosting git repos easier and safer. It manages multiple repositories under one user account, using SSH keys to identify users. End users do not need shell accounts on the server, they will talk to one shared account that will not let them run arbitrary commands. %package -n gitosis-common Summary: gitosis common files used by different web services Group: Applications/Web Requires: git %description -n gitosis-common Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals. This package provides a WEB interface for git. %prep %setup -q -n gitosis-%{version} %patch -p1 %build %{__python} setup.py build %install [ "%{buildroot}" != / ] && rm -rf "%{buildroot}" %{__python} setup.py install \ -O1 \ --skip-build \ --root="%{buildroot}" \ --install-headers=%{_includedir}/python \ --install-lib=%{python_sitearch} install -d %{buildroot}%{_sysconfdir}/httpd/httpd.d %if "%{?sitename}" != "" install %{SOURCE1} %{buildroot}%{_sysconfdir}/httpd/httpd.d/%{sitename}.conf sed -i "s|@adminmail@|%{adminmail}|g" %{buildroot}%{_sysconfdir}/httpd/httpd.d/%{sitename}.conf sed -i "s|@sitename@|%{sitename}|g" %{buildroot}%{_sysconfdir}/httpd/httpd.d/%{sitename}.conf install -d %{buildroot}/var/lib/%{sitename}/gitosis install -m 0644 %{SOURCE2} %{buildroot}/var/lib/%{sitename}/gitosis/gitweb.conf sed -i "s|@sitename@|%{sitename}|g" %{buildroot}/var/lib/%{sitename}/gitosis/gitweb.conf %else install %{SOURCE1} %{buildroot}%{_sysconfdir}/httpd/httpd.d/%{name}.conf sed -i "s|@adminmail@|webmaster@localhost|" %{buildroot}%{_sysconfdir}/httpd/httpd.d/%{name}.conf sed -i "s|@sitename@|%{name}|" %{buildroot}%{_sysconfdir}/httpd/httpd.d/%{name}.conf install -d %{buildroot}/var/lib/%{name}/gitosis install -m 0644 %{SOURCE2} %{buildroot}/var/lib/%{name}/gitosis/gitweb.conf sed -i "s|@sitename@|%{name}|" %{buildroot}/var/lib/%{name}/gitosis/gitweb.conf %endif %clean [ "%{buildroot}" != / ] && rm -rf "%{buildroot}" %pre %if "%{?username}" != "" if [ $1 -ge 1 ]; then /usr/sbin/groupadd -r %{username} 2>/dev/null /usr/sbin/useradd -r -d %{_localstatedir}/lib/%{sitename} -g %{username} \ -s /bin/sh -c "git repository hosting for %{sitename}" %{username} 2>/dev/null fi %else if [ $1 -ge 1 ]; then /usr/sbin/groupadd -g %{gitosis_gid} -r gitosis 2>/dev/null /usr/sbin/useradd -r -u %{gitosis_uid} -d %{_localstatedir}/lib/gitosis -g gitosis \ -s /bin/sh -c "git repository hosting" gitosis 2>/dev/null fi %endif : %preun %if "%{?username}" != "" if [ $1 -eq 0 ]; then /usr/sbin/userdel %{username} 2>/dev/null /usr/sbin/groupdel %{username} 2>/dev/null fi %else if [ $1 -eq 0 ]; then /usr/sbin/userdel gitosis 2>/dev/null /usr/sbin/groupdel gitosis 2>/dev/null fi %endif : %files %defattr(-,root,root) %if "%{?sitename}" != "" %config(noreplace) %{_sysconfdir}/httpd/httpd.d/%{sitename}.conf %dir %attr(0755,%{username},%{username}) %{_localstatedir}/lib/%{sitename} %dir %attr(0755,%{username},%{username}) %{_localstatedir}/lib/%{sitename}/gitosis %config(noreplace) %{_localstatedir}/lib/%{sitename}/gitosis/gitweb.conf %else %config(noreplace) %{_sysconfdir}/httpd/httpd.d/%{name}.conf %dir %attr(0755,gitosis,gitosis) %{_localstatedir}/lib/%{name} %dir %attr(0755,gitosis,gitosis) %{_localstatedir}/lib/%{name}/gitosis %config(noreplace) %{_localstatedir}/lib/%{name}/gitosis/gitweb.conf %endif %files -n gitosis-common %defattr(-,root,root) %{_bindir}/gitosis-* %{python_sitearch}/gitosis-*.egg-info %{python_sitearch}/gitosis %doc COPYING example.conf README.rst TODO.rst gitweb.conf %changelog * Thu Apr 21 2011 Silvan Calarco 0.2.git20090916-4mamba - moved webserver automatic configuration from gitweb which is now a requirement - added per-server package configuration * Wed Mar 24 2010 Stefano Cotta Ramusino 0.2.git20090916-3mamba - added patch to support cgit - create gitosis user and group with databse defined ids - set repository directory as %{_localstatedir}/lib/gitosis * Mon Feb 01 2010 Silvan Calarco 0.2.git20090916-2mamba - create git user and group with databse defined ids - set repository directory as %{_localstatedir}/lib/git - added requirement for python-setuptools * Thu Dec 10 2009 Stefano Cotta Ramusino 0.2.git20090916-1mamba - package created by autospec