[Pkg-php-commits] [php/debian-sid] Add FPM SAPI to unstable build

Ondřej Surý ondrej at sury.org
Wed Feb 16 15:12:46 UTC 2011


This reverts commit e180d3c69cd590fe30d2227fdbc1668ca4cd5bf7.
---
 debian/control           |   23 +++++++++++++++--
 debian/php5-fpm.init     |   58 +++++++++++++++++++++++++++++++++++++++++++
 debian/php5-fpm.postinst |   15 +++++++++++
 debian/rules             |   61 +++++++++++++++++++++++++++++++++++++++-------
 4 files changed, 145 insertions(+), 12 deletions(-)
 create mode 100644 debian/php5-fpm.init
 create mode 100644 debian/php5-fpm.postinst

diff --git a/debian/control b/debian/control
index d4e2f86..a59ff77 100644
--- a/debian/control
+++ b/debian/control
@@ -73,10 +73,10 @@ Homepage: http://www.php.net/
 
 Package: php5
 Architecture: all
-Depends: ${misc:Depends}, libapache2-mod-php5 (>= ${source:Version}) | libapache2-mod-php5filter (>= ${source:Version}) | php5-cgi (>= ${source:Version}), php5-common (>= ${source:Version})
+Depends: ${misc:Depends}, libapache2-mod-php5 (>= ${source:Version}) | libapache2-mod-php5filter (>= ${source:Version}) | php5-cgi (>= ${source:Version}) | php5-fpm (>= ${source:Version}), php5-common (>= ${source:Version})
 Description: server-side, HTML-embedded scripting language (metapackage)
  This package is a metapackage that, when installed, guarantees that you
- have at least one of the three server-side versions of the PHP5 interpreter
+ have at least one of the four server-side versions of the PHP5 interpreter
  installed. Removing this package won't remove PHP5 from your system, however
  it may remove other packages that depend on this one.
  .
@@ -182,6 +182,23 @@ Description: command-line interpreter for the php5 scripting language
  dynamically generated pages quickly. This version of PHP5 was built
  with the Suhosin patch.
 
+Package: php5-fpm
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, mime-support, php5-common (= ${binary:Version}), libmagic1, ucf, tzdata
+Provides: ${php:Provides}
+Suggests: php-pear
+Description: server-side, HTML-embedded scripting language (FPM-CGI binary)
+ This package provides the Fast Process Manager interpreter that runs
+ as a daemon and receives Fast/CGI requests.  Note that MOST Apache users
+ probably want the libapache2-mod-php5 package.
+ .
+ ${php:Extensions}
+ .
+ PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed
+ from C, Java and Perl with a couple of unique PHP-specific features thrown
+ in. The goal of the language is to allow web developers to write dynamically
+ generated pages quickly. This version of PHP5 was built with the Suhosin patch.
+
 Package: php5-dev
 Depends: ${misc:Depends}, autoconf (>= 2.63), automake (>= 1.11), libssl-dev, libtool (>= 2.2), shtool, php5-common (>= ${binary:Version})
 Conflicts: ${libtool:Conflicts}
@@ -197,7 +214,7 @@ Description: Files for PHP5 module development
  with the Suhosin patch.
 
 Package: php5-dbg
-Depends: ${misc:Depends}, php5-common (= ${binary:Version}), libapache2-mod-php5 (= ${binary:Version}) | libapache2-mod-php5filter (= ${binary:Version}) | php5-cgi (= ${binary:Version}) | php5-cli (= ${binary:Version}) | php5-curl (= ${binary:Version}) | php5-enchant (= ${binary:Version}) | php5-gd (= ${binary:Version}) | php5-gmp (= ${binary:Version}) | php5-imap (= ${binary:Version}) | php5-interbase (= ${binary:Version}) | php5-intl (= ${binary:Version}) | php5-ldap (= ${binary:Version}) | php5-mcrypt (= ${binary:Version}) | php5-mysql (= ${binary:Version}) | php5-odbc (= ${binary:Version}) | php5-pgsql (= ${binary:Version}) | php5-pspell (= ${binary:Version}) | php5-recode (= ${binary:Version}) | php5-snmp (= ${binary:Version}) | php5-sqlite (= ${binary:Version}) | php5-sybase (= ${binary:Version}) | php5-tidy (= ${binary:Version}) | php5-xmlrpc (= ${binary:Version}) | php5-xsl (= ${binary:Version})
+Depends: ${misc:Depends}, php5-common (= ${binary:Version}), libapache2-mod-php5 (= ${binary:Version}) | libapache2-mod-php5filter (= ${binary:Version}) | php5-cgi (= ${binary:Version}) | php5-cli (= ${binary:Version}) | php5-fpm (= ${binary:Version}) | php5-curl (= ${binary:Version}) | php5-enchant (= ${binary:Version}) | php5-gd (= ${binary:Version}) | php5-gmp (= ${binary:Version}) | php5-imap (= ${binary:Version}) | php5-interbase (= ${binary:Version}) | php5-intl (= ${binary:Version}) | php5-ldap (= ${binary:Version}) | php5-mcrypt (= ${binary:Version}) | php5-mysql (= ${binary:Version}) | php5-odbc (= ${binary:Version}) | php5-pgsql (= ${binary:Version}) | php5-pspell (= ${binary:Version}) | php5-recode (= ${binary:Version}) | php5-snmp (= ${binary:Version}) | php5-sqlite (= ${binary:Version}) | php5-sybase (= ${binary:Version}) | php5-tidy (= ${binary:Version}) | php5-xmlrpc (= ${binary:Version}) | php5-xsl (= ${binary:Version})
 Recommends: gdb
 Section: debug
 Priority: extra
diff --git a/debian/php5-fpm.init b/debian/php5-fpm.init
new file mode 100644
index 0000000..945bd09
--- /dev/null
+++ b/debian/php5-fpm.init
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:          php-fpm php5-fpm
+# Required-Start:    $remote_fs $network
+# Required-Stop:     $remote_fs $network
+# Default-Start:     2 3 4 5
+# Default-Stop:
+# Short-Description: starts php-fpm
+### END INIT INFO
+
+set -u
+
+DAEMON="PHP5 FPM"
+FPM_CMD=/usr/sbin/php5-fpm
+FPM_CONF=/etc/php5/fpm/main.conf
+FPM_PID=/var/run/php5-fpm.pid
+TIMEOUT=30
+
+FPM_OPTIONS="--fpm-config $FPM_CONF"
+SSD_OPTIONS="--oknodo --quiet --pidfile $FPM_PID --exec $FPM_CMD"
+
+. /lib/lsb/init-functions
+
+case "$1" in
+    start)
+	log_begin_msg "Starting $DAEMON..."
+
+	/sbin/start-stop-daemon --start $SSD_OPTIONS -- $FPM_OPTIONS
+	log_end_msg $?
+    ;;
+    stop)
+	log_begin_msg "Stopping $DAEMON..."
+
+	/sbin/start-stop-daemon --stop $SSD_OPTIONS
+	log_end_msg $?
+    ;;
+    graceful-stop)
+	log_begin_msg "Gracefully stopping $DAEMON..."
+
+	/sbin/start-stop-daemon --stop --retry QUIT/$TIMEOUT/TERM $SSD_OPTIONS
+	log_end_msg $?
+    ;;
+    restart)
+	$0 stop
+	$0 start
+    ;;
+    reload|force-reload)
+	log_begin_msg "Reloading $DAEMON..."
+
+	/sbin/start-stop-daemon --stop --signal USR2 $SSD_OPTIONS
+	log_end_msg $?
+    ;;
+    *)
+	echo "Usage: $0 {start|stop|graceful-stop|restart|reload|force-reload}"
+	exit 1
+    ;;
+esac
diff --git a/debian/php5-fpm.postinst b/debian/php5-fpm.postinst
new file mode 100644
index 0000000..19246bf
--- /dev/null
+++ b/debian/php5-fpm.postinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+if [ "$1" != "configure" ]; then
+    exit 0
+fi
+
+phpini="/etc/php5/fpm/php.ini"
+
+ucf /usr/share/php5/php.ini-production $phpini
+
+exit 0
diff --git a/debian/rules b/debian/rules
index 4d38363..4fea88e 100755
--- a/debian/rules
+++ b/debian/rules
@@ -190,7 +190,7 @@ else
 	echo 'nocheck found in DEB_BUILD_OPTIONS' | tee test-results.txt
 endif
 
-build: build-apache2-stamp build-apache2filter-stamp build-cgi-stamp build-cli-stamp build-pear-stamp test-results.txt
+build: build-apache2-stamp build-apache2filter-stamp build-cgi-stamp build-cli-stamp build-fpm-stamp build-pear-stamp test-results.txt
 
 build-apache2-stamp: configure-apache2-stamp
 	dh_testdir
@@ -210,6 +210,13 @@ build-cli-stamp: configure-cli-stamp
 
 	touch build-cli-stamp
 
+build-fpm-stamp: configure-fpm-stamp
+	dh_testdir
+	cd fpm-build && $(MAKE)
+
+	touch build-fpm-stamp
+
+
 build-cgi-stamp: configure-cgi-stamp
 	dh_testdir
 	cd cgi-build && $(MAKE) && mv sapi/cgi/php-cgi sapi/cgi/cgi-bin.php5
@@ -241,7 +248,7 @@ build-pear-stamp: build-cgi-stamp
 	sed -i -re "s#('PEAR_CONFIG_SYSCONFDIR', PHP_SYSCONFDIR)#\1 . '/pear'#" $(CURDIR)/pear-build/usr/share/php/PEAR/Config.php
 	touch build-pear-stamp
 
-configure: configure-apache2-stamp configure-apache2filter-stamp configure-cli-stamp configure-cgi-stamp
+configure: configure-apache2-stamp configure-apache2filter-stamp configure-cli-stamp configure-fpm-stamp configure-cgi-stamp
 
 configure-apache2-stamp: prepared-stamp
 	dh_testdir
@@ -362,6 +369,29 @@ configure-cli-stamp: prepared-stamp
 	   Zend/
 	touch configure-cli-stamp
 
+configure-fpm-stamp: prepared-stamp
+	dh_testdir
+	if [ -d fpm-build ]; then rm -rf fpm-build; fi
+	-mkdir fpm-build
+	cd fpm-build && \
+        CFLAGS="$(CFLAGS)" PROG_SENDMAIL="$(PROG_SENDMAIL)" ../configure \
+		--prefix=/usr --enable-fpm --disable-cgi \
+		--with-fpm-user=www-data --with-fpm-group=www-data \
+		--with-config-file-path=/etc/php5/fpm \
+		--with-config-file-scan-dir=/etc/php5/fpm/conf.d \
+		$(COMMON_CONFIG) \
+		--with-libevent-dir=/usr \
+		--without-mm \
+		--disable-pdo \
+		--without-mysql --without-sybase-ct --without-sqlite \
+		--without-mssql --without-sqlite3
+	cd fpm-build && \
+	cp ../Zend/zend_ini_scanner.c ../Zend/zend_language_scanner.c \
+	   ../Zend/zend_ini_parser.h ../Zend/zend_language_parser.h \
+	   ../Zend/zend_ini_parser.c ../Zend/zend_language_parser.c \
+	   Zend/
+	touch configure-fpm-stamp
+
 clean: unprepared unpatch
 	dh_testdir
 	dh_testroot
@@ -371,12 +401,14 @@ clean: unprepared unpatch
 	rm -f configure-apache2filter-stamp build-apache2filter-stamp
 	rm -f configure-cgi-stamp build-cgi-stamp
 	rm -f configure-cli-stamp build-cli-stamp
+	rm -f configure-fpm-stamp build-fpm-stamp
 	rm -f build-pear-stamp
 	rm -f install-stamp
 	rm -rf apache2-build
 	rm -rf apache2filter-build
 	rm -rf cgi-build
 	rm -rf cli-build
+	rm -rf fpm-build
 	rm -rf pear-build pear-build-download
 	rm -f debian/copyright
 	rm -rf test-results.txt $(MYSQL_DATA_DIR)
@@ -386,7 +418,7 @@ clean: unprepared unpatch
 	cat debian/modulelist | while read package extname dsoname; do \
 		rm -f debian/php5-$$package.postinst; \
 	done
-	for sapi in libapache2-mod-php5 libapache2-mod-php5filter php5-cgi php5-cli; do \
+	for sapi in libapache2-mod-php5 libapache2-mod-php5filter php5-cgi php5-cli php5-fpm; do \
 		for cruft in postrm links; do \
 			rm -f debian/$${sapi}.$${cruft}; \
 		done; \
@@ -465,7 +497,7 @@ install: build
 
 	# install extensions
 	ext=`./debian/libapache2-mod-php5/usr/bin/php-config --extension-dir`;\
-	for i in libapache2-mod-php5 libapache2-mod-php5filter php5-cgi php5-cli; do \
+	for i in libapache2-mod-php5 libapache2-mod-php5filter php5-cgi php5-fpm php5-cli; do \
 		mkdir -p debian/$$i/$${ext}; \
 	done; \
 	cat debian/modulelist debian/extramodulelist | while read package extname dsoname; do \
@@ -488,6 +520,17 @@ install: build
 	cp cli-build/sapi/cli/php debian/php5-cli/usr/bin/php5
 	cp cli-build/sapi/cli/php.1 debian/php5-cli/usr/share/man/man1/php5.1
 
+	# install FPM
+	mkdir -p debian/php5-fpm/usr/sbin debian/php5-fpm/usr/share/man/man8/ debian/php5-fpm/etc/php5/fpm/pool.d
+	cp fpm-build/sapi/fpm/php-fpm debian/php5-fpm/usr/sbin/php5-fpm
+	cp fpm-build/sapi/fpm/php-fpm.1 debian/php5-fpm/usr/share/man/man8/php5-fpm.8
+	# we don't want the pool definitions on the main file itself:
+	sed -r '/('"'"'|\[)www('"'"'|\])/Q' < fpm-build/sapi/fpm/php-fpm.conf > \
+	    debian/php5-fpm/etc/php5/fpm/main.conf
+	# extract the first pool, called "www," from the config file:
+	sed -nr '/('"'"'|\[)www('"'"'|\])/{h;p;d};x;/www/{x;p}' < fpm-build/sapi/fpm/php-fpm.conf \
+	    > debian/php5-fpm/etc/php5/fpm/pool.d/www.conf
+
 	# move and install -dev files
 	dh_movefiles --sourcedir=debian/libapache2-mod-php5
 	rm -rf debian/libapache2-mod-php5/usr/lib/php5/build/ \
@@ -524,7 +567,7 @@ install: build
 
 	# install some generic lintian overrides
 	ext=`debian/php5-dev/usr/bin/php-config5 --extension-dir | cut -b2- `; \
-	for sapi in php5-cli php5-cgi libapache2-mod-php5 libapache2-mod-php5filter; do \
+	for sapi in php5-cli php5-fpm php5-cgi libapache2-mod-php5 libapache2-mod-php5filter; do \
 		mkdir -p $(CURDIR)/debian/"$$sapi"/usr/share/lintian/overrides/; \
 		sed "s/@sapi@/$$sapi/g;s, at extdir@,$$ext,g" \
 		    < $(CURDIR)/debian/php5-sapi.lintian-overrides \
@@ -593,7 +636,7 @@ binary-arch: build install
 
 	# likewise, for the different sapi implementations
 	for tmpl in postrm links; do \
-		for sapi in apache2 apache2filter cgi cli; do \
+		for sapi in apache2 apache2filter cgi cli fpm; do \
 			sed -e "s/@sapi@/$$sapi/g" \
 		  	< debian/php5-sapi.$$tmpl \
 		  	> debian/php5-$${sapi}.$$tmpl; \
@@ -610,7 +653,7 @@ binary-arch: build install
 		ln -s php5-common debian/php5-$$package/usr/share/doc/php5-$$package; \
 	done
 
-	for package in php5-dbg php5-dev php5-cgi php5-cli libapache2-mod-php5 libapache2-mod-php5filter; do \
+	for package in php5-dbg php5-dev php5-cgi php5-cli php5-fpm libapache2-mod-php5 libapache2-mod-php5filter; do \
 		rm -rf debian/$$package/usr/share/doc/$$package; \
 		ln -s php5-common debian/$$package/usr/share/doc/$$package; \
 	done
@@ -625,14 +668,14 @@ binary-arch: build install
 	dh_shlibdeps -s
 
 	phpapi=`./debian/php5-dev/usr/bin/php-config5 --phpapi`; \
-	for i in libapache2-mod-php5 libapache2-mod-php5filter php5-cgi php5-cli; do \
+	for i in libapache2-mod-php5 libapache2-mod-php5filter php5-cgi php5-cli php5-fpm; do \
 		echo "php:Provides=phpapi-$${phpapi}" >> debian/$$i.substvars; \
 	done; \
 	cat debian/modulelist | while read package extname dsoname; do \
 		echo "php:Depends=phpapi-$${phpapi}" >> debian/php5-$$package.substvars; \
 	done
 
-	for i in cgi cli; do \
+	for i in cgi cli fpm; do \
 		"$$i"-build/sapi/cli/php -n -r '$(BUILTIN_EXTENSION_CHECK)' \
 			>> debian/php5-"$$i".substvars; \
 	done
-- 
1.7.1





More information about the Pkg-php-commits mailing list