############################################################################### # Generated by arch-phpbs: https://github.com/lamskoy/arch-phpbs # # Maintaining/co-maintaining on AUR: all packages from php53 up to php82 # # Thanks to: # # AUR php80 Co-maintainer: Timo Sarawinski # AUR php70 and php71 Co-maintainer: William Gathoye # AUR php74 Co-maintainer: Tomasz Gruszka # AUR php73 Co-maintainer: Matt Harrison # AUR php73 and php56 Contributor: Pierre Schmitz # AUR php56 Contributor: Chris Severance aur.severach aATt spamgourmet dott com # AUR php56 Contributor: Thore Bödecker # AUR php56 Contributor: Jörg Schuck # AUR php55 Contributor: Raphaël Doursenaud # AUR php53 Contriburor: Felix Yan ############################################################################### _phpbase="70" _suffix="" pkgver="7.0.33" pkgrel="13" pkgbase="php70" pkgdesc="PHP 7.0.33 compiled as to not conflict with mainline php" _cppflags=" -DU_USING_ICU_NAMESPACE=1 -DU_DEFINE_FALSE_AND_TRUE=1 " _build_apache_cfg="etc/httpd/conf/extra" _build_bundled_gd="0" _build_conf_d="etc/php70/conf.d" _build_forced_openssl_11="1" _build_fpm_name="php-fpm70" _build_fpm_service_name="php70-fpm" _build_icu_src_dir="icu/source" _build_ini_per_sapi="0" _build_mysql_socket="/run/mysqld/mysqld.sock" _build_openssl_v10_patch="0" _build_openssl_v11_patch="0" _build_per_sapi="0" _build_phpdbg="1" _build_sapi_ini_apache="etc/php70" _build_sapi_ini_cgi="etc/php70" _build_sapi_ini_cli="etc/php70" _build_sapi_ini_embed="etc/php70" _build_sapi_ini_fpm="etc/php70" _build_sapi_ini_litespeed="etc/php70" _build_sapi_ini_phpdbg="etc/php70" _build_sapi_litespeed="--with-litespeed" _build_shared_gd="1" _build_shared_json="1" _build_shared_libedit="0" _build_shared_mysqlnd="1" _build_shared_openssl="0" _build_shared_pdo="1" _build_system_timezonedb="1" _build_update_sqlite="0" _build_uses_argon="0" _build_uses_lmdb="0" _build_with_custom_icu="0" _pkgver_icu="64-1" _priority_default="20" _priority_dom="16" _priority_json="15" _priority_mysqlnd="10" _priority_opcache="10" _priority_openssl="05" _priority_pdo="10" _priority_xml="15" _suffix="" _suffix_so="7" pkgname=( "php70" "php70-cli" "php70-cgi" "php70-fpm" "php70-embed" "php70-apache" "php70-litespeed" "php70-pear" "php70-pecl" "php70-phpdbg" "php70-xml" "php70-xsl" "php70-xmlreader" "php70-xmlwriter" "php70-wddx" "php70-dom" "php70-simplexml" "php70-pdo" "php70-mysql" "php70-phar" "php70-pcntl" "php70-posix" "php70-shmop" "php70-sockets" "php70-sysvmsg" "php70-sysvsem" "php70-sysvshm" "php70-tokenizer" "php70-dba" "php70-pgsql" "php70-odbc" "php70-firebird" "php70-interbase" "php70-dblib" "php70-sqlite" "php70-gd" "php70-exif" "php70-tidy" "php70-iconv" "php70-xmlrpc" "php70-bcmath" "php70-gmp" "php70-zip" "php70-bz2" "php70-json" "php70-fileinfo" "php70-ctype" "php70-recode" "php70-mbstring" "php70-pspell" "php70-enchant" "php70-intl" "php70-calendar" "php70-gettext" "php70-soap" "php70-ftp" "php70-curl" "php70-snmp" "php70-ldap" "php70-imap" "php70-mcrypt" "php70-opcache" ) source=( "make-tests.patch" "pear-config-patcher.php" "php-makefile-patcher.php" "php-apache.conf" "https://php.net/distributions/php-${pkgver}.tar.xz" "php-libxml.patch" "php55-phar-names.patch" "openssl-sslv3-consts.patch" "fpm-numeric-uid-gid.patch" "fpm-reload-sighup.patch" "mysql-socket-php5.3.patch" "php-enchant-php5.3.patch" "php-enchant-depr.patch" "php-freetype-2.9.1.patch" "php-icu-php5.5.patch" "recode-php5.3.patch" "debian-php-7.0.33.patch" "php-phpinfo.patch" "timezonedb-guess.patch" "timezonedb-php7.0.patch" ) depends=( ) makedepends=( "acl" "libtool" "autoconf" "automake" "patchelf" "gawk" "sed" "bash" "python" "libxml2" "pam" "krb5" "zlib" "libedit" "smtp-forwarder" "pcre" "apache" "ncurses" "libxcrypt" "systemd" "systemd-libs" "coreutils" "findutils" "libxslt" "e2fsprogs" "openssl-1.1" "db5.3" "postgresql-libs" "unixodbc" "libfbclient" "libfbclient" "freetds" "sqlite" "libvpx" "gd" "tidy" "gmp" "libzip" "recode" "aspell" "enchant" "libvoikko" "hspell" "hunspell" "nuspell" "aspell" "icu" "curl" "net-snmp" "libsasl" "libldap" "c-client" "pam" "libmcrypt" ) arch=( ) _patches=( "php-libxml.patch" "php55-phar-names.patch" "openssl-sslv3-consts.patch" "fpm-numeric-uid-gid.patch" "fpm-reload-sighup.patch" "mysql-socket-php5.3.patch" "php-enchant-php5.3.patch" "php-enchant-depr.patch" "php-freetype-2.9.1.patch" "php-icu-php5.5.patch" "recode-php5.3.patch" "debian-php-7.0.33.patch" "php-phpinfo.patch" "timezonedb-guess.patch" "timezonedb-php7.0.patch" ) _sapi_depends=( "libxml2" "pcre2" "libedit" ) _ext_depends_snmp=( "php70=7.0.33" "net-snmp" "openssl-1.1" ) _ext_depends_ftp=( "php70=7.0.33" "openssl-1.1" ) _ext_depends_intl=( "php70=7.0.33" "icu" ) _ext_depends_imap=( "php70=7.0.33" "pam" "krb5" "c-client" "libxcrypt" "openssl-1.1" ) _ext_depends_gd=( "php70=7.0.33" "gd" "libvpx" ) _ext_depends_mysql=( "php70=7.0.33" "php70-pdo=7.0.33" ) _ext_depends_dba=( "php70=7.0.33" "db5.3" ) _ext_depends_odbc=( "php70=7.0.33" "unixodbc" "php70-pdo=7.0.33" ) _ext_depends_pgsql=( "php70=7.0.33" "postgresql-libs" "php70-pdo=7.0.33" ) _ext_depends_firebird=( "php70=7.0.33" "libfbclient" "php70-pdo=7.0.33" ) _ext_depends_sqlite=( "php70=7.0.33" "sqlite" "php70-pdo=7.0.33" ) _ext_depends_mbstring=( "php70=7.0.33" ) _ext_depends_openssl=( "php70=7.0.33" "krb5" "e2fsprogs" "openssl-1.1" ) _phpconfig="\ --prefix=/usr \ --sbindir=/usr/bin \ --localstatedir=/var \ --with-layout=GNU \ --disable-debug \ --mandir=/usr/share/man \ --srcdir=../php-${pkgver} \ --libdir=/usr/lib/php${_phpbase}${_suffix} \ --datadir=/usr/share/php${_phpbase}${_suffix} \ --program-suffix=${_phpbase}${_suffix} \ --with-config-file-scan-dir=/${_build_conf_d} \ --enable-filter \ --with-pear \ --enable-session \ --with-mhash=/usr \ --with-kerberos \ --with-mysql-sock=${_build_mysql_socket} \ --enable-mysqlnd-compression-support \ --datarootdir=/usr/share/php${_phpbase}${_suffix} \ --with-zlib \ --enable-libxml \ --with-pcre-regex=/usr \ --disable-rpath \ --config-cache \ --with-system-tzdata \ --with-openssl=/usr \ --enable-phpdbg-readline \ --with-libedit" _phpextensions="\ --enable-xml=shared \ --with-xsl=shared \ --enable-xmlreader=shared \ --enable-xmlwriter=shared \ --enable-wddx=shared \ --enable-dom=shared \ --enable-simplexml=shared \ --enable-pdo=shared \ --enable-mysqlnd=shared \ --with-mysqli=shared,mysqlnd \ --with-pdo-mysql=shared,mysqlnd \ --enable-phar=shared \ --enable-pcntl=shared \ --enable-posix=shared \ --enable-shmop=shared \ --enable-sockets=shared \ --enable-sysvmsg=shared \ --enable-sysvsem=shared \ --enable-sysvshm=shared \ --enable-tokenizer=shared --enable-dba=shared \ --with-db4=/usr \ --without-gdbm \ --with-cdb \ --with-pgsql=shared,/usr \ --with-pdo-pgsql=shared,/usr \ --with-unixODBC=shared,/usr \ --with-pdo-odbc=shared,unixODBC,/usr \ --with-pdo-firebird=shared,/usr \ --with-interbase=shared,/usr \ --with-pdo-dblib=shared,/usr \ --with-pdo-sqlite=shared,/usr \ --with-sqlite3=shared,/usr \ --with-gd=shared,/usr \ --enable-gd-native-ttf \ --with-vpx-dir=/usr --with-webp-dir=/usr \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --with-xpm-dir=/usr \ --with-freetype-dir=/usr \ --enable-exif=shared \ --with-tidy=shared,/usr \ --with-iconv=shared \ --with-xmlrpc=shared \ --enable-bcmath=shared \ --with-gmp=shared,/usr \ --enable-zip=shared \ --with-libzip=/usr \ --with-bz2=shared,/usr \ --enable-json=shared \ --enable-fileinfo=shared \ --enable-ctype=shared \ --with-recode=shared \ --enable-mbstring=shared \ --enable-mbregex \ --enable-mbregex-backtrack \ --with-pspell=shared,/usr \ --with-enchant=shared,/usr \ --enable-intl=shared \ --enable-calendar=shared \ --with-gettext=shared,/usr \ --enable-soap=shared \ --enable-ftp=shared \ --with-curl=shared,/usr \ --with-snmp=shared,/usr \ --with-ldap=shared,/usr \ --with-ldap-sasl=/usr \ --with-imap=shared,/usr \ --with-imap-ssl=yes \ --with-mcrypt=shared \ --enable-opcache \ --enable-huge-code-pages" _phpextensions_fpm="\ --with-fpm-user=http \ --with-fpm-group=http \ --with-fpm-systemd \ --with-fpm-acl" options=('!lto') arch=("$CARCH") checkdepends=('procps-ng' 'smtp-forwarder') license=('PHP') url='http://www.php.net' ################################################################################ # Prepare it ################################################################################ prepare() { pushd "php-${pkgver}" echo "[SED] scripts/phpize.in" sed -E "s|(includedir[\t ]*=.*/php)|\1${_phpbase}${_suffix}|g" \ -i scripts/phpize.in echo "[SED] scripts/phpize.m4" sed -e "s|\[php-config\]|\[php-config${_phpbase}${_suffix}\]|g" \ -e "s|\(PHP_ARG_WITH(\[php-config\)${_phpbase}${_suffix}\]|\1]|g" \ -e "s|php-config, no|php-config${_phpbase}${_suffix}, no|g" \ -i "scripts/phpize.m4" echo "[SED] scripts/Makefile.frag" sed -E "s|(phpincludedir[\t ]*=.*/php)|\1${_phpbase}${_suffix}|g" \ -i scripts/Makefile.frag echo "[SED] scripts/php-config.in" sed -E "s|(include_dir[\t ]*=.*php)|\1${_phpbase}${_suffix}|g" \ -i scripts/php-config.in echo "[SED] sapi/apache2handler/config.m4" sed -e '/APACHE_THREADED_MPM=/d' \ -i sapi/apache2handler/config.m4 echo "[SED] sapi/fpm/Makefile.frag" # sed -e 's#php-fpm\$(program_suffix)#php\$(program_suffix)-fpm#' sed -e 's/.conf.default/.conf/g' \ -i sapi/fpm/Makefile.frag echo "[SED] sapi/fpm/php-fpm.service.in" sed -E "s|ExecStart[\s]?=[\s]?@([a-zA-Z_]+)@/php-fpm|ExecStart=@\1@/${_build_fpm_name}|g; \ s|PIDFile[\s]?=[\s]?@([a-zA-Z_]+)@/run/php-fpm.pid|PIDFile=/run/${_build_fpm_service_name}/php-fpm.pid|g" \ -i sapi/fpm/php-fpm.service.in local _check_files=("sapi/fpm/www.conf.in" "sapi/fpm/php-fpm.conf.in"); for file_conf in "${_check_files[@]}"; do if [[ ! -f $file_conf ]]; then continue; fi echo "[SED] ${file_conf}" sed -e "s#^listen =.*#listen = /run/${_build_fpm_service_name}/php-fpm.sock#" \ -e "s#run/php-fpm.pid#/run/${_build_fpm_service_name}/php-fpm.pid#" \ -e 's#^;*[ \t]*listen.owner =#listen.owner =#' \ -e 's#^;*[ \t]*listen.group =#listen.group =#' \ -e 's#^;*[ \t]*error_log =.*#error_log = syslog#' \ -e 's#^;*[ \t]*chdir =.*#;chdir = /srv/http#' \ -i "${file_conf}" done echo "[SED] php.ini-production" sed -e 's#^;*[ \t]*extension_dir[\t ]*=.*/.*$#extension_dir = "___EXTENSIONDIR___"#' \ -e "s#___EXTENSIONDIR___#/usr/lib/${pkgbase}/modules#g" \ -e "s#^;*[ \t]*extension=#;extension=#g" \ -e "s#^;*[ \t]*session.save_path[\t ]*=.*#session.save_path=___SESSIONS___#g" \ -e "s#___SESSIONS___#/var/lib/${pkgbase}/sessions#g" \ -i php.ini-production for patch_name in "${_patches[@]}"; do echo "[PATCH] Applying source patch ${patch_name}"; patch -p1 -i "../${patch_name}" done if ((_phpbase <= 53)); then PHP_AUTOCONF="/usr/bin/autoconf-2.13" ./buildconf --force else ./buildconf --force fi rm -f tests/output/stream_isatty_*.phpt rm -f Zend/tests/arginfo_zpp_mismatch*.phpt rm -f Zend/tests/bug79919.phpt popd } _build_sapi() { _sapi="${1}" _commands="${2}" if (( _sapi == "cli" )); then if [[ ! -d "build-${_sapi}" ]]; then mkdir "build-${_sapi}" fi pushd "build-${_sapi}" if [[ -L configure ]]; then rm configure fi ln -s "../php-${pkgver}/configure" popd else cp -Ta "build-cli" "build-${_sapi}" fi pushd "build-${_sapi}" ./configure ${_phpconfig} ${_commands} patch -p1 -i "${srcdir}/make-tests.patch" if (($_sapi != "cli")); then make clean fi if ((! _build_with_custom_icu)); then sed -i -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \ -e 's|^runpath_var=LD_RUN_PATH|runpath_var=LIBTOOL_IS_BROKED|g' \ libtool fi make popd } ################################################################################ # BUILD them all ################################################################################ build() { export CFLAGS="${CFLAGS} -fPIC" export CXXFLAGS="${CXXFLAGS} -fPIC" export EXTENSION_DIR="/usr/lib/${pkgbase}/modules" if ((_build_openssl_v10_patch)); then export PHP_OPENSSL_DIR="/usr/lib/openssl-1.0" export PKG_CONFIG_PATH="/usr/lib/openssl-1.0/pkgconfig" elif ((_build_forced_openssl_11)); then export PHP_OPENSSL_DIR="/usr/lib/openssl-1.1" export PKG_CONFIG_PATH="/usr/lib/openssl-1.1/pkgconfig" fi if [[ ! -z "${_cppflags}" ]]; then CPPFLAGS+=" $_cppflags " fi if ((_build_with_custom_icu )); then local _php5_icu_first="${srcdir}/${_build_icu_src_dir}/php${_phpbase}${suffix}-icu${_pkgver_icu}" LDFLAGS+="-Wl,-rpath=$ORIGIN/usr/lib/${pkgbase}/icu${_pkgver_icu}/lib" _phpextensions+=" --with-icu-dir=${_php5_icu_first} " if [[ ! -d $_php5_icu_first ]]; then mkdir -p "${_php5_icu_first}" fi pushd "${_build_icu_src_dir}" ./configure --prefix="${_php5_icu_first}" \ --sysconfdir="${_php5_icu_first}/etc" \ --mandir="${_php5_icu_first}/share/man" \ --sbindir="${_php5_icu_first}/bin" \ --libdir="${_php5_icu_first}/lib" \ --includedir="${_php5_icu_first}/include" \ --disable-tests \ --disable-debug make -j$(nproc) make install ./configure --prefix="/usr/lib/${pkgbase}/icu${_pkgver_icu}" \ --sysconfdir="/usr/lib/${pkgbase}/icu${_pkgver_icu}/etc" \ --mandir="/usr/lib/${pkgbase}/icu${_pkgver_icu}/share/man" \ --sbindir="/usr/lib/${pkgbase}/icu${_pkgver_icu}/bin" \ --libdir="/usr/lib/${pkgbase}/icu${_pkgver_icu}/lib" \ --includedir="/usr/lib/${pkgbase}/icu${_pkgver_icu}/include" \ --disable-tests \ --disable-debug make -j$(nproc) popd fi if ((_build_ini_per_sapi || _build_per_sapi)); then # CLI _cli_addons='' if (( ! _build_per_sapi )); then # CGI enabled here only for tests passing, then overriden later by cgi build _cli_addons+=" --enable-cgi " fi _build_sapi "cli" "\ --sysconfdir=/${_build_sapi_ini_cli} \ --with-config-file-path=/${_build_sapi_ini_cli} \ --enable-cli \ ${_phpextensions} \ ${_cli_addons} \ --disable-fpm \ --disable-embed \ --disable-phpdbg \ " # phpdbg if ((_build_phpdbg)); then _sapi="phpdbg" _build_sapi "phpdbg" "\ --sysconfdir=/${_build_sapi_ini_phpdbg} \ --with-config-file-path=/${_build_sapi_ini_phpdbg} \ --disable-all \ --enable-phpdbg \ --disable-cgi \ --disable-cli \ --disable-fpm \ --disable-embed \ " fi # embed _build_sapi "embed" "\ --sysconfdir=/${_build_sapi_ini_embed} \ --with-config-file-path=/${_build_sapi_ini_embed} \ --disable-all \ --enable-embed=shared \ --disable-cgi \ --disable-cli \ --disable-fpm \ --disable-phpdbg \ " # cgi _build_sapi "cgi" "\ --sysconfdir=/${_build_sapi_ini_cgi} \ --with-config-file-path=/${_build_sapi_ini_cgi} \ --disable-all \ --enable-cgi \ --disable-cli \ --disable-fpm \ --disable-embed \ --disable-phpdbg \ " # litespeed _cflags="${CFLAGS}" export CFLAGS="${CFLAGS} -Wno-error=format-security" _build_sapi "litespeed" "\ --sysconfdir=/${_build_sapi_ini_litespeed} \ --with-config-file-path=/${_build_sapi_ini_litespeed} \ --disable-all \ --disable-cgi \ --disable-cli \ --disable-fpm \ --disable-embed \ --disable-phpdbg \ ${_build_sapi_litespeed} \ " export CFLAGS="${_cflags}" # fpm _build_sapi "fpm" "\ --sysconfdir=/${_build_sapi_ini_fpm} \ --with-config-file-path=/${_build_sapi_ini_fpm} \ --disable-all \ --enable-fpm \ ${_phpextensions_fpm} \ --disable-cli \ --disable-cgi \ --disable-embed \ --disable-phpdbg \ " else # CLI if ((_build_phpdbg)); then _cli_addons+=" --enable-phpdbg " fi _build_sapi "cli" "\ --sysconfdir=/${_build_sapi_ini_cli} \ --with-config-file-path=/${_build_sapi_ini_cli} \ --enable-cli \ ${_phpextensions} \ ${_cli_addons} \ --enable-fpm \ --enable-cgi \ --enable-embed=shared \ --enable-fpm \ ${_phpextensions_fpm} \ ${_build_sapi_litespeed} \ " fi # apache _build_sapi "apache" "\ --disable-all \ --disable-cli \ --disable-cgi \ --disable-fpm \ --disable-embed \ --disable-phpdbg \ --with-apxs2 \ --sysconfdir=/${_build_sapi_ini_apache} \ --with-config-file-path=/${_build_sapi_ini_apache} \ " } check() { export CFLAGS="${CFLAGS} -fPIC" export CXXFLAGS="${CXXFLAGS} -fPIC" pushd "build-cli" # Check if sendmail was configured correctly (FS#47600) export REPORT_EXIT_STATUS=1 export NO_INTERACTION=1 export SKIP_ONLINE_TESTS=1 export SKIP_SLOW_TESTS=1 export TESTS='tests Zend' if ((_phpbase > 73)); then export TEST_PHP_ARGS="-j$(nproc)" fi # Patch tests to run PHP modules in needed order sapi/cli/php -n ../php-makefile-patcher.php Makefile make test popd } ################################################################################ # Custom code ################################################################################ _install_module_ini() { local extension=$(echo "${1}" | sed 's/\.so//') local priority="${_priority_default}" case "${extension}" in "json") priority="${_priority_json}" ;; "xml") priority="${_priority_xml}" ;; "openssl") priority="${_priority_openssl}" ;; "mysqlnd") priority="${_priority_mysqlnd}" ;; "pdo") priority="${_priority_pdo}" ;; "opcache") priority="${_priority_opcache}" ;; "dom") priority="${_priority_dom}" ;; esac local extension_type="extension" case "${extension}" in "opcache" | "xdebug") extension_type="zend_extension" ;; "recode") extension_type=";extension" ;; esac if [[ ! -d "${pkgdir}/${_build_conf_d}" ]]; then mkdir -p "${pkgdir}/${_build_conf_d}" fi echo "${extension_type}=${extension}.so" > "${pkgdir}/${_build_conf_d}/${priority}-${extension}.ini" chmod 0644 "$pkgdir/${_build_conf_d}/${priority}-${extension}.ini" _last_priority=${priority} _last_extension=${extension} } _install_module() { if [[ -f "build-cli/modules/${1}.so" ]]; then install -D -m755 "build-cli/modules/${1}.so" "${pkgdir}/usr/lib/${pkgbase}/modules/${1}.so"; _install_module_ini "${1}" else echo "[DEBUG]: Install_module can't find ${1}.so, skipped" fi } ############################################################################### # PHP: SAPI's ############################################################################### # Main package package_php70() { # Binary names pkgdesc='PHP. A general-purpose scripting language that is especially suited to web development' depends=('zlib' 'pcre' 'libedit') if ((_build_with_custom_icu)); then pushd "${_build_icu_src_dir}" make DESTDIR="${pkgdir}" install popd pushd "${pkgdir}/usr/lib/${pkgbase}/icu${_pkgver_icu}" rm -rf bin include share popd fi # Install session dir install -d -m1733 "${pkgdir}/var/lib/${pkgbase}/sessions" # conf.d dir with shared modules install -d -m755 "${pkgdir}/${_build_conf_d}/" pushd "build-cli" make -j1 INSTALL_ROOT=${pkgdir} install-{modules,build,headers,programs} # Cleanup for CGI" rm -rf "${pkgdir}/usr/bin/${pkgbase}-cgi" popd pushd "${pkgdir}/usr/lib/${pkgbase}/modules/" # remove static modules rm -f *.a # remove modules provided by subpackages rm -f {enchant,imap,intl,pspell,snmp,tidy,curl,ldap,bz2,bcmath,soap,zip,gmp,dba,opcache,json,gd,mcrypt,sodium,recode}.so rm -f {pdo_dblib,mssql}.so rm -f {dom,simplexml,xml,xmlreader,xmlwriter,xsl,wddx,xmlrpc}.so rm -f {pgsql,pdo_pgsql}.so rm -f {odbc,pdo_odbc}.so rm -f {pdo_sqlite,sqlite3}.so rm -f {pdo_firebird.so,interbase.so} rm -f {mysqli,pdo_mysql,mysqlnd,mysql}.so rm -f {openssl,ffi,pcntl,ftp,calendar,ctype,fileinfo,iconv,mbstring,exif,pdo,phar,posix,shmop}.so rm -f {sockets,tokenizer,gettext,sysvmsg,sysvsem,sysvshm}.so popd pushd build-cli if (( ! _build_ini_per_sapi )); then backup=("${_build_sapi_ini_cli}/php.ini") install -d -m755 "${pkgdir}/${_build_sapi_ini_cli}" install -D -m644 "../php-${pkgver}/php.ini-production" "${pkgdir}/${_build_sapi_ini_cli}/php.ini" fi popd } # Cli + phar package_php70-cli() { _sapi="cli" pkgdesc="cli (command-line executable) version for ${pkgbase}" depends=("${pkgbase}=${pkgver}") depends+=("${_sapi_depends[@]}") pushd "build-${_sapi}" make -j1 INSTALL_ROOT="${pkgdir}" install-cli make -j1 INSTALL_ROOT="${pkgdir}" install-pharcmd if ((_build_ini_per_sapi)); then backup=("${_build_sapi_ini_cli}/php.ini") install -d -m755 "${pkgdir}/${_build_sapi_ini_cli}" install -D -m644 "../php-${pkgver}/php.ini-production" "${pkgdir}/${_build_sapi_ini_cli}/php.ini" fi # Cleanup for CGI rm -rf "${pkgdir}/usr/bin/${pkgbase}-cgi" popd } # End cli # CGI package_php70-cgi() { _sapi="cgi" pkgdesc="CGI and FCGI SAPI for ${pkgbase}" depends=("${pkgbase}=${pkgver}") depends+=("${_sapi_depends[@]}") if ((_build_ini_per_sapi || _build_per_sapi)); then pushd "build-${_sapi}" else pushd "build-cli" fi if ((_build_ini_per_sapi)); then install -D -m644 "../php-${pkgver}/php.ini-production" "${pkgdir}/${_build_sapi_ini_cgi}/php.ini" backup=("${_build_sapi_ini_cgi}/php.ini") fi case "${_phpbase}" in 53 | 54) install -D -m755 sapi/cgi/php-cgi "${pkgdir}/usr/bin/${pkgbase}-cgi" ;; *) make -j1 INSTALL_ROOT="${pkgdir}" install-cgi ;; esac popd } # CGI end # Apache package_php70-apache() { _sapi="apache" _build_mod_php_so="libphp${_suffix_so}.so" _build_mod_php_module="php${_suffix_so}_module" _build_build_php_script_name="php${_suffix_so}-script" _apache_module_conf="${pkgbase}-module.conf" pkgdesc="Apache SAPI for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'apache') depends+=("${_sapi_depends[@]}") depends+=('libxcrypt'); depends+=('ncurses'); backup=("${_build_apache_cfg}/${_apache_module_conf}") echo "# End of LoadModule in httpd.conf - see ArchWiki Apache HTTP Server" echo "LoadModule ${_build_mod_php_module} modules/lib${pkgbase}.so" echo "AddHandler ${_build_php_script_name} .php" echo "# End of Include List" echo "Include conf/extra/${_apache_module_conf}" pushd "build-${_sapi}" if ((_build_ini_per_sapi)); then backup+=("${_build_sapi_ini_apache}/php.ini") install -d -m755 "${pkgdir}/${_build_sapi_ini_apache}" install -D -m644 "../php-${pkgver}/php.ini-production" "${pkgdir}/${_build_sapi_ini_apache}/php.ini" fi install -D -m755 "libs/${_build_mod_php_so}" "${pkgdir}/usr/lib/httpd/modules/lib${pkgbase}.so" patchelf --set-soname \ "lib${pkgbase}.so" \ "${pkgdir}/usr/lib/httpd/modules/lib${pkgbase}.so" popd install -D -m644 "php-apache.conf" "${pkgdir}/${_build_apache_cfg}/${_apache_module_conf}" echo "[SED] ${pkgdir}/${_build_apache_cfg}/${_apache_module_conf}" sed -e "s#@MODULE@#${_build_mod_php_module}#" \ -i "${pkgdir}/${_build_apache_cfg}/${_apache_module_conf}" } # Apache end # FPM package_php70-fpm() { _sapi="fpm" install="php-fpm.install" pkgdesc="FastCGI Process Manager for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'systemd-libs' 'acl') depends+=("${_sapi_depends[@]}") backup=("${_build_sapi_ini_fpm}/php-fpm.conf") if ((_phpbase >= 70)); then backup+=("${_build_sapi_ini_fpm}/php-fpm.d/www.conf") fi options=('!emptydirs') if ((_build_ini_per_sapi || _build_per_sapi)); then pushd "build-${_sapi}" else pushd "build-cli" fi if ((_build_ini_per_sapi)); then backup+=("${_build_sapi_ini_fpm}/php.ini") install -d -m755 "${pkgdir}/${_build_sapi_ini_fpm}/" install -D -m644 "../php-${pkgver}/php.ini-production" "${pkgdir}/${_build_sapi_ini_fpm}/php.ini" fi make -j1 INSTALL_ROOT="${pkgdir}" install-fpm install -D -m644 "sapi/fpm/php-fpm.service" "${pkgdir}/usr/lib/systemd/system/${_build_fpm_service_name}.service" echo "d /run/${_build_fpm_service_name} 755 root root" > php-fpm.tmpfiles install -D -m644 "php-fpm.tmpfiles" "${pkgdir}/usr/lib/tmpfiles.d/${_build_fpm_service_name}.conf" popd } # FPM end # embed sapi package_php70-embed() { _sapi="embed" pkgdesc="Embedded PHP SAPI library for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'ncurses' 'systemd-libs' 'libxcrypt' 'acl' 'ncurses') depends+=("${_sapi_depends[@]}") options=('!emptydirs') if ((_build_ini_per_sapi || _build_per_sapi)); then pushd "build-${_sapi}" else pushd "build-cli" fi install -d -m755 "${pkgdir}/${_build_sapi_ini_embed}" if ((_build_ini_per_sapi)); then install -D -m644 "../php-${pkgver}/php.ini-production" "${pkgdir}/${_build_sapi_ini_embed}/php.ini" backup=("${_build_sapi_ini_embed}/php.ini") fi make -j1 INSTALL_ROOT="${pkgdir}" PHP_SAPI=embed install-sapi mv "${pkgdir}/usr/lib/libphp${_suffix_so}.so" "${pkgdir}/usr/lib/lib${pkgbase}.so" popd patchelf --set-soname "lib${pkgbase}.so" "${pkgdir}/usr/lib/lib${pkgbase}.so" } # embed sapi end # phpdbg sapi package_php70-phpdbg() { _sapi="phpdbg" options=('!emptydirs') pkgdesc="Interactive PHP debugger for ${pkgbase} ($_sapi)" depends=("${pkgbase}=${pkgver}") depends+=("${_sapi_depends[@]}") if ((_build_ini_per_sapi || _build_per_sapi)); then pushd "build-${_sapi}" else pushd "build-cli" fi if ((_build_ini_per_sapi)); then backup=("${_build_sapi_ini_phpdbg}/php.ini") install -d -m755 "${pkgdir}/${_build_sapi_ini_phpdbg}" install -D -m644 "../php-${pkgver}/php.ini-production" "${pkgdir}/${_build_sapi_ini_phpdbg}/php.ini" fi make -j1 INSTALL_ROOT="${pkgdir}" "install-${_sapi}" popd } # phpdbg sapi end # litespeed sapi package_php70-litespeed() { _sapi="litespeed" pkgdesc="LiteSpeed SAPI for ${pkgbase}" depends=("${pkgbase}=${pkgver}") depends+=("${_sapi_depends[@]}") if ((_build_ini_per_sapi || _build_per_sapi)); then pushd "build-${_sapi}" else pushd "build-cli" fi if ((_build_ini_per_sapi)); then install -D -m644 "../php-${pkgver}/php.ini-production" "${pkgdir}/${_build_sapi_ini_cgi}/php.ini" backup=("${_build_sapi_ini_cgi}/php.ini") fi case "${_phpbase}" in *) install -D -m755 sapi/litespeed/php "${pkgdir}/usr/bin/ls${pkgbase}" ;; esac popd } # litespeed sapi end ############################################################################### # PEAR + PECL ############################################################################### # PEAR package_php70-pear() { pkgdesc="PHP Extension and Application Repository (PEAR) for ${pkgbase}" depends=( "${pkgbase}=${pkgver}" "php${_phpbase}-xml${_suffix}=${pkgver}" "php${_phpbase}-cli${_suffix}=${pkgver}" "php${_phpbase}-phar${_suffix}=${pkgver}" ) #backup=("${_build_sapi_ini_cli}/pear.conf") install -d "${pkgdir}/usr/share/${pkgbase}/pear/htdocs" install -d "${pkgdir}/usr/share/${pkgbase}/pear/data" install -d "${pkgdir}/usr/share/${pkgbase}/pear/doc" install -d "${pkgdir}/usr/share/${pkgbase}/pear/test" install -d "${pkgdir}/usr/share/${pkgbase}/pear/cfg" install -d "${pkgdir}/var/lib/${pkgbase}/pear/cache" install -d "${pkgdir}/var/lib/${pkgbase}/pear/metadata" install -d "${pkgdir}/var/lib/${pkgbase}/pear/download" install -d "${pkgdir}/var/lib/${pkgbase}/pear/temp" export PHP_PEAR_SYSCONF_DIR="${_build_sapi_ini_cli}" pushd build-cli cp "${srcdir}/php-${pkgver}/pear/install-pear-nozlib.phar" "pear/install-pear-nozlib.phar" INSTALL_ROOT="${pkgdir}/" ./sapi/cli/php -n \ -d extension=modules/xml.so \ -d extension=modules/phar.so \ -d date.timezone=UTC -d memory_limit=64M -d short_open_tag=0 -d safe_mode=0 \ -d 'error_reporting=E_ALL&~E_DEPRECATED' -d detect_unicode=0 "pear/install-pear-nozlib.phar" \ -ds "${_phpbase}${_suffix}" \ --php "/usr/bin/${pkgbase}" \ --bin "/usr/bin" \ --man "/usr/share/man" \ --dir "/usr/share/${pkgbase}/pear" \ --data "/usr/share/${pkgbase}/pear/data" \ --doc "/usr/share/${pkgbase}/pear/doc" \ --test "/usr/share/${pkgbase}/pear/test" \ --www "/usr/share/${pkgbase}/pear/htdocs" \ --config "/usr/share/${pkgbase}/pear/cfg" \ --force # fix pear.conf with unserialize # first arg: path to pear.conf # second arg: PEAR base /var path ./sapi/cli/php -n ../pear-config-patcher.php \ "${pkgdir}/${_build_sapi_ini_cli}/pear.conf" \ "/var/lib/${pkgbase}/pear" popd # remove unneeded files rm -rf "${pkgdir}"/.{channels,depdb,depdblock,filemap,lock,registry} #rename binaries for i in pear peardev pecl; do _target="${pkgbase/php/$i}" # fix hardcoded paths sed "s|PHP=php|PHP=\"/usr/bin/${pkgbase}\"|g; s|\"/usr/bin/php\"|\"/usr/bin/${pkgbase}\"|g; s| -n | |g" \ -i "${pkgdir}/usr/bin/${i}" if [[ "$i" == "pecl" ]]; then echo "Moving ${pkgdir}/usr/bin/${i} => ${srcdir}/${pkgbase}-pecl-bin/" mkdir -p "${srcdir}/${pkgbase}-pecl-bin/" mv "${pkgdir}/usr/bin/pecl" "${srcdir}/${pkgbase}-pecl-bin/" else echo "Moving ${pkgdir}/usr/bin/${i} => ${pkgdir}/usr/bin/${_target}" mv "${pkgdir}/usr/bin/${i}" "${pkgdir}/usr/bin/${_target}" fi done } # PEAR end # PECL package_php70-pecl() { pkgdesc="PHP Extension Community Library (PECL) for ${pkgbase}" depends=("php${_phpbase}-pear${_suffix}=${pkgver}") _target="${pkgbase/php/pecl}" install -D -m755 "${srcdir}/${pkgbase}-pecl-bin/pecl" "${pkgdir}/usr/bin/${_target}" } # PECL end ############################################################################### # PHP Modules: First need ############################################################################### # OpenSSL package_php70-openssl() { pkgdesc="OpenSSL module for ${pkgbase}" depends=("${_ext_depends_openssl[@]}") _install_module openssl } # Json package_php70-json() { pkgdesc="json module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module json } # pdo package_php70-pdo() { pkgdesc="pdo module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module pdo } # mbstring package_php70-mbstring() { pkgdesc="mbstring module for ${pkgbase}" depends=("${_ext_depends_mbstring[@]}") _install_module mbstring } # phar package_php70-phar() { pkgdesc="phar module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module phar } ############################################################################### # PHP modules: XML ############################################################################### # XML modules combined package package_php70-xml() { pkgdesc="xml modules for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'libxml2') _install_module xml } package_php70-wddx() { pkgdesc="wddx module for ${pkgbase}" depends=("php${_phpbase}-xml${_suffix}=${pkgver}") _install_module wddx } package_php70-simplexml() { pkgdesc="simplexml module for ${pkgbase}" depends=("php${_phpbase}-xml${_suffix}=${pkgver}") _install_module simplexml } package_php70-dom() { pkgdesc="dom module for ${pkgbase}" depends=("php${_phpbase}-xml${_suffix}=${pkgver}") _install_module dom } package_php70-xmlreader() { pkgdesc="xmlreader module for ${pkgbase}" depends=("php${_phpbase}-xml${_suffix}=${pkgver}") _install_module xmlreader } package_php70-xmlwriter() { pkgdesc="xmlwriter module for ${pkgbase}" depends=("php${_phpbase}-xml${_suffix}=${pkgver}") _install_module xmlwriter } # Tidy package_php70-tidy() { pkgdesc="tidy module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'tidy') _install_module tidy } # XSL package_php70-xsl() { pkgdesc="xsl module for ${pkgbase}" depends=("php${_phpbase}-xml${_suffix}=${pkgver}" "php${_phpbase}-dom${_suffix}=${pkgver}") depends+=('libxslt') _install_module xsl } ############################################################################### # PHP modules: Databases ############################################################################### # MySQL package_php70-mysql() { pkgdesc="MySQL modules for ${pkgbase}" depends=("${_ext_depends_mysql[@]}") _install_module mysqlnd _install_module mysql _install_module mysqli _install_module pdo_mysql } # pdo_sqlite + sqlite3 package_php70-sqlite() { pkgdesc="sqlite module for ${pkgbase}" depends=("${_ext_depends_sqlite[@]}") _install_module sqlite3 _install_module pdo_sqlite } # ODBC package_php70-odbc() { pkgdesc="ODBC modules for ${pkgbase}" depends=("${_ext_depends_odbc[@]}") _install_module odbc _install_module pdo_odbc } # PostgreSQL package_php70-pgsql() { pkgdesc="PostgreSQL modules for ${pkgbase}" depends=("${_ext_depends_pgsql[@]}") _install_module pgsql _install_module pdo_pgsql } # interbase package_php70-interbase() { pkgdesc="interbase module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" "libfbclient") _install_module interbase } # firebird package_php70-firebird() { pkgdesc="pdo_firebird module for ${pkgbase}" depends=("${_ext_depends_firebird[@]}") _install_module pdo_firebird } # pdo_dblib package_php70-dblib() { depends=("${pkgbase}=${pkgver}" 'freetds') pkgdesc="pdo_dblib module for ${pkgbase}" _install_module pdo_dblib } # mssql package_php70-mssql() { depends=("${pkgbase}=${pkgver}" 'freetds') pkgdesc="mssql module for ${pkgbase}" _install_module mssql } # Dba package_php70-dba() { pkgdesc="dba module for ${pkgbase}" depends=("${_ext_depends_dba[@]}") _install_module dba } ############################################################################### # PHP Modules: internationalization, text, datetime ############################################################################### # Intl package_php70-intl() { pkgdesc="intl module for ${pkgbase}" depends=("${_ext_depends_intl[@]}") if ((_build_with_custom_icu)); then # Patch to proper path inside intl.so patchelf --set-rpath "/usr/lib/${pkgbase}/icu${_pkgver_icu}/lib" "build-cli/modules/intl.so" fi _install_module intl } # Recode package_php70-recode() { pkgdesc="recode module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'recode') _install_module recode } # gettext package_php70-gettext() { pkgdesc="gettext module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module gettext } # iconv package_php70-iconv() { pkgdesc="iconv module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module iconv } # calendar package_php70-calendar() { pkgdesc="calendar module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module calendar } ############################################################################### # PHP Modules: multimedia ############################################################################### # GD package_php70-gd() { pkgdesc="gd module for ${pkgbase}" depends=("${_ext_depends_gd[@]}") _install_module gd } # exif package_php70-exif() { pkgdesc="exif module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module exif } # fileinfo package_php70-fileinfo() { pkgdesc="fileinfo module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module fileinfo } ############################################################################### # PHP modules: math ############################################################################### # bcmath package_php70-bcmath() { pkgdesc="bcmath module for ${pkgbase}" depends=("${pkgbase}") _install_module bcmath } # gmp package_php70-gmp() { pkgdesc="gmp module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'gmp') _install_module gmp } ############################################################################### # PHP modules: spell checking ############################################################################### # Enchant package_php70-enchant() { pkgdesc="enchant module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'enchant' 'libvoikko' 'hspell' 'hunspell' 'nuspell' 'aspell') _install_module enchant } # Pspell package_php70-pspell() { pkgdesc="pspell module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'aspell') _install_module pspell } ############################################################################### # PHP modules: compression ############################################################################### # bz2 package_php70-bz2() { pkgdesc="bz2 module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'bzip2') _install_module bz2 } # Zip package_php70-zip() { pkgdesc="zip module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'libzip') _install_module zip } ############################################################################### # PHP modules: network client/servers ############################################################################### # curl package_php70-curl() { pkgdesc="curl module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" "curl") _install_module curl } # SOAP package_php70-soap() { pkgdesc="soap module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'libxml2') _install_module soap } # FTP package_php70-ftp() { pkgdesc="FTP module for ${pkgbase}" depends=("${_ext_depends_ftp[@]}") _install_module ftp } # ldap package_php70-ldap() { pkgdesc="ldap module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'libldap' 'libsasl') _install_module ldap } # SNMP package_php70-snmp() { pkgdesc="snmp module for ${pkgbase}" depends=("${_ext_depends_snmp[@]}") _install_module snmp } # XML-RPC package_php70-xmlrpc() { pkgdesc="xmlrpc module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'libxml2') _install_module xmlrpc } # Imap package_php70-imap() { pkgdesc="imap module for ${pkgbase}" depends=("${_ext_depends_imap[@]}") _install_module imap } # sockets package_php70-sockets() { pkgdesc="sockets module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module sockets } ############################################################################### # PHP Modules: cryptography ############################################################################### # Sodium package_php70-sodium() { pkgdesc="sodium (libsodium) module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" "libsodium") _install_module sodium } # Mcrypt package_php70-mcrypt() { pkgdesc="mcrypt module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'libmcrypt') _install_module mcrypt } ############################################################################### # PHP Zend modules: opcache/jit ############################################################################### # Opcache package_php70-opcache() { pkgdesc="opcache zend module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module opcache } ############################################################################### # PHP posix, pcntl, shmop and System V modules ############################################################################### # posix package_php70-posix() { pkgdesc="posix module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module posix } # pcntl package_php70-pcntl() { pkgdesc="pcntl module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module pcntl } # shmop package_php70-shmop() { pkgdesc="shmop module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module shmop } # sysvmsg package_php70-sysvmsg() { pkgdesc="sysvmsg module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module sysvmsg } # sysvsem package_php70-sysvsem() { pkgdesc="sysvsem module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module sysvsem } # sysvshm package_php70-sysvshm() { pkgdesc="sysvshm module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module sysvshm } ############################################################################### # PHP Misc modules ############################################################################### # Ffi package_php70-ffi() { pkgdesc="ffi module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'libffi') _install_module ffi } # ctype package_php70-ctype() { pkgdesc="ctype module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module ctype } # tokenizer package_php70-tokenizer() { pkgdesc="tokenizer module for ${pkgbase}" depends=("${pkgbase}=${pkgver}") _install_module tokenizer } # libedit/readline package_php70-readline() { pkgdesc="readline (libedit version) module for ${pkgbase}" depends=("${pkgbase}=${pkgver}" 'libedit') _install_module readline } sha256sums=('e6b8530d747000eebb0089249ec70a3b14add7b501337046700544883f62b17b' '0b7e98dca9c996ec10cb9b3f6296bb7547c68797fd5f35006fdfd3e97700672d' 'ba72fc64f77822755a469314160d5889d5298f4eb5758dd7939dac9b811afe52' '6d0ad9becb5470ce8e5929d7d45660b0f32579038978496317544c5310281a91' 'ab8c5be6e32b1f8d032909dedaaaa4bbb1a209e519abb01a52ce3914f9a13d96' 'e757f84d2d72ea39259450c32f3a83c72262da4294152ae3e9fbc0cada622bba' '70e3cc00d954fa2b466a0e8f356c68bbb1e92b36304deaffd34c53cb6ae5e979' 'aecd8dff7022e956718407a5b98dec19acdceef08b0a58e7266b483bc3845de6' 'd175f0c14fdb22855090c93f76e18f04320d7bf15afc057ffde947f9bb361242' 'f5ae925036744a5e88cea2698879aea0498e1e23aee7801923d90f16be383908' '12f4e3aeab72e7d24221c07b64106c496c2e300518682bd301351dc9fa6ab3cf' '52c5a93fb03fa8f3f99438eb803b3182766ee04e0e6b76f00b0bc848d03ff6a6' '3049b76460c65a70017ba2aac8f8c45725df2bbea458a96ec7164db63639e87f' 'e07ebf146cea8e734c7704ba94f18279642df2b2f09d868781746d165041b8d5' 'ed3184d5a6f7a3bf35ee32169f8dc3b6cba09c38f60e868e24652fe9a7dd844d' 'c9f3b0dff07a7e9688f60b92a2a15817bd7cd59a8c5278cae629d856be66de5c' '526ff10b94dd352a086a42a1d1e2f9cee956ee1a84308784976e0e5cec11681f' '558e780e93dfa861a366c49b4d156d8fc43f17898f001ae6033ec63c33d5d41c' '40bcc1e5058602302198d0925e431495391d8469499593af477f59d84d32f764' 'e221c918a75bcd851ee9d32d50370aa430a4a9ef94eaf2f4e8cbcc53483f8d31')