From 8ae53621fc347c5761eeee7e12687e2658bd5d56 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Tue, 24 Jul 2012 19:28:25 +0200 Subject: [PATCH] packaging rpm, suite --- rpm/centos.spec | 36 ++++++++++------- rpm/init.d | 105 ++++++++++++++++++++++++++++++++++++++++++++++++ rpm/sysconfig | 1 + 3 files changed, 127 insertions(+), 15 deletions(-) create mode 100644 rpm/init.d create mode 120000 rpm/sysconfig diff --git a/rpm/centos.spec b/rpm/centos.spec index 509ca8a..89356c2 100644 --- a/rpm/centos.spec +++ b/rpm/centos.spec @@ -34,13 +34,11 @@ %define git_submodule git submodule %define git_prep_submodules %{git_submodule} init --cloned && %{git_submodule} update +%define git_version %(git --git-dir=%{git_gitdir} describe 2> /dev/null || echo 0.0-`git --git-dir=%{git_gitdir} log --oneline | wc -l`-g`git --git-dir=%{git_gitdir} describe --always`) + # if the git repo has tags -%define git_get_ver %(git --git-dir=%{git_gitdir} describe --tags | sed 's/^v\\?\\(.*\\)-\\([0-9]\\+\\)-g.*$/\\1/;s/-//') -%define git_get_rel %(git --git-dir=%{git_gitdir} describe --tags | grep '\\-g.\\+$' | sed 's/^v\\?\\(.*\\)-\\([0-9]\\+\\)-g.*$/\\2/') - -# wtf... we don't want .pyo and .pyc files -%define __os_install_post echo "NO COMPRESS" - +%define git_get_ver %(echo %{git_version} | sed 's/^v\\?\\(.*\\)-\\([0-9]\\+\\)-g.*$/\\1/;s/-//') +%define git_get_rel %(echo %{git_version} | sed 's/^v\\?\\(.*\\)-\\([0-9]\\+-g.*\\)$/\\2/;s/-/_/') # # real spec starts here @@ -50,8 +48,8 @@ Summary: Polycopiés numériques Name: polynum -Version: 0.0 -Release: 1 +Version: %git_get_ver +Release: %git_get_rel License: AGPLv3+ Group: Applications/Internet URL: http://dev.entrouvert.org/projects/polynum @@ -64,6 +62,7 @@ BuildArch: noarch Requires: python26 Requires: python26-virtualenv Requires: python26-ldap +Requires(pre): /usr/sbin/groupadd, /usr/sbin/useradd Requires(post): chkconfig Requires(preun): chkconfig # This is for /sbin/service @@ -80,14 +79,17 @@ afin de mettre à disposition en ligne les polycopiés pour les étudiants. %build +# wtf... we don't want .pyo and .pyc files +%define __os_install_post echo "NO COMPRESS" + %install %{__rm} -rf %{buildroot} make DESTDIR=%{buildroot} install %{__mkdir} -p %{buildroot}/%{_sysconfdir}/%{name} -%{__mkdir} -p %{buildroot}/%{_sysconfdir}/default +%{__mkdir} -p %{buildroot}/%{_sysconfdir}/sysconfig %{__mkdir} -p %{buildroot}/%{_sysconfdir}/init.d -%{__install} -m 644 debian/polynum.default %{buildroot}/%{_sysconfdir}/default/%{name} -%{__install} -m 755 debian/init.d %{buildroot}/%{_sysconfdir}/init.d/%{name} +%{__install} -m 644 rpm/sysconfig %{buildroot}/%{_sysconfdir}/sysconfig/%{name} +%{__install} -m 755 rpm/init.d %{buildroot}/%{_sysconfdir}/init.d/%{name} %clean @@ -95,11 +97,16 @@ make DESTDIR=%{buildroot} install # set perms and ownerships of packaged files # the - indicates that the current permissions on the files should be used %defattr(-,root,root) -%doc help local_settings.py.example gunicorn_config.py.example README -%config(noreplace) %{_sysconfdir}/default/%{name} +%doc help local_settings.py.example gunicorn_config.py.example README polynum/base/fixtures +%config(noreplace) %{_sysconfdir}/sysconfig/%{name} /opt/polynum/* /etc/init.d/* -%{_sysconfdir}/%{name} +%dir %{_sysconfdir}/%{name} + +%pre +# add polynum group & user +/usr/sbin/groupadd -r polynum || : +/usr/sbin/useradd -r -c "PolyNum daemon user" -d /opt/polynum -g polynum -s /sbin/nologin polynum || : %post # This adds the proper /etc/rc*.d links for the script @@ -118,4 +125,3 @@ fi * Tue Jul 24 2012 Thomas NOEL 0.0-1 - create spec file - diff --git a/rpm/init.d b/rpm/init.d new file mode 100644 index 0000000..ef90045 --- /dev/null +++ b/rpm/init.d @@ -0,0 +1,105 @@ +#!/bin/sh +# +# polynum polycopies numeriques +# +# chkconfig: 2345 20 80 +# description: PolyNum web application + +### BEGIN INIT INFO +# Provides: +# Required-Start: $local_fs $network $syslog +# Required-Stop: +# Should-Start: +# Should-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: PolyNum +# Description: Polycopies Numeriques +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/opt/polynum/bin/polynum-manage.py" +prog="polynum" +config="/etc/polynum/local_settings.py" + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + echo -n $"Starting $prog: " + # if not running, start it up here, usually something like "daemon $exec" + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + # stop it here, often "killproc $prog" + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? + diff --git a/rpm/sysconfig b/rpm/sysconfig new file mode 120000 index 0000000..c746fff --- /dev/null +++ b/rpm/sysconfig @@ -0,0 +1 @@ +../debian/polynum.default \ No newline at end of file