Subject: [alpine-devel] [PATCH] main/php: improved APKBUILD, see changes

From: Matt Smith <[email-masked]>
Date: Fri, 7 Jan 2011 13:13:06 -0600

I based my updates off of Arch Linux's work for this package.

Here's the changelog:
- Each 'main subpackage' gets its own build dir, in order to eliminate
  build-time complications.
- Added php-cgi subpackage.
- Added php-embed subpackage.
- Removed php-cli subpackage; it's now in the main 'php' package.
- Added the configure options --with-readline and --enable-pcntl to the 'php'
  package (previously known as the php-cli package).
- Enabled the 'error_log' default option for php-fpm.conf
- Enabled cgi.discard_path in php.ini, as --enable-discard-path was dropped from
  being a configure option.
- Dropped --enable-force-cgi-redirect from configure options, as it was
  deprecated and enabled by default in php.ini.
- Did away with $phpextensionsapache2 in the APKBUILD; seems it was there for a
  workaround.  Perhaps it was part of the #183 fix?  (Apache still segfaults,
  with or without the $phpextensionsapache2 workaround.)

For more info regarding PHP configure options:
http://www.php.net/manual/en/configure.about.php

Also, can someone look over the updates I made to the #183 fix, regarding the
above $phpextensionsapache2 workaround changes and the changes to where it says
"# see #183" throughout the APKBUILD?  I want to make sure that I didn't break
that fix.

Thanks,
Matt
---
 main/php/APKBUILD |  316 +++++++++++++++++++++++++++++------------------------
 1 files changed, 171 insertions(+), 145 deletions(-)

diff --git a/main/php/APKBUILD b/main/php/APKBUILD
index 2cbaf0c..08676e0 100644
--- a/main/php/APKBUILD
+++ b/main/php/APKBUILD
@@ -3,7 +3,7 @@
 pkgname=php
 pkgver=5.3.4
 _suhosinver=5.3.4-0.9.10
-pkgrel=1
+pkgrel=2
 pkgdesc="The PHP language runtime engine"
 url="http://www.php.net/"
 arch="x86 x86_64"
@@ -15,8 +15,10 @@ makedepends="pcre-dev libxml2-dev libiconv-dev openssl-dev zlib-dev bzip2-dev
 	sqlite-dev libtool libltdl postgresql-dev db-dev unixodbc-dev icu-dev
 	gd-dev gmp-dev gettext-dev imap-dev aspell-dev
 	net-snmp-dev libxslt-dev cyrus-sasl-dev openldap-dev pkgconfig
-	libgcrypt-dev apache2-dev apr-dev apr-util-dev libevent-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-cli $pkgname-fpm $pkgname-pear
+	libgcrypt-dev apache2-dev apr-dev apr-util-dev libevent-dev
+	readline-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-cgi $pkgname-fpm $pkgname-embed
+	$pkgname-pear
 	$pkgname-apache2
 	$pkgname-bcmath
 	$pkgname-bz2
@@ -67,14 +69,16 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-cli $pkgname-fpm $pkgname-pear
 source="http://www.php.net/distributions/${pkgname}-${pkgver}.tar.bz2
 	php-install-pear-xml.patch
 	php-uclibc.patch
-	php-fpm.init
 	suhosin-patch-5.3.4-0.9.10.patch
+	php-fpm.init
+	php5-module.conf
+	$install
 	"
 
 _extdir="/usr/lib/php/20090626"
 
 prepare() {
-        cd "$srcdir/$pkgname-$pkgver"
+	cd "$srcdir/$pkgname-$pkgver"
 	# beat the pear installer into using xml.so
 	patch -p1 -i "$srcdir"/php-install-pear-xml.patch || return 1
 	patch -p1 -i "$srcdir"/php-uclibc.patch || return 1
@@ -84,9 +88,25 @@ prepare() {
 }
 
 build() {
-        cd "$srcdir/$pkgname-$pkgver"
+	cd "$srcdir"/$pkgname-$pkgver
 
-	phpextensions="--enable-bcmath=shared \
+	_phpconfig="--build=${CHOST:-i486-alpine-linux-uclibc} \
+		--prefix=/usr \
+		--sysconfdir=/etc/php \
+		--with-layout=GNU \
+		--with-config-file-path=/etc/php \
+		--with-config-file-scan-dir=/etc/php/conf.d \
+		--enable-inline-optimization \
+		--disable-debug \
+		--disable-rpath \
+		--disable-static \
+		--enable-shared \
+		--mandir=/usr/share/man \
+		--with-pic \
+		--without-pear \
+		"
+
+	_phpextensions="--enable-bcmath=shared \
 		--enable-calendar=shared \
 		--enable-dba=shared \
 		--enable-exif=shared \
@@ -151,177 +171,181 @@ build() {
 #		--with-enchant=shared,/usr \
 #		--with-tidy=shared \
 
+	# php
+	./configure ${_phpconfig} \
+		--disable-cgi \
+		--with-readline \
+		--enable-pcntl \
+		${_phpextensions}
+	sed -ri "s/^(EXTRA_LDFLAGS[ ]*\=.*)/\1 -lpthread/" Makefile  # see #183
+	make || return 1
 
-	phpextensionsapache2="--enable-bcmath=shared \
-		--enable-calendar=shared \
-		--enable-dba=shared \
-		--enable-exif=shared \
-		--enable-ftp=shared \
-		--enable-gd-native-ttf \
-		--enable-intl=shared \
-		--enable-json=shared \
-		--enable-mbregex \
-		--enable-mbstring \
-		--enable-pdo=shared \
-		--enable-phar=shared \
-		--enable-posix=shared \
-		--enable-session \
-		--enable-shmop=shared \
-		--enable-soap=shared \
-		--enable-sockets=shared \
-		--disable-sqlite \
-		--enable-sysvmsg=shared \
-		--enable-sysvsem=shared \
-		--enable-sysvshm=shared \
-		--enable-xml=shared \
-		--enable-zip=shared \
-		--with-bz2=shared \
-		--with-curl=shared \
-		--with-db4=shared \
-		--with-freetype-dir=shared,/usr \
-		--with-gd=shared,/usr \
-		--with-gettext=shared \
-		--with-gmp=shared \
-		--with-iconv=shared \
-		--with-icu-dir=/usr \
-		--with-imap-ssl=shared \
-		--with-imap=shared \
-		--with-jpeg-dir=shared,/usr \
-		--with-ldap=shared \
-		--with-mcrypt=shared \
-		--with-mysql-sock=/var/run/mysqld/mysqld.sock \
-		--with-mysql=shared,mysqlnd \
-		--with-mysqli=shared,mysqlnd \
-		--with-openssl=shared \
-		--with-pcre-regex=/usr \
-		--with-pdo-mysql=shared,mysqlnd \
-		--with-pdo-odbc=shared,unixODBC,/usr \
-		--with-pdo-pgsql=shared \
-		--without-pdo-sqlite \
-		--with-pgsql=shared \
-		--with-png-dir=shared,/usr \
-		--with-pspell=shared \
-		--with-regex=php \
-		--with-snmp=shared \
-		--without-sqlite3 \
-		--without-sqlite \
-		--with-unixODBC=shared,/usr \
-		--with-xmlrpc=shared \
-		--with-xsl=shared \
-		--with-zlib=shared \
-		--without-db1 \
-		--without-db2 \
-		--without-db3 \
-		--without-qdbm \
-		"
-
-        ./configure --build=${CHOST:-i486-alpine-linux-uclibc} \
-		--prefix=/usr \
-		--sysconfdir=/etc/php \
-		--with-layout=GNU \
-		--with-config-file-path=/etc/php \
-		--with-config-file-scan-dir=/etc/php/conf.d \
-		--enable-inline-optimization \
-		--disable-debug \
-		--disable-rpath \
-		--disable-static \
-		--enable-shared \
-		--mandir=/usr/share/man \
-		--enable-fastcgi \
+	# cgi and fcgi
+	# reuse the previous run; this will save us a lot of time
+	cp -a "$srcdir"/$pkgname-$pkgver "$srcdir"/$pkgname-cgi
+	cd "$srcdir"/$pkgname-cgi
+	./configure ${_phpconfig} \
+		--disable-cli \
 		--enable-cgi \
-		--enable-cli \
+		${_phpextensions}
+	sed -ri "s/^(EXTRA_LDFLAGS[ ]*\=.*)/\1 -lpthread/" Makefile  # see #183
+	make || return 1
+
+	# apache
+	cp -a "$srcdir"/$pkgname-$pkgver "$srcdir"/$pkgname-apache2
+	cd "$srcdir"/$pkgname-apache2
+	./configure ${_phpconfig} \
+		--disable-cli \
+		--with-apxs2 \
+		${_phpextensions}
+	sed -ri "s/^(EXTRA_LDFLAGS[ ]*\=.*)/\1 -lpthread/" Makefile  # see #183
+	make || return 1
+
+	# fpm
+	cp -a "$srcdir"/$pkgname-$pkgver "$srcdir"/$pkgname-fpm
+	cd "$srcdir"/$pkgname-fpm
+	./configure ${_phpconfig} \
+		--disable-cli \
 		--enable-fpm \
-		--enable-discard-path \
-		--enable-force-cgi-redirect \
-		--with-pic \
-		$phpextensions
+		${_phpextensions}
+	sed -ri "s/^(EXTRA_LDFLAGS[ ]*\=.*)/\1 -lpthread/" Makefile  # see #183
+	make || return 1
+
+	# embed
+	cp -a "$srcdir"/$pkgname-$pkgver "$srcdir"/$pkgname-embed
+	cd "$srcdir"/$pkgname-embed
+	./configure ${_phpconfig} \
+		--disable-cli \
+		--enable-embed=shared \
+		${_phpextensions}
+	sed -ri "s/^(EXTRA_LDFLAGS[ ]*\=.*)/\1 -lpthread/" Makefile  # see #183
+	make || return 1
+
+	# pear
+	cp -a "$srcdir"/$pkgname-$pkgver "$srcdir"/$pkgname-pear
+	cd "$srcdir"/$pkgname-pear
+	./configure ${_phpconfig} \
+		--disable-cgi \
+		--with-readline \
+		--enable-pcntl \
+		--with-pear \
+		${_phpextensions}
+	sed -ri "s/^(EXTRA_LDFLAGS[ ]*\=.*)/\1 -lpthread/" Makefile  # see #183
+	make || return 1
+
+	# php-cgi, php-cli, php-pear
+	# (both cgi and cli are enabled by default)
+	#./configure --build=${CHOST:-i486-alpine-linux-uclibc} \
+	#	--prefix=/usr \
+	#	--sysconfdir=/etc/php \
+	#	--with-layout=GNU \
+	#	--with-config-file-path=/etc/php \
+	#	--with-config-file-scan-dir=/etc/php/conf.d \
+	#	--enable-inline-optimization \
+	#	--disable-debug \
+	#	--disable-rpath \
+	#	--disable-static \
+	#	--enable-shared \
+	#	--mandir=/usr/share/man \
+	#	--with-pic \
+	#	--with-pear \
+	#	${_phpextensions}
 
 	# see #183
-	sed -i -e '/^BUILD_CGI/s/$(LDFLAGS)/-lpthread $(LDFLAGS)/' Makefile
+	#sed -ri "s/^(EXTRA_LDFLAGS[ ]*\=.*)/\1 -lpthread/" Makefile
 
-        make || return 1
+	#make || return 1
 
-	# Need seperate configure string for apache subpkg
-	mkdir -p "$srcdir"/php-apache2
-	cp -R "$srcdir"/$pkgname-$pkgver/* "$srcdir"/php-apache2
-	cd "$srcdir"/php-apache2
-	make clean
-        ./configure --build=${CHOST:-i486-alpine-linux-uclibc} \
-                    --prefix=/usr \
-                    --sysconfdir=/etc/php \
-                    --with-layout=GNU \
-                    --with-config-file-path=/etc/php \
-                    --with-config-file-scan-dir=/etc/php/conf.d \
-                    --enable-inline-optimization \
-                    --disable-debug \
-                    --disable-rpath \
-                    --disable-static \
-                    --enable-shared \
-                    --mandir=/usr/share/man \
-                    --enable-fastcgi \
-                    --enable-cgi \
-                    --disable-cli \
-                    --enable-discard-path \
-                    --enable-force-cgi-redirect \
-                    --with-pic \
-		    --with-apxs2 \
-                    ${phpextensionsapache2}
+	# php-apache2
+	# (it's best to compile php-apache2 in it's own directory)
+	#mkdir -p "$srcdir"/php-apache2
+	#cp -R "$srcdir"/$pkgname-$pkgver/* "$srcdir"/php-apache2
+	#cd "$srcdir"/php-apache2
+	#make clean
+	#./configure --build=${CHOST:-i486-alpine-linux-uclibc} \
+	#	--prefix=/usr \
+	#	--sysconfdir=/etc/php \
+	#	--with-layout=GNU \
+	#	--with-config-file-path=/etc/php \
+	#	--with-config-file-scan-dir=/etc/php/conf.d \
+	#	--enable-inline-optimization \
+	#	--disable-debug \
+	#	--disable-rpath \
+	#	--disable-static \
+	#	--enable-shared \
+	#	--mandir=/usr/share/man \
+	#	--with-pic \
+	#	--disable-cgi \
+	#	--disable-cli \
+	#	--with-apxs2 \
+	#	${_phpextensionsapache2}
 
+	# see #183
+	#sed -ri "s/^(EXTRA_LDFLAGS[ ]*\=.*)/\1 -lpthread/" Makefile
 
-        make || return 1
+	#make || return 1
 }
 
 package() {
-        cd "$srcdir/$pkgname-$pkgver"
-        make -j1 INSTALL_ROOT="$pkgdir" install || return 1
-        install -D -m644 php.ini-production "$pkgdir"/etc/php/php.ini
+	cd "$srcdir/$pkgname-$pkgver"
+	make -j1 INSTALL_ROOT="$pkgdir" install || return 1
+	install -D -m644 php.ini-production "$pkgdir"/etc/php/php.ini
 	sed -i -e "s:^; extension_dir = \"./\":extension_dir = \"$_extdir\":" "$pkgdir"/etc/php/php.ini
+	sed -ri "s~^([;]*cgi\.rfc2616_headers.*)$~\1\n\n\; If this is enabled, the PHP CGI binary can safely be placed outside of the\n; web tree and people will not be able to circumvent .htaccess security.\ncgi\.discard_path = 1~" "$pkgdir"/etc/php/php.ini
+	rm -rf "$pkgdir"/usr/share/man
 }
 
 apache2() {
-       cd "$srcdir"/php-apache2
-       mkdir -p "$subpkgdir"/usr/lib/apache2/  
-       mkdir -p "$subpkgdir"/etc/apache2/conf.d/
-       install -D -m755 libs/libphp5.so "$subpkgdir"/usr/lib/apache2/libphp5.so
-       install -D -m644 ../../php5-module.conf "$subpkgdir"/etc/apache2/conf.d/php5-module.conf
+	pkgdesc="PHP Module for Apache2"
+	install -D -m755 "$srcdir"/$pkgname-apache2/libs/libphp5.so "$subpkgdir"/usr/lib/apache2/libphp5.so
+	install -D -m644 "$srcdir"/php5-module.conf "$subpkgdir"/etc/apache2/conf.d/php5-module.conf
 }
 
-cli() {
-	pkgdesc="PHP command line interface"
-	mkdir -p "$subpkgdir"/usr/bin
-	mv "$pkgdir"/usr/bin/php "$subpkgdir"/usr/bin/
+cgi() {
+	pkgdesc="PHP Common Gateway Interface (CGI)"
+	install -D -m755 "$srcdir"/$pkgname-cgi/sapi/cgi/php-cgi "$subpkgdir"/usr/bin/php-cgi
 }
 
 fpm() {
-	pkgdesc="PHP Fast Process Manager (FPM) interface"
-	mkdir -p "$subpkgdir"/usr/bin
-	mkdir -p "$subpkgdir"/etc/php
-	mv "$pkgdir"/usr/sbin/php-fpm "$subpkgdir"/usr/bin/php-fpm
-	mv "$pkgdir"/etc/php/php-fpm.conf.default "$subpkgdir"/etc/php/php-fpm.conf
+	pkgdesc="PHP Fast Process Manager (FPM) Interface"
+	install -D -m755 "$srcdir"/$pkgname-fpm/sapi/fpm/php-fpm "$subpkgdir"/usr/bin/php-fpm
+	install -D -m644 "$srcdir"/$pkgname-fpm/sapi/fpm/php-fpm.conf "$subpkgdir"/etc/php/php-fpm.conf
+	install -D -m755 "$srcdir"/php-fpm.init "$subpkgdir"/etc/init.d/php-fpm
 
-	# enable some defaults
+	# enable some default options
+	sed -ri "s~^;(error_log)(.*)~\1 = /var/log/php-fpm.log~" "$subpkgdir"/etc/php/php-fpm.conf
 	sed -ri "s/^;(pm.start_servers)/\1/" "$subpkgdir"/etc/php/php-fpm.conf
 	sed -ri "s/^;(pm.min_spare_servers)/\1/" "$subpkgdir"/etc/php/php-fpm.conf
 	sed -ri "s/^;(pm.max_spare_servers)/\1/" "$subpkgdir"/etc/php/php-fpm.conf
+}
 
-	install -D -m755 "$srcdir"/php-fpm.init "$subpkgdir"/etc/init.d/php-fpm
+embed() {
+	pkgdesc="PHP Embed Library"
+	install -D -m755 "$srcdir"/$pkgname-embed/libs/libphp5.so "$subpkgdir"/usr/lib/libphp5.so
+	install -D -m644 "$srcdir"/$pkgname-$pkgver/sapi/embed/php_embed.h "$subpkgdir"/usr/include/php/sapi/embed/php_embed.h
 }
 
 pear() {
-	depends="php php-cli"
-	mkdir -p "$subpkgdir"/usr/bin
-	mkdir -p "$subpkgdir"/usr/share
-	mkdir -p "$subpkgdir"/etc/php
-	mv "$pkgdir"/usr/share/pear "$subpkgdir"/usr/share/
-	mv "$pkgdir"/usr/bin/pear* "$subpkgdir"/usr/bin/
-	mv "$pkgdir"/usr/bin/pecl "$subpkgdir"/usr/bin/
-	mv "$pkgdir"/etc/php/pear.conf "$subpkgdir"/etc/php/
+	pkgdesc="PHP Extension and Application Repository (PEAR)"
+	depends="php"
+	cd "$srcdir"/$pkgname-pear
+	make install-pear INSTALL_ROOT=""$subpkgdir""
+	for _rmpear in `find "$subpkgdir" -name '.*'`; do
+		rm -rf ${_rmpear}
+	done
+}
+
+doc() {
+	install -D -m644 "$srcdir"/$pkgname-$pkgver/sapi/cli/php.1 "$subpkgdir"/usr/share/man/man1/php.1
+	install -D -m644 "$srcdir"/$pkgname-$pkgver/scripts/man1/phpize.1 "$subpkgdir"/usr/share/man/man1/phpize.1
+	install -D -m644 "$srcdir"/$pkgname-$pkgver/scripts/man1/php-config.1 "$subpkgdir"/usr/share/man/man1/php-config.1
+	install -D -m644 "$srcdir"/$pkgname-fpm/sapi/fpm/php-fpm.8 "$subpkgdir"/usr/share/man/man8/php-fpm.8
 }
 
 _mv_mod() {
 	pkgdesc="$1 php extension"
 	mkdir -p "$subpkgdir/$_extdir"
-	mv "$pkgdir/$_extdir/${1}.so" "$subpkgdir/$_extdir/" || return 1
+	mv "$pkgdir"/$_extdir/${1}.so "$subpkgdir"/$_extdir/ || return 1
 	install -d "$subpkgdir"/etc/php/conf.d
 	echo "extension=${1}.so" > "$subpkgdir"/etc/php/conf.d/${1}.ini
 	return 0
@@ -384,5 +408,7 @@ dev() {
 md5sums="2c069d8f690933e3bf6a8741ed818150  php-5.3.4.tar.bz2
 5111e3be06d391f8772587c675240fab  php-install-pear-xml.patch
 26adfe0e744ec05fa9e368bbdee83176  php-uclibc.patch
+289ca647771170f096985951047174e7  suhosin-patch-5.3.4-0.9.10.patch
 8f2bb2b744a2de50025842cb51fb6a3a  php-fpm.init
-289ca647771170f096985951047174e7  suhosin-patch-5.3.4-0.9.10.patch"
+67719f428f44ec004da18705cbabe2ee  php5-module.conf
+6b7ebe6e1eedaada03d830bcf2fdc575  php.post-upgrade"
-- 
1.7.3.3

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---