# Contributor: Andy Blyler # Contributor: Ɓukasz Jendrysik # Contributor: Carlo Landmeter # Maintainer: Matt Smith setvar pkgname = 'php5' setvar pkgver = '5.6.31' setvar pkgrel = '1' setvar pkgdesc = ""The PHP language runtime engine"" setvar url = ""http://www.php.net/"" setvar arch = ""all"" setvar license = ""PHP-3"" setvar depends = ""$pkgname-cli"" setvar depends_dev = ""$pkgname-cli pcre-dev"" setvar install = ""$pkgname.post-upgrade"" setvar provides = ""php"" setvar 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-dev net-snmp-dev openldap-dev libressl-dev postgresql-dev readline-dev sqlite-dev unixodbc-dev zlib-dev autoconf bison "" setvar 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-zlib $pkgname-mssql $pkgname-pdo_dblib $pkgname-wddx $pkgname-opcache "" setvar source = ""http://php.net/distributions/php-$pkgver.tar.bz2 php-fpm.initd php5-module.conf php-install-pear-xml.patch gd-iconv.patch "" setvar _apiver = ""20131106"" setvar _extdir = ""/usr/lib/$pkgname/modules"" setvar _srcdir = ""$srcdir"/php-$pkgver" setvar _confdir = "/etc/$pkgname" # seems like pear hardcode /usr/share/pear directory setvar _peardir = "/usr/share/pear" # secfixes: # 5.6.31-r0: # - CVE-2017-9224 # - CVE-2017-9226 # - CVE-2017-9227 # - CVE-2017-9228 # - CVE-2017-9229 proc prepare { cd $_srcdir update_config_sub for i in $source { case (i) { *.patch { msg $i; patch -p1 -i "$srcdir"/$i || return 1} } } # safty check for api changes local vapi=$(sed -n '/#define PHP_API_VERSION/{s/.* //;p}' main/php.h) if test $vapi != $_apiver { error "Upstreram API version is now $vapi. Expecting $_vapi" return 1 } autoconf } proc _do_build { local _flavor="$1" shift local _builddir="$srcdir"/build-$_flavor mkdir -p $_builddir cd $_builddir export EXTENSION_DIR=$_extdir export PEAR_INSTALLDIR="$_peardir" "$_srcdir"/configure $[join(ARGV)] || return 1 sed -ri "s/^(EXTRA_LDFLAGS[ ]*\=.*)/\1 -lpthread/" Makefile # see #183 make || return 1 } proc build { setvar _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 \ "" setvar _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=shared \ --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 } proc 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 } proc 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/ } proc doc { # man pages default_doc || return 1 cd "$srcdir"/php-$pkgver # doc files setvar _docs = ""CODING_STANDARDS CREDITS EXTENSIONS INSTALL LICENSE NEWS \ UPGRADING UPGRADING.INTERNALS"" for _doc in $_docs README.* { install -Dm644 "$srcdir"/php-$pkgver/$_doc \ "$subpkgdir"/usr/share/doc/$pkgname/$_doc || return 1 } } proc common { setvar pkgdesc = ""PHP Common Files"" setvar 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 } proc cgi { setvar pkgdesc = ""PHP Common Gateway Interface (CGI)"" setvar depends = ""$pkgname-common"" mkdir -p "$subpkgdir"/usr/bin mv "$pkgdir"/usr/bin/php-cgi* "$subpkgdir"/usr/bin/ } proc cli { setvar pkgdesc = ""PHP Command Line Interface (CLI)"" setvar depends = ""$pkgname-common"" 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 } proc fpm { setvar pkgdesc = ""PHP FastCGI Process Manager (FPM)"" setvar depends = ""$pkgname-common"" 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 } proc apache2 { setvar pkgdesc = ""PHP Module for Apache2"" setvar depends = ""$pkgname-common 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 } proc embed { setvar pkgdesc = ""PHP Embed Library"" setvar depends = ""$pkgname-common"" mkdir -p "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libphp5.so "$subpkgdir"/usr/lib/ } proc pear { setvar pkgdesc = ""PHP Extension and Application Repository (PEAR)"" setvar depends = ""$pkgname-cli $pkgname-xml"" 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 } proc phpdbg { setvar pkgdesc = ""Interactive PHP debugger"" mkdir -p "$subpkgdir"/usr/bin mv "$pkgdir"/usr/bin/phpdbg* "$subpkgdir"/usr/bin/ } proc _mv_ext { local ext=$1 local ini=$ext.ini setvar pkgdesc = ""${ext} extension for PHP"" # extension dependencies if test -n ${2-} { setvar depends = "${2-}" } setvar depends = ""${pkgname} ${depends}"" # work around dependency issue # https://bugs.alpinelinux.org/issues/1848 if test $ext = "wddx" { setvar ini = "xml_$ext.ini" } mkdir -p "$subpkgdir"/$_extdir mv "$pkgdir"/$_extdir/${ext}.so "$subpkgdir"/$_extdir/ || return 1 mkdir -p "$subpkgdir"$_confdir/conf.d case (1) { opcache { echo "zend_extension=${ext}.so" > "$subpkgdir"$_confdir/conf.d/$ini } * { echo "extension=${ext}.so" > "$subpkgdir"$_confdir/conf.d/$ini } } } proc bcmath { _mv_ext bcmath; } proc bz2 { _mv_ext bz2; } proc calendar { _mv_ext calendar; } proc ctype { _mv_ext ctype; } proc _curl { _mv_ext curl; } proc dba { _mv_ext dba; } proc dom { _mv_ext dom; } proc enchant { _mv_ext enchant; } proc exif { _mv_ext exif; } proc ftp { _mv_ext ftp; } proc gd { _mv_ext gd; } proc gettext { _mv_ext gettext; } proc gmp { _mv_ext gmp; } proc iconv { _mv_ext iconv; } proc imap { _mv_ext imap; } proc intl { _mv_ext intl; } proc json { _mv_ext json; } proc ldap { _mv_ext ldap; } proc mcrypt { _mv_ext mcrypt; } proc mysql { _mv_ext mysql; } proc mysqli { _mv_ext mysqli; } proc odbc { _mv_ext odbc unixodbc; } proc openssl { _mv_ext openssl; } proc pcntl { _mv_ext pcntl; } proc pdo { _mv_ext pdo; } proc pdo_mysql { _mv_ext pdo_mysql $pkgname-pdo; } proc pdo_odbc { _mv_ext pdo_odbc $pkgname-pdo; } proc pdo_pgsql { _mv_ext pdo_pgsql $pkgname-pdo; } proc pdo_sqlite { _mv_ext pdo_sqlite $pkgname-pdo; } proc pgsql { _mv_ext pgsql; } proc phar { _mv_ext phar mkdir -p "$subpkgdir"/usr/bin mv "$pkgdir"/usr/bin/phar* "$subpkgdir"/usr/bin/ } proc posix { _mv_ext posix; } proc pspell { _mv_ext pspell; } proc shmop { _mv_ext shmop; } proc snmp { _mv_ext snmp; } proc soap { _mv_ext soap; } proc sockets { _mv_ext sockets; } proc sqlite3 { _mv_ext sqlite3; } proc sysvmsg { _mv_ext sysvmsg; } proc sysvsem { _mv_ext sysvsem; } proc sysvshm { _mv_ext sysvshm; } proc xml { _mv_ext xml; } proc xmlreader { _mv_ext xmlreader $pkgname-dom; } proc xmlrpc { _mv_ext xmlrpc $pkgname-xml; } proc xsl { _mv_ext xsl $pkgname-dom; } proc zip { _mv_ext zip; } proc zlib { _mv_ext zlib; } proc mssql { _mv_ext mssql; } proc pdo_dblib { _mv_ext pdo_dblib "$pkgname-pdo freetds"; } proc wddx { _mv_ext wddx; } proc opcache { _mv_ext opcache; } setvar sha512sums = ""fe0a0572917287a89910cc4d1bca7a8be17fb09d0459d68fea7b32f4b9fd94efbf36d90f8d7d34baee60efc6b0aeac1414a658fc0b451c5eb2f8e3864e20e3c0 php-5.6.31.tar.bz2 f7d922cab98617ef910b4c14974e768c85e60424cd1b216f688b34b2d823b642a5b896463008c134ce47c150f9407f5c438823b7e7bc89b3fb440cd3e97b9d7e php-fpm.initd 895e94c791bd82060ad820fef049d366a09c932097faa6b7b9a2c2e9e00a18cb7c0f9b128679c7659b404379266fd0f95dba5c0333f626194cf60f7bf6044102 php5-module.conf f1177cbf6b1f44402f421c3d317aab1a2a40d0b1209c11519c1158df337c8945f3a313d689c939768584f3e4edbe52e8bd6103fb6777462326a9d94e8ab1f505 php-install-pear-xml.patch 6ecd0be2da1dc5b1d7512e46a2a5cd107a8b2a8c364efc9c624a7d6b2ab081685a329c94c22c970dc14c5c1115f702c512e97ae858da1bc69c6423323dbeeba2 gd-iconv.patch""