diff options
author | Muhammad Moinur Rahman <bofh@FreeBSD.org> | 2021-12-28 20:09:08 -0600 |
---|---|---|
committer | Muhammad Moinur Rahman <bofh@FreeBSD.org> | 2021-12-28 20:09:08 -0600 |
commit | 44e99def8ddf26311675cb2070eb062e1f7d0da5 (patch) | |
tree | 9406ba2c32bbaf622db561bc60e7483638f4beb2 /lang/php81 | |
parent | www/glewlwyd: Add new port: Single-Sign-On server (diff) |
Add php81 to the tree
Core:
Fixed inclusion order for phpize builds on Windows.
Added missing hashtable insertion APIs for arr/obj/ref.
Implemented FR #77372 (Relative file path is removed from uploaded
file).
Fixed bug #81607 (CE_CACHE allocation with concurrent access).
Fixed bug #81507 (Fiber does not compile on AIX).
Fixed bug #78647 (SEGFAULT in zend_do_perform_implementation_check).
Fixed bug #81518 (Header injection via default_mimetype / default_charset).
Fixed bug #75941 (Fix compile failure on Solaris with clang).
Fixed bug #81380 (Observer may not be initialized properly).
Fixed bug #81514 (Using Enum as key in WeakMap triggers GC + SegFault).
Fixed bug #81520 (TEST_PHP_CGI_EXECUTABLE badly set in run-tests.php).
Fixed bug #81377 (unset() of $GLOBALS sub-key yields warning).
Fixed bug #81342 (New ampersand token parsing depends on new line after it).
Fixed bug #81280 (Unicode characters in cli.prompt causes segfault).
Fixed bug #81192 ("Declaration should be compatible with" gives incorrect line number with traits).
Fixed bug #78919 (CLI server: insufficient cleanup if request startup fails).
Fixed bug #81303 (match error message improvements).
Fixed bug #81238 (Fiber support missing for Solaris Sparc).
Fixed bug #81237 (Comparison of fake closures doesn't work).
Fixed bug #81202 (powerpc64 build fails on fibers).
Fixed bug #80072 (Cyclic unserialize in TMPVAR operand may leak).
Fixed bug #81163 (__sleep allowed to return non-array).
Fixed bug #75474 (function scope static variables are not bound to a unique function).
Fixed bug #53826 (__callStatic fired in base class through a parent call if the method is private).
Fixed bug #81076 (incorrect debug info on Closures with implicit binds).
CLI:
Fixed bug #81496 (Server logs incorrect request method).
COM:
Dispatch using LANG_NEUTRAL instead of LOCALE_SYSTEM_DEFAULT.
Curl:
Fixed bug #81085 (Support CURLOPT_SSLCERT_BLOB for cert strings).
Date:
Fixed bug #81458 (Regression Incorrect difference after timezone change).
Fixed bug #81500 (Interval serialization regression since 7.3.14 / 7.4.2).
Fixed bug #81504 (Incorrect timezone transition details for POSIX data).
Fixed bug #80998 (Missing second with inverted interval).
Speed up finding timezone offset information.
Fixed bug #79580 (date_create_from_format misses leap year).
Fixed bug #80963 (DateTimeZone::getTransitions() truncated).
Fixed bug #80974 (Wrong diff between 2 dates in different timezones).
Fixed bug #80998 (Missing second with inverted interval).
Fixed bug #81097 (DateTimeZone silently falls back to UTC when providing an offset with seconds).
Fixed bug #81106 (Regression in 8.1: add() now truncate ->f).
Fixed bug #81273 (Date interval calculation not correct).
Fixed bug #52480 (Incorrect difference using DateInterval).
Fixed bug #62326 (date_diff() function returns false result).
Fixed bug #64992 (dst not handled past 2038).
Fixed bug #65003 (Wrong date diff).
Fixed bug #66545 (DateTime. diff returns negative values).
Fixed bug #68503 (date_diff on two dates with timezone set localised returns wrong results).
Fixed bug #69806 (Incorrect date from timestamp).
Fixed bug #71700 (Extra day on diff between begin and end of march 2016).
Fixed bug #71826 (DateTime::diff confuse on timezone 'Asia/Tokyo').
Fixed bug #73460 (Datetime add not realising it already applied DST change).
Fixed bug #74173 (DateTimeImmutable::getTimestamp() triggers DST switch in incorrect time).
Fixed bug #74274 (Handling DST transitions correctly).
Fixed bug #74524 (Date diff is bad calculated, in same time zone).
Fixed bug #75167 (DateTime::add does only care about backward DST transition, not forward).
Fixed bug #76032 (DateTime->diff having issues with leap days for timezones ahead of UTC).
Fixed bug #76374 (Date difference varies according day time).
Fixed bug #77571 (DateTime's diff DateInterval incorrect in timezones from UTC+01:00 to UTC+12:00).
Fixed bug #78452 (diff makes wrong in hour for Asia/Tehran).
Fixed bug #79452 (DateTime::diff() generates months differently between time zones).
Fixed bug #79698 (timelib mishandles future timestamps (triggered by 'zic -b slim')).
Fixed bug #79716 (Invalid date time created (with day "00")).
Fixed bug #80610 (DateTime calculate wrong with DateInterval).
Fixed bug #80664 (DateTime objects behave incorrectly around DST transition).
Fixed bug #80913 (DateTime(Immutable)::sub around DST yield incorrect time).
DBA:
Fixed bug #81588 (TokyoCabinet driver leaks memory).
DOM:
Fixed bug #81433 (DOMElement::setIdAttribute() called twice may remove ID).
FFI:
Fixed bug #79576 ("TYPE *" shows unhelpful message when type is not defined).
Filter:
Fixed bug #61700 (FILTER_FLAG_IPV6/FILTER_FLAG_NO_PRIV|RES_RANGE failing).
FPM:
Fixed bug #81513 (Future possibility for heap overflow in FPM zlog).
Fixed bug #81026 (PHP-FPM oob R/W in root process leading to privilege escalation) (CVE-2021-21703).
Added openmetrics status format.
Enable process renaming on macOS.
Added pm.max_spawn_rate option to configure max spawn child processes rate.
Fixed bug #65800 (Events port mechanism).
FTP:
Convert resource<ftp> to object \FTP\Connection.
GD:
Fixed bug #71316 (libpng warning from imagecreatefromstring).
Convert resource<gd font> to object \GdFont.
Added support for Avif images
hash:
Implemented FR #68109 (Add MurmurHash V3).
Implemented FR #73385 (Add xxHash support).
JSON:
Fixed bug #81532 (Change of $depth behaviour in json_encode() on PHP 8.1).
LDAP:
Convert resource<ldap link> to object \LDAP\Connection.
Convert resource<ldap result> to object \LDAP\Result.
Convert resource<ldap result entry> to object \LDAP\ResultEntry.
MBString:
Fixed bug #76167 (mbstring may use pointer from some previous request).
Fixed bug #81390 (mb_detect_encoding() regression).
Fixed bug #81349 (mb_detect_encoding misdetcts ASCII in some cases).
Fixed bug #81298 (mb_detect_encoding() segfaults when 7bit encoding is specified).
MySQLi:
Fixed bug #70372 (Emulate mysqli_fetch_all() for libmysqlclient).
Fixed bug #80330 (Replace language in APIs and source code/docs).
Fixed bug #80329 (Add option to specify LOAD DATA LOCAL white list folder (including libmysql)).
MySQLnd:
Fixed bug #63327 (Crash (Bus Error) in mysqlnd due to wrong alignment).
Fixed bug #80761 (PDO uses too much memory).
Opcache:
Fixed bug #81409 (Incorrect JIT code for ADD with a reference to array).
Fixed bug #81255 (Memory leak in PHPUnit with functional JIT).
Fixed bug #80959 (infinite loop in building cfg during JIT compilation).
Fixed bug #81225 (Wrong result with pow operator with JIT enabled).
Fixed bug #81249 (Intermittent property assignment failure with JIT enabled).
Fixed bug #81256 (Assertion `zv != ((void *)0)' failed for "preload" with JIT).
Fixed bug #81133 (building opcache with phpize fails).
Fixed bug #81136 (opcache header not installed).
Added inheritance cache.
OpenSSL:
Fixed bug #81502 ($tag argument of openssl_decrypt() should accept null/empty string).
Bump minimal OpenSSL version to 1.0.2.
PCRE:
Fixed bug #81424 (PCRE2 10.35 JIT performance regression).
Bundled PCRE2 is 10.37.
PDO:
Fixed bug #40913 (PDO_MYSQL: PDO::PARAM_LOB does not bind to a stream for fetching a BLOB).
PDO MySQL:
Fixed bug #80908 (PDO::lastInsertId() return wrong).
Fixed bug #81037 (PDO discards error message text from prepared statement).
PDO OCI:
Fixed bug #77120 (Support 'success with info' at connection).
PDO ODBC:
Implement PDO_ATTR_SERVER_VERSION and PDO_ATTR_SERVER_INFO for PDO::getAttribute().
PDO PgSQL:
Fixed bug #81343 (pdo_pgsql: Inconsitent boolean conversion after calling closeCursor()).
PDO SQLite:
Fixed bug #38334 (Proper data-type support for PDO_SQLITE).
PgSQL:
Fixed bug #81509 (pg_end_copy still expects a resource).
Convert resource<pgsql link> to object \PgSql\Connection.
Convert resource<pgsql result> to object \PgSql\Result.
Convert resource<pgsql large object> to object \PgSql\Lob.
Phar:
Use SHA256 by default for signature.
Add support for OpenSSL_SHA256 and OpenSSL_SHA512 signature.
phpdbg:
Fixed bug #81135 (unknown help topic causes assertion failure).
PSpell:
Convert resource<pspell> to object \PSpell\Dictionary.
Convert resource<pspell config> to object \PSpell\Config.
readline:
Fixed bug #72998 (invalid read in readline completion).
Reflection:
Fixed bug #81611 (ArgumentCountError when getting default value from ReflectionParameter with new).
Fixed bug #81630 (PHP 8.1: ReflectionClass->getTraitAliases() crashes with Internal error).
Fixed bug #81457 (Enum: ReflectionMethod->getDeclaringClass() return a ReflectionClass).
Fixed bug #81474 (Make ReflectionEnum and related class non-final).
Fixed bug #80821 (ReflectionProperty::getDefaultValue() returns current value for statics).
Fixed bug #80564 (ReflectionProperty::__toString() renders current value, not default value).
Fixed bug #80097 (ReflectionAttribute is not a Reflector).
Fixed bug #81200 (no way to determine if Closure is static).
Implement ReflectionFunctionAbstract::getClosureUsedVariables.
Shmop:
Fixed bug #81407 (shmop_open won't attach and causes php to crash).
SimpleXML:
Fixed bug #81325 (Segfault in zif_simplexml_import_dom).
SNMP:
Implement SHA256 and SHA512 for security protocol.
Sodium:
Added the XChaCha20 stream cipher functions.
Added the Ristretto255 functions, which are available in libsodium 1.0.18.
SPL:
Fixed bug #66588 (SplFileObject::fgetcsv incorrectly returns a row on premature EOF).
Fixed bug #80663 (Recursive SplFixedArray::setSize() may cause double-free).
Fixed bug #81477 (LimitIterator + SplFileObject regression in 8.0.1).
Fixed bug #81112 (Special json_encode behavior for SplFixedArray).
Fixed bug #80945 ("Notice: Undefined index" on unset() ArrayObject non-existing key).
Fixed bug #80724 (FilesystemIterator::FOLLOW_SYMLINKS remove KEY_AS_FILE from bitmask).
Standard:
Fixed bug #81441 (gethostbyaddr('::1') returns ip instead of name after calling some other method).
Fixed bug #81491 (Incorrectly using libsodium for argon2 hashing).
Fixed bug #81142 (PHP 7.3+ memory leak when unserialize() is used on an associative array).
Fixed bug #81111 (Serialization is unexpectedly allowed on anonymous classes with __serialize()).
Fixed bug #81137 (hrtime breaks build on OSX before Sierra).
Fixed bug #77627 (method_exists on Closure::__invoke inconsistency).
Streams:
Fixed bug #81475 (stream_isatty emits warning with attached stream wrapper).
XML:
Fixed bug #79971 (special character is breaking the path in xml function) (CVE-2021-21707).
Fixed bug #70962 (XML_OPTION_SKIP_WHITE strips embedded whitespace).
Zip:
Fixed bug #81490 (ZipArchive::extractTo() may leak memory).
Fixed bug #77978 (Dirname ending in colon unzips to wrong dir).
Fixed bug #81420 (ZipArchive::extractTo extracts outside of destination) (CVE-2021-21706).
Fixed bug #80833 (ZipArchive::getStream doesn't use setPassword).
FLAVORS won't be available untill it is added to the Uses framework
which can be followed up :
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260774
Relnotes: https://www.php.net/ChangeLog-8.php#8.1.1
Sponsored by: Bounce Experts
Diffstat (limited to 'lang/php81')
-rw-r--r-- | lang/php81/Makefile | 662 | ||||
-rw-r--r-- | lang/php81/distinfo | 3 | ||||
-rw-r--r-- | lang/php81/files/patch-build_Makefile.global | 19 | ||||
-rw-r--r-- | lang/php81/files/patch-configure.ac | 45 | ||||
-rw-r--r-- | lang/php81/files/patch-ext_mysqli_mysqli__api.c | 12 | ||||
-rw-r--r-- | lang/php81/files/patch-ext_mysqli_mysqli__nonapi.c | 12 | ||||
-rw-r--r-- | lang/php81/files/patch-ext_mysqli_mysqli__prop.c | 12 | ||||
-rw-r--r-- | lang/php81/files/patch-ext_mysqli_php__mysqli__structs.h | 11 | ||||
-rw-r--r-- | lang/php81/files/patch-sapi_apache2handler_config.m4 | 11 | ||||
-rw-r--r-- | lang/php81/files/patch-sapi_fpm_config.m4 | 11 | ||||
-rw-r--r-- | lang/php81/files/patch-sapi_fpm_www.conf.in | 17 | ||||
-rw-r--r-- | lang/php81/files/php-fpm.in | 66 | ||||
-rw-r--r-- | lang/php81/pkg-descr | 8 | ||||
-rw-r--r-- | lang/php81/pkg-message.mod | 19 | ||||
-rw-r--r-- | lang/php81/pkg-plist | 308 | ||||
-rw-r--r-- | lang/php81/pkg-plist.mod | 3 |
16 files changed, 1219 insertions, 0 deletions
diff --git a/lang/php81/Makefile b/lang/php81/Makefile new file mode 100644 index 000000000000..1a2919fa1ffb --- /dev/null +++ b/lang/php81/Makefile @@ -0,0 +1,662 @@ +PORTNAME= php81 +DISTVERSION= 8.1.1 +PORTREVISION?= 0 +CATEGORIES?= lang devel www +MASTER_SITES= PHP/distributions +DISTNAME= php-${DISTVERSION} + +MAINTAINER= bofh@FreeBSD.org +COMMENT= PHP Scripting Language (8.1.X branch) + +LICENSE= PHP301 + +USES+= compiler:c11 cpe gnome pkgconfig tar:xz +CPE_PRODUCT= php +PHP_VER= 81 + +.if !defined(PKGNAMESUFFIX) +LIB_DEPENDS= libargon2.so:security/libargon2 \ + libpcre2-8.so:devel/pcre2 + +GNU_CONFIGURE= yes +CONFIGURE_ARGS+= --disable-all \ + --program-prefix="" \ + --with-config-file-scan-dir=${PREFIX}/etc/php \ + --with-layout=GNU \ + --with-libxml \ + --with-password-argon2=${LOCALBASE} +DESTDIRNAME= INSTALL_ROOT + +USES+= autoreconf:build +USE_GNOME= libxml2 + +CPPFLAGS= -I${LOCALBASE}/include + +# PR230207 Allow relocations against read-only segments (override lld default) +LDFLAGS_i386= -Wl,-z,notext + +CONFLICTS= php73 php74 php80 + +OPTIONS_DEFINE+= CGI CLI DEBUG DTRACE EMBED FPM IPV6 LINKTHR \ + MYSQL80 MYSQLND PHPDBG ZTS +OPTIONS_DEFAULT= CGI CLI DTRACE EMBED FPM LINKTHR MYSQLND +OPTIONS_EXCLUDE_DragonFly= DTRACE +# ld(1) fails to link probes: Relocations in generic ELF (EM: 0) +OPTIONS_EXCLUDE_aarch64= DTRACE +# dt_modtext:opensolaris/ib/libdtrace/common/dt_link.c: arm not impemented +OPTIONS_EXCLUDE_armv6= DTRACE +OPTIONS_EXCLUDE_armv7= DTRACE +# Bug 197128: No ASM code for MIPS/MIPS64, disable FPM +OPTIONS_EXCLUDE_mips= DTRACE FPM +OPTIONS_EXCLUDE_mips64= DTRACE FPM +OPTIONS_EXCLUDE_powerpc64= ${OPTIONS_EXCLUDE_${ARCH}_${OSREL:R}} +OPTIONS_EXCLUDE_powerpc64_11= DTRACE +OPTIONS_EXCLUDE_powerpc64_12= DTRACE +OPTIONS_EXCLUDE_riscv64= DTRACE +OPTIONS_EXCLUDE_sparc64= DTRACE +NO_OPTIONS_SORT= yes +OPTIONS_SUB= yes + +CGI_DESC= Build CGI version +CLI_DESC= Build CLI version +EMBED_DESC= Build embedded library +FPM_DESC= Build FPM version +LINKTHR_DESC= Link thread lib (for threaded extensions) +MYSQL80_DESC= Build with MySQL caching password mechanism +MYSQLND_DESC= Build with MySQL Native Driver +PHPDBG_DESC= Interactive PHP debugger +ZTS_DESC= Force Zend Thread Safety (ZTS) build + +CGI_CONFIGURE_OFF= --disable-cgi +CGI_VARS= PHP_SAPI+=cgi +CLI_CONFIGURE_OFF= --disable-cli +CLI_VARS= PHP_SAPI+=cli +DEBUG_CONFIGURE_ON= --enable-debug +DTRACE_CONFIGURE_ON= --enable-dtrace +EMBED_CONFIGURE_ON= --enable-embed +EMBED_VARS= PHP_SAPI+=embed +FPM_CONFIGURE_ON= --enable-fpm \ + --with-fpm-group=${WWWGRP} \ + --with-fpm-user=${WWWOWN} +FPM_VARS= PHP_SAPI+=fpm \ + USE_RC_SUBR+=php-fpm +IPV6_CONFIGURE_OFF= --disable-ipv6 +LINKTHR_LIBS= -lpthread +MYSQL80_USES= ssl +MYSQL80_CONFIGURE_ON= --with-openssl +MYSQL80_CONFIGURE_ENV= OPENSSL_CFLAGS="-I${OPENSSLINC}" \ + OPENSSL_LIBS="-L${OPENSSLLIB} -lssl -lcrypto" \ + PHP_OPENSSL=no +MYSQL80_LDFLAGS= -L${OPENSSLLIB} -lcrypto -lssl +MYSQLND_CONFIGURE_ON= --enable-mysqlnd +PHPDBG_CONFIGURE_ON= --enable-phpdbg +PHPDBG_VARS= PHP_SAPI+=phpdbg +ZTS_CONFIGURE_ON= --enable-zts +ZTS_CONFIGURE_ENV= pthreads_working="yes" + +.include <bsd.port.pre.mk> + +.if ${ARCH} == riscv64 +CONFIGURE_ARGS+= --without-pcre-jit +.endif + +.if defined(PKGNAMEPREFIX) +USES+= apache:2.2+ +.include "${PORTSDIR}/Mk/Uses/apache.mk" +.if ${PORT_OPTIONS:MAP2FILTER} +CONFIGURE_ARGS+= --with-apxs2filter=${APXS} +.else +CONFIGURE_ARGS+= --with-apxs2=${APXS} +.endif +PLIST= ${PKGDIR}/pkg-plist.mod +PKGMESSAGE= ${PKGDIR}/pkg-message.mod +MODULENAME= libphp +SHORTMODNAME= php +WARNING= "!!! If you have a threaded Apache, you must build ${PHP_PORT} with ZTS support to enable thread-safety in extensions !!!" +.endif + +.if ${PORT_OPTIONS:MPHPDBG} && ${PORT_OPTIONS:MDEBUG} +CONFIGURE_ARGS+= --enable-phpdbg-debug +.endif + +.if ${PORT_OPTIONS:MCLI} || ${PORT_OPTIONS:MEMBED} +PLIST_SUB+= SAPI_INC="" +.else +PLIST_SUB+= SAPI_INC="@comment " +.endif + +CONFIGURE_ENV+= ac_cv_decimal_fp_supported="no" \ + lt_cv_path_SED="sed" + +.if ${PORT_OPTIONS:MMYSQL80} +WARNING= "PHP is now built with MySQL 8.0 support which has caching password mechanism. This implies ${PORTNAME}-openssl module. Hence ${PORTNAME}-openssl can no longer be installed alongside with ${PORTNAME}. If you require ${PORTNAME}-openssl module please rebuild ${PORTNAME} with MYSQL80 OPTION disabled. Otherwise remove ${PORTNAME}-openssl DEPENDENCY from ports." +.endif + +post-patch: + @${TOUCH} ${WRKSRC}/ext/php_config.h + @${REINPLACE_CMD} "s|^\(extension_dir\)|; \1|" ${WRKSRC}/php.ini-* + +post-patch-FPM-on: + @${REINPLACE_CMD} -e "s|^;\(pid\)|\1|;s|^;\(pm\.[a-z_]*_servers\)|\1|" \ + ${WRKSRC}/sapi/fpm/php-fpm.conf.in + +pre-configure: + @(cd ${WRKSRC} && ${SETENV} MAKE=${MAKE_CMD} ./buildconf --force) + +.if !defined(PKGNAMEPREFIX) +post-build: + @${ECHO_CMD} "PHP_VER=${PHP_VER}" > ${WRKDIR}/php.conf + @${ECHO_CMD} "PHP_VERSION=${PORTVERSION}" >> ${WRKDIR}/php.conf + @${ECHO_CMD} "PHP_SAPI=${PHP_SAPI}" >> ${WRKDIR}/php.conf + @${ECHO_CMD} -n "PHP_EXT_DIR=" >> ${WRKDIR}/php.conf + @${SH} ${WRKSRC}/scripts/php-config --extension-dir | ${SED} -ne 's,^${PREFIX}/lib/php/,,p' >> ${WRKDIR}/php.conf + +post-build-MYSQL80-off: + @${ECHO_CMD} "PHP_EXT_INC=hash json pcre spl" >> ${WRKDIR}/php.conf + +post-build-MYSQL80-on: + @${ECHO_CMD} "PHP_EXT_INC=hash json openssl pcre spl" >> ${WRKDIR}/php.conf + +test: build + @(cd ${WRKSRC} && ${MAKE} test) + +post-install: + ${INSTALL_DATA} ${WRKSRC}/php.ini-development ${WRKSRC}/php.ini-production \ + ${WRKDIR}/php.conf ${STAGEDIR}/${PREFIX}/etc +.else +do-install: + ${MKDIR} ${STAGEDIR}${PREFIX}/${APACHEMODDIR} + ${INSTALL_LIB} ${WRKSRC}/libs/${MODULENAME}.so \ + ${STAGEDIR}${PREFIX}/${APACHEMODDIR} +.endif + +.else +COMMENT= The ${PHP_MODNAME} shared extension for php + +USES+= php:ext,noflavors +PHP_MODNAME= ${PKGNAMESUFFIX:S/-//} +PHP_VER= 81 +IGNORE_WITH_PHP= 72 73 74 80 + +EXTSUBDIR= ${DISTNAME}/ext/${PHP_MODNAME} +WRKSRC= ${WRKDIR}/${EXTSUBDIR} +PATCHDIR= ${.CURDIR}/files +PLIST= ${NONEXISTENT} + +EXTRACT_AFTER_ARGS?= ${EXTSUBDIR} + +TEST_TARGET= test + +.if ${PHP_MODNAME} == "bcmath" +CONFIGURE_ARGS+= --enable-bcmath + +PHP_HEADER_DIRS= libbcmath/src +.endif + +.if ${PHP_MODNAME} == "bz2" +CONFIGURE_ARGS+= --with-bz2=/usr +.endif + +.if ${PHP_MODNAME} == "calendar" +CONFIGURE_ARGS+= --enable-calendar +.endif + +.if ${PHP_MODNAME} == "ctype" +CONFIGURE_ARGS+= --enable-ctype +.endif + +.if ${PHP_MODNAME} == "curl" +LIB_DEPENDS+= libcurl.so:ftp/curl + +CONFIGURE_ARGS+= --with-curl=${LOCALBASE} +USES+= pkgconfig +.endif + +.if ${PHP_MODNAME} == "dba" +CONFIGURE_ARGS+= --enable-dba + +OPTIONS_DEFINE= CDB DB4 FLATFILE GDBM INIFILE LMDB QDBM TOKYO +OPTIONS_DEFAULT= CDB FLATFILE INIFILE + +CDB_DESC= cdb database support +DB4_DESC= Berkeley DB4 support +FLATFILE_DESC= flatfile support +GDBM_DESC= GDBM database support +INIFILE_DESC= INI file support +LMDB_DESC= LMDB database support +QDBM_DESC= QDBM database support +TOKYO_DESC= Tokyo Cabinet database support + +CDB_CONFIGURE_OFF= --without-cdb +DB4_CONFIGURE_ON= --with-db4=${LOCALBASE} +DB4_USES= bdb +DB4_VARS= WITH_BDB_HIGHEST=yes +FLATFILE_CONFIGURE_ON= --disable-flatfile +GDBM_CONFIGURE_ARGS= --with-gdbm=${LOCALBASE} +GDBM_LIB_DEPENDS= libgdbm.so:databases/gdbm +INIFILE_CONFIGURE_OFF= --disable-inifile +LMDB_LIB_DEPENDS= liblmdb.so:databases/lmdb +LMDB_CONFIGURE_ARGS= --with-lmdb=${LOCALBASE} +QDBM_LIB_DEPENDS= libqdbm.so:databases/qdbm +QDBM_CONFIGURE_ARGS= --with-qdbm=${LOCALBASE} +TOKYO_LIB_DEPENDS= libtokyocabinet.so:databases/tokyocabinet +TOKYO_CONFIGURE_ON= --with-tcadb=${LOCALBASE} + +PHP_HEADER_DIRS= libcdb libflatfile libinifile +.endif + +.if ${PHP_MODNAME} == "dom" +CONFIGURE_ARGS+= --enable-dom + +USES+= pkgconfig +USE_GNOME= libxml2 +.endif + +.if ${PHP_MODNAME} == "enchant" +LIB_DEPENDS+= libenchant.so:textproc/enchant +CONFIGURE_ARGS+= --with-enchant=${LOCALBASE} +USES+= pkgconfig +.endif + +.if ${PHP_MODNAME} == "exif" +CONFIGURE_ARGS+= --enable-exif +.endif + +.if ${PHP_MODNAME} == "ffi" +LIB_DEPENDS= libffi.so:devel/libffi +CONFIGURE_ARGS+= --enable-ffi +.endif + +.if ${PHP_MODNAME} == "fileinfo" +CONFIGURE_ARGS+= --enable-fileinfo \ + --with-pcre-dir=${LOCALBASE} + +PHP_HEADER_DIRS= libmagic +.endif + +.if ${PHP_MODNAME} == "filter" +CONFIGURE_ARGS+= --enable-filter \ + --with-pcre-dir=${LOCALBASE} +.endif + +.if ${PHP_MODNAME} == "ftp" +CONFIGURE_ARGS+= --enable-ftp + +CONFIGURE_ENV+= OPENSSL_CFLAGS="-I${OPENSSLINC}" \ + OPENSSL_LIBS="-L${OPENSSLLIB} -lssl -lcrypto" \ + PHP_OPENSSL=yes + +LDFLAGS+= -L${OPENSSLLIB} -lcrypto -lssl +USES+= pkgconfig ssl +.endif + +.if ${PHP_MODNAME} == "gd" +LIB_DEPENDS= libfreetype.so:print/freetype2 \ + libgd.so:graphics/gd \ + libpng.so:graphics/png +USES+= jpeg + +CONFIGURE_ARGS+= --enable-gd \ + --with-external-gd + +EXTRACT_AFTER_ARGS= --no-same-owner --no-same-permissions --exclude libgd \ + php-${DISTVERSION}/ext/gd + +OPTIONS_DEFINE= JIS WEBP X11 + +JIS_DESC= Enable JIS-mapped Japanese font support +WEBP_DESC= Enable WebP image format support +X11_DESC= Enable XPM support +JIS_CONFIGURE_ON= --enable-gd-jis-conv +WEBP_CONFIGURE_ON= --with-webp +WEBP_LIB_DEPENDS= libwebp.so:graphics/webp +X11_CONFIGURE_ON= --with-xpm +X11_USE= XORG=xpm +X11_USES= xorg +.endif + +.if ${PHP_MODNAME} == "gettext" +CONFIGURE_ARGS+= --with-gettext=${LOCALBASE} + +USES+= gettext +.endif + +.if ${PHP_MODNAME} == "gmp" +LIB_DEPENDS+= libgmp.so:math/gmp + +CONFIGURE_ARGS+= --with-gmp=${LOCALBASE} +.endif + +.if ${PHP_MODNAME} == "iconv" +CONFIGURE_ARGS+= --with-iconv=${LOCALBASE} + +USES+= iconv:translit +.endif + +.if ${PHP_MODNAME} == "imap" +PHP_MOD_PRIO= 30 +OPTIONS_RADIO= CLIENT +OPTIONS_RADIO_CLIENT= CCLIENT PANDA +OPTIONS_DEFAULT= PANDA +CCLIENT_DESC= Uses the original but unmaintained cclient +PANDA_DESC= Uses the forked panda-cclient instead of the original cclient +PANDA_LIB_DEPENDS= libc-client4.so.10:mail/panda-cclient +PANDA_LIB_DEPENDS_OFF= libc-client4.so.9:mail/cclient + +CONFIGURE_ARGS+= --with-imap-ssl=${OPENSSLBASE} \ + --with-imap=${LOCALBASE} \ + --with-pcre-dir=${LOCALBASE} + +CONFIGURE_ENV+= OPENSSL_CFLAGS="-I${OPENSSLINC}" \ + OPENSSL_LIBS="-L${OPENSSLLIB} -lssl -lcrypto" \ + PHP_OPENSSL=yes + +LDFLAGS+= -L${OPENSSLLIB} -lcrypto -lssl +USES+= ssl +.endif + +.if ${PHP_MODNAME} == "intl" +LIB_DEPENDS= libicui18n.so:devel/icu +USES+= pkgconfig +CPPFLAGS+= -DU_USING_ICU_NAMESPACE=1 +.endif + +.if ${PHP_MODNAME} == "json" +CONFIGURE_ARGS+= --enable-json +BUILD_DEPENDS= re2c:devel/re2c +.endif + +.if ${PHP_MODNAME} == "ldap" +CONFIGURE_ARGS+= --with-ldap-sasl=${LOCALBASE} \ + --with-ldap=${LOCALBASE} + +USE_OPENLDAP= yes +.endif + +.if ${PHP_MODNAME} == "mbstring" + +CONFIGURE_ARGS+= --enable-mbstring \ + --with-pcre-dir=${LOCALBASE} + +OPTIONS_DEFINE= REGEX +OPTIONS_DEFAULT= REGEX + +REGEX_DESC= Enable multibyte regex support +REGEX_LIB_DEPENDS= libonig.so:devel/oniguruma +REGEX_CONFIGURE_ON= --with-onig=${LOCALBASE} +REGEX_CONFIGURE_OFF= --disable-mbregex + +PHP_HEADER_DIRS= libmbfl libmbfl/filters libmbfl/mbfl libmbfl/nls +.endif + +.if ${PHP_MODNAME} == "mysqli" +OPTIONS_DEFINE= MYSQLND +OPTIONS_DEFAULT= MYSQLND + +MYSQLND_DESC= Use MySQL Native Driver +MYSQLND_CONFIGURE_ARGS= --with-mysqli=mysqlnd +MYSQLND_CONFIGURE_OFF= --with-mysqli=${LOCALBASE}/bin/mysql_config +MYSQLND_USES_OFF= mysql +.endif + +.if ${PHP_MODNAME} == "odbc" +LIB_DEPENDS+= libodbc.so:databases/unixODBC + +CONFIGURE_ARGS+= --enable-odbc \ + --with-unixODBC=${LOCALBASE} +.endif + +.if ${PHP_MODNAME} == "openssl" +USES+= ssl +CONFIGURE_ARGS+= --with-openssl +CONFIGURE_ENV+= OPENSSL_CFLAGS="-I${OPENSSLINC}" \ + OPENSSL_LIBS="-L${OPENSSLLIB} -lssl -lcrypto" +.endif + +.if ${PHP_MODNAME} == "opcache" +# This is needed by Zend extensions, keep before everything. +PHP_MOD_PRIO= 10 +CONFIGURE_ARGS+= --enable-opcache +USES+= localbase php:zend +.endif + +.if ${PHP_MODNAME} == "pcntl" +CONFIGURE_ARGS+= --enable-pcntl +.endif + +.if ${PHP_MODNAME} == "pdo" +CONFIGURE_ARGS+= --enable-pdo +.endif + +.if ${PHP_MODNAME} == "pdo_dblib" +CONFIGURE_ARGS+= --with-pdo-dblib=${LOCALBASE} + +USE_PHP= pdo:build + +OPTIONS_DEFINE= MSSQL + +MSSQL_DESC= Enable Microsoft SQL Server support +MSSQL_LIB_DEPENDS= libsybdb.so:databases/freetds +MSSQL_LIB_DEPENDS_OFF= libct.so:databases/freetds +.endif + +.if ${PHP_MODNAME} == "pdo_firebird" +CONFIGURE_ARGS+= --with-pdo-firebird=${LOCALBASE} + +USES+= firebird +USE_PHP= pdo:build +.endif + +.if ${PHP_MODNAME} == "pdo_odbc" +LIB_DEPENDS+= libodbc.so:databases/unixODBC +CONFIGURE_ARGS+= --with-pdo-odbc=unixODBC,${LOCALBASE} + +USE_PHP= pdo:build +.endif + +.if ${PHP_MODNAME} == "pdo_mysql" +OPTIONS_DEFINE= MYSQLND +OPTIONS_DEFAULT= MYSQLND + +MYSQLND_DESC= Use MySQL Native Driver +MYSQLND_CONFIGURE_OFF= --with-pdo-mysql=${LOCALBASE} \ + --with-zlib-dir=/usr +MYSQLND_CONFIGURE_ON= --with-pdo-mysql=mysqlnd +MYSQLND_USES_OFF= mysql + +USE_PHP= pdo:build +.endif + +.if ${PHP_MODNAME} == "pdo_pgsql" +USES+= pgsql + +CONFIGURE_ARGS+= --with-pdo-pgsql=${LOCALBASE} + +USE_PHP= pdo:build +.endif + +.if ${PHP_MODNAME} == "pdo_sqlite" +USES+= localbase sqlite +CONFIGURE_ARGS+= --with-pdo-sqlite=${LOCALBASE} + +USE_PHP= pdo:build +.endif + +.if ${PHP_MODNAME} == "pgsql" +USES+= pgsql + +CONFIGURE_ARGS+= --with-pgsql=${LOCALBASE} +.endif + +.if ${PHP_MODNAME} == "phar" +CONFIGURE_ARGS+= --enable-phar \ + --with-pcre-dir=${LOCALBASE} +.endif + +.if ${PHP_MODNAME} == "posix" +CONFIGURE_ARGS+= --enable-posix +.endif + +.if ${PHP_MODNAME} == "pspell" +LIB_DEPENDS+= libaspell.so:textproc/aspell + +CONFIGURE_ARGS+= --with-pspell=${LOCALBASE} +.endif + +.if ${PHP_MODNAME} == "readline" +CONFIGURE_ARGS+= --with-readline=/usr +USES+= readline +.endif + +.if ${PHP_MODNAME} == "session" +CONFIGURE_ARGS+= --enable-session +PHP_MOD_PRIO= 18 +.endif + +.if ${PHP_MODNAME} == "shmop" +CONFIGURE_ARGS+= --enable-shmop +.endif + +.if ${PHP_MODNAME} == "simplexml" +CONFIGURE_ARGS+= --enable-simplexml \ + --with-pcre-dir=${LOCALBASE} + +USES+= pkgconfig +USE_GNOME= libxml2 +.endif + +.if ${PHP_MODNAME} == "snmp" +CONFIGURE_ARGS+= --with-openssl-dir=${OPENSSLBASE} \ + --with-snmp=${LOCALBASE} + +CONFIGURE_ENV+= ac_cv_buggy_snprint_value="no" + +LIB_DEPENDS+= libnetsnmp.so:net-mgmt/net-snmp +LDFLAGS+= -L${OPENSSLLIB} -lcrypto -lssl +USES+= ssl +.endif + +.if ${PHP_MODNAME} == "soap" +CONFIGURE_ARGS+= --enable-soap + +USES+= pkgconfig +USE_GNOME= libxml2 +.endif + +.if ${PHP_MODNAME} == "sockets" +CONFIGURE_ARGS+= --enable-sockets +.endif + +.if ${PHP_MODNAME} == "sodium" +CONFIGURE_ARGS+= --with-sodium=${LOCALBASE} +LIB_DEPENDS+= libsodium.so:security/libsodium +.endif + +.if ${PHP_MODNAME} == "sqlite3" +USES+= localbase pkgconfig sqlite +CONFIGURE_ARGS+= --with-sqlite3=${LOCALBASE} +.endif + +.if ${PHP_MODNAME} == "sysvmsg" +CONFIGURE_ARGS+= --enable-sysvmsg +.endif + +.if ${PHP_MODNAME} == "sysvsem" +CONFIGURE_ARGS+= --enable-sysvsem +.endif + +.if ${PHP_MODNAME} == "sysvshm" +CONFIGURE_ARGS+= --enable-sysvshm +.endif + +.if ${PHP_MODNAME} == "tidy" +CONFIGURE_ARGS+= --with-tidy=${LOCALBASE} + +LIB_DEPENDS+= libtidy.so:www/tidy-lib +.endif + +.if ${PHP_MODNAME} == "tokenizer" +CONFIGURE_ARGS+= --enable-tokenizer +.endif + +.if ${PHP_MODNAME} == "xml" +CONFIGURE_ARGS+= --enable-xml + +USES+= pkgconfig +USE_GNOME= libxml2 +.endif + +.if ${PHP_MODNAME} == "xmlreader" +CONFIGURE_ARGS+= --enable-xmlreader + +USE_GNOME= libxml2 + +USE_PHP= dom:build +.endif + +.if ${PHP_MODNAME} == "xmlrpc" +CONFIGURE_ARGS+= --with-iconv-dir=${LOCALBASE} \ + --with-xmlrpc + +USES+= iconv:translit +USE_GNOME= libxml2 + +PHP_HEADER_DIRS= libxmlrpc + +USE_PHP= xml:build +.endif + +.if ${PHP_MODNAME} == "xmlwriter" +CONFIGURE_ARGS+= --enable-xmlwriter + +USES+= pkgconfig +USE_GNOME= libxml2 +.endif + +.if ${PHP_MODNAME} == "xsl" +CONFIGURE_ARGS+= --with-xsl=${LOCALBASE} + +USE_GNOME= libxslt +USE_PHP= dom:build xml:build +.endif + +.if ${PHP_MODNAME} == "zip" +LIB_DEPENDS+= libzip.so:archivers/libzip + +CONFIGURE_ARGS+= --enable-zip \ + --with-libzip=${LOCALBASE} \ + --with-pcre-dir=${LOCALBASE} \ + --with-zlib-dir=/usr +USES+= pkgconfig +.endif + +.if ${PHP_MODNAME} == "zlib" +CONFIGURE_ARGS+= --with-zlib=/usr +USES+= pkgconfig +.endif + +.include <bsd.port.pre.mk> + +.if ${PHP_MODNAME} == "openssl" +post-stage: + @if ${PREFIX}/bin/php -m | grep openssl 2>/dev/null && ( [ ! -f ${PREFIX}/etc/php/ext-20-openssl.ini ] && [ ! -f ${PREFIX}/etc/php/ext-30-openssl.ini ] ); then \ + ${ECHO_CMD}; \ + ${ECHO_MSG} "===> ${PKGNAME} "openssl module is already built with php base.; \ + ${ECHO_CMD}; \ + ${FALSE}; \ + fi +.endif + +.if ${PHP_MODNAME} == "openssl" || ${PHP_MODNAME} == "sqlite3" || ${PHP_MODNAME} == \ + "zlib" +post-extract: + @${MV} ${WRKSRC}/config0.m4 ${WRKSRC}/config.m4 +.endif + +.if ${PHP_MODNAME} == "xml" +post-extract: + @${MKDIR} ${WRKSRC}/ext/xml + @${CP} ${WRKSRC}/expat_compat.h ${WRKSRC}/ext/xml +.endif +.endif +.include <bsd.port.post.mk> diff --git a/lang/php81/distinfo b/lang/php81/distinfo new file mode 100644 index 000000000000..f99b5f1603ea --- /dev/null +++ b/lang/php81/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1640164488 +SHA256 (php-8.1.1.tar.xz) = 33c09d76d0a8bbb5dd930d9dd32e6bfd44e9efcf867563759eb5492c3aff8856 +SIZE (php-8.1.1.tar.xz) = 11728680 diff --git a/lang/php81/files/patch-build_Makefile.global b/lang/php81/files/patch-build_Makefile.global new file mode 100644 index 000000000000..4b838d157941 --- /dev/null +++ b/lang/php81/files/patch-build_Makefile.global @@ -0,0 +1,19 @@ +--- build/Makefile.global.orig 2019-08-06 06:54:07 UTC ++++ build/Makefile.global +@@ -89,14 +89,14 @@ test: all + @if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \ + INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \ + if test "$$INI_FILE"; then \ +- $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \ ++ $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini || :; \ + else \ + echo > $(top_builddir)/tmp-php.ini; \ + fi; \ + INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanned_files())); echo $$a[0];' 2> /dev/null`; \ + if test "$$INI_SCANNED_PATH"; then \ + INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \ +- $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini; \ ++ $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini || :; \ + fi; \ + TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \ + TEST_PHP_SRCDIR=$(top_srcdir) \ diff --git a/lang/php81/files/patch-configure.ac b/lang/php81/files/patch-configure.ac new file mode 100644 index 000000000000..b8c26f6c43f1 --- /dev/null +++ b/lang/php81/files/patch-configure.ac @@ -0,0 +1,45 @@ +--- configure.ac.orig 2021-12-15 02:00:45 UTC ++++ configure.ac +@@ -55,6 +55,7 @@ AH_BOTTOM([ + + #include <string.h> + ++#include <ext/php_config.h> + #endif /* PHP_CONFIG_H */ + ]) + +@@ -273,7 +274,6 @@ sinclude(Zend/Zend.m4) + + dnl ---------------------------------------------------------------------------- + +-PTHREADS_CHECK + PHP_HELP_SEPARATOR([SAPI modules:]) + PHP_SHLIB_SUFFIX_NAMES + PHP_BUILD_PROGRAM +@@ -614,7 +614,7 @@ memmem \ + AX_FUNC_WHICH_GETHOSTBYNAME_R + + dnl Some systems (like OpenSolaris) do not have nanosleep in libc. +-PHP_CHECK_FUNC_LIB(nanosleep, rt) ++PHP_CHECK_FUNC(nanosleep, rt) + + dnl Haiku does not have network api in libc. + PHP_CHECK_FUNC_LIB(setsockopt, network) +@@ -1360,7 +1360,7 @@ EXPANDED_SYSCONFDIR=`eval echo $sysconfdir` + EXPANDED_DATADIR=$datadir + EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"` + EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"` +-INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR ++INCLUDE_PATH=.:${prefix}/share/pear + + exec_prefix=$old_exec_prefix + libdir=$old_libdir +@@ -1579,7 +1579,7 @@ PHP_SUBST(all_targets) + PHP_SUBST(install_targets) + PHP_SUBST(install_binary_targets) + +-PHP_INSTALL_HEADERS([Zend/ TSRM/ include/ main/ main/streams/]) ++PHP_INSTALL_HEADERS([Zend/ TSRM/ main/ main/streams/]) + PHP_INSTALL_HEADERS([Zend/Optimizer], [ \ + zend_call_graph.h \ + zend_cfg.h \ diff --git a/lang/php81/files/patch-ext_mysqli_mysqli__api.c b/lang/php81/files/patch-ext_mysqli_mysqli__api.c new file mode 100644 index 000000000000..535503954e3d --- /dev/null +++ b/lang/php81/files/patch-ext_mysqli_mysqli__api.c @@ -0,0 +1,12 @@ +--- ext/mysqli/mysqli_api.c.orig 2020-09-29 22:36:51 UTC ++++ ext/mysqli/mysqli_api.c +@@ -29,7 +29,9 @@ + #include "zend_smart_str.h" + #include "php_mysqli_structs.h" + #include "mysqli_priv.h" ++#if defined(MYSQLI_USE_MYSQLND) + #include "ext/mysqlnd/mysql_float_to_double.h" ++#endif + + #define ERROR_ARG_POS(arg_num) (getThis() ? (arg_num-1) : (arg_num)) + diff --git a/lang/php81/files/patch-ext_mysqli_mysqli__nonapi.c b/lang/php81/files/patch-ext_mysqli_mysqli__nonapi.c new file mode 100644 index 000000000000..9baa04218bf9 --- /dev/null +++ b/lang/php81/files/patch-ext_mysqli_mysqli__nonapi.c @@ -0,0 +1,12 @@ +--- ext/mysqli/mysqli_nonapi.c.orig 2020-01-09 11:40:57 UTC ++++ ext/mysqli/mysqli_nonapi.c +@@ -28,7 +28,9 @@ + #include "php_ini.h" + #include "ext/standard/info.h" + #include "zend_smart_str.h" ++#if defined(MYSQLI_USE_MYSQLND) + #include "php_mysqli_structs.h" ++#endif + #include "mysqli_priv.h" + + #define SAFE_STR(a) ((a)?a:"") diff --git a/lang/php81/files/patch-ext_mysqli_mysqli__prop.c b/lang/php81/files/patch-ext_mysqli_mysqli__prop.c new file mode 100644 index 000000000000..37d47a304440 --- /dev/null +++ b/lang/php81/files/patch-ext_mysqli_mysqli__prop.c @@ -0,0 +1,12 @@ +--- ext/mysqli/mysqli_prop.c.orig 2020-01-09 11:40:11 UTC ++++ ext/mysqli/mysqli_prop.c +@@ -26,7 +26,9 @@ + #include "php.h" + #include "php_ini.h" + #include "ext/standard/info.h" ++#if defined(MYSQLI_USE_MYSQLND) + #include "php_mysqli_structs.h" ++#endif + #include "mysqli_priv.h" + + #define CHECK_STATUS(value) \ diff --git a/lang/php81/files/patch-ext_mysqli_php__mysqli__structs.h b/lang/php81/files/patch-ext_mysqli_php__mysqli__structs.h new file mode 100644 index 000000000000..f0e33efd03aa --- /dev/null +++ b/lang/php81/files/patch-ext_mysqli_php__mysqli__structs.h @@ -0,0 +1,11 @@ +--- ext/mysqli/php_mysqli_structs.h.orig 2019-12-17 10:29:23 UTC ++++ ext/mysqli/php_mysqli_structs.h +@@ -36,7 +36,7 @@ + #define FALSE 0 + #endif + +-#ifdef MYSQLI_USE_MYSQLND ++#if defined(MYSQLI_USE_MYSQLND) + #include "ext/mysqlnd/mysqlnd.h" + #include "mysqli_mysqlnd.h" + #else diff --git a/lang/php81/files/patch-sapi_apache2handler_config.m4 b/lang/php81/files/patch-sapi_apache2handler_config.m4 new file mode 100644 index 000000000000..5b0cfb9d4591 --- /dev/null +++ b/lang/php81/files/patch-sapi_apache2handler_config.m4 @@ -0,0 +1,11 @@ +--- sapi/apache2handler/config.m4.orig 2018-08-14 11:39:14 UTC ++++ sapi/apache2handler/config.m4 +@@ -65,7 +65,7 @@ if test "$PHP_APXS2" != "no"; then + fi + + APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR` +- if test -z `$APXS -q SYSCONFDIR`; then ++ if true; then + INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \ + $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \ + -i -n php7" diff --git a/lang/php81/files/patch-sapi_fpm_config.m4 b/lang/php81/files/patch-sapi_fpm_config.m4 new file mode 100644 index 000000000000..e88c204384ae --- /dev/null +++ b/lang/php81/files/patch-sapi_fpm_config.m4 @@ -0,0 +1,11 @@ +--- sapi/fpm/config.m4.orig 2018-08-14 11:39:14 UTC ++++ sapi/fpm/config.m4 +@@ -319,7 +319,7 @@ AC_DEFUN([AC_FPM_LQ], + AC_MSG_RESULT([no]) + ]) + +- if test "$have_lq" = "tcp_info"; then ++ if test "$have_lq" = "so_listenq"; then + AC_DEFINE([HAVE_LQ_TCP_INFO], 1, [do we have TCP_INFO?]) + fi + diff --git a/lang/php81/files/patch-sapi_fpm_www.conf.in b/lang/php81/files/patch-sapi_fpm_www.conf.in new file mode 100644 index 000000000000..c7e7fe399854 --- /dev/null +++ b/lang/php81/files/patch-sapi_fpm_www.conf.in @@ -0,0 +1,17 @@ +--- sapi/fpm/www.conf.in.orig 2019-01-26 15:54:27 UTC ++++ sapi/fpm/www.conf.in +@@ -27,10 +27,14 @@ group = @php_fpm_group@ + ; Valid syntaxes are: + ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on + ; a specific port; ++; '0.0.0.0:port' - to listen on a TCP socket to all IPv4 addresses on ++; a specific port; + ; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on + ; a specific port; + ; 'port' - to listen on a TCP socket to all addresses + ; (IPv6 and IPv4-mapped) on a specific port; ++; Note: IPv4-mapped addresses are disabled by-default in ++; FreeBSD for security reasons; + ; '/path/to/unix/socket' - to listen on a unix socket. + ; Note: This value is mandatory. + listen = 127.0.0.1:9000 diff --git a/lang/php81/files/php-fpm.in b/lang/php81/files/php-fpm.in new file mode 100644 index 000000000000..c234856b0e54 --- /dev/null +++ b/lang/php81/files/php-fpm.in @@ -0,0 +1,66 @@ +#!/bin/sh + +# PROVIDE: php-fpm +# REQUIRE: LOGIN +# KEYWORD: shutdown + +# +# Add the following line to /etc/rc.conf to enable php-fpm: +# php_fpm_enable="YES" +# + +. /etc/rc.subr + +name="php_fpm" +rcvar=php_fpm_enable + +start_precmd="php_fpm_prestart" +restart_precmd="php_fpm_checkconfig" +reload_precmd="php_fpm_checkconfig" +configtest_cmd="php_fpm_checkconfig" + +load_rc_config "$name" + +: ${php_fpm_enable="NO"} +: ${php_fpm_umask=""} + +extra_commands="reload configtest logrotate" + +command="%%PREFIX%%/sbin/php-fpm" +pidfile="/var/run/php-fpm.pid" +sig_stop="QUIT" +sig_reload="USR2" +logrotate_cmd="php_fpm_logrotate" + +required_files="%%PREFIX%%/etc/php-fpm.conf" + +php_fpm_logrotate() { + if [ -z "$rc_pid" ]; then + _run_rc_notrunning + return 1 + fi + echo "Rotating logs $name." + kill -USR1 $rc_pid +} + +php_fpm_checkconfig() +{ + echo "Performing sanity check on php-fpm configuration:" + eval ${command} -t +} + +php_fpm_prestart() +{ + php_fpm_checkconfig + checkconfig=$? + if [ $checkconfig -ne 0 ]; then + return $checkconfig + fi + + if [ ! -z "$php_fpm_umask" ]; then + echo "Setting umask to: ${php_fpm_umask}" + umask $php_fpm_umask + fi +} + +run_rc_command "$1" diff --git a/lang/php81/pkg-descr b/lang/php81/pkg-descr new file mode 100644 index 000000000000..ea14e767e1c9 --- /dev/null +++ b/lang/php81/pkg-descr @@ -0,0 +1,8 @@ +PHP, which stands for "PHP: Hypertext Preprocessor" is a widely-used Open +Source general-purpose scripting language that is especially suited for +Web development and can be embedded into HTML. Its syntax draws upon C, +Java, and Perl, and is easy to learn. The main goal of the language is to +allow web developers to write dynamically generated webpages quickly, but +you can do much more with PHP. + +WWW: https://www.php.net/ diff --git a/lang/php81/pkg-message.mod b/lang/php81/pkg-message.mod new file mode 100644 index 000000000000..a0c2c87889a7 --- /dev/null +++ b/lang/php81/pkg-message.mod @@ -0,0 +1,19 @@ +****************************************************************************** + +Make sure index.php is part of your DirectoryIndex. + +You should add the following to your Apache configuration file: + +<FilesMatch "\.php$"> + SetHandler application/x-httpd-php +</FilesMatch> +<FilesMatch "\.phps$"> + SetHandler application/x-httpd-php-source +</FilesMatch> + +****************************************************************************** + +If you are building PHP-based ports in poudriere(8) or Synth with ZTS enabled, +add WITH_MPM=event to /etc/make.conf to prevent build failures. + +****************************************************************************** diff --git a/lang/php81/pkg-plist b/lang/php81/pkg-plist new file mode 100644 index 000000000000..7d4687e211bf --- /dev/null +++ b/lang/php81/pkg-plist @@ -0,0 +1,308 @@ +%%CLI%%bin/php +%%CGI%%bin/php-cgi +bin/php-config +%%PHPDBG%%bin/phpdbg +bin/phpize +%%FPM%%sbin/php-fpm +etc/php.conf +etc/php.ini-development +etc/php.ini-production +%%FPM%%@sample etc/php-fpm.conf.default etc/php-fpm.conf +%%FPM%%@sample etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf +include/php/TSRM/TSRM.h +include/php/TSRM/tsrm_win32.h +include/php/Zend/Optimizer/zend_call_graph.h +include/php/Zend/Optimizer/zend_cfg.h +include/php/Zend/Optimizer/zend_dfg.h +include/php/Zend/Optimizer/zend_dump.h +include/php/Zend/Optimizer/zend_func_info.h +include/php/Zend/Optimizer/zend_inference.h +include/php/Zend/Optimizer/zend_optimizer.h +include/php/Zend/Optimizer/zend_ssa.h +include/php/Zend/zend.h +include/php/Zend/zend_API.h +include/php/Zend/zend_alloc.h +include/php/Zend/zend_alloc_sizes.h +include/php/Zend/zend_arena.h +include/php/Zend/zend_ast.h +include/php/Zend/zend_attributes.h +include/php/Zend/zend_attributes_arginfo.h +include/php/Zend/zend_bitset.h +include/php/Zend/zend_build.h +include/php/Zend/zend_builtin_functions.h +include/php/Zend/zend_builtin_functions_arginfo.h +include/php/Zend/zend_closures.h +include/php/Zend/zend_closures_arginfo.h +include/php/Zend/zend_compile.h +include/php/Zend/zend_config.h +include/php/Zend/zend_config.w32.h +include/php/Zend/zend_constants.h +include/php/Zend/zend_cpuinfo.h +include/php/Zend/zend_dtrace.h +%%DTRACE%%include/php/Zend/zend_dtrace_gen.h +include/php/Zend/zend_enum.h +include/php/Zend/zend_enum_arginfo.h +include/php/Zend/zend_errors.h +include/php/Zend/zend_exceptions.h +include/php/Zend/zend_exceptions_arginfo.h +include/php/Zend/zend_execute.h +include/php/Zend/zend_extensions.h +include/php/Zend/zend_fibers.h +include/php/Zend/zend_fibers_arginfo.h +include/php/Zend/zend_float.h +include/php/Zend/zend_gc.h +include/php/Zend/zend_gdb.h +include/php/Zend/zend_generators.h +include/php/Zend/zend_generators_arginfo.h +include/php/Zend/zend_globals.h +include/php/Zend/zend_globals_macros.h +include/php/Zend/zend_hash.h +include/php/Zend/zend_highlight.h +include/php/Zend/zend_inheritance.h +include/php/Zend/zend_ini.h +include/php/Zend/zend_ini_parser.h +include/php/Zend/zend_ini_scanner.h +include/php/Zend/zend_ini_scanner_defs.h +include/php/Zend/zend_interfaces.h +include/php/Zend/zend_interfaces_arginfo.h +include/php/Zend/zend_istdiostream.h +include/php/Zend/zend_iterators.h +include/php/Zend/zend_language_parser.h +include/php/Zend/zend_language_scanner.h +include/php/Zend/zend_language_scanner_defs.h +include/php/Zend/zend_list.h +include/php/Zend/zend_llist.h +include/php/Zend/zend_long.h +include/php/Zend/zend_map_ptr.h +include/php/Zend/zend_modules.h +include/php/Zend/zend_multibyte.h +include/php/Zend/zend_multiply.h +include/php/Zend/zend_object_handlers.h +include/php/Zend/zend_objects.h +include/php/Zend/zend_objects_API.h +include/php/Zend/zend_observer.h +include/php/Zend/zend_operators.h +include/php/Zend/zend_portability.h +include/php/Zend/zend_ptr_stack.h +include/php/Zend/zend_range_check.h +include/php/Zend/zend_signal.h +include/php/Zend/zend_smart_str.h +include/php/Zend/zend_smart_str_public.h +include/php/Zend/zend_smart_string.h +include/php/Zend/zend_smart_string_public.h +include/php/Zend/zend_sort.h +include/php/Zend/zend_stack.h +include/php/Zend/zend_stream.h +include/php/Zend/zend_string.h +include/php/Zend/zend_strtod.h +include/php/Zend/zend_strtod_int.h +include/php/Zend/zend_system_id.h +include/php/Zend/zend_type_info.h +include/php/Zend/zend_types.h +include/php/Zend/zend_variables.h +include/php/Zend/zend_virtual_cwd.h +include/php/Zend/zend_vm.h +include/php/Zend/zend_vm_def.h +include/php/Zend/zend_vm_execute.h +include/php/Zend/zend_vm_handlers.h +include/php/Zend/zend_vm_opcodes.h +include/php/Zend/zend_vm_trace_handlers.h +include/php/Zend/zend_vm_trace_lines.h +include/php/Zend/zend_vm_trace_map.h +include/php/Zend/zend_weakrefs.h +include/php/Zend/zend_weakrefs_arginfo.h +include/php/ext/date/lib/timelib.h +include/php/ext/date/lib/timelib_config.h +include/php/ext/date/php_date.h +include/php/ext/hash/php_hash.h +include/php/ext/hash/php_hash_adler32.h +include/php/ext/hash/php_hash_crc32.h +include/php/ext/hash/php_hash_fnv.h +include/php/ext/hash/php_hash_gost.h +include/php/ext/hash/php_hash_haval.h +include/php/ext/hash/php_hash_joaat.h +include/php/ext/hash/php_hash_md.h +include/php/ext/hash/php_hash_murmur.h +include/php/ext/hash/php_hash_ripemd.h +include/php/ext/hash/php_hash_sha.h +include/php/ext/hash/php_hash_sha3.h +include/php/ext/hash/php_hash_snefru.h +include/php/ext/hash/php_hash_tiger.h +include/php/ext/hash/php_hash_whirlpool.h +include/php/ext/hash/php_hash_xxhash.h +include/php/ext/json/php_json.h +include/php/ext/json/php_json_parser.h +include/php/ext/json/php_json_scanner.h +include/php/ext/libxml/php_libxml.h +%%MYSQLND%%include/php/ext/mysqlnd/config-win.h +%%MYSQLND%%include/php/ext/mysqlnd/mysql_float_to_double.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_alloc.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_auth.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_block_alloc.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_charset.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_commands.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_connection.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_debug.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_enum_n_def.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_ext_plugin.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_libmysql_compat.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_plugin.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_portability.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_priv.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_protocol_frame_codec.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_ps.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_read_buffer.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_result.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_result_meta.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_reverse_api.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_statistics.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_structs.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_vio.h +%%MYSQLND%%include/php/ext/mysqlnd/mysqlnd_wireprotocol.h +%%MYSQLND%%include/php/ext/mysqlnd/php_mysqlnd.h +include/php/ext/pcre/pcre2lib/config.h +include/php/ext/pcre/pcre2lib/pcre2.h +include/php/ext/pcre/pcre2lib/pcre2_internal.h +include/php/ext/pcre/pcre2lib/pcre2_intmodedep.h +include/php/ext/pcre/pcre2lib/pcre2_jit_neon_inc.h +include/php/ext/pcre/pcre2lib/pcre2_jit_simd_inc.h +include/php/ext/pcre/pcre2lib/pcre2_ucp.h +include/php/ext/pcre/php_pcre.h +include/php/ext/spl/php_spl.h +include/php/ext/spl/spl_array.h +include/php/ext/spl/spl_directory.h +include/php/ext/spl/spl_dllist.h +include/php/ext/spl/spl_engine.h +include/php/ext/spl/spl_exceptions.h +include/php/ext/spl/spl_fixedarray.h +include/php/ext/spl/spl_functions.h +include/php/ext/spl/spl_heap.h +include/php/ext/spl/spl_iterators.h +include/php/ext/spl/spl_observer.h +include/php/ext/standard/base64.h +include/php/ext/standard/basic_functions.h +include/php/ext/standard/basic_functions_arginfo.h +include/php/ext/standard/crc32.h +include/php/ext/standard/crc32_x86.h +include/php/ext/standard/credits.h +include/php/ext/standard/credits_ext.h +include/php/ext/standard/credits_sapi.h +include/php/ext/standard/crypt_blowfish.h +include/php/ext/standard/crypt_freesec.h +include/php/ext/standard/css.h +include/php/ext/standard/datetime.h +include/php/ext/standard/dir_arginfo.h +include/php/ext/standard/dl.h +include/php/ext/standard/dl_arginfo.h +include/php/ext/standard/exec.h +include/php/ext/standard/file.h +include/php/ext/standard/flock_compat.h +include/php/ext/standard/fsock.h +include/php/ext/standard/head.h +include/php/ext/standard/hrtime.h +include/php/ext/standard/html.h +include/php/ext/standard/html_tables.h +include/php/ext/standard/info.h +include/php/ext/standard/md5.h +include/php/ext/standard/pack.h +include/php/ext/standard/pageinfo.h +include/php/ext/standard/php_array.h +include/php/ext/standard/php_assert.h +include/php/ext/standard/php_browscap.h +include/php/ext/standard/php_crypt.h +include/php/ext/standard/php_crypt_r.h +include/php/ext/standard/php_dir.h +include/php/ext/standard/php_dns.h +include/php/ext/standard/php_ext_syslog.h +include/php/ext/standard/php_filestat.h +include/php/ext/standard/php_fopen_wrappers.h +include/php/ext/standard/php_http.h +include/php/ext/standard/php_image.h +include/php/ext/standard/php_incomplete_class.h +include/php/ext/standard/php_lcg.h +include/php/ext/standard/php_mail.h +include/php/ext/standard/php_math.h +include/php/ext/standard/php_mt_rand.h +include/php/ext/standard/php_net.h +include/php/ext/standard/php_password.h +include/php/ext/standard/php_rand.h +include/php/ext/standard/php_random.h +include/php/ext/standard/php_smart_string.h +include/php/ext/standard/php_smart_string_public.h +include/php/ext/standard/php_standard.h +include/php/ext/standard/php_string.h +include/php/ext/standard/php_uuencode.h +include/php/ext/standard/php_var.h +include/php/ext/standard/php_versioning.h +include/php/ext/standard/proc_open.h +include/php/ext/standard/quot_print.h +include/php/ext/standard/scanf.h +include/php/ext/standard/sha1.h +include/php/ext/standard/streamsfuncs.h +include/php/ext/standard/url.h +include/php/ext/standard/url_scanner_ex.h +include/php/ext/standard/user_filters_arginfo.h +include/php/ext/standard/winver.h +@touch include/php/ext/php_config.h +@rmempty include/php/ext/php_config.h +include/php/main/SAPI.h +include/php/main/build-defs.h +include/php/main/fastcgi.h +include/php/main/fopen_wrappers.h +include/php/main/http_status_codes.h +include/php/main/php.h +include/php/main/php_compat.h +include/php/main/php_config.h +include/php/main/php_content_types.h +include/php/main/php_getopt.h +include/php/main/php_globals.h +include/php/main/php_ini.h +include/php/main/php_main.h +include/php/main/php_memory_streams.h +include/php/main/php_network.h +include/php/main/php_open_temporary_file.h +include/php/main/php_output.h +include/php/main/php_reentrancy.h +include/php/main/php_scandir.h +include/php/main/php_stdint.h +include/php/main/php_streams.h +include/php/main/php_syslog.h +include/php/main/php_ticks.h +include/php/main/php_variables.h +include/php/main/php_version.h +include/php/main/rfc1867.h +include/php/main/snprintf.h +include/php/main/spprintf.h +include/php/main/streams/php_stream_context.h +include/php/main/streams/php_stream_filter_api.h +include/php/main/streams/php_stream_glob_wrapper.h +include/php/main/streams/php_stream_mmap.h +include/php/main/streams/php_stream_plain_wrapper.h +include/php/main/streams/php_stream_transport.h +include/php/main/streams/php_stream_userspace.h +include/php/main/streams/php_streams_int.h +%%CLI%%include/php/sapi/cli/cli.h +%%EMBED%%include/php/sapi/embed/php_embed.h +%%EMBED%%lib/libphp.so +lib/php/build/Makefile.global +lib/php/build/ax_check_compile_flag.m4 +lib/php/build/ax_gcc_func_attribute.m4 +lib/php/build/config.guess +lib/php/build/config.sub +lib/php/build/gen_stub.php +lib/php/build/libtool.m4 +lib/php/build/ltmain.sh +lib/php/build/php.m4 +lib/php/build/php_cxx_compile_stdcxx.m4 +lib/php/build/phpize.m4 +lib/php/build/pkg.m4 +lib/php/build/run-tests.php +lib/php/build/shtool +%%CGI%%man/man1/php-cgi.1.gz +man/man1/php-config.1.gz +%%CLI%%man/man1/php.1.gz +%%PHPDBG%%man/man1/phpdbg.1.gz +man/man1/phpize.1.gz +%%FPM%%man/man8/php-fpm.8.gz +%%FPM%%share/php/fpm/status.html diff --git a/lang/php81/pkg-plist.mod b/lang/php81/pkg-plist.mod new file mode 100644 index 000000000000..8939be6d3d5e --- /dev/null +++ b/lang/php81/pkg-plist.mod @@ -0,0 +1,3 @@ +%%APACHEMODDIR%%/%%AP_MODULE%% +@postexec %D/sbin/apxs -e -a -n %%AP_NAME%% %f +@preunexec %D/sbin/apxs -e -A -n %%AP_NAME%% %f |