# Contributor: Valery Kartel # Maintainer: Valery Kartel pkgname=php7 pkgver=7.1.3 pkgrel=0 _apiver=20160303 _compat=7.1 _suffix=${pkgname#php} _pkgreal=${pkgname%$_suffix} pkgdesc="The PHP$_suffix language runtime engine" url="http://www.php.net/" arch="all" license="PHP-3" options="!check" depends="$pkgname-config" depends_dev="$pkgname" replaces="$_pkgreal $_pkgreal-cli $_pkgreal$_compat $_pkgreal$_compat-cli" provides="$replaces $pkgname-cli" makedepends="autoconf bison re2c apache2-dev libxml2-dev libxslt-dev libzip-dev bzip2-dev zlib-dev aspell-dev enchant-dev expat-dev pcre-dev curl-dev gmp-dev icu-dev imap-dev gd-dev libical-dev libressl-dev openldap-dev net-snmp-dev db-dev krb5-dev gdbm-dev sqlite-dev freetds-dev postgresql-dev unixodbc-dev freetype-dev tidyhtml-dev libwebp-dev libpng-dev libjpeg-turbo-dev libmcrypt-dev recode-dev libedit-dev gettext-dev " source="http://php.net/distributions/$_pkgreal-$pkgver.tar.bz2 $pkgname-module.conf $pkgname-fpm.logrotate $pkgname-fpm.initd $pkgname-fpm.patch $pkgname-includedir.patch install-pear.patch " # unimplemented extensions: com_dotnet interbase oci8 pdo_firebird pdo_oci _extension_dir=/usr/lib/$pkgname _extension_conf=/etc/$pkgname/conf.d _extensions="bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo ftp gd gettext gmp iconv imap:1 intl json ldap mbstring mcrypt mysqli:1 mysqlnd odbc opcache openssl pcntl pdo pdo_dblib pdo_mysql pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell recode session shmop snmp soap sockets sqlite3 sysvmsg sysvsem sysvshm tidy wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib " for _extension in $_extensions; do [ -z "${_extension##*:*}" ] && eval _index_${_extension%:*}=${_extension#*:} subpackages="$subpackages $pkgname-${_extension%:*}:_extension" done _prefix_opcache="zend_" _pkgdesc_opcache="Zend OPcache" _depends_mysqlnd="$pkgname-openssl" subpackages="$pkgname-dev $pkgname-doc $pkgname-libs $pkgname-apache2 $pkgname-phpdbg $pkgname-litespeed $pkgname-cgi $pkgname-fpm $pkgname-pear::noarch $pkgname-pecl::noarch $pkgname-phar-utils:_phar:noarch $subpackages $pkgname-config::noarch" builddir="$srcdir/$_pkgreal-$pkgver" prepare() { cd "$builddir" sed "$(($(grep -n 'Pool Definitions' sapi/fpm/php-fpm.conf.in | cut -d: -f1)+3)),\$d" \ -i sapi/fpm/php-fpm.conf.in && \ echo include=@php_fpm_sysconfdir@/php-fpm.d/*.conf >> \ sapi/fpm/php-fpm.conf.in default_prepare || return 1 update_config_sub || return 1 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 $_apiver" error "After updating _apiver, all 3rd-party extensions must be rebuilt" return 1 fi autoconf } # Notes to ./configure parameters # recode and imap are defined in build function because can't build together # --with-libgd -- do not swith to system-wide libgd - runtime bugs. # --with-xmlrpc -- do not swith to system-wide xmlrpc - build errors. _build() { ./configure \ EXTENSION_DIR=$_extension_dir \ --build=$CBUILD \ --host=$CHOST \ --prefix=/usr \ --program-suffix=$_suffix \ --libdir=$_extension_dir \ --datadir=/usr/share/$pkgname \ --sysconfdir=/etc/$pkgname \ --localstatedir=/var \ --with-layout=GNU \ --with-pic \ --with-pear=/usr/share/pear \ --with-config-file-path=/etc/$pkgname \ --with-config-file-scan-dir=$_extension_conf \ --disable-short-tags \ --without-readline \ --with-libedit \ --enable-bcmath=shared \ --with-bz2=shared \ --enable-calendar=shared \ --enable-ctype=shared \ --with-curl=shared \ --enable-dba=shared \ --with-gdbm \ --with-db4 \ --enable-dom=shared \ --with-libxml-dir \ --with-enchant=shared \ --enable-exif=shared \ --enable-fileinfo=shared \ --enable-ftp=shared \ --with-openssl-dir \ --with-gd=shared \ --with-jpeg-dir \ --with-png-dir \ --with-webp-dir \ --with-xpm-dir=no \ --with-freetype-dir \ --enable-gd-native-ttf \ --disable-gd-jis-conv \ --with-gettext=shared \ --with-gmp=shared \ --with-iconv=shared \ --enable-intl=shared \ --with-icu-dir=/usr \ --enable-json=shared \ --enable-libxml=shared \ --with-libxml-dir \ --with-libexpat-dir \ --with-ldap=shared \ --with-ldap-sasl \ --enable-mbstring=shared \ --enable-mbregex \ --with-mcrypt=shared \ --with-mysqli=shared,mysqlnd \ CFLAGS=-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT \ --enable-mysqlnd=shared \ --with-zlib-dir \ --enable-opcache=shared \ --with-openssl=shared \ --with-kerberos \ --with-system-ciphers \ --enable-pcntl=shared \ --with-pcre-regex=/usr \ --with-pcre-dir \ --enable-pdo=shared \ --with-pdo-dblib=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 \ --enable-posix=shared \ --with-pspell=shared \ --enable-session=shared \ --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-tidy=shared \ --with-unixODBC=shared,/usr \ --enable-wddx=shared \ --enable-xml=shared \ --enable-xmlreader=shared \ --with-xmlrpc=shared \ --enable-xmlwriter=shared \ --with-xsl=shared \ --enable-zip=shared \ --with-libzip \ --with-zlib=shared \ --with-zlib-dir \ $@ || return 1 make } build() { cd "$builddir" # build phpdbg _build --enable-phpdbg \ --enable-phpdbg-webhelper \ --disable-cgi \ --disable-cli \ || return 1 # build apache2 module + recode extension _build --disable-phpdbg \ --disable-cgi \ --disable-cli \ --with-apxs2 \ --with-recode=shared \ || return 1 mv libs/lib$_pkgreal*.so sapi/apache2handler/ # build all other + imap extension _build --disable-phpdbg \ --enable-fpm \ --enable-embed \ --with-litespeed \ --with-imap=shared \ --with-imap-ssl \ || return 1 } package() { pkgdesc="$pkgdesc (command line interface)" make -C "$builddir" INSTALL_ROOT="$pkgdir" install || return 1 ln -sf /usr/bin/php$_suffix "$pkgdir"/usr/bin/php rm -fr "$pkgdir"/.[[:alpha:]]* } dev() { provides="$_pkgreal-dev $_pkgreal$_compat-dev" replaces=$provides default_dev || return 1 mkdir -p "$subpkgdir"/usr/bin \ "$subpkgdir"/$_extension_dir || return 1 local file for file in php-config phpize; do mv "$pkgdir"/usr/bin/$file$_suffix \ "$subpkgdir"/usr/bin/ || return 1 ln -sf /usr/bin/$file$_suffix "$subpkgdir"/usr/bin/$file done mv "$pkgdir"/$_extension_dir/build "$subpkgdir"/$_extension_dir } doc() { provides= replaces= default_doc || return 1 install_if="docs $pkgname-config=$pkgver-r$pkgrel" cd "$builddir" local file for file in $(ls CODING_STANDARDS CREDITS EXTENSIONS INSTALL LICENSE NEWS README* UPGRADING*); do install -Dm644 $file "$subpkgdir"/usr/share/doc/$pkgname/$file || return 1 done } apache2() { provides="$_pkgreal-apache2 $_pkgreal$_compat-apache2" replaces= pkgdesc="$pkgdesc (apache2 module)" depends="$pkgname-config apache2" mkdir -p "$subpkgdir"/usr/lib/apache2 || return 1 cp "$builddir"/sapi/apache2handler/lib$_pkgreal*.so \ "$subpkgdir"/usr/lib/apache2/mod_$pkgname.so || return 1 install -Dm644 "$srcdir"/$pkgname-module.conf \ "$subpkgdir"/etc/apache2/conf.d/$pkgname-module.conf } phpdbg() { provides="$_pkgreal-phpdbg $_pkgreal$_compat-phpdbg" replaces=$provides pkgdesc="$pkgdesc (interactive debugger)" depends="$pkgname-config" install -Dm755 "$builddir"/sapi/phpdbg/phpdbg \ "$subpkgdir"/usr/bin/phpdbg$_suffix || return 1 ln -sf /usr/bin/phpdbg$_suffix "$subpkgdir"/usr/bin/phpdbg } libs() { provides="$_pkgreal-libs $_pkgreal$_compat-libs" replaces= pkgdesc="$pkgdesc (embedded library)" depends="$pkgname-config" mkdir -p "$subpkgdir"/usr/lib || return 1 mv "$pkgdir"/usr/lib/lib$_pkgreal*.so \ "$subpkgdir"/usr/lib/lib$pkgname.so || return 1 } litespeed() { provides="$_pkgreal-litespeed $_pkgreal$_compat-litespeed" replaces=$provides pkgdesc="$pkgdesc (litespeed)" depends="$pkgname-config" mkdir -p "$subpkgdir"/usr/bin || return 1 mv "$pkgdir"/usr/bin/lsphp \ "$subpkgdir"/usr/bin/lsphp$_suffix || return 1 ln -sf /usr/bin/lsphp$_suffix "$subpkgdir"/usr/bin/lsphp } cgi() { provides="$_pkgreal-cgi $_pkgreal$_compat-cgi" replaces=$provides pkgdesc="$pkgdesc (common gateway interface)" depends="$pkgname-config" mkdir -p "$subpkgdir"/usr/bin || return 1 mv "$pkgdir"/usr/bin/php-cgi$_suffix \ "$subpkgdir"/usr/bin/ || return 1 ln -sf /usr/bin/php-cgi$_suffix "$subpkgdir"/usr/bin/php-cgi } fpm() { provides="$_pkgreal-fpm $_pkgreal$_compat-fpm" replaces= pkgdesc="$pkgdesc (fastcgi process manager)" depends="$pkgname-config" mkdir -p "$subpkgdir"/usr/share \ "$subpkgdir"/etc/$pkgname \ "$subpkgdir"/var/log/$pkgname || return 1 mv "$pkgdir"/usr/sbin "$subpkgdir"/usr/ || return 1 mv "$pkgdir"/usr/share/$pkgname \ "$subpkgdir"/usr/share/ || return 1 mv "$pkgdir"/etc/$pkgname/php-fpm* \ "$subpkgdir"/etc/$pkgname/ || return 1 local file; for file in php-fpm.conf php-fpm.d/www.conf; do mv "$subpkgdir"/etc/$pkgname/$file.default \ "$subpkgdir"/etc/$pkgname/$file || return 1 done install -Dm755 "$srcdir"/$pkgname-fpm.initd \ "$subpkgdir"/etc/init.d/$_pkgreal-fpm$_suffix || return 1 install -Dm644 "$srcdir"/$pkgname-fpm.logrotate \ "$subpkgdir"/etc/logrotate.d/$_pkgreal-fpm$_suffix || return 1 } pear() { provides="$_pkgreal-pear $_pkgreal$_compat-pear" replaces=$provides pkgdesc="$pkgdesc (php extension and application repository)" depends="$pkgname $pkgname-xml" mkdir -p "$subpkgdir"/usr/bin \ "$subpkgdir"/etc/$pkgname || return 1 mv "$pkgdir"/etc/$pkgname/pear.conf \ "$subpkgdir"/etc/$pkgname/ || return 1 mv "$pkgdir"/usr/share \ "$subpkgdir"/usr/ || return 1 sed -e "s/\$INCARG/\$INCARG -d extension=xml.so/" \ -i "$pkgdir"/usr/bin/pecl || return 1 local file for file in pear peardev pecl; do mv "$pkgdir"/usr/bin/$file \ "$subpkgdir"/usr/bin/$file$_suffix || return 1 sed -e "s:/usr/bin/php:/usr/bin/php$_suffix:g" \ -i "$subpkgdir"/usr/bin/$file$_suffix || return 1 ln -sf /usr/bin/$file$_suffix \ "$subpkgdir"/usr/bin/$file || return 1 done } pecl() { provides="$_pkgreal-pecl $_pkgreal$_compat-pecl" replaces= pkgdesc="$pkgdesc (php extension community library)" depends="$pkgname-pear $pkgname-dev autoconf gcc make musl-dev" mkdir -p "$subpkgdir" } config() { provides="phpapi$_apiver" replaces= depends= pkgdesc="$pkgdesc (common config)" mkdir -p "$subpkgdir"/$_extension_conf || return 1 install -Dm644 "$builddir"/php.ini-production \ "$subpkgdir"/etc/$pkgname/php.ini || return 1 # exit with an error if some modules were not in subpackages rmdir "$pkgdir"/$_extension_dir || return 1 rm -fr "$pkgdir"/etc "$pkgdir"/var "$pkgdir"/usr/lib } _phar() { provides="$_pkgreal-phar-utils $_pkgreal$_compat-phar-utils" replaces=$provides pkgdesc="$pkgdesc (archive script)" depends="$pkgname $pkgname-phar" mkdir -p "$subpkgdir"/usr/bin || return 1 rm "$pkgdir"/usr/bin/phar || return 1 mv "$pkgdir"/usr/bin/phar.phar \ "$subpkgdir"/usr/bin/phar.phar$_suffix || return 1 local file for file in phar$_suffix phar phar.phar; do ln -sf /usr/bin/phar.phar$_suffix \ "$subpkgdir"/usr/bin/$file || return 1 done } _extension() { local dep deps local name=${subpkgname#$pkgname-} local index=$(eval echo \${_index_$name:-0}) provides="$_pkgreal-$name $_pkgreal$_compat-$name" replaces= depends=$(eval echo \$_depends_$name) pkgdesc=$(eval echo \$_pkgdesc_$name) : ${pkgdesc:=$(head -n1 "$builddir"/ext/$name/CREDITS)} pkgdesc="PHP$_suffix extension: ${pkgdesc:-$name}" [ -f "$builddir"/ext/$name/config.w32 ] && \ deps=$(grep -o "_DEP('$name'.*" "$builddir"/ext/$name/config.w32 | sed "s/[',);]//g") [ -f "$builddir"/ext/$name/config.m4 ] && \ deps="$deps $(grep -o "_DEP($name,.*" "$builddir"/ext/$name/config.m4 | sed "s/[,)]//g")" for dep in $(echo -e ${deps//[[:space:]]/\\n} | sort -u); do [ -z "${_extensions##*$dep*}" ] && depends="$depends $pkgname-$dep" done index=$(($(echo $depends | wc -w)+$index)) depends="$pkgname-config phpapi$_apiver $depends" mkdir -p "$subpkgdir"/$_extension_dir \ "$subpkgdir"/$_extension_conf || return 1 mv "$pkgdir"/$_extension_dir/$name.so \ "$subpkgdir"/$_extension_dir || return 1 echo $(eval echo \$_prefix_$name)extension=$name.so > \ "$subpkgdir"/$_extension_conf/$(printf %02d $index)_$name.ini } sha512sums="90dd06348d5884a2bb4a22ab80bb4f50e603751a1787096f447762fe00e5b4f36deafda045ecf6345883d9f4b711755a854a2e7043f27702acfe78ade90b42d9 php-7.1.3.tar.bz2 fbf9a1572d37370ec0d126502e1d066e045a992484d8fc4f1e2ede330134c1a15f4029f29fa4daebd48eed78b045dc051ced69fbf1f11efc7ad81d884a639a99 php7-module.conf cacce7bf789467ff40647b7319e3760c6c587218720538516e8d400baa75651f72165c4e28056cd0c1dc89efecb4d00d0d7823bed80b29136262c825ce816691 php7-fpm.logrotate d91a915d00b8a25565b0ef87d5788ec40eb02b7890ab72df8cea49693311645c97ce2eed6f706a12704c7818102daee7ba2c42ee814c61bb29f90e464e3bb17f php7-fpm.initd a4c35446745ab0ac806de801f0651fc5d2c98cf60063c3c2d3963a84f1c71ef78e09b7650c08e7231be0fdb93c0c255de38894d7f0e4f4c5a190d17f1a6bc476 php7-fpm.patch 199aecdbd3b4035aabf5379c215f82412d3c98b79a1ee186944e7fe1f0ed6f40789ea30e2355149491de6be34fc66c5e486e2a79a7e41ab2ae18706ef3ffe79b php7-includedir.patch f1177cbf6b1f44402f421c3d317aab1a2a40d0b1209c11519c1158df337c8945f3a313d689c939768584f3e4edbe52e8bd6103fb6777462326a9d94e8ab1f505 install-pear.patch"