[packages/nginx/dev-dynamic] restart webserver when adding/removing modules

glen glen at pld-linux.org
Wed Oct 19 22:46:45 CEST 2016


commit 6d00ffc321fcd5cd4bfd35bce8172e158c836ea6
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Wed Oct 19 23:45:33 2016 +0300

    restart webserver when adding/removing modules
    
    ... but not when upgrading whole set
    
    ripped from apache.spec where such process already done decade ago

 nginx.spec | 52 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 49 insertions(+), 3 deletions(-)
---
diff --git a/nginx.spec b/nginx.spec
index a18274e..daa05f8 100644
--- a/nginx.spec
+++ b/nginx.spec
@@ -42,7 +42,7 @@ Summary(pl.UTF-8):	Serwer HTTP i odwrotne proxy o wysokiej wydajności
 # - mainline: production quality but API can change
 Name:		nginx
 Version:	1.11.5
-Release:	0.5
+Release:	0.6
 License:	BSD-like
 Group:		Networking/Daemons/HTTP
 Source0:	http://nginx.org/download/%{name}-%{version}.tar.gz
@@ -117,11 +117,48 @@ Requires(pre):	/usr/sbin/useradd
 Requires:	rc-scripts >= 0.2.0
 Requires:	systemd-units >= 38
 Suggests:	vim-syntax-nginx
+Conflicts:	rpm < 4.4.2-0.2
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %define		_sysconfdir	/etc/%{name}
 %define		_nginxdir	/home/services/%{name}
 
+# minimizing restarts logics. we restart webserver:
+#
+# 1. at the end of transaction. (posttrans, feature from rpm 4.4.2)
+# 2. first install of module (post: $1 = 1)
+# 2. uninstall of module (postun: $1 == 0)
+#
+# the strict internal deps between modules and
+# main package are very important for all this to work.
+
+# restart webserver at the end of transaction
+
+%define	restart_webserver \
+	%systemd_post %{name}.service \
+	%service %{name} force-reload \
+	%{nil}
+
+# macro called at module post scriptlet
+%define	module_post \
+if [ "$1" = "1" ]; then \
+	%restart_webserver \
+fi
+
+# macro called at module postun scriptlet
+%define	module_postun \
+if [ "$1" = "0" ]; then \
+	%restart_webserver \
+fi
+
+# it's sooo annoying to write them
+%define	module_scripts() \
+%post %1 \
+%module_post \
+\
+%postun %1 \
+%module_postun
+
 %description
 nginx ("engine x") is a high-performance HTTP server and reverse
 proxy, as well as an IMAP/POP3 proxy server. nginx was written by Igor
@@ -370,8 +407,9 @@ for a in access.log error.log; do
 	fi
 done
 /sbin/chkconfig --add %{name}
-%systemd_post %{name}.service
-%service %{name} force-reload
+
+%posttrans
+%restart_webserver
 
 %preun
 if [ "$1" = "0" ];then
@@ -387,6 +425,14 @@ if [ "$1" = "0" ]; then
 fi
 %systemd_reload
 
+%module_scripts mod_http_geoip
+%module_scripts mod_http_image_filter
+%module_scripts mod_http_perl
+%module_scripts mod_http_xslt_filter
+%module_scripts mod_mail
+%module_scripts mod_stream
+%module_scripts mod_stream_geoip
+
 %files
 %defattr(644,root,root,755)
 %doc CHANGES LICENSE README html/index.html conf/nginx.conf
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/nginx.git/commitdiff/6d00ffc321fcd5cd4bfd35bce8172e158c836ea6



More information about the pld-cvs-commit mailing list