git: 44e99def8ddf - main - Add php81 to the tree
- Reply: Guido Falsi : "Re: git: 44e99def8ddf - main - Add php81 to the tree"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 29 Dec 2021 02:18:22 UTC
The branch main has been updated by bofh:
URL: https://cgit.FreeBSD.org/ports/commit/?id=44e99def8ddf26311675cb2070eb062e1f7d0da5
commit 44e99def8ddf26311675cb2070eb062e1f7d0da5
Author: Muhammad Moinur Rahman <bofh@FreeBSD.org>
AuthorDate: 2021-12-29 02:09:08 +0000
Commit: Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2021-12-29 02:09:08 +0000
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
---
archivers/Makefile | 4 +
archivers/php81-bz2/Makefile | 7 +
archivers/php81-phar/Makefile | 7 +
archivers/php81-phar/files/patch-config.m4 | 41 ++
archivers/php81-zip/Makefile | 7 +
archivers/php81-zlib/Makefile | 7 +
archivers/php81-zlib/files/patch-zlib.c | 10 +
converters/Makefile | 2 +
converters/php81-iconv/Makefile | 7 +
converters/php81-mbstring/Makefile | 7 +
converters/php81-mbstring/files/patch-config.m4 | 44 ++
databases/Makefile | 12 +
databases/php81-dba/Makefile | 7 +
databases/php81-dba/files/patch-config.m4 | 50 ++
databases/php81-mysqli/Makefile | 7 +
databases/php81-mysqli/files/patch-mysqli__api.c | 12 +
.../php81-mysqli/files/patch-php_mysqli_structs.h | 20 +
databases/php81-odbc/Makefile | 7 +
databases/php81-odbc/files/patch-config.m4 | 111 ++++
databases/php81-pdo/Makefile | 7 +
databases/php81-pdo_dblib/Makefile | 7 +
databases/php81-pdo_firebird/Makefile | 7 +
databases/php81-pdo_mysql/Makefile | 7 +
databases/php81-pdo_odbc/Makefile | 7 +
databases/php81-pdo_pgsql/Makefile | 7 +
databases/php81-pdo_sqlite/Makefile | 7 +
databases/php81-pgsql/Makefile | 7 +
databases/php81-sqlite3/Makefile | 7 +
devel/Makefile | 10 +
devel/php81-ffi/Makefile | 7 +
devel/php81-gettext/Makefile | 7 +
devel/php81-intl/Makefile | 7 +
devel/php81-pcntl/Makefile | 7 +
devel/php81-readline/Makefile | 7 +
devel/php81-readline/files/patch-config.m4 | 33 +
devel/php81-readline/files/patch-readline_cli.c | 13 +
devel/php81-shmop/Makefile | 7 +
devel/php81-sysvmsg/Makefile | 7 +
devel/php81-sysvsem/Makefile | 7 +
devel/php81-sysvshm/Makefile | 7 +
devel/php81-tokenizer/Makefile | 7 +
ftp/Makefile | 2 +
ftp/php81-curl/Makefile | 7 +
ftp/php81-ftp/Makefile | 7 +
graphics/Makefile | 2 +
graphics/php81-exif/Makefile | 7 +
graphics/php81-gd/Makefile | 7 +
graphics/php81-gd/files/patch-gd.c | 11 +
lang/Makefile | 2 +
lang/php81-extensions/Makefile | 91 +++
lang/php81-extensions/pkg-descr | 7 +
lang/php81/Makefile | 662 +++++++++++++++++++++
lang/php81/distinfo | 3 +
lang/php81/files/patch-build_Makefile.global | 19 +
lang/php81/files/patch-configure.ac | 45 ++
lang/php81/files/patch-ext_mysqli_mysqli__api.c | 12 +
lang/php81/files/patch-ext_mysqli_mysqli__nonapi.c | 12 +
lang/php81/files/patch-ext_mysqli_mysqli__prop.c | 12 +
.../files/patch-ext_mysqli_php__mysqli__structs.h | 11 +
.../files/patch-sapi_apache2handler_config.m4 | 11 +
lang/php81/files/patch-sapi_fpm_config.m4 | 11 +
lang/php81/files/patch-sapi_fpm_www.conf.in | 17 +
lang/php81/files/php-fpm.in | 66 ++
lang/php81/pkg-descr | 8 +
lang/php81/pkg-message.mod | 19 +
lang/php81/pkg-plist | 308 ++++++++++
lang/php81/pkg-plist.mod | 3 +
mail/Makefile | 1 +
mail/php81-imap/Makefile | 7 +
mail/php81-imap/files/patch-config.m4 | 47 ++
math/Makefile | 2 +
math/php81-bcmath/Makefile | 7 +
math/php81-gmp/Makefile | 7 +
misc/Makefile | 1 +
misc/php81-calendar/Makefile | 7 +
net-mgmt/Makefile | 1 +
net-mgmt/php81-snmp/Makefile | 7 +
net/Makefile | 3 +
net/php81-ldap/Makefile | 7 +
net/php81-soap/Makefile | 7 +
net/php81-sockets/Makefile | 7 +
security/Makefile | 3 +
security/php81-filter/Makefile | 7 +
security/php81-openssl/Makefile | 7 +
security/php81-sodium/Makefile | 7 +
sysutils/Makefile | 2 +
sysutils/php81-fileinfo/Makefile | 7 +
sysutils/php81-fileinfo/files/patch-config.m4 | 21 +
sysutils/php81-posix/Makefile | 7 +
sysutils/php81-posix/files/patch-posix.c | 38 ++
textproc/Makefile | 9 +
textproc/php81-ctype/Makefile | 7 +
textproc/php81-dom/Makefile | 7 +
textproc/php81-enchant/Makefile | 7 +
textproc/php81-enchant/files/patch-enchant.c | 11 +
textproc/php81-pspell/Makefile | 7 +
textproc/php81-simplexml/Makefile | 7 +
textproc/php81-simplexml/files/patch-config.m4 | 42 ++
textproc/php81-xml/Makefile | 7 +
textproc/php81-xml/files/patch-compat.c | 13 +
textproc/php81-xmlreader/Makefile | 7 +
textproc/php81-xmlwriter/Makefile | 7 +
textproc/php81-xsl/Makefile | 7 +
textproc/php81-xsl/files/patch-php_xsl.h | 11 +
www/Makefile | 4 +
www/mod_php81/Makefile | 13 +
www/php81-opcache/Makefile | 7 +
www/php81-opcache/files/patch-config.m4 | 20 +
www/php81-session/Makefile | 7 +
www/php81-tidy/Makefile | 7 +
110 files changed, 2337 insertions(+)
diff --git a/archivers/Makefile b/archivers/Makefile
index caea780b16f5..c96743259a10 100644
--- a/archivers/Makefile
+++ b/archivers/Makefile
@@ -162,9 +162,13 @@
SUBDIR += php74-zip
SUBDIR += php74-zlib
SUBDIR += php80-bz2
+ SUBDIR += php81-bz2
SUBDIR += php80-phar
+ SUBDIR += php81-phar
SUBDIR += php80-zip
+ SUBDIR += php81-zip
SUBDIR += php80-zlib
+ SUBDIR += php81-zlib
SUBDIR += pigz
SUBDIR += pixz
SUBDIR += plzip
diff --git a/archivers/php81-bz2/Makefile b/archivers/php81-bz2/Makefile
new file mode 100644
index 000000000000..acda1fa77a92
--- /dev/null
+++ b/archivers/php81-bz2/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= archivers
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -bz2
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php81-phar/Makefile b/archivers/php81-phar/Makefile
new file mode 100644
index 000000000000..810e19ae4e32
--- /dev/null
+++ b/archivers/php81-phar/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= archivers
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -phar
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php81-phar/files/patch-config.m4 b/archivers/php81-phar/files/patch-config.m4
new file mode 100644
index 000000000000..1aba3bd9a5a8
--- /dev/null
+++ b/archivers/php81-phar/files/patch-config.m4
@@ -0,0 +1,41 @@
+--- config.m4.orig 2016-06-21 19:56:50 UTC
++++ config.m4
+@@ -4,8 +4,38 @@ dnl config.m4 for extension phar
+ PHP_ARG_ENABLE(phar, for phar archive support,
+ [ --disable-phar Disable phar support], yes)
+
++PHP_ARG_WITH(pcre-dir, pcre install prefix,
++[ --with-pcre-dir PHAR: pcre install prefix], no, no)
++
++
+ if test "$PHP_PHAR" != "no"; then
++
++ dnl This is PECL build, check if bundled PCRE library is used
++ old_CPPFLAGS=$CPPFLAGS
++ CPPFLAGS=$INCLUDES
++ AC_EGREP_CPP(yes,[
++#include <main/php_config.h>
++#if defined(HAVE_BUNDLED_PCRE) && !defined(COMPILE_DL_PCRE)
++yes
++#endif
++ ],[
++ PHP_PCRE_REGEX=yes
++ ],[
++ AC_EGREP_CPP(yes,[
++#include <main/php_config.h>
++#if defined(HAVE_PCRE) && !defined(COMPILE_DL_PCRE)
++yes
++#endif
++ ],[
++ PHP_PCRE_REGEX=pecl
++ PHP_ADD_INCLUDE($PHP_PCRE_DIR/include)
++ ],[
++ PHP_PCRE_REGEX=no
++ ])
++ ])
++
+ PHP_NEW_EXTENSION(phar, util.c tar.c zip.c stream.c func_interceptors.c dirstream.c phar.c phar_object.c phar_path_check.c, $ext_shared,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
++ PHP_HASH=yes
+ AC_MSG_CHECKING([for phar openssl support])
+ if test "$PHP_HASH_SHARED" != "yes"; then
+ if test "$PHP_HASH" != "no"; then
diff --git a/archivers/php81-zip/Makefile b/archivers/php81-zip/Makefile
new file mode 100644
index 000000000000..448cb8fad537
--- /dev/null
+++ b/archivers/php81-zip/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= archivers
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -zip
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php81-zlib/Makefile b/archivers/php81-zlib/Makefile
new file mode 100644
index 000000000000..751ffb1ae6b5
--- /dev/null
+++ b/archivers/php81-zlib/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= archivers
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -zlib
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php81-zlib/files/patch-zlib.c b/archivers/php81-zlib/files/patch-zlib.c
new file mode 100644
index 000000000000..be02c50d1df6
--- /dev/null
+++ b/archivers/php81-zlib/files/patch-zlib.c
@@ -0,0 +1,10 @@
+--- zlib.c.orig 2016-06-21 19:57:08 UTC
++++ zlib.c
+@@ -1480,6 +1480,7 @@ static PHP_MSHUTDOWN_FUNCTION(zlib)
+ /* {{{ PHP_RINIT_FUNCTION */
+ static PHP_RINIT_FUNCTION(zlib)
+ {
++ ZLIBG(output_compression) = 0;
+ ZLIBG(compression_coding) = 0;
+ if (!ZLIBG(handler_registered)) {
+ ZLIBG(output_compression) = ZLIBG(output_compression_default);
diff --git a/converters/Makefile b/converters/Makefile
index 35de0a964209..2a0031cfd8a2 100644
--- a/converters/Makefile
+++ b/converters/Makefile
@@ -141,7 +141,9 @@
SUBDIR += php74-iconv
SUBDIR += php74-mbstring
SUBDIR += php80-iconv
+ SUBDIR += php81-iconv
SUBDIR += php80-mbstring
+ SUBDIR += php81-mbstring
SUBDIR += psiconv
SUBDIR += py-bencode.py
SUBDIR += py-bencoder
diff --git a/converters/php81-iconv/Makefile b/converters/php81-iconv/Makefile
new file mode 100644
index 000000000000..cd797676267b
--- /dev/null
+++ b/converters/php81-iconv/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= converters
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -iconv
+
+.include "${MASTERDIR}/Makefile"
diff --git a/converters/php81-mbstring/Makefile b/converters/php81-mbstring/Makefile
new file mode 100644
index 000000000000..5ec26ef20ab5
--- /dev/null
+++ b/converters/php81-mbstring/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= converters
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -mbstring
+
+.include "${MASTERDIR}/Makefile"
diff --git a/converters/php81-mbstring/files/patch-config.m4 b/converters/php81-mbstring/files/patch-config.m4
new file mode 100644
index 000000000000..a3e5c14477a3
--- /dev/null
+++ b/converters/php81-mbstring/files/patch-config.m4
@@ -0,0 +1,44 @@
+--- config.m4.orig 2019-08-06 06:54:10 UTC
++++ config.m4
+@@ -37,6 +37,31 @@ AC_DEFUN([PHP_MBSTRING_EXTENSION], [
+
+ out="php_config.h"
+
++ dnl This is PECL build, check if bundled PCRE library is used
++ old_CPPFLAGS=$CPPFLAGS
++ CPPFLAGS=$INCLUDES
++ AC_EGREP_CPP(yes,[
++#include <main/php_config.h>
++#if defined(HAVE_BUNDLED_PCRE) && !defined(COMPILE_DL_PCRE)
++yes
++#endif
++ ],[
++ PHP_PCRE_REGEX=yes
++ ],[
++ AC_EGREP_CPP(yes,[
++#include <main/php_config.h>
++#if defined(HAVE_PCRE) && !defined(COMPILE_DL_PCRE)
++yes
++#endif
++ ],[
++ PHP_PCRE_REGEX=pecl
++ PHP_ADD_INCLUDE($PHP_PCRE_DIR/include)
++ ],[
++ PHP_PCRE_REGEX=no
++ ])
++ ])
++
++
+ if test "$ext_shared" != "no" && test -f "$ext_builddir/config.h.in"; then
+ out="$abs_builddir/config.h"
+ fi
+@@ -200,6 +225,9 @@ PHP_ARG_ENABLE([mbregex],
+ [yes],
+ [no])
+
++PHP_ARG_WITH(pcre-dir, pcre install prefix,
++[ --with-pcre-dir MBSTRING: pcre install prefix], no, no)
++
+ if test "$PHP_MBSTRING" != "no"; then
+ AC_DEFINE([HAVE_MBSTRING],1,[whether to have multibyte string support])
+
diff --git a/databases/Makefile b/databases/Makefile
index a2f7c0fb2374..8243c1fa738f 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -636,17 +636,29 @@
SUBDIR += php74-pgsql
SUBDIR += php74-sqlite3
SUBDIR += php80-dba
+ SUBDIR += php81-dba
SUBDIR += php80-mysqli
+ SUBDIR += php81-mysqli
SUBDIR += php80-odbc
+ SUBDIR += php81-odbc
SUBDIR += php80-pdo
+ SUBDIR += php81-pdo
SUBDIR += php80-pdo_dblib
+ SUBDIR += php81-pdo_dblib
SUBDIR += php80-pdo_firebird
+ SUBDIR += php81-pdo_firebird
SUBDIR += php80-pdo_mysql
+ SUBDIR += php81-pdo_mysql
SUBDIR += php80-pdo_odbc
+ SUBDIR += php81-pdo_odbc
SUBDIR += php80-pdo_pgsql
+ SUBDIR += php81-pdo_pgsql
SUBDIR += php80-pdo_sqlite
+ SUBDIR += php81-pdo_sqlite
SUBDIR += php80-pgsql
+ SUBDIR += php81-pgsql
SUBDIR += php80-sqlite3
+ SUBDIR += php81-sqlite3
SUBDIR += phpliteadmin
SUBDIR += phpminiadmin
SUBDIR += phpmyadmin
diff --git a/databases/php81-dba/Makefile b/databases/php81-dba/Makefile
new file mode 100644
index 000000000000..5c5380de17df
--- /dev/null
+++ b/databases/php81-dba/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -dba
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-dba/files/patch-config.m4 b/databases/php81-dba/files/patch-config.m4
new file mode 100644
index 000000000000..30f662138374
--- /dev/null
+++ b/databases/php81-dba/files/patch-config.m4
@@ -0,0 +1,50 @@
+--- config.m4.orig 2016-01-06 15:14:47 UTC
++++ config.m4
+@@ -324,6 +324,38 @@ if test "$PHP_DB4" != "no"; then
+ THIS_PREFIX=$i
+ THIS_INCLUDE=$i/include/db5.3/db.h
+ break
++ elif test -f "$i/include/db5/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db5/db.h
++ break
++ elif test -f "$i/include/db48/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db48/db.h
++ break
++ elif test -f "$i/include/db47/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db47/db.h
++ break
++ elif test -f "$i/include/db46/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db46/db.h
++ break
++ elif test -f "$i/include/db44/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db44/db.h
++ break
++ elif test -f "$i/include/db43/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db43/db.h
++ break
++ elif test -f "$i/include/db42/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db42/db.h
++ break
++ elif test -f "$i/include/db41/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db41/db.h
++ break
+ elif test -f "$i/include/db5.1/db.h"; then
+ THIS_PREFIX=$i
+ THIS_INCLUDE=$i/include/db5.1/db.h
+@@ -366,7 +398,7 @@ if test "$PHP_DB4" != "no"; then
+ break
+ fi
+ done
+- PHP_DBA_DB_CHECK(4, db-5.3 db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)])
++ PHP_DBA_DB_CHECK(4, db-5 db-5.3 db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)])
+ fi
+ PHP_DBA_STD_RESULT(db4,Berkeley DB4)
+
diff --git a/databases/php81-mysqli/Makefile b/databases/php81-mysqli/Makefile
new file mode 100644
index 000000000000..26619c0bed72
--- /dev/null
+++ b/databases/php81-mysqli/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -mysqli
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-mysqli/files/patch-mysqli__api.c b/databases/php81-mysqli/files/patch-mysqli__api.c
new file mode 100644
index 000000000000..a100e8205fb6
--- /dev/null
+++ b/databases/php81-mysqli/files/patch-mysqli__api.c
@@ -0,0 +1,12 @@
+--- mysqli_api.c.orig 2020-09-29 22:36:51 UTC
++++ 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/databases/php81-mysqli/files/patch-php_mysqli_structs.h b/databases/php81-mysqli/files/patch-php_mysqli_structs.h
new file mode 100644
index 000000000000..68568dd214fd
--- /dev/null
+++ b/databases/php81-mysqli/files/patch-php_mysqli_structs.h
@@ -0,0 +1,20 @@
+--- php_mysqli_structs.h.orig 2010-07-26 15:52:54.000000000 +0200
++++ php_mysqli_structs.h 2010-07-26 15:53:14.000000000 +0200
+@@ -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
+@@ -53,6 +53,8 @@
+ #undef HAVE_MBSTATE_T
+ #define WE_HAD_MBSTATE_T
+ #endif
++
++typedef zend_ulong ulong;
+
+ #if defined(ulong) && !defined(HAVE_ULONG)
+ #define HAVE_ULONG
diff --git a/databases/php81-odbc/Makefile b/databases/php81-odbc/Makefile
new file mode 100644
index 000000000000..8bc4a42dd7ce
--- /dev/null
+++ b/databases/php81-odbc/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -odbc
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-odbc/files/patch-config.m4 b/databases/php81-odbc/files/patch-config.m4
new file mode 100644
index 000000000000..04efc6ded7c9
--- /dev/null
+++ b/databases/php81-odbc/files/patch-config.m4
@@ -0,0 +1,111 @@
+--- config.m4.orig 2019-08-06 06:54:18 UTC
++++ config.m4
+@@ -91,6 +91,9 @@ AC_DEFUN([PHP_ODBC_FIND_EMPRESS_BCS_LIBS
+ dnl
+ dnl configure options
+ dnl
++PHP_ARG_ENABLE(odbc,,
++[ --enable-odbc Enable ODBC support with selected driver])
++
+
+ PHP_ARG_WITH([odbcver],,
+ [AS_HELP_STRING([[--with-odbcver[=HEX]]],
+@@ -102,7 +105,7 @@ PHP_ARG_WITH([odbcver],,
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([adabas],,
+ [AS_HELP_STRING([[--with-adabas[=DIR]]],
+- [Include Adabas D support [/usr/local]])])
++ [Include Adabas D support [/usr/local]])], [no], [no])
+
+ AC_MSG_CHECKING([for Adabas support])
+ if test "$PHP_ADABAS" != "no"; then
+@@ -132,7 +135,7 @@ fi
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([sapdb],,
+ [AS_HELP_STRING([[--with-sapdb[=DIR]]],
+- [Include SAP DB support [/usr/local]])])
++ [Include SAP DB support [/usr/local]])], [no], [no])
+
+ AC_MSG_CHECKING([for SAP DB support])
+ if test "$PHP_SAPDB" != "no"; then
+@@ -153,7 +156,7 @@ fi
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([solid],,
+ [AS_HELP_STRING([[--with-solid[=DIR]]],
+- [Include Solid support [/usr/local/solid]])])
++ [Include Solid support [/usr/local/solid]])], [no], [no])
+
+ AC_MSG_CHECKING(for Solid support)
+ if test "$PHP_SOLID" != "no"; then
+@@ -181,7 +184,7 @@ fi
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([ibm-db2],,
+ [AS_HELP_STRING([[--with-ibm-db2[=DIR]]],
+- [Include IBM DB2 support [/home/db2inst1/sqllib]])])
++ [Include IBM DB2 support [/home/db2inst1/sqllib]])], [no], [no])
+
+ AC_MSG_CHECKING(for IBM DB2 support)
+ if test "$PHP_IBM_DB2" != "no"; then
+@@ -222,7 +225,7 @@ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([empress],,
+ [AS_HELP_STRING([[--with-empress[=DIR]]],
+ [Include Empress support $EMPRESSPATH (Empress Version >= 8.60
+- required)])])
++ required)])], [no], [no])
+
+ AC_MSG_CHECKING(for Empress support)
+ if test "$PHP_EMPRESS" != "no"; then
+@@ -248,7 +251,7 @@ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([empress-bcs],,
+ [AS_HELP_STRING([[--with-empress-bcs[=DIR]]],
+ [Include Empress Local Access support $EMPRESSPATH (Empress Version >=
+- 8.60 required)])])
++ 8.60 required)])], [no], [no])
+
+ AC_MSG_CHECKING(for Empress local access support)
+ if test "$PHP_EMPRESS_BCS" != "no"; then
+@@ -294,7 +297,7 @@ PHP_ARG_WITH([custom-odbc],,
+ your include dirs. For example, you should define following for Sybase SQL
+ Anywhere 5.5.00 on QNX, prior to running this configure script:
+ CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix
+- CUSTOM_ODBC_LIBS="-ldblib -lodbc"])])
++ CUSTOM_ODBC_LIBS="-ldblib -lodbc"])], [no], [no])
+
+ AC_MSG_CHECKING(for a custom ODBC support)
+ if test "$PHP_CUSTOM_ODBC" != "no"; then
+@@ -317,7 +320,7 @@ fi
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([iodbc],,
+ [AS_HELP_STRING([--with-iodbc],
+- [Include iODBC support])])
++ [Include iODBC support])], [no], [no])
+
+ AC_MSG_CHECKING(whether to build with iODBC support)
+ if test "$PHP_IODBC" != "no"; then
+@@ -335,7 +338,7 @@ fi
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([esoob],,
+ [AS_HELP_STRING([[--with-esoob[=DIR]]],
+- [Include Easysoft OOB support [/usr/local/easysoft/oob/client]])])
++ [Include Easysoft OOB support [/usr/local/easysoft/oob/client]])], [no], [no])
+
+ AC_MSG_CHECKING(for Easysoft ODBC-ODBC Bridge support)
+ if test "$PHP_ESOOB" != "no"; then
+@@ -358,7 +361,7 @@ fi
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([unixODBC],,
+ [AS_HELP_STRING([--with-unixODBC],
+- [Include unixODBC support])])
++ [Include unixODBC support])], [no], [no])
+
+ AC_MSG_CHECKING(whether to build with unixODBC support)
+ if test "$PHP_UNIXODBC" != "no"; then
+@@ -386,7 +389,7 @@ fi
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([dbmaker],,
+ [AS_HELP_STRING([[--with-dbmaker[=DIR]]],
+- [Include DBMaker support])])
++ [Include DBMaker support])], [no], [no])
+
+ AC_MSG_CHECKING(for DBMaker support)
+ if test "$PHP_DBMAKER" != "no"; then
diff --git a/databases/php81-pdo/Makefile b/databases/php81-pdo/Makefile
new file mode 100644
index 000000000000..436a6554b434
--- /dev/null
+++ b/databases/php81-pdo/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -pdo
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-pdo_dblib/Makefile b/databases/php81-pdo_dblib/Makefile
new file mode 100644
index 000000000000..1634ef611565
--- /dev/null
+++ b/databases/php81-pdo_dblib/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -pdo_dblib
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-pdo_firebird/Makefile b/databases/php81-pdo_firebird/Makefile
new file mode 100644
index 000000000000..3d8a88b9eb21
--- /dev/null
+++ b/databases/php81-pdo_firebird/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -pdo_firebird
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-pdo_mysql/Makefile b/databases/php81-pdo_mysql/Makefile
new file mode 100644
index 000000000000..2f00ba00c8b9
--- /dev/null
+++ b/databases/php81-pdo_mysql/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -pdo_mysql
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-pdo_odbc/Makefile b/databases/php81-pdo_odbc/Makefile
new file mode 100644
index 000000000000..ea600d80a450
--- /dev/null
+++ b/databases/php81-pdo_odbc/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -pdo_odbc
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-pdo_pgsql/Makefile b/databases/php81-pdo_pgsql/Makefile
new file mode 100644
index 000000000000..f13461131114
--- /dev/null
+++ b/databases/php81-pdo_pgsql/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -pdo_pgsql
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-pdo_sqlite/Makefile b/databases/php81-pdo_sqlite/Makefile
new file mode 100644
index 000000000000..c18088284a0b
--- /dev/null
+++ b/databases/php81-pdo_sqlite/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -pdo_sqlite
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-pgsql/Makefile b/databases/php81-pgsql/Makefile
new file mode 100644
index 000000000000..f23a2e371612
--- /dev/null
+++ b/databases/php81-pgsql/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -pgsql
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php81-sqlite3/Makefile b/databases/php81-sqlite3/Makefile
new file mode 100644
index 000000000000..c68eab2dfba2
--- /dev/null
+++ b/databases/php81-sqlite3/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php81
+
+PKGNAMESUFFIX= -sqlite3
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/Makefile b/devel/Makefile
index 5d929ccff89a..a4f7dbab77e1 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -4037,15 +4037,25 @@
SUBDIR += php74-sysvshm
SUBDIR += php74-tokenizer
SUBDIR += php80-ffi
+ SUBDIR += php81-ffi
SUBDIR += php80-gettext
+ SUBDIR += php81-gettext
SUBDIR += php80-intl
+ SUBDIR += php81-intl
SUBDIR += php80-pcntl
+ SUBDIR += php81-pcntl
SUBDIR += php80-readline
+ SUBDIR += php81-readline
SUBDIR += php80-shmop
+ SUBDIR += php81-shmop
SUBDIR += php80-sysvmsg
+ SUBDIR += php81-sysvmsg
SUBDIR += php80-sysvsem
+ SUBDIR += php81-sysvsem
SUBDIR += php80-sysvshm
+ SUBDIR += php81-sysvshm
SUBDIR += php80-tokenizer
*** 2471 LINES SKIPPED ***