# Contributor: Andy Blyler # Contributor: Ɓukasz Jendrysik # Contributor: Carlo Landmeter # Maintainer: Matt Smith pkgname=php5 pkgver=5.6.40 pkgrel=0 pkgdesc="The PHP language runtime engine" url="http://www.php.net/" arch="all" license="PHP-3.0" depends="$pkgname-cli" depends_dev="$pkgname-cli pcre-dev" install="$pkgname.post-upgrade" provides="php" makedepends=" $depends_dev apache2-dev apr-dev apr-util-dev aspell-dev bzip2-dev curl-dev db-dev enchant-dev expat-dev freetds-dev freetype-dev gdbm-dev gettext-dev gmp-dev icu-dev imap-dev libevent-dev libgcrypt-dev libjpeg-turbo-dev libmcrypt-dev libpng-dev libtool libxml2-dev libxslt-dev mariadb-connector-c-dev net-snmp-dev openldap-dev libressl-dev postgresql-dev readline-dev sqlite-dev unixodbc-dev zlib-dev autoconf bison " subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc $pkgname-common::noarch $pkgname-cgi $pkgname-cli $pkgname-fpm $pkgname-apache2 $pkgname-embed $pkgname-phpdbg $pkgname-pear::noarch $pkgname-bcmath $pkgname-bz2 $pkgname-calendar $pkgname-ctype $pkgname-curl:_curl $pkgname-dba $pkgname-dom $pkgname-enchant $pkgname-exif $pkgname-ftp $pkgname-gd $pkgname-gettext $pkgname-gmp $pkgname-iconv $pkgname-imap $pkgname-intl $pkgname-json $pkgname-ldap $pkgname-mcrypt $pkgname-mysql $pkgname-mysqli $pkgname-odbc $pkgname-openssl $pkgname-pcntl $pkgname-pdo $pkgname-pdo_mysql $pkgname-pdo_odbc $pkgname-pdo_pgsql $pkgname-pdo_sqlite $pkgname-pgsql $pkgname-phar $pkgname-posix $pkgname-pspell $pkgname-shmop $pkgname-snmp $pkgname-soap $pkgname-sockets $pkgname-sqlite3 $pkgname-sysvmsg $pkgname-sysvsem $pkgname-sysvshm $pkgname-xml $pkgname-xmlreader $pkgname-xmlrpc $pkgname-xsl $pkgname-zip $pkgname-mssql $pkgname-pdo_dblib $pkgname-wddx $pkgname-opcache " source="https://php.net/distributions/php-$pkgver.tar.bz2 php-fpm.initd php5-module.conf php-install-pear-xml.patch gd-iconv.patch " _apiver="20131106" _extdir="/usr/lib/$pkgname/modules" _srcdir="$srcdir"/php-$pkgver _confdir=/etc/$pkgname # seems like pear hardcode /usr/share/pear directory _peardir=/usr/share/pear # secfixes: # 5.6.38-r0: # - CVE-2018-17082 # 5.6.37-r0: # - CVE-2018-14851 # - CVE-2018-14883 # 5.6.36-r0: # - CVE-2018-5712 # 5.6.34-r0: # - CVE-2018-7584 # 5.6.33-r0: # - CVE-2018-5711 # - CVE-2018-5712 # 5.6.31-r0: # - CVE-2017-9224 # - CVE-2017-9226 # - CVE-2017-9227 # - CVE-2017-9228 # - CVE-2017-9229 prepare() { cd "$_srcdir" update_config_sub for i in $source; do case $i in *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;; esac done # safty check for api changes local vapi=$(sed -n '/#define PHP_API_VERSION/{s/.* //;p}' main/php.h) if [ "$vapi" != "$_apiver" ]; then error "Upstreram API version is now $vapi. Expecting $_vapi" return 1 fi autoconf } _do_build() { local _flavor="$1" shift local _builddir="$srcdir"/build-$_flavor mkdir -p "$_builddir" cd "$_builddir" export EXTENSION_DIR=$_extdir export PEAR_INSTALLDIR="$_peardir" #http://source.icu-project.org/repos/icu/trunk/icu4c/readme.html#RecBuild export CPPFLAGS="$CPPFLAGS -DU_USING_ICU_NAMESPACE=1" "$_srcdir"/configure $@ || return 1 sed -ri "s/^(EXTRA_LDFLAGS[ ]*\=.*)/\1 -lpthread/" Makefile # see #183 make || return 1 } build() { _phpconfig="\ --build=$CBUILD \ --host=$CHOST \ --prefix=/usr \ --sysconfdir=$_confdir \ --localstatedir=/var \ --with-layout=GNU \ --with-config-file-path=$_confdir \ --with-config-file-scan-dir=$_confdir/conf.d \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --disable-static \ --enable-shared \ --mandir=/usr/share/man \ --with-pic \ --program-suffix=5 \ " _phpextensions=" \ --enable-bcmath=shared \ --with-bz2=shared \ --enable-calendar=shared \ --with-cdb \ --enable-ctype=shared \ --with-curl=shared \ --enable-dba=shared \ --with-db4=shared \ --enable-dom=shared \ --with-enchant=shared \ --enable-exif=shared \ --with-freetype-dir=shared,/usr \ --enable-ftp=shared \ --with-gd=shared \ --enable-gd-native-ttf \ --with-gdbm=shared \ --with-gettext=shared \ --with-gmp=shared \ --with-iconv=shared \ --with-icu-dir=/usr \ --with-imap=shared \ --with-imap-ssl=shared \ --enable-intl=shared \ --with-jpeg-dir=shared,/usr \ --enable-json=shared \ --with-ldap=shared \ --enable-libxml=shared \ --enable-mbregex \ --enable-mbstring=all \ --with-mcrypt=shared \ --with-mysql=shared,mysqlnd \ --with-mysql-sock=/var/run/mysqld/mysqld.sock \ --with-mysqli=shared,mysqlnd \ --with-openssl=shared \ --with-pcre-regex=/usr \ --enable-pcntl=shared \ --enable-pdo=shared \ --with-pdo-mysql=shared,mysqlnd \ --with-pdo-odbc=shared,unixODBC,/usr \ --with-pdo-pgsql=shared \ --with-pdo-sqlite=shared,/usr \ --with-pgsql=shared \ --enable-phar=shared \ --with-png-dir=shared,/usr \ --enable-posix=shared \ --with-pspell=shared \ --with-regex=php \ --enable-session \ --enable-shmop=shared \ --with-snmp=shared \ --enable-soap=shared \ --enable-sockets=shared \ --with-sqlite3=shared,/usr \ --enable-sysvmsg=shared \ --enable-sysvsem=shared \ --enable-sysvshm=shared \ --with-unixODBC=shared,/usr \ --enable-xml=shared \ --enable-xmlreader=shared \ --with-xmlrpc=shared \ --with-xsl=shared \ --enable-wddx=shared \ --enable-zip=shared \ --with-zlib \ --without-db1 \ --without-db2 \ --without-db3 \ --without-qdbm \ --with-mssql=shared \ --with-pdo-dblib=shared \ --enable-opcache \ " # cgi, fcgi, cli, pear and extensions _do_build cgi \ ${_phpconfig} \ --disable-cli \ --enable-cgi \ --enable-cli \ --with-pear \ --with-readline \ --enable-phpdbg \ ${_phpextensions} \ || return 1 # fpm cp -a "$srcdir"/build-cgi "$srcdir"/build-fpm _do_build fpm \ ${_phpconfig} \ --disable-cli \ --enable-fpm \ ${_phpextensions} \ || return 1 # apache2 cp -a "$srcdir"/build-cgi "$srcdir"/build-apache2 _do_build apache2 \ ${_phpconfig} \ --disable-cli \ --with-apxs2 \ ${_phpextensions} \ || return 1 # embed cp -a "$srcdir"/build-cgi "$srcdir"/build-embed _do_build embed \ ${_phpconfig} \ --disable-cli \ --enable-embed=shared \ ${_phpextensions} \ || return 1 } package() { cd "$srcdir"/build-cgi # install php-cgi, cli, pear and modules make -j1 install install-pear INSTALL_ROOT="$pkgdir" || return 1 # cleanup after pear find "$pkgdir" -name '.*' | xargs rm -rf || return 1 # install embed install -D -m755 "$srcdir"/build-embed/libs/libphp5.so \ "$pkgdir"/usr/lib/libphp5.so || return 1 install -D -m644 "$_srcdir"/sapi/embed/php_embed.h \ "$pkgdir"/usr/include/php/sapi/embed/php_embed.h || return 1 } dev() { default_dev || return 1 mkdir -p "$subpkgdir"/usr/lib/php "$subpkgdir"/usr/bin mv "$pkgdir"/usr/lib/php/build \ "$subpkgdir"/usr/lib/php/ || return 1 mv "$pkgdir"/usr/bin/php-config5 "$subpkgdir"/usr/bin/ } doc() { # man pages default_doc || return 1 cd "$srcdir"/php-$pkgver # doc files _docs="CODING_STANDARDS CREDITS EXTENSIONS INSTALL LICENSE NEWS \ UPGRADING UPGRADING.INTERNALS" for _doc in $_docs README.*; do install -Dm644 "$srcdir"/php-$pkgver/$_doc \ "$subpkgdir"/usr/share/doc/$pkgname/$_doc || return 1 done } common() { pkgdesc="PHP Common Files" provides="php-common $pkgname-zlib php-zlib" # for backward compatibility depends="" cd "$srcdir"/php-$pkgver install -D -m644 php.ini-production "$subpkgdir"$_confdir/php.ini sed -ri -e "s:^; extension_dir = \"./\":extension_dir = \"$_extdir\":" \ -e 's/;(date.timezone =)/\1 UTC/' \ -e "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~" \ "$subpkgdir"$_confdir/php.ini } cgi() { pkgdesc="PHP Common Gateway Interface (CGI)" depends="$pkgname-common" provides="php-cgi" mkdir -p "$subpkgdir"/usr/bin mv "$pkgdir"/usr/bin/php-cgi* "$subpkgdir"/usr/bin/ } cli() { pkgdesc="PHP Command Line Interface (CLI)" depends="$pkgname-common" provides="php-cli" mkdir -p "$subpkgdir"/usr/bin mv "$pkgdir"/usr/bin/php5 "$subpkgdir"/usr/bin/ || return 1 # provide phpize here instead of -dev due to pecl command mv "$pkgdir"/usr/bin/phpize* "$subpkgdir"/usr/bin/ || return 1 } fpm() { pkgdesc="PHP FastCGI Process Manager (FPM)" depends="$pkgname-common" provides="php-fpm" mkdir -p "$subpkgdir"$_confdir/fpm.d install -D -m755 "$srcdir"/build-fpm/sapi/fpm/php-fpm \ "$subpkgdir"/usr/bin/php-fpm5 || return 1 install -D -m644 "$srcdir"/build-fpm/sapi/fpm/php-fpm.conf \ "$subpkgdir"$_confdir/php-fpm.conf || return 1 install -D -m755 "$srcdir"/php-fpm.initd "$subpkgdir"/etc/init.d/php-fpm # enable some default options sed -ri -e "s~^;(error_log)(.*)~\1 = /var/log/php-fpm.log~" \ -e "s~^;(include)(.*)~\1 = $_confdir/fpm.d/*.conf~" \ -e "s/^;(pm.start_servers)/\1/" \ -e "s/^;(pm.min_spare_servers)/\1/" \ -e "s/^;(pm.max_spare_servers)/\1/" \ "$subpkgdir"$_confdir/php-fpm.conf || return 1 } apache2() { pkgdesc="PHP Module for Apache2" depends="$pkgname-common apache2" provides="php-apache2" install -D -m755 "$srcdir"/build-apache2/libs/libphp5.so \ "$subpkgdir"/usr/lib/apache2/libphp5.so || return 1 install -D -m644 "$srcdir"/php5-module.conf \ "$subpkgdir"/etc/apache2/conf.d/php5-module.conf || return 1 } embed() { pkgdesc="PHP Embed Library" depends="$pkgname-common" provides="php-embed" mkdir -p "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libphp5.so "$subpkgdir"/usr/lib/ } pear() { pkgdesc="PHP Extension and Application Repository (PEAR)" depends="$pkgname-cli $pkgname-xml" provides="php-pear" mkdir -p "$subpkgdir"/usr/share "$subpkgdir"$_confdir \ "$subpkgdir"/usr/bin mv "$pkgdir"/usr/bin/pecl \ "$pkgdir"/usr/bin/pear \ "$pkgdir"/usr/bin/peardev \ "$subpkgdir"/usr/bin/ || return 1 mv "$pkgdir"$_confdir/pear.conf \ "$subpkgdir"$_confdir/ || return 1 mv "$pkgdir"${_peardir} \ "$subpkgdir"/usr/share/ || return 1 } phpdbg() { pkgdesc="Interactive PHP debugger" depends="$pkgname-common" provides="php-phpdbg" mkdir -p "$subpkgdir"/usr/bin mv "$pkgdir"/usr/bin/phpdbg* "$subpkgdir"/usr/bin/ } _mv_ext() { local ext=$1 local ini=$ext.ini pkgdesc="${ext} extension for PHP" provides="php-$extname" depends="${pkgname}-common" # extension dependencies if [ -n "${2-}" ]; then depends="${depends} ${2-}" fi # work around dependency issue # https://bugs.alpinelinux.org/issues/1848 if [ "$ext" = "wddx" ]; then ini=xml_$ext.ini fi mkdir -p "$subpkgdir"/$_extdir mv "$pkgdir"/$_extdir/${ext}.so "$subpkgdir"/$_extdir/ || return 1 mkdir -p "$subpkgdir"$_confdir/conf.d case "$1" in opcache) echo "zend_extension=${ext}.so" > "$subpkgdir"$_confdir/conf.d/$ini ;; *) echo "extension=${ext}.so" > "$subpkgdir"$_confdir/conf.d/$ini ;; esac } bcmath() { _mv_ext bcmath; } bz2() { _mv_ext bz2; } calendar() { _mv_ext calendar; } ctype() { _mv_ext ctype; } _curl() { _mv_ext curl; } dba() { _mv_ext dba; } dom() { _mv_ext dom; } enchant() { _mv_ext enchant; } exif() { _mv_ext exif; } ftp() { _mv_ext ftp; } gd() { _mv_ext gd; } gettext() { _mv_ext gettext; } gmp() { _mv_ext gmp; } iconv() { _mv_ext iconv; } imap() { _mv_ext imap; } intl() { _mv_ext intl; } json() { _mv_ext json; } ldap() { _mv_ext ldap; } mcrypt() { _mv_ext mcrypt; } mysql() { _mv_ext mysql; } mysqli() { _mv_ext mysqli; } odbc() { _mv_ext odbc unixodbc; } openssl() { _mv_ext openssl; } pcntl() { _mv_ext pcntl; } pdo() { _mv_ext pdo; } pdo_mysql() { _mv_ext pdo_mysql $pkgname-pdo; } pdo_odbc() { _mv_ext pdo_odbc $pkgname-pdo; } pdo_pgsql() { _mv_ext pdo_pgsql $pkgname-pdo; } pdo_sqlite() { _mv_ext pdo_sqlite $pkgname-pdo; } pgsql() { _mv_ext pgsql; } phar() { _mv_ext phar mkdir -p "$subpkgdir"/usr/bin mv "$pkgdir"/usr/bin/phar* "$subpkgdir"/usr/bin/ } posix() { _mv_ext posix; } pspell() { _mv_ext pspell; } shmop() { _mv_ext shmop; } snmp() { _mv_ext snmp; } soap() { _mv_ext soap; } sockets() { _mv_ext sockets; } sqlite3() { _mv_ext sqlite3; } sysvmsg() { _mv_ext sysvmsg; } sysvsem() { _mv_ext sysvsem; } sysvshm() { _mv_ext sysvshm; } xml() { _mv_ext xml; } xmlreader() { _mv_ext xmlreader $pkgname-dom; } xmlrpc() { _mv_ext xmlrpc $pkgname-xml; } xsl() { _mv_ext xsl $pkgname-dom; } zip() { _mv_ext zip; } mssql() { _mv_ext mssql; } pdo_dblib() { _mv_ext pdo_dblib "$pkgname-pdo freetds"; } wddx() { _mv_ext wddx; } opcache() { _mv_ext opcache; } sha512sums="acd9fee67a55f5e62c23550777c676138e9932330ce6f056354752a12b169fe1d017b30d85ad66a612ce959f2392edecde68eca9eb200cf99f739f629e0cb857 php-5.6.40.tar.bz2 f7d922cab98617ef910b4c14974e768c85e60424cd1b216f688b34b2d823b642a5b896463008c134ce47c150f9407f5c438823b7e7bc89b3fb440cd3e97b9d7e php-fpm.initd d1dd6a5764e18414476aaaa109efcc568696ac17a61a1afdf7d0621d3e38c5be717a81ee4d11d28963f11e76879af7d3806970e651061f8c4abffb03c4bd5af4 php5-module.conf f1177cbf6b1f44402f421c3d317aab1a2a40d0b1209c11519c1158df337c8945f3a313d689c939768584f3e4edbe52e8bd6103fb6777462326a9d94e8ab1f505 php-install-pear-xml.patch 6ecd0be2da1dc5b1d7512e46a2a5cd107a8b2a8c364efc9c624a7d6b2ab081685a329c94c22c970dc14c5c1115f702c512e97ae858da1bc69c6423323dbeeba2 gd-iconv.patch"