summaryrefslogtreecommitdiff
path: root/databases
diff options
context:
space:
mode:
Diffstat (limited to 'databases')
-rw-r--r--databases/Makefile22
-rw-r--r--databases/akonadi/Makefile1
-rw-r--r--databases/evolution-data-server/Makefile3
-rw-r--r--databases/freetds-devel/Makefile2
-rw-r--r--databases/freetds-devel/distinfo6
-rw-r--r--databases/freetds/Makefile2
-rw-r--r--databases/freetds/distinfo6
-rw-r--r--databases/gnats4/Makefile115
-rw-r--r--databases/gnats4/distinfo2
-rw-r--r--databases/gnats4/files/extrapatch-gnats__edit-pr.sh265
-rw-r--r--databases/gnats4/files/patch-Makefile.in11
-rw-r--r--databases/gnats4/files/patch-gnats__Makefile.in124
-rw-r--r--databases/gnats4/files/patch-gnats__dbconfig.in12
-rw-r--r--databases/gnats4/files/patch-gnats__edit-pr.sh11
-rw-r--r--databases/gnats4/files/patch-gnats__gnats.h12
-rw-r--r--databases/gnats4/files/patch-send-pr__Makefile.in11
-rw-r--r--databases/gnats4/files/patch-send-pr_install-sid.sh11
-rw-r--r--databases/gnats4/pkg-descr6
-rw-r--r--databases/gnats4/pkg-install44
-rw-r--r--databases/gnats4/pkg-message26
-rw-r--r--databases/gnats4/pkg-plist52
-rw-r--r--databases/gnatsweb4/Makefile53
-rw-r--r--databases/gnatsweb4/distinfo2
-rw-r--r--databases/gnatsweb4/pkg-descr3
-rw-r--r--databases/gnatsweb4/pkg-plist4
-rw-r--r--databases/grass8/Makefile2
-rw-r--r--databases/keydb/Makefile3
-rw-r--r--databases/libgda5-jdbc/Makefile2
-rw-r--r--databases/libgda5-ldap/Makefile2
-rw-r--r--databases/libgda5-postgresql/Makefile2
-rw-r--r--databases/libgda5-ui/Makefile2
-rw-r--r--databases/libgda5/Makefile2
-rw-r--r--databases/libgda6/Makefile1
-rw-r--r--databases/libgdamm5/Makefile2
-rw-r--r--databases/mariadb1011-server/Makefile2
-rw-r--r--databases/mariadb105-server/Makefile2
-rw-r--r--databases/mariadb106-server/Makefile2
-rw-r--r--databases/mariadb114-server/Makefile2
-rw-r--r--databases/mariadb118-server/Makefile2
-rw-r--r--databases/mydumper/Makefile2
-rw-r--r--databases/mydumper/distinfo6
-rw-r--r--databases/pgadmin3/Makefile1
-rw-r--r--databases/pgbackrest/Makefile1
-rw-r--r--databases/pgmodeler/Makefile1
-rw-r--r--databases/php85-dba/Makefile7
-rw-r--r--databases/php85-dba/files/patch-config.m425
-rw-r--r--databases/php85-mysqli/Makefile7
-rw-r--r--databases/php85-odbc/Makefile7
-rw-r--r--databases/php85-odbc/files/patch-config.m492
-rw-r--r--databases/php85-pdo/Makefile7
-rw-r--r--databases/php85-pdo/files/patch-pdo__sql__parser.c729
-rw-r--r--databases/php85-pdo_dblib/Makefile7
-rw-r--r--databases/php85-pdo_firebird/Makefile9
-rw-r--r--databases/php85-pdo_mysql/Makefile7
-rw-r--r--databases/php85-pdo_mysql/files/patch-mysql__sql__parser.c398
-rw-r--r--databases/php85-pdo_odbc/Makefile7
-rw-r--r--databases/php85-pdo_pgsql/Makefile7
-rw-r--r--databases/php85-pdo_pgsql/files/patch-pgsql__sql__parser.c528
-rw-r--r--databases/php85-pdo_sqlite/Makefile7
-rw-r--r--databases/php85-pdo_sqlite/files/patch-sqlite__sql__parser.c398
-rw-r--r--databases/php85-pgsql/Makefile7
-rw-r--r--databases/php85-sqlite3/Makefile7
-rw-r--r--databases/pointcloud/Makefile1
-rw-r--r--databases/postgis33/Makefile2
-rw-r--r--databases/postgis34/Makefile2
-rw-r--r--databases/postgis35/Makefile2
-rw-r--r--databases/postgresql13-contrib/Makefile2
-rw-r--r--databases/postgresql13-server/Makefile2
-rw-r--r--databases/postgresql14-contrib/Makefile2
-rw-r--r--databases/postgresql14-server/Makefile2
-rw-r--r--databases/postgresql15-contrib/Makefile2
-rw-r--r--databases/postgresql15-server/Makefile2
-rw-r--r--databases/postgresql16-contrib/Makefile2
-rw-r--r--databases/postgresql16-server/Makefile2
-rw-r--r--databases/postgresql17-contrib/Makefile2
-rw-r--r--databases/postgresql17-server/Makefile2
-rw-r--r--databases/proxysql/Makefile4
-rw-r--r--databases/py-fakeredis/Makefile2
-rw-r--r--databases/py-fakeredis/distinfo6
-rw-r--r--databases/py-sqlframe/Makefile4
-rw-r--r--databases/py-sqlframe/distinfo6
-rw-r--r--databases/py-sqlglot/Makefile2
-rw-r--r--databases/py-sqlglot/distinfo6
-rw-r--r--databases/py-unqlite/Makefile2
-rw-r--r--databases/py-unqlite/distinfo6
-rw-r--r--databases/qof/Makefile2
-rw-r--r--databases/recutils/Makefile4
-rw-r--r--databases/rrdtool/Makefile1
-rw-r--r--databases/rubygem-flipper-active_record/Makefile2
-rw-r--r--databases/rubygem-flipper-active_record/distinfo6
-rw-r--r--databases/rubygem-redis-client/Makefile2
-rw-r--r--databases/rubygem-redis-client/distinfo6
-rw-r--r--databases/rubygem-redis-cluster-client/Makefile2
-rw-r--r--databases/rubygem-redis-cluster-client/distinfo6
-rw-r--r--databases/rubygem-solid_cable-rails72/Makefile2
-rw-r--r--databases/rubygem-solid_cable-rails72/distinfo6
-rw-r--r--databases/rubygem-solid_cable/Makefile2
-rw-r--r--databases/rubygem-solid_cable/distinfo6
-rw-r--r--databases/spatialite-tools/Makefile2
-rw-r--r--databases/spatialite/Makefile2
-rw-r--r--databases/spatialite_gui/Makefile2
-rw-r--r--databases/sqliteodbc/Makefile1
-rw-r--r--databases/xrootd/Makefile3
-rw-r--r--databases/xtrabackup80/Makefile2
-rw-r--r--databases/xtrabackup80/files/patch-sql_binlog__ostream.cc11
-rw-r--r--databases/xtrabackup80/files/patch-sql_mdl__context__backup.cc36
-rw-r--r--databases/xtrabackup80/files/patch-sql_mdl__context__backup.h11
-rw-r--r--databases/xtrabackup80/files/patch-sql_range__optimizer_index__range__scan__plan.cc39
-rw-r--r--databases/xtrabackup80/files/patch-sql_rpl__log__encryption.cc143
-rw-r--r--databases/xtrabackup80/files/patch-sql_stream__cipher.cc11
-rw-r--r--databases/xtrabackup80/files/patch-sql_stream__cipher.h20
-rw-r--r--databases/xtrabackup80/files/patch-storage_innobase_log__log0recv.cc29
-rw-r--r--databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_src_keyring__plugins.cc11
-rw-r--r--databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_src_utils.cc59
-rw-r--r--databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_xbcloud__osenv.sh15
-rw-r--r--databases/xtrabackup80/files/patch-storage_temptable_include_temptable_lock_free_type.h17
-rw-r--r--databases/xtrabackup80/files/patch-utils.cc83
117 files changed, 2738 insertions, 972 deletions
diff --git a/databases/Makefile b/databases/Makefile
index e320701ff253..ce29492a0960 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -81,8 +81,6 @@
SUBDIR += geoserver-mysql-plugin
SUBDIR += gigabase
SUBDIR += gmdb2
- SUBDIR += gnats4
- SUBDIR += gnatsweb4
SUBDIR += go-carbon
SUBDIR += go-pgweb
SUBDIR += gobang
@@ -635,6 +633,18 @@
SUBDIR += php84-pdo_sqlite
SUBDIR += php84-pgsql
SUBDIR += php84-sqlite3
+ SUBDIR += php85-dba
+ SUBDIR += php85-mysqli
+ SUBDIR += php85-odbc
+ SUBDIR += php85-pdo
+ SUBDIR += php85-pdo_dblib
+ SUBDIR += php85-pdo_firebird
+ SUBDIR += php85-pdo_mysql
+ SUBDIR += php85-pdo_odbc
+ SUBDIR += php85-pdo_pgsql
+ SUBDIR += php85-pdo_sqlite
+ SUBDIR += php85-pgsql
+ SUBDIR += php85-sqlite3
SUBDIR += phpliteadmin
SUBDIR += phpminiadmin
SUBDIR += phpmyadmin
@@ -708,6 +718,14 @@
SUBDIR += postgresql17-plpython
SUBDIR += postgresql17-pltcl
SUBDIR += postgresql17-server
+ SUBDIR += postgresql18-client
+ SUBDIR += postgresql18-contrib
+ SUBDIR += postgresql18-docs
+ SUBDIR += postgresql18-pgtcl
+ SUBDIR += postgresql18-plperl
+ SUBDIR += postgresql18-plpython
+ SUBDIR += postgresql18-pltcl
+ SUBDIR += postgresql18-server
SUBDIR += powa-archivist
SUBDIR += powa-web
SUBDIR += powerarchitect
diff --git a/databases/akonadi/Makefile b/databases/akonadi/Makefile
index 60f5b9fb2739..8d003ecddac1 100644
--- a/databases/akonadi/Makefile
+++ b/databases/akonadi/Makefile
@@ -1,5 +1,6 @@
PORTNAME= akonadi
DISTVERSION= ${KDE_APPLICATIONS_VERSION}
+PORTREVISION= 1
CATEGORIES= databases kde kde-applications
MAINTAINER= kde@FreeBSD.org
diff --git a/databases/evolution-data-server/Makefile b/databases/evolution-data-server/Makefile
index 99d7156d2cff..c52ad0f692df 100644
--- a/databases/evolution-data-server/Makefile
+++ b/databases/evolution-data-server/Makefile
@@ -1,5 +1,6 @@
PORTNAME= evolution-data-server
DISTVERSION= 3.56.2
+PORTREVISION= 1
CATEGORIES= databases gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome
@@ -23,7 +24,7 @@ LIB_DEPENDS= libsoup-3.0.so:devel/libsoup3 \
libsecret-1.so:security/libsecret \
libcanberra-gtk3.so:audio/libcanberra-gtk3 \
libcanberra.so:audio/libcanberra \
- libuuid.so:misc/e2fsprogs-libuuid \
+ libuuid.so:misc/libuuid \
libvulkan.so:graphics/vulkan-loader \
libgraphene-1.0.so:graphics/graphene
diff --git a/databases/freetds-devel/Makefile b/databases/freetds-devel/Makefile
index 7d17251b0aa2..eb0a667029d0 100644
--- a/databases/freetds-devel/Makefile
+++ b/databases/freetds-devel/Makefile
@@ -1,5 +1,5 @@
PORTNAME= freetds
-DISTVERSION= 1.4.514
+DISTVERSION= 1.5.95
PORTEPOCH= 1
CATEGORIES= databases
MASTER_SITES= https://www.freetds.org/files/current/
diff --git a/databases/freetds-devel/distinfo b/databases/freetds-devel/distinfo
index f8649dd711fe..e9f6f241ea50 100644
--- a/databases/freetds-devel/distinfo
+++ b/databases/freetds-devel/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1748779556
-SHA256 (freetds-dev.1.4.514.tar.bz2) = 072cbbdb5431fbf0440fd9048b4eca6018c079c6e19c473227522c28c70b1602
-SIZE (freetds-dev.1.4.514.tar.bz2) = 2451574
+TIMESTAMP = 1751442770
+SHA256 (freetds-dev.1.5.95.tar.bz2) = f615e4aa226b48f755c9bef84523b05b922317ead761510168d7337a4e4b061c
+SIZE (freetds-dev.1.5.95.tar.bz2) = 2452171
diff --git a/databases/freetds/Makefile b/databases/freetds/Makefile
index f72d3a762825..3d2da413694a 100644
--- a/databases/freetds/Makefile
+++ b/databases/freetds/Makefile
@@ -1,5 +1,5 @@
PORTNAME= freetds
-DISTVERSION= 1.5.2
+DISTVERSION= 1.5.4
PORTEPOCH= 1
CATEGORIES= databases
MASTER_SITES= https://www.freetds.org/files/stable/ \
diff --git a/databases/freetds/distinfo b/databases/freetds/distinfo
index c373f55a79d9..9bcef94b2f05 100644
--- a/databases/freetds/distinfo
+++ b/databases/freetds/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1748779474
-SHA256 (freetds-1.5.2.tar.bz2) = 7100a723bef1c0866f0a12c7081b410447959c8b9cc7500196c5c5d64042c056
-SIZE (freetds-1.5.2.tar.bz2) = 2439379
+TIMESTAMP = 1751442687
+SHA256 (freetds-1.5.4.tar.bz2) = 1d024ef418d74a3a8f2cca82f10f1561f1dde28dc3d6f65c815f07764d4f7ea8
+SIZE (freetds-1.5.4.tar.bz2) = 2440514
diff --git a/databases/gnats4/Makefile b/databases/gnats4/Makefile
deleted file mode 100644
index e0bb5804ba52..000000000000
--- a/databases/gnats4/Makefile
+++ /dev/null
@@ -1,115 +0,0 @@
-PORTNAME= gnats
-PORTVERSION= 4.1.0
-PORTREVISION= 25
-CATEGORIES= databases devel
-MASTER_SITES= GNU
-PKGNAMESUFFIX= 4
-
-MAINTAINER= ports@FreeBSD.org
-COMMENT= GNATS, the GNU Problem Report Management System
-WWW= https://www.gnu.org/software/gnats/
-
-LICENSE= GPLv2
-LICENSE_FILE= ${WRKSRC}/COPYING
-
-BROKEN_mips= Does not build: error: conflicting types for yy_scan_string
-BROKEN_mips64= Does not build: error: conflicting types for yy_scan_string
-DEPRECATED= Abandoned upstream, last release in 2015 and last activity about 9 years ago
-EXPIRATION_DATE=2025-06-30
-
-USES= cpe gettext-runtime gmake
-CPE_VENDOR= gnu
-USE_GCC= yes
-
-GNU_CONFIGURE= yes
-GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
-CONFIGURE_ARGS+= --sharedstatedir=${GNATSDBDIR}
-
-.ifdef WANT_FREEFALL_CFG
-EXTRA_PATCHES+= ${PATCHDIR}/extrapatch-*
-GNATSDBDIR= ${DATADIR}
-CONFIGURE_ARGS+= --with-gnats-default-db=${GNATSDBDIR}/gnats-db
-WITH_SUBMITTER_ID= current-users
-WITH_ORGANIZATION= FreeBSD
-WITH_GNATSD_SERVICE= support
-.endif
-
-.ifdef WITH_SUBMITTER_ID
-CONFIGURE_ARGS+= --with-submitter=${WITH_SUBMITTER_ID}
-.endif
-
-.ifdef WITH_ORGANIZATION
-CONFIGURE_ARGS+= --with-organization=${WITH_ORGANIZATION:Q}
-.endif
-
-.ifdef WITH_GNATSD_SERVICE
-CONFIGURE_ARGS+= --with-gnats-service=${WITH_GNATSD_SERVICE}
-.endif
-
-USERS= gnats
-
-PKGINSTALL= ${WRKDIR}/pkg-install
-PKGMESSAGE= ${WRKDIR}/pkg-message
-INFO= gnats-faq gnats
-PLIST_SUB= GNATSDBDIR=${GNATSDBDIR}
-PORTDOCS= NEWS UPGRADING
-
-OPTIONS_DEFINE= DOCS EMACS SERVER
-OPTIONS_DEFAULT=SERVER
-OPTIONS_SUB= yes
-
-EMACS_DESC= Install Emacs Lisp support file
-SERVER_DESC= Install the gnats server too
-
-EMACS_USES= emacs
-EMACS_CONFIGURE_ON=--with-lispdir=${LOCALBASE}/${EMACS_SITE_LISPDIR}
-EMACS_PLIST_SUB_OFF= EMACS_SITE_LISPDIR="@comment "
-EMACS_VARS= EMACS_NO_DEPENDS=yes
-SERVER_ALL_TARGET_OFF= all-tools
-SERVER_INSTALL_TARGET_OFF= install-tools
-
-GNATSDBDIR?= /var/db/gnats
-
-.include <bsd.port.options.mk>
-
-pre-everything::
-.if !defined(PACKAGE_BUILDING) && !defined(WANT_FREEFALL_CFG)
- @${ECHO} "============================================================="
- @${ECHO}
- @${ECHO} "You can build ${PKGNAME} with the following options:"
- @${ECHO}
- @${ECHO} "WITH_SUBMITTER_ID=unknown default submitter-id"
- @${ECHO} "WITH_ORGANIZATION='unknown' default organization"
- @${ECHO} "WITH_GNATSD_SERVICE=support default gnatsd port name"
- @${ECHO}
- @${ECHO} "============================================================="
- @${ECHO}
-.endif
-
-post-patch:
- @${REINPLACE_CMD} -e 's|info man|man|g' ${WRKSRC}/doc/Makefile.in
-
-pre-configure:
- @${ECHO_CMD} 'RELEASE_TAG="\`uname -srm\`"' > ${WRKSRC}/release-info
-
-post-build:
- @for doc in pkg-message pkg-install; do \
- ${SED} -e 's,%%PREFIX%%,${STAGEDIR}${PREFIX},g' \
- -e 's,%%GNATSDBDIR%%,${GNATSDBDIR},g' \
- ${PKGDIR}/$${doc} >${WRKDIR}/$${doc}; \
- done
-
-pre-install:
- @${MKDIR} ${STAGEDIR}${PREFIX}/libexec/gnats
-
-post-install-SERVER-on:
- ${MV} ${STAGEDIR}${ETCDIR}/databases.default \
- ${STAGEDIR}${ETCDIR}/databases.sample
- ${MV} ${STAGEDIR}${ETCDIR}/gnatsd.host_access.default \
- ${STAGEDIR}${ETCDIR}/gnatsd.host_access.sample
-
-post-install-DOCS-on:
- @${MKDIR} ${STAGEDIR}${DOCSDIR}
- (cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${STAGEDIR}${DOCSDIR})
-
-.include <bsd.port.mk>
diff --git a/databases/gnats4/distinfo b/databases/gnats4/distinfo
deleted file mode 100644
index 6f65afdc086d..000000000000
--- a/databases/gnats4/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (gnats-4.1.0.tar.gz) = 9e7264f2d049d29e048a9d0965bf5880f9ebd55f9d3feaba72d851db01960934
-SIZE (gnats-4.1.0.tar.gz) = 1221364
diff --git a/databases/gnats4/files/extrapatch-gnats__edit-pr.sh b/databases/gnats4/files/extrapatch-gnats__edit-pr.sh
deleted file mode 100644
index f4f7c1aa8015..000000000000
--- a/databases/gnats4/files/extrapatch-gnats__edit-pr.sh
+++ /dev/null
@@ -1,265 +0,0 @@
---- gnats/edit-pr.sh.orig Sun May 26 16:32:02 2002
-+++ gnats/edit-pr.sh Sat Dec 6 02:43:44 2003
-@@ -5,6 +5,8 @@
- # Contributed by Jeffrey Osier (jeffrey@cygnus.com).
- # Majorly revised by Bob Manson (manson@juniper.net).
- # Further improvements by Dirk Bergstrom (dirk@juniper.net).
-+# Patches for the FreeBSD Project by Ceri Davies (ceri@FreeBSD.org),
-+# based on work by Paul Richards (paul@FreeBSD.org).
- #
- # This file is part of GNU GNATS.
- #
-@@ -24,9 +26,12 @@
-
- debug_print=false # or echo to get output.
- BINDIR=xBINDIRx
-+DATE=`LC_TIME=C date` # Some prstats tools rely on this format
-+GNATS_ROOT=${GNATS_ROOT:-/usr/local/share/gnats/gnats-db}; export GNATS_ROOT
- LIBEXECDIR=xLIBEXECDIRx
- GNATS_PORT=
- locked=
-+rc=0
- version=xVERSIONx
-
- usage="
-@@ -99,28 +104,23 @@
-
- *)
- if [ "`echo $1 | grep /`" != "" ]; then
-- pr_id=`echo $1 | awk -F"/" '{print $2}' -`
-+ pr=`echo $1 | awk -F"/" '{print $2}' -`
- else
-- pr_id=$1
-+ pr=$1
- fi
-+ prs="$prs $pr"
- ;;
- esac
- shift
- done
-
-+chng_tpl="${GNATS_ROOT}/gnats-adm/edit-pr-msg"
-+
- # set command here to always pass host and port, and directory if supplied
- QUERY_PR="$BINDIR/query-pr $GNATS_HOST $GNATS_PORT $GNATS_DB $EDIT_USER $EDIT_PASSWD"
- PR_ADDR="$QUERY_PR --responsible-address"
- PR_EDIT="$LIBEXECDIR/gnats/pr-edit $GNATS_HOST $GNATS_PORT $EDIT_USER $EDIT_PASSWD $GNATS_DB"
-
--# These traps take care of deleting all the /tmp files
--trap 'rm -f $new.old $change_msg $fixfil' 0
--# Don't delete $new on error signals
--trap 'if [ "$locked" != "" ]; then \
-- $PR_EDIT --unlock $pr_id ; \
-- locked= ; \
-- fi' 1 2 3 13 15
--
- # find a user name
- if [ "$USER" != "" ]; then
- me=$USER
-@@ -138,85 +138,45 @@
- full_me="$me"
- fi
-
-+for pr_id in $prs ; do
-+
-+epdir=`mktemp -d /tmp/epXXXXXX || exit 75`
-+chng_msg="$epdir/chng.$pr_id.$$"
- # new = temp file to use for editing
--new="/tmp/ep$$"
--newtmp="/tmp/ep$$.tp"
--change_msg="/tmp/ep$$.ch"
--fixfil="/tmp/ep$$.fx"
-+new="$epdir/$pr_id.ep$$"
-+change_msg="$epdir/ep$$.$pr_id.ch"
-+keepnew=
-+
-+# These traps take care of deleting all the /tmp files
-+trap 'rm -f $new.old $change_msg chng_msg; rmdir $epdir 2>/dev/null' 0
-+trap 'if [ "$locked" != "" ]; then \
-+ $PR_EDIT --unlock $pr_id ; \
-+ locked= ; \
-+ fi; \
-+ rm -f $new.old $change_msg chng_msg; rmdir $epdir 2>/dev/null' 1 2 3 13 15
-+
-
- # lock the pr
- $debug_print "Locking $pr_id."
--lock=`$PR_EDIT --lock=$full_me --process=$$ $pr_id 2>&1 > $new`
-+lock=`$PR_EDIT --lock=$me --process=$$ $pr_id 2>&1 > $new`
- locked=t
-
- if [ "$lock" != "" ] ; then
-+ echo "Failed to lock PR $pr_id"
- echo $lock
-- exit 0
-+ rc=1
-+ rm -r $epdir
-+ continue
- fi
-
--rm -f $fixfil
--
--# Now add any missing fields, along with a description.
--
--$QUERY_PR --list-fields | while read field
--do
-- grep -i "^>${field}:" "$new" > /dev/null 2>&1
-- if [ $? != 0 ]
-- then
-- $QUERY_PR --field-flags "$field" | grep -i readonly > /dev/null 2>&1
-- if [ $? != 0 ]
-- then
-- type="`$QUERY_PR --field-type $field`"
-- case $type in
-- [Ee][Nn][Uu][Mm])
-- values=`$QUERY_PR --valid-values $field | tr '\n' ' ' | sed 's/ *$//g; s/ / | /g;s/^/[ /;s/$/ ]/;`
-- valslen=`echo "$values" | wc -c`
-- if [ "$valslen" -gt 160 ]
-- then
-- desc="<`$QUERY_PR --field-description $field` (one line)>";
-- else
-- desc="<${values} (one line)>";
-- fi
-- dpat=`echo "$desc" | tr '][*+^$|\()&/' '............'`
-- echo "/^>${field}:/ s/${dpat}//" >> $fixfil
-- echo "/>${field}: ${desc}" >> $new;
-- ;;
-- [Mm][Uu][Ll][Tt][Ii][Tt][Ee][Xx][Tt])
-- desc=" <`$QUERY_PR --field-description $field` (multiple lines)>";
-- dpat=`echo "$desc" | tr '][*+^$|\()&/' '............'`
-- echo "s/^${dpat}//" >> $fixfil
-- echo ">${field}:" >> $new;
-- echo "$desc" >> $new;
-- ;;
-- *)
-- desc="<`$QUERY_PR --field-description $field` (one line)>"
-- dpat=`echo "$desc" | tr '][*+^$|\()&/' '............'`
-- echo "/^>${field}:/ s/${dpat}//" >> $fixfil
-- echo ">${field}: ${desc}" >> $new
-- ;;
-- esac
-- else
-- prevfld="$field";
-- fi
-- fi
--done
--
- # here's where we actually call the editor.
- cp $new $new.old
- $VISUAL $new
- if cmp -s $new.old $new ; then
- echo "edit-pr: PR not changed"
- $PR_EDIT --unlock $pr_id
-- exit 0
--fi
--
--if [ -f $fixfil ]
--then
-- sed -f $fixfil < $new > $newtmp
-- mv $newtmp $new
-- sed -f $fixfil < $new.old > $newtmp
-- mv $newtmp $new.old
-- rm -f $fixfil
-+ rm -r $epdir
-+ continue
- fi
-
- # error-check output by calling pr-edit --check; if mistakes exist,
-@@ -233,7 +193,7 @@
- echo "PR $pr_id not updated: changed file is in $new.changed"
- mv $new $new.changed
- $PR_EDIT --unlock $pr_id
-- exit 0
-+ continue 2
- ;;
- esac
- $VISUAL $new
-@@ -242,24 +202,37 @@
- fi
- done
-
--exec 3<&0
--
- #
- # Find out what fields have changed; if the changed field requires a
- # change reason, then ask about it.
- #
--$LIBEXECDIR/gnats/diff-prs $new.old $new | while read field
-+
-+changed_fields=`$LIBEXECDIR/gnats/diff-prs $new.old $new`
-+for field in $changed_fields
- do
- flags=`$QUERY_PR --field-flags $field` || echo "edit-pr: Invalid field name $field" 1>&2;
-
- if echo "$flags" | grep -i "requirechangereason" > /dev/null 2>&1
- then
-- echo ">${field}-Changed-Why:" >> $change_msg;
-- echo "Why did the $field field change? (Ctrl-D to end)";
-- cat 0<&3 >> $change_msg;
-+ $debug_print "Doing $field change."
-+ echo ">$field-Changed-Why: " >> $change_msg
-+ if [ -e $chng_msg ]; then
-+ echo "Re-use last message (y/n)?"
-+ read yesno
-+ if [ "$yesno" != "y" ]; then
-+ sed "s/%%ITEM%%/$field/" $chng_tpl > $chng_msg
-+ fi
-+ else
-+ sed "s/%%ITEM%%/$field/" $chng_tpl > $chng_msg
-+ fi
-+ $VISUAL $chng_msg
-+ sed '/^GNATS:/d' $chng_msg >> $change_msg
- fi
- done
-
-+echo "" >> $change_msg
-+echo "http://www.FreeBSD.org/cgi/query-pr.cgi?pr=$pr_id" >> $change_msg
-+
- if [ -f $change_msg ]
- then
- cat $change_msg >> $new
-@@ -269,12 +242,12 @@
- # Submit the changed PR.
- #
- while true; do
-- if $PR_EDIT --email-addr "$full_me" $pr_id < $new
-+ if $PR_EDIT --email-addr "$me" $pr_id < $new
- then
- echo "Edit successful"
- # we need to unlock the PR
- $PR_EDIT --unlock $pr_id
-- exit 0
-+ break
- else
- echo "Problems with edit submission."
- fi
-@@ -284,9 +257,11 @@
- case "$input" in
- a*)
- echo "Cancelling edit. Changed PR is in $new."
-- # we need to ulock the PR no matter what
-+ # we need to unlock the PR no matter what
- $PR_EDIT --unlock $pr_id
-- exit 1 ;;
-+ keepnew=y
-+ rc=1
-+ break 2 ;;
- r*)
- break ;;
- *)
-@@ -296,6 +271,13 @@
- done
- done
-
--rm -f $new
-+rm -f $chng_msg $new.old $change_msg
-+if [ "$keepnew" != "y" ]; then
-+ rm -f $new
-+ rmdir $epdir
-+fi
-+keepnew=
-+
-+done # for pr_id in $prs
-
--exit 0
-+exit $rc
diff --git a/databases/gnats4/files/patch-Makefile.in b/databases/gnats4/files/patch-Makefile.in
deleted file mode 100644
index 63e93a91e0d9..000000000000
--- a/databases/gnats4/files/patch-Makefile.in
+++ /dev/null
@@ -1,11 +0,0 @@
---- Makefile.in.orig Mon Aug 1 14:22:39 2005
-+++ Makefile.in Mon Aug 1 14:22:58 2005
-@@ -48,7 +48,7 @@
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' $@
-
- install-tools:
-- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' $@
-+ for d in $(SUBDIRS); do $(MAKE) -C $$d $@; done
-
- uninstall:
- for d in $(SUBDIRS); do $(MAKE) -C $$d $@; done
diff --git a/databases/gnats4/files/patch-gnats__Makefile.in b/databases/gnats4/files/patch-gnats__Makefile.in
deleted file mode 100644
index 2a8b6c4446fe..000000000000
--- a/databases/gnats4/files/patch-gnats__Makefile.in
+++ /dev/null
@@ -1,124 +0,0 @@
---- gnats/Makefile.in.orig 2005-02-24 20:35:55 UTC
-+++ gnats/Makefile.in
-@@ -93,7 +93,7 @@ M4 = @M4@
-
- INSTALL = $(srcdir)/../install-sh -c
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
--INSTALL_SCRIPT = @INSTALL_PROGRAM@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
- INSTALL_DATA = @INSTALL_DATA@
-
- SUB_INSTALL = `echo $(INSTALL) | sed 's,^\([^/]\),../\1,'`
-@@ -109,6 +109,7 @@ bindir = @bindir@
- libdir = @libdir@
- libexecdir = @libexecdir@
- statedir = @datadir@
-+sharedstatedir = @sharedstatedir@
- sysconfdir = @sysconfdir@
-
- program_transform_name =
-@@ -162,7 +163,7 @@ all-gnats: all-tools gnatsd queue-pr mai
- check-db delete-pr dbconfig gnats-databases gnats-pwconv $(EXTRA_STUFF)
-
- all-tools: libgnats.a query-pr pr-age pr-edit edit-pr file-pr getclose \
-- config-send-pr mail-agent dbconfig diff-prs
-+ mail-agent dbconfig diff-prs
-
- libgnats.a: $(LIBOBJS)
- -rm -f tmplibgnats.a libgnats.a
-@@ -368,15 +369,11 @@ install-tools: install-tools-arch-indep
- install-tools-arch-dep: install-tools-bin
-
- install-tools-arch-indep: all-tools
-- $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(datadir)/gnats
-+ $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(sharedstatedir)/gnats
- $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(sysconfdir)/gnats/defaults
-- @if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
-- echo "chown $(GNATS_USER) $(DESTDIR)$(datadir)/gnats" ; \
-- chown $(GNATS_USER) $(DESTDIR)$(datadir)/gnats ; \
-- else \
-- echo "*** Warning: Must chown $(GNATS_USER) $(DESTDIR)$(datadir)/gnats" ; \
-+ @if [ x"$(lispdir)" != x ]; then \
-+ $(INSTALL_DATA) $(srcdir)/gnats.el $(DESTDIR)$(lispdir)/gnats.el ; \
- fi
-- $(INSTALL_DATA) $(srcdir)/gnats.el $(DESTDIR)$(lispdir)/gnats.el
- for i in categories submitters responsible gnatsd.user_access addresses states classes dbconfig ; do \
- if [ -f "$$i" ] ; then \
- $(INSTALL_DATA) $$i $(DESTDIR)$(sysconfdir)/gnats/defaults/$$i ; \
-@@ -391,17 +388,9 @@ install-tools-bin: all-tools
- $(INSTALL_SCRIPT) edit-pr $(DESTDIR)$(bindir)/edit-pr
- $(INSTALL_SCRIPT) diff-prs $(DESTDIR)$(libexecdir)/gnats/diff-prs
- $(INSTALL_SCRIPT) mail-agent $(DESTDIR)$(libexecdir)/gnats/mail-agent
-- $(INSTALL_PROGRAM) file-pr $(DESTDIR)$(libexecdir)/gnats/file-pr
-+ $(INSTALL_SCRIPT) file-pr $(DESTDIR)$(libexecdir)/gnats/file-pr
- $(INSTALL_PROGRAM) pr-age $(DESTDIR)$(libexecdir)/gnats/pr-age
- $(INSTALL_PROGRAM) pr-edit $(DESTDIR)$(libexecdir)/gnats/pr-edit
-- @if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
-- echo "chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/pr-edit" ; \
-- echo "chmod 4555 $(DESTDIR)$(libexecdir)/gnats/pr-edit" ; \
-- chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/pr-edit ; \
-- chmod 4555 $(DESTDIR)$(libexecdir)/gnats/pr-edit ; \
-- else \
-- echo "*** Warning: Must make pr-edit suid $(DESTDIR)$(GNATS_USER)" ; \
-- fi
-
- EXTRA_INSTALL =
-
-@@ -409,33 +398,9 @@ install-gnats: install-gnats-bin install
- install-gnats-arch-dep: install-gnats-bin $(EXTRA_INSTALL)
-
- install-gnats-arch-indep: all-gnats install-tools-arch-indep
-- @if [ -f $(DESTDIR)$(GLOBAL_DB_LIST_FILE) ]; then \
-- echo "Not putting gnats-databases file in $(DESTDIR)$(GLOBAL_DB_LIST_FILE), it's already there." ; \
-- true ; \
-- else \
-- if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
-- $(INSTALL_DATA) -o $(GNATS_USER) gnats-databases \
-- $(DESTDIR)$(GLOBAL_DB_LIST_FILE) ; \
-- else \
-- $(INSTALL_DATA) gnats-databases $(DESTDIR)$(GLOBAL_DB_LIST_FILE) ; \
-- echo "*** Warning: Must chown $(GNATS_USER) $(DESTDIR)$(GLOBAL_DB_LIST_FILE)" ; \
-- fi \
-- fi
-- @if [ -f $(DESTDIR)$(GNATSD_HOST_ACCESS_FILE) ]; then \
-- echo "Not putting gnats.host_access file in $(DESTDIR)$(GNATSD_HOST_ACCESS_FILE), it's already there." ; \
-- true ; \
-- else \
-- if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
-- $(INSTALL_DATA) -o $(GNATS_USER) $(srcdir)/gnatsd.host_access \
-- $(DESTDIR)$(GNATSD_HOST_ACCESS_FILE) ; \
-- else \
-- $(INSTALL_DATA) $(srcdir)/gnatsd.host_access \
-- $(DESTDIR)$(GNATSD_HOST_ACCESS_FILE) ; \
-- echo "*** Warning: Must chown $(GNATS_USER) $(DESTDIR)$(GNATSD_HOST_ACCESS_FILE)" ; \
-- fi \
-- fi
-- @echo "*** If you're a first-time user, you'll want to create a new database";
-- @echo "*** with $(libexecdir)/gnats/mkdb."
-+ $(INSTALL_DATA) gnats-databases $(DESTDIR)$(GLOBAL_DB_LIST_FILE).default
-+ $(INSTALL_DATA) $(srcdir)/gnatsd.host_access \
-+ $(DESTDIR)$(GNATSD_HOST_ACCESS_FILE).default
-
- install-gnats-bin: all-gnats install-tools-bin
- $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(libexecdir)/gnats
-@@ -450,20 +415,6 @@ install-gnats-bin: all-gnats install-too
- $(INSTALL_PROGRAM) gen-index $(DESTDIR)$(libexecdir)/gnats/gen-index
- $(INSTALL_SCRIPT) mail-query $(DESTDIR)$(libexecdir)/gnats/mail-query
- $(INSTALL_PROGRAM) gnats-pwconv $(DESTDIR)$(libexecdir)/gnats/gnats-pwconv
-- @if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
-- echo "chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/queue-pr $(DESTDIR)$(libexecdir)/gnats/file-pr $(DESTDIR)$(libexecdir)/gnats/gen-index" ; \
-- echo "chmod 4555 $(DESTDIR)$(libexecdir)/gnats/queue-pr $(DESTDIR)$(libexecdir)/gnats/file-pr $(DESTDIR)$(libexecdir)/gnats/gen-index" ; \
-- echo "chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/gnatsd" ; \
-- echo "chmod 555 $(DESTDIR)$(libexecdir)/gnats/gnatsd" ; \
-- chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/queue-pr ; \
-- chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/gen-index ; \
-- chmod 4555 $(DESTDIR)$(libexecdir)/gnats/queue-pr ; \
-- chmod 4555 $(DESTDIR)$(libexecdir)/gnats/gen-index ; \
-- chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/gnatsd ; \
-- chmod 555 $(DESTDIR)$(libexecdir)/gnats/gnatsd ; \
-- else \
-- echo "*** Warning: must make queue-pr and gen-index suid $(GNATS_USER)." ; \
-- fi
-
- # regex.c is pretty badly broken, and I don't feel like fixing it.
- regex.o: $(srcdir)/regex.c
diff --git a/databases/gnats4/files/patch-gnats__dbconfig.in b/databases/gnats4/files/patch-gnats__dbconfig.in
deleted file mode 100644
index d0df474007e9..000000000000
--- a/databases/gnats4/files/patch-gnats__dbconfig.in
+++ /dev/null
@@ -1,12 +0,0 @@
---- ./gnats/dbconfig.in.orig 2002-10-31 21:28:52.000000000 +0100
-+++ ./gnats/dbconfig.in 2011-06-12 09:58:06.000000000 +0200
-@@ -756,7 +756,8 @@
- }
- # A somewhat convoluted binary format is used when binary-index is set
- # to true.
-- binary-index true
-+ #binary-index true
-+ binary-index false
- }
-
- # initial-entry describes which fields should be present on initial entry;
diff --git a/databases/gnats4/files/patch-gnats__edit-pr.sh b/databases/gnats4/files/patch-gnats__edit-pr.sh
deleted file mode 100644
index 935557ed8a21..000000000000
--- a/databases/gnats4/files/patch-gnats__edit-pr.sh
+++ /dev/null
@@ -1,11 +0,0 @@
---- gnats/edit-pr.sh.orig 2011-12-12 13:42:33.000000000 +0200
-+++ gnats/edit-pr.sh 2011-12-12 13:43:51.000000000 +0200
-@@ -169,7 +169,7 @@
- type="`$QUERY_PR --field-type $field`"
- case $type in
- [Ee][Nn][Uu][Mm])
-- values=`$QUERY_PR --valid-values $field | tr '\n' ' ' | sed 's/ *$//g; s/ / | /g;s/^/[ /;s/$/ ]/;`
-+ values=`$QUERY_PR --valid-values $field | tr '\n' ' ' | sed 's/ *$//g; s/ / | /g;s/^/[ /;s/$/ ]/;'`
- valslen=`echo "$values" | wc -c`
- if [ "$valslen" -gt 160 ]
- then
diff --git a/databases/gnats4/files/patch-gnats__gnats.h b/databases/gnats4/files/patch-gnats__gnats.h
deleted file mode 100644
index 0fa0fe5abe57..000000000000
--- a/databases/gnats4/files/patch-gnats__gnats.h
+++ /dev/null
@@ -1,12 +0,0 @@
---- gnats/gnats.h.orig 2013-06-10 10:33:17.000000000 +0300
-+++ gnats/gnats.h 2013-06-10 10:33:26.000000000 +0300
-@@ -137,9 +137,6 @@
- # define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
- #endif
-
--extern int asprintf (char **buf, const char *fmt, ...);
--extern int vasprintf (char **buf, const char *fmt, va_list args);
--
- #if ! HAVE_DECL_UNSETENV
- extern void unsetenv (const char *name);
- #endif
diff --git a/databases/gnats4/files/patch-send-pr__Makefile.in b/databases/gnats4/files/patch-send-pr__Makefile.in
deleted file mode 100644
index 3c9c686174e6..000000000000
--- a/databases/gnats4/files/patch-send-pr__Makefile.in
+++ /dev/null
@@ -1,11 +0,0 @@
---- send-pr/Makefile.in.orig Mon Aug 1 12:54:35 2005
-+++ send-pr/Makefile.in Mon Aug 1 12:53:52 2005
-@@ -55,7 +55,7 @@
- INSTALL = @INSTALL@
- INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_PROGRAM@
-+INSTALL_SCRIPT = @INSTALL_SCRIPT@
-
- CFLAGS = -g
- LDFLAGS = -g
diff --git a/databases/gnats4/files/patch-send-pr_install-sid.sh b/databases/gnats4/files/patch-send-pr_install-sid.sh
deleted file mode 100644
index 8a00e0c2c6a4..000000000000
--- a/databases/gnats4/files/patch-send-pr_install-sid.sh
+++ /dev/null
@@ -1,11 +0,0 @@
---- send-pr/install-sid.sh.orig 2008-07-22 12:35:01.000000000 +0300
-+++ send-pr/install-sid.sh 2008-07-22 12:35:11.000000000 +0300
-@@ -27,7 +27,7 @@
- sysconfdir="@sysconfdir@"
-
- COMMAND=`echo $0 | sed -e 's,.*/,,g'`
--function usage() {
-+usage() {
- cat << __EOF__ >&2
- Usage: $COMMAND [OPTIONS] submitter-id
-
diff --git a/databases/gnats4/pkg-descr b/databases/gnats4/pkg-descr
deleted file mode 100644
index ae86149405b3..000000000000
--- a/databases/gnats4/pkg-descr
+++ /dev/null
@@ -1,6 +0,0 @@
-GNU GNATS is a set of tools for tracking bugs reported by users to a
-central site. It allows problem report management and communication
-with users through various means, including e-mail, Web and a network
-daemon. GNATS stores all the information about problem reports in its
-databases, consisting of plain text files and it provides tools for
-querying, editing and maintaining these databases.
diff --git a/databases/gnats4/pkg-install b/databases/gnats4/pkg-install
deleted file mode 100644
index 13c707fb263c..000000000000
--- a/databases/gnats4/pkg-install
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-
-ECHO_CMD=echo
-GREP=/usr/bin/grep
-PW=/usr/sbin/pw
-
-FTPUSERS=/etc/ftpusers
-GNATSDBDIR=%%GNATSDBDIR%%
-
-case $2 in
-PRE-INSTALL)
- if [ ! -x ${PW} ]; then
- ${ECHO_CMD} "Your system is missing the \`pw' command."
- exit 1
- fi
- if ${PW} usershow -n gnats >/dev/null 2>&1; then
- if [ "`pw usershow -n gnats | awk -F: '{print $9}'`" != "${GNATSDBDIR}" ]; then
- ${PW} usermod -n gnats -d "${GNATSDBDIR}" 2>/dev/null
- ${ECHO_CMD} "===> Account \`gnats' updated."
- fi
- else
- if ${PW} useradd -n gnats -u 61 -g 1 -d "${GNATSDBDIR}" \
- -c "GNATS database owner" -h -; then
- ${GREP} -qs '^gnats$' ${FTPUSERS} || ${ECHO_CMD} gnats >> ${FTPUSERS}
- ${ECHO_CMD} "===> Account \`gnats' created."
- else
- ${ECHO_CMD}
- ${ECHO_CMD} "The FreeBSD standard userid for gnats is 61, but this system"
- ${ECHO_CMD} "has already a different account with this userid:"
- ${ECHO_CMD}
- ${PW} usershow -u 61 -P
- ${ECHO_CMD}
- ${ECHO_CMD} "You can either delete this account (which may be dangerous) with"
- ${ECHO_CMD} " ${PW} userdel -u 61"
- ${ECHO_CMD} "or add the gnats user with an other userid with"
- ${ECHO_CMD} " ${PW} useradd -n gnats -g daemon \\"
- ${ECHO_CMD} " -d ${GNATSDBDIR} -c 'GNATS database owner' -h -"
- ${ECHO_CMD} "and retry installing this package"
- ${ECHO_CMD}
- exit 1
- fi
- fi
- ;;
-esac
diff --git a/databases/gnats4/pkg-message b/databases/gnats4/pkg-message
deleted file mode 100644
index 9bbfcee283f1..000000000000
--- a/databases/gnats4/pkg-message
+++ /dev/null
@@ -1,26 +0,0 @@
-[
-{ type: install
- message: <<EOM
-GNATS has been successfully installed.
-
-If you want to run the GNATS server, enter
-
- %%PREFIX%%/libexec/gnats/mkdb default
-
-to create the default database and add
-
- support stream tcp nowait gnats %%PREFIX%%/libexec/gnats/gnatsd gnatsd
-
-to inetd.conf(5). Instructions to upgrade from a
-GNATS 3.x database are in
-
- %%PREFIX%%/share/doc/gnats/UPGRADING
-
-Try `man gnats', `info gnats' and the online manual at
-
- http://www.gnu.org/software/gnats/gnats_toc.html
-
-for more information.
-EOM
-}
-]
diff --git a/databases/gnats4/pkg-plist b/databases/gnats4/pkg-plist
deleted file mode 100644
index 2f5cb3b6325c..000000000000
--- a/databases/gnats4/pkg-plist
+++ /dev/null
@@ -1,52 +0,0 @@
-@(gnats,,4555) bin/edit-pr
-bin/getclose
-bin/install-sid
-bin/query-pr
-bin/send-pr
-%%SERVER%%@sample etc/gnats/databases.sample
-%%SERVER%%@sample etc/gnats/gnatsd.host_access.sample
-etc/gnats/defaults/addresses
-etc/gnats/defaults/categories
-etc/gnats/defaults/classes
-etc/gnats/defaults/dbconfig
-etc/gnats/defaults/gnatsd.user_access
-etc/gnats/defaults/responsible
-etc/gnats/defaults/states
-etc/gnats/defaults/submitters
-etc/gnats/send-pr.conf
-%%SERVER%%libexec/gnats/at-pr
-%%SERVER%%libexec/gnats/check-db
-%%SERVER%%libexec/gnats/delete-pr
-libexec/gnats/diff-prs
-libexec/gnats/file-pr
-@(gnats,,4555) %%SERVER%%libexec/gnats/gen-index
-@(gnats,,4555) %%SERVER%%libexec/gnats/gnatsd
-%%SERVER%%libexec/gnats/gnats-pwconv
-libexec/gnats/mail-agent
-%%SERVER%%libexec/gnats/mail-query
-%%SERVER%%libexec/gnats/mkcat
-%%SERVER%%libexec/gnats/mkdb
-libexec/gnats/pr-age
-libexec/gnats/pr-edit
-%%SERVER%%libexec/gnats/queue-pr
-%%SERVER%%libexec/gnats/rmcat
-share/man/man1/edit-pr.1.gz
-share/man/man1/query-pr.1.gz
-share/man/man1/send-pr.1.gz
-share/man/man5/databases.5.gz
-share/man/man5/dbconfig.5.gz
-share/man/man7/gnats.7.gz
-share/man/man8/delete-pr.8.gz
-share/man/man8/getclose.8.gz
-share/man/man8/file-pr.8.gz
-share/man/man8/gen-index.8.gz
-share/man/man8/gnatsd.8.gz
-share/man/man8/install-sid.8.gz
-share/man/man8/mkcat.8.gz
-share/man/man8/mkdb.8.gz
-share/man/man8/pr-edit.8.gz
-share/man/man8/queue-pr.8.gz
-share/man/man8/rmcat.8.gz
-%%EMACS_SITE_LISPDIR%%/gnats.el
-@dir(gnats,,) %%GNATSDBDIR%%/gnats
-@dir %%GNATSDBDIR%%
diff --git a/databases/gnatsweb4/Makefile b/databases/gnatsweb4/Makefile
deleted file mode 100644
index 34b183c027f8..000000000000
--- a/databases/gnatsweb4/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-PORTNAME= gnatsweb
-PORTVERSION= 4.00
-PORTREVISION= 7
-CATEGORIES= databases devel www
-MASTER_SITES= GNU
-
-MAINTAINER= ports@FreeBSD.org
-COMMENT= Gnatsweb, a GNATS web interface
-WWW= https://www.gnu.org/software/gnats/
-
-LICENSE= GPLv2+
-LICENSE_FILE= ${WRKSRC}/COPYING
-
-DEPRECATED= Abandoned upstream, last release in 2015 and no active development in the last 10 years
-EXPIRATION_DATE=2025-06-30
-
-USES= apache:run perl5 shebangfix
-SHEBANG_FILES= gnatsweb.pl
-USE_PERL5= run
-NO_BUILD= yes
-NO_ARCH= yes
-
-CGI_DIR?= ${WWWDIR}/cgi-bin
-
-PLIST_SUB= CGI_DIR="${CGI_DIR:S,^${PREFIX}/,,}"
-
-PORTDOCS= CUSTOMIZE CUSTOMIZE.cb CUSTOMIZE.vars \
- ChangeLog INSTALL NEWS README TROUBLESHOOTING
-
-PORTEXAMPLES= gnatsweb-site-example.pl
-
-OPTIONS_DEFINE= DOCS EXAMPLES
-
-do-install:
- @${MKDIR} ${STAGEDIR}${ETCDIR} ${STAGEDIR}${CGI_DIR} \
- ${STAGEDIR}${DOCSDIR} ${STAGEDIR}${EXAMPLESDIR}
- ${INSTALL_DATA} ${WRKSRC}/gnatsweb-site.pl \
- ${STAGEDIR}${ETCDIR}/gnatsweb-site.pl.sample
- ${INSTALL_SCRIPT} ${WRKSRC}/gnatsweb.pl ${STAGEDIR}${CGI_DIR}
- ${LN} -s ${ETCDIR}/gnatsweb-site.pl ${STAGEDIR}${CGI_DIR}
- ${INSTALL_DATA} ${WRKSRC}/gnatsweb.html ${STAGEDIR}${CGI_DIR}
-
-do-install-DOCS-on:
-.for doc in ${PORTDOCS}
- ${INSTALL_DATA} ${WRKSRC}/${doc} ${STAGEDIR}${DOCSDIR}
-.endfor
-
-do-install-EXAMPLES-on:
-.for example in ${PORTEXAMPLES}
- ${INSTALL_DATA} ${WRKSRC}/${example} ${STAGEDIR}${EXAMPLESDIR}
-.endfor
-
-.include <bsd.port.mk>
diff --git a/databases/gnatsweb4/distinfo b/databases/gnatsweb4/distinfo
deleted file mode 100644
index a00e9ccbb814..000000000000
--- a/databases/gnatsweb4/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (gnatsweb-4.00.tar.gz) = ee26aa8739a2e47fdebd174ef21fcd1aed3ec47775a5f2ba52aa1e7a36c8c95f
-SIZE (gnatsweb-4.00.tar.gz) = 87656
diff --git a/databases/gnatsweb4/pkg-descr b/databases/gnatsweb4/pkg-descr
deleted file mode 100644
index ade5af5334ad..000000000000
--- a/databases/gnatsweb4/pkg-descr
+++ /dev/null
@@ -1,3 +0,0 @@
-Gnatsweb is a web interface to GNATS, the GNU Problem Report
-Management System. It is a Perl CGI script which runs on your
-web server.
diff --git a/databases/gnatsweb4/pkg-plist b/databases/gnatsweb4/pkg-plist
deleted file mode 100644
index 5d99f5af7cdc..000000000000
--- a/databases/gnatsweb4/pkg-plist
+++ /dev/null
@@ -1,4 +0,0 @@
-@sample %%ETCDIR%%/gnatsweb-site.pl.sample
-%%CGI_DIR%%/gnatsweb.pl
-%%CGI_DIR%%/gnatsweb-site.pl
-%%CGI_DIR%%/gnatsweb.html
diff --git a/databases/grass8/Makefile b/databases/grass8/Makefile
index 152a89a39c59..18bf9f88e692 100644
--- a/databases/grass8/Makefile
+++ b/databases/grass8/Makefile
@@ -1,6 +1,6 @@
PORTNAME= grass
DISTVERSION= 8.4.1
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= databases geography
MASTER_SITES= https://grass.osgeo.org/%SUBDIR%/ \
http://grass.cict.fr/%SUBDIR%/ \
diff --git a/databases/keydb/Makefile b/databases/keydb/Makefile
index a638ccd58ae2..dc6d600eef55 100644
--- a/databases/keydb/Makefile
+++ b/databases/keydb/Makefile
@@ -1,6 +1,7 @@
PORTNAME= keydb
DISTVERSIONPREFIX= v
DISTVERSION= 6.3.4
+PORTREVISION= 1
CATEGORIES= databases
MAINTAINER= zi@FreeBSD.org
@@ -13,7 +14,7 @@ LICENSE_FILE= ${WRKSRC}/COPYING
BROKEN_i386= assertion failed: static_assert(sizeof(long) == sizeof(long long),"")
BROKEN_powerpc= assertion failed: static_assert(sizeof(long) == sizeof(long long),"")
-LIB_DEPENDS= libuuid.so:misc/e2fsprogs-libuuid \
+LIB_DEPENDS= libuuid.so:misc/libuuid \
liblz4.so:archivers/liblz4 \
libsnappy.so:archivers/snappy \
libzstd.so:archivers/zstd
diff --git a/databases/libgda5-jdbc/Makefile b/databases/libgda5-jdbc/Makefile
index 7c4ffcf24df0..56124434faed 100644
--- a/databases/libgda5-jdbc/Makefile
+++ b/databases/libgda5-jdbc/Makefile
@@ -1,4 +1,4 @@
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= databases gnome
PKGNAMESUFFIX= 5-jdbc
diff --git a/databases/libgda5-ldap/Makefile b/databases/libgda5-ldap/Makefile
index f7250e2c5061..3970b61f1bf5 100644
--- a/databases/libgda5-ldap/Makefile
+++ b/databases/libgda5-ldap/Makefile
@@ -1,4 +1,4 @@
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= databases gnome
PKGNAMESUFFIX= 5-ldap
diff --git a/databases/libgda5-postgresql/Makefile b/databases/libgda5-postgresql/Makefile
index e87277922bed..3355e687a4a0 100644
--- a/databases/libgda5-postgresql/Makefile
+++ b/databases/libgda5-postgresql/Makefile
@@ -1,4 +1,4 @@
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= databases gnome
PKGNAMESUFFIX= 5-postgresql
diff --git a/databases/libgda5-ui/Makefile b/databases/libgda5-ui/Makefile
index 60ea296df428..c6b4348a91dc 100644
--- a/databases/libgda5-ui/Makefile
+++ b/databases/libgda5-ui/Makefile
@@ -1,4 +1,4 @@
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= databases gnome
PKGNAMESUFFIX= 5-ui
diff --git a/databases/libgda5/Makefile b/databases/libgda5/Makefile
index d824f80236b9..d59f66c9381b 100644
--- a/databases/libgda5/Makefile
+++ b/databases/libgda5/Makefile
@@ -1,6 +1,6 @@
PORTNAME= libgda
DISTVERSION?= 5.2.10
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= databases gnome
MASTER_SITES= GNOME
PKGNAMESUFFIX?= 5
diff --git a/databases/libgda6/Makefile b/databases/libgda6/Makefile
index 81bd5911dcd6..ff8464227af3 100644
--- a/databases/libgda6/Makefile
+++ b/databases/libgda6/Makefile
@@ -1,5 +1,6 @@
PORTNAME= libgda
DISTVERSION= 6.0.1.g${SNAPDATE}
+PORTREVISION= 1
CATEGORIES= databases gnome
PKGNAMESUFFIX= 6
DIST_SUBDIR= gnome
diff --git a/databases/libgdamm5/Makefile b/databases/libgdamm5/Makefile
index f2579ce488f7..72c539df497d 100644
--- a/databases/libgdamm5/Makefile
+++ b/databases/libgdamm5/Makefile
@@ -1,6 +1,6 @@
PORTNAME= libgdamm
PORTVERSION= 4.99.11
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= databases gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome
diff --git a/databases/mariadb1011-server/Makefile b/databases/mariadb1011-server/Makefile
index cd9a634056ef..2a7b81c2d1e7 100644
--- a/databases/mariadb1011-server/Makefile
+++ b/databases/mariadb1011-server/Makefile
@@ -1,6 +1,6 @@
PORTNAME?= mariadb
PORTVERSION= 10.11.13
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES= databases
MASTER_SITES= https://mirror.nodesdirect.com/${SITESDIR}/ \
https://mirror.one.com/${SITESDIR}/ \
diff --git a/databases/mariadb105-server/Makefile b/databases/mariadb105-server/Makefile
index 93c3741194fb..8a845f4f8d0d 100644
--- a/databases/mariadb105-server/Makefile
+++ b/databases/mariadb105-server/Makefile
@@ -1,6 +1,6 @@
PORTNAME?= mariadb
PORTVERSION= 10.5.29
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES= databases
MASTER_SITES= \
https://mirror.nodesdirect.com/${SITESDIR}/ \
diff --git a/databases/mariadb106-server/Makefile b/databases/mariadb106-server/Makefile
index 55209c823032..b8a509d8421a 100644
--- a/databases/mariadb106-server/Makefile
+++ b/databases/mariadb106-server/Makefile
@@ -1,6 +1,6 @@
PORTNAME?= mariadb
PORTVERSION= 10.6.22
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES= databases
MASTER_SITES= https://mirror.nodesdirect.com/${SITESDIR}/ \
https://mirror.one.com/${SITESDIR}/ \
diff --git a/databases/mariadb114-server/Makefile b/databases/mariadb114-server/Makefile
index 5e58466692c5..b55d9d26bf1a 100644
--- a/databases/mariadb114-server/Makefile
+++ b/databases/mariadb114-server/Makefile
@@ -1,6 +1,6 @@
PORTNAME?= mariadb
PORTVERSION= 11.4.7
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES= databases
MASTER_SITES= https://mirror.nodesdirect.com/${SITESDIR}/ \
https://mirror.one.com/${SITESDIR}/ \
diff --git a/databases/mariadb118-server/Makefile b/databases/mariadb118-server/Makefile
index 5f56cd090ed2..3ee447a4114b 100644
--- a/databases/mariadb118-server/Makefile
+++ b/databases/mariadb118-server/Makefile
@@ -1,6 +1,6 @@
PORTNAME?= mariadb
PORTVERSION= 11.8.2
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES= databases
MASTER_SITES= https://mirror.nodesdirect.com/${SITESDIR}/ \
https://mirror.one.com/${SITESDIR}/ \
diff --git a/databases/mydumper/Makefile b/databases/mydumper/Makefile
index 77a9a85d2dce..aa39a3a3a86f 100644
--- a/databases/mydumper/Makefile
+++ b/databases/mydumper/Makefile
@@ -1,6 +1,6 @@
PORTNAME= mydumper
DISTVERSIONPREFIX= v
-DISTVERSION= 0.19.3-1
+DISTVERSION= 0.19.4-2
CATEGORIES= databases
MAINTAINER= sunpoet@FreeBSD.org
diff --git a/databases/mydumper/distinfo b/databases/mydumper/distinfo
index 3d7748e4880c..8fc2984f3763 100644
--- a/databases/mydumper/distinfo
+++ b/databases/mydumper/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750188002
-SHA256 (mydumper-mydumper-v0.19.3-1_GH0.tar.gz) = e78c2b02b33d5d1092c4782e4841bbba5c0531b024b63038524a3ab25606e2fa
-SIZE (mydumper-mydumper-v0.19.3-1_GH0.tar.gz) = 842877
+TIMESTAMP = 1751208120
+SHA256 (mydumper-mydumper-v0.19.4-2_GH0.tar.gz) = b5213e44a755127196a40916484e37d18dfbe304aaac50ec17f9f6aba8d0968e
+SIZE (mydumper-mydumper-v0.19.4-2_GH0.tar.gz) = 843293
diff --git a/databases/pgadmin3/Makefile b/databases/pgadmin3/Makefile
index 38f6b6177f11..db605f28de27 100644
--- a/databases/pgadmin3/Makefile
+++ b/databases/pgadmin3/Makefile
@@ -1,5 +1,6 @@
PORTNAME= pgadmin3
DISTVERSION= 1.23.0.20230324
+PORTREVISION= 1
CATEGORIES= databases
MAINTAINER= vvd@FreeBSD.org
diff --git a/databases/pgbackrest/Makefile b/databases/pgbackrest/Makefile
index 1a8feab6df19..9c2c3bbbfbcd 100644
--- a/databases/pgbackrest/Makefile
+++ b/databases/pgbackrest/Makefile
@@ -1,6 +1,7 @@
PORTNAME= pgbackrest
DISTVERSIONPREFIX= release/
DISTVERSION= 2.55.1
+PORTREVISION= 1
CATEGORIES= databases
MAINTAINER= schoutm@gmail.com
diff --git a/databases/pgmodeler/Makefile b/databases/pgmodeler/Makefile
index ada30cfa48d3..240d7c91adf0 100644
--- a/databases/pgmodeler/Makefile
+++ b/databases/pgmodeler/Makefile
@@ -1,5 +1,6 @@
PORTNAME= pgmodeler
PORTVERSION= 1.1.6
+PORTREVISION= 1
DISTVERSIONPREFIX= v
CATEGORIES= databases
diff --git a/databases/php85-dba/Makefile b/databases/php85-dba/Makefile
new file mode 100644
index 000000000000..764ffd7c7936
--- /dev/null
+++ b/databases/php85-dba/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -dba
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-dba/files/patch-config.m4 b/databases/php85-dba/files/patch-config.m4
new file mode 100644
index 000000000000..7449b1a88029
--- /dev/null
+++ b/databases/php85-dba/files/patch-config.m4
@@ -0,0 +1,25 @@
+--- config.m4.orig 2024-09-10 16:10:06 UTC
++++ config.m4
+@@ -433,6 +433,14 @@ 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/db18/db.h"; then
++ THIS_PREFIX=$i
++ THIS_INCLUDE=$i/include/db18/db.h
++ break
+ elif test -f "$i/include/db5.1/db.h"; then
+ THIS_PREFIX=$i
+ THIS_INCLUDE=$i/include/db5.1/db.h
+@@ -480,6 +488,7 @@ if test "$PHP_DB4" != "no"; then
+ db-5.3
+ db-5.1
+ db-5.0
++ db-5
+ db-4.8
+ db-4.7
+ db-4.6
diff --git a/databases/php85-mysqli/Makefile b/databases/php85-mysqli/Makefile
new file mode 100644
index 000000000000..77bd1f7f8a5d
--- /dev/null
+++ b/databases/php85-mysqli/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -mysqli
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-odbc/Makefile b/databases/php85-odbc/Makefile
new file mode 100644
index 000000000000..415b461599c9
--- /dev/null
+++ b/databases/php85-odbc/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -odbc
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-odbc/files/patch-config.m4 b/databases/php85-odbc/files/patch-config.m4
new file mode 100644
index 000000000000..55e3fb3aea0c
--- /dev/null
+++ b/databases/php85-odbc/files/patch-config.m4
@@ -0,0 +1,92 @@
+--- config.m4.orig 2024-09-10 16:10:06 UTC
++++ config.m4
+@@ -117,7 +117,7 @@ PHP_ARG_WITH([adabas],
+ PHP_ARG_WITH([adabas],
+ [for Adabas support],
+ [AS_HELP_STRING([[--with-adabas[=DIR]]],
+- [Include Adabas D support [/usr/local]])])
++ [Include Adabas D support [/usr/local]])], [no], [no])
+
+ AS_VAR_IF([PHP_ADABAS], [no], [], [
+ AS_VAR_IF([PHP_ADABAS], [yes], [PHP_ADABAS=/usr/local])
+@@ -143,7 +143,7 @@ PHP_ARG_WITH([sapdb],
+ PHP_ARG_WITH([sapdb],
+ [for SAP DB support],
+ [AS_HELP_STRING([[--with-sapdb[=DIR]]],
+- [Include SAP DB support [/usr/local]])])
++ [Include SAP DB support [/usr/local]])], [no], [no])
+
+ AS_VAR_IF([PHP_SAPDB], [no], [], [
+ AS_VAR_IF([PHP_SAPDB], [yes], [PHP_SAPDB=/usr/local])
+@@ -160,7 +160,7 @@ PHP_ARG_WITH([solid],
+ PHP_ARG_WITH([solid],
+ [for Solid support],
+ [AS_HELP_STRING([[--with-solid[=DIR]]],
+- [Include Solid support [/usr/local/solid]])])
++ [Include Solid support [/usr/local/solid]])], [no], [no])
+
+ AS_VAR_IF([PHP_SOLID], [no], [], [
+ AS_VAR_IF([PHP_SOLID], [yes], [PHP_SOLID=/usr/local/solid])
+@@ -184,7 +184,7 @@ PHP_ARG_WITH([ibm-db2],
+ PHP_ARG_WITH([ibm-db2],
+ [for IBM DB2 support],
+ [AS_HELP_STRING([[--with-ibm-db2[=DIR]]],
+- [Include IBM DB2 support [/home/db2inst1/sqllib]])])
++ [Include IBM DB2 support [/home/db2inst1/sqllib]])], [no], [no])
+
+ AS_VAR_IF([PHP_IBM_DB2], [no], [], [
+ AS_VAR_IF([PHP_IBM_DB2], [yes], [
+@@ -222,7 +222,7 @@ PHP_ARG_WITH([empress],
+ [for Empress support],
+ [AS_HELP_STRING([[--with-empress[=DIR]]],
+ [Include Empress support $EMPRESSPATH (Empress Version >= 8.60
+- required)])])
++ required)])], [no], [no])
+
+ AS_VAR_IF([PHP_EMPRESS], [no], [], [
+ AS_VAR_IF([PHP_EMPRESS], [yes], [
+@@ -246,7 +246,7 @@ PHP_ARG_WITH([empress-bcs],
+ [for Empress local access support],
+ [AS_HELP_STRING([[--with-empress-bcs[=DIR]]],
+ [Include Empress Local Access support $EMPRESSPATH (Empress Version >=
+- 8.60 required)])])
++ 8.60 required)])], [no], [no])
+
+ AS_VAR_IF([PHP_EMPRESS_BCS], [no], [], [
+ AS_VAR_IF([PHP_EMPRESS_BCS], [yes], [
+@@ -290,7 +290,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])
+
+ AS_VAR_IF([PHP_CUSTOM_ODBC], [no], [], [
+ AS_VAR_IF([PHP_CUSTOM_ODBC], [yes], [PHP_CUSTOM_ODBC=/usr/local])
+@@ -309,7 +309,7 @@ PHP_ARG_WITH([iodbc],
+ PHP_ARG_WITH([iodbc],
+ [whether to build with iODBC support],
+ [AS_HELP_STRING([--with-iodbc],
+- [Include iODBC support])])
++ [Include iODBC support])], [no], [no])
+
+ AS_VAR_IF([PHP_IODBC], [no], [], [
+ PKG_CHECK_MODULES([ODBC], [libiodbc])
+@@ -324,7 +324,7 @@ PHP_ARG_WITH([esoob],
+ PHP_ARG_WITH([esoob],
+ [for Easysoft ODBC-ODBC Bridge support],
+ [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])
+
+ AS_VAR_IF([PHP_ESOOB], [no], [], [
+ AS_VAR_IF([PHP_ESOOB], [yes], [PHP_ESOOB=/usr/local/easysoft/oob/client])
+@@ -371,7 +371,7 @@ PHP_ARG_WITH([dbmaker],
+ PHP_ARG_WITH([dbmaker],
+ [for DBMaker support],
+ [AS_HELP_STRING([[--with-dbmaker[=DIR]]],
+- [Include DBMaker support])])
++ [Include DBMaker support])], [no], [no])
+
+ AS_VAR_IF([PHP_DBMAKER], [no], [], [
+ AS_VAR_IF([PHP_DBMAKER], [yes], [
diff --git a/databases/php85-pdo/Makefile b/databases/php85-pdo/Makefile
new file mode 100644
index 000000000000..82a9d79b6e9d
--- /dev/null
+++ b/databases/php85-pdo/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -pdo
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-pdo/files/patch-pdo__sql__parser.c b/databases/php85-pdo/files/patch-pdo__sql__parser.c
new file mode 100644
index 000000000000..191eea16a3bd
--- /dev/null
+++ b/databases/php85-pdo/files/patch-pdo__sql__parser.c
@@ -0,0 +1,729 @@
+--- pdo_sql_parser.c.orig 2025-07-02 12:59:51 UTC
++++ pdo_sql_parser.c
+@@ -0,0 +1,726 @@
++/* Generated by re2c 3.1 */
++/*
++ +----------------------------------------------------------------------+
++ | Copyright (c) The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.01 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | https://www.php.net/license/3_01.txt |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Author: George Schlossnagle <george@omniti.com> |
++ +----------------------------------------------------------------------+
++*/
++
++#include "php.h"
++#include "php_pdo_driver.h"
++#include "pdo_sql_parser.h"
++
++static int default_scanner(pdo_scanner_t *s)
++{
++ const char *cursor = s->cur;
++
++ s->tok = cursor;
++
++
++
++{
++ YYCTYPE yych;
++ unsigned int yyaccept = 0;
++ if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy4;
++ case '\'': goto yy6;
++ case '-': goto yy7;
++ case '/': goto yy8;
++ case ':': goto yy9;
++ case '?': goto yy10;
++ default: goto yy2;
++ }
++yy1:
++ YYCURSOR = YYMARKER;
++ switch (yyaccept) {
++ case 0: goto yy5;
++ case 1: goto yy15;
++ default: goto yy19;
++ }
++yy2:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00:
++ case '"':
++ case '\'':
++ case '-':
++ case '/':
++ case ':':
++ case '?': goto yy3;
++ default: goto yy2;
++ }
++yy3:
++ { RET(PDO_PARSER_TEXT); }
++yy4:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych >= 0x01) goto yy13;
++yy5:
++ { SKIP_ONE(PDO_PARSER_TEXT); }
++yy6:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x00) goto yy5;
++ goto yy17;
++yy7:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '-': goto yy20;
++ default: goto yy5;
++ }
++yy8:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '*': goto yy22;
++ default: goto yy5;
++ }
++yy9:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy23;
++ case ':': goto yy25;
++ default: goto yy5;
++ }
++yy10:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '?': goto yy27;
++ default: goto yy11;
++ }
++yy11:
++ { RET(PDO_PARSER_BIND_POS); }
++yy12:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy13:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy14;
++ default: goto yy12;
++ }
++yy14:
++ yyaccept = 1;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '"': goto yy12;
++ default: goto yy15;
++ }
++yy15:
++ { RET(PDO_PARSER_TEXT); }
++yy16:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy17:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '\'': goto yy18;
++ default: goto yy16;
++ }
++yy18:
++ yyaccept = 2;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\'': goto yy16;
++ default: goto yy19;
++ }
++yy19:
++ { RET(PDO_PARSER_TEXT); }
++yy20:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy21;
++ default: goto yy20;
++ }
++yy21:
++ { RET(PDO_PARSER_TEXT); }
++yy22:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '*': goto yy28;
++ default: goto yy22;
++ }
++yy23:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy23;
++ default: goto yy24;
++ }
++yy24:
++ { RET(PDO_PARSER_BIND); }
++yy25:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case ':': goto yy25;
++ default: goto yy26;
++ }
++yy26:
++ { RET(PDO_PARSER_TEXT); }
++yy27:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '?': goto yy27;
++ default: goto yy26;
++ }
++yy28:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '*': goto yy28;
++ case '/': goto yy29;
++ default: goto yy22;
++ }
++yy29:
++ ++YYCURSOR;
++ goto yy21;
++}
++
++}
++
++struct placeholder {
++ const char *pos;
++ size_t len;
++ zend_string *quoted; /* quoted value */
++ int bindno;
++ struct placeholder *next;
++};
++
++struct custom_quote {
++ const char *pos;
++ size_t len;
++};
++
++static void free_param_name(zval *el) {
++ zend_string_release(Z_PTR_P(el));
++}
++
++PDO_API int pdo_parse_params(pdo_stmt_t *stmt, zend_string *inquery, zend_string **outquery)
++{
++ pdo_scanner_t s;
++ char *newbuffer;
++ ptrdiff_t t;
++ uint32_t bindno = 0;
++ int ret = 0, escapes = 0;
++ size_t newbuffer_len;
++ HashTable *params;
++ struct pdo_bound_param_data *param;
++ int query_type = PDO_PLACEHOLDER_NONE;
++ struct placeholder *placeholders = NULL, *placetail = NULL, *plc = NULL;
++ int (*scan)(pdo_scanner_t *s);
++ struct custom_quote custom_quote = {NULL, 0};
++
++ scan = stmt->dbh->methods->scanner ? stmt->dbh->methods->scanner : default_scanner;
++
++ s.cur = ZSTR_VAL(inquery);
++ s.end = s.cur + ZSTR_LEN(inquery) + 1;
++
++ /* phase 1: look for args */
++ while((t = scan(&s)) != PDO_PARSER_EOI) {
++ if (custom_quote.pos) {
++ /* Inside a custom quote */
++ if (t == PDO_PARSER_CUSTOM_QUOTE && custom_quote.len == s.cur - s.tok && !strncmp(s.tok, custom_quote.pos, custom_quote.len)) {
++ /* Matching closing quote found, end custom quoting */
++ custom_quote.pos = NULL;
++ custom_quote.len = 0;
++ } else if (t == PDO_PARSER_ESCAPED_QUESTION) {
++ /* An escaped question mark has been used inside a dollar quoted string, most likely as a workaround
++ * as a single "?" would have been parsed as placeholder, due to the lack of support for dollar quoted
++ * strings. For now, we emit a deprecation notice, but still process it */
++ php_error_docref(NULL, E_DEPRECATED, "Escaping question marks inside dollar quoted strings is not required anymore and is deprecated");
++
++ goto placeholder;
++ }
++
++ continue;
++ }
++
++ if (t == PDO_PARSER_CUSTOM_QUOTE) {
++ /* Start of a custom quote, keep a reference to search for the matching closing quote */
++ custom_quote.pos = s.tok;
++ custom_quote.len = s.cur - s.tok;
++
++ continue;
++ }
++
++ if (t == PDO_PARSER_BIND || t == PDO_PARSER_BIND_POS || t == PDO_PARSER_ESCAPED_QUESTION) {
++ if (t == PDO_PARSER_ESCAPED_QUESTION && stmt->supports_placeholders == PDO_PLACEHOLDER_POSITIONAL) {
++ /* escaped question marks unsupported, treat as text */
++ continue;
++ }
++
++ if (t == PDO_PARSER_BIND) {
++ ptrdiff_t len = s.cur - s.tok;
++ if ((ZSTR_VAL(inquery) < (s.cur - len)) && isalnum(*(s.cur - len - 1))) {
++ continue;
++ }
++ query_type |= PDO_PLACEHOLDER_NAMED;
++ } else if (t == PDO_PARSER_BIND_POS) {
++ query_type |= PDO_PLACEHOLDER_POSITIONAL;
++ }
++
++placeholder:
++ plc = emalloc(sizeof(*plc));
++ memset(plc, 0, sizeof(*plc));
++ plc->next = NULL;
++ plc->pos = s.tok;
++ plc->len = s.cur - s.tok;
++
++ if (t == PDO_PARSER_ESCAPED_QUESTION) {
++ plc->bindno = PDO_PARSER_BINDNO_ESCAPED_CHAR;
++ plc->quoted = ZSTR_CHAR('?');
++ escapes++;
++ } else {
++ plc->bindno = bindno++;
++ }
++
++ if (placetail) {
++ placetail->next = plc;
++ } else {
++ placeholders = plc;
++ }
++ placetail = plc;
++ }
++ }
++
++ /* did the query make sense to me? */
++ if (query_type == (PDO_PLACEHOLDER_NAMED|PDO_PLACEHOLDER_POSITIONAL)) {
++ /* they mixed both types; punt */
++ pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "mixed named and positional parameters");
++ ret = -1;
++ goto clean_up;
++ }
++
++ params = stmt->bound_params;
++ if (stmt->supports_placeholders == PDO_PLACEHOLDER_NONE && params && bindno != zend_hash_num_elements(params)) {
++ /* extra bit of validation for instances when same params are bound more than once */
++ if (query_type != PDO_PLACEHOLDER_POSITIONAL && bindno > zend_hash_num_elements(params)) {
++ int ok = 1;
++ for (plc = placeholders; plc; plc = plc->next) {
++ if ((param = zend_hash_str_find_ptr(params, plc->pos, plc->len)) == NULL) {
++ ok = 0;
++ break;
++ }
++ }
++ if (ok) {
++ goto safe;
++ }
++ }
++ pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "number of bound variables does not match number of tokens");
++ ret = -1;
++ goto clean_up;
++ }
++
++ if (!placeholders) {
++ /* nothing to do; good! */
++ return 0;
++ }
++
++ if (stmt->supports_placeholders == query_type && !stmt->named_rewrite_template) {
++ /* query matches native syntax */
++ if (escapes) {
++ newbuffer_len = ZSTR_LEN(inquery);
++ goto rewrite;
++ }
++
++ ret = 0;
++ goto clean_up;
++ }
++
++ if (query_type == PDO_PLACEHOLDER_NAMED && stmt->named_rewrite_template) {
++ /* magic/hack.
++ * We we pretend that the query was positional even if
++ * it was named so that we fall into the
++ * named rewrite case below. Not too pretty,
++ * but it works. */
++ query_type = PDO_PLACEHOLDER_POSITIONAL;
++ }
++
++safe:
++ /* what are we going to do ? */
++ if (stmt->supports_placeholders == PDO_PLACEHOLDER_NONE) {
++ /* query generation */
++
++ newbuffer_len = ZSTR_LEN(inquery);
++
++ /* let's quote all the values */
++ for (plc = placeholders; plc && params; plc = plc->next) {
++ if (plc->bindno == PDO_PARSER_BINDNO_ESCAPED_CHAR) {
++ /* escaped character */
++ continue;
++ }
++
++ if (query_type == PDO_PLACEHOLDER_NONE) {
++ continue;
++ }
++
++ if (query_type == PDO_PLACEHOLDER_POSITIONAL) {
++ param = zend_hash_index_find_ptr(params, plc->bindno);
++ } else {
++ param = zend_hash_str_find_ptr(params, plc->pos, plc->len);
++ }
++ if (param == NULL) {
++ /* parameter was not defined */
++ ret = -1;
++ pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "parameter was not defined");
++ goto clean_up;
++ }
++ if (stmt->dbh->methods->quoter) {
++ zval *parameter;
++ if (Z_ISREF(param->parameter)) {
++ parameter = Z_REFVAL(param->parameter);
++ } else {
++ parameter = &param->parameter;
++ }
++ if (param->param_type == PDO_PARAM_LOB && Z_TYPE_P(parameter) == IS_RESOURCE) {
++ php_stream *stm;
++
++ php_stream_from_zval_no_verify(stm, parameter);
++ if (stm) {
++ zend_string *buf;
++
++ buf = php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0);
++ if (!buf) {
++ buf = ZSTR_EMPTY_ALLOC();
++ }
++
++ plc->quoted = stmt->dbh->methods->quoter(stmt->dbh, buf, param->param_type);
++
++ if (buf) {
++ zend_string_release_ex(buf, 0);
++ }
++ if (plc->quoted == NULL) {
++ /* bork */
++ ret = -1;
++ strncpy(stmt->error_code, stmt->dbh->error_code, 6);
++ goto clean_up;
++ }
++
++ } else {
++ pdo_raise_impl_error(stmt->dbh, stmt, "HY105", "Expected a stream resource");
++ ret = -1;
++ goto clean_up;
++ }
++ } else {
++ enum pdo_param_type param_type = param->param_type;
++ zend_string *buf = NULL;
++
++ /* assume all types are nullable */
++ if (Z_TYPE_P(parameter) == IS_NULL) {
++ param_type = PDO_PARAM_NULL;
++ }
++
++ switch (param_type) {
++ case PDO_PARAM_BOOL:
++ plc->quoted = zend_is_true(parameter) ? ZSTR_CHAR('1') : ZSTR_CHAR('0');
++ break;
++
++ case PDO_PARAM_INT:
++ plc->quoted = zend_long_to_str(zval_get_long(parameter));
++ break;
++
++ case PDO_PARAM_NULL:
++ plc->quoted = ZSTR_KNOWN(ZEND_STR_NULL);
++ break;
++
++ default: {
++ buf = zval_try_get_string(parameter);
++ /* parameter does not have a string representation, buf == NULL */
++ if (EG(exception)) {
++ /* bork */
++ ret = -1;
++ strncpy(stmt->error_code, stmt->dbh->error_code, 6);
++ goto clean_up;
++ }
++
++ plc->quoted = stmt->dbh->methods->quoter(stmt->dbh, buf, param_type);
++ }
++ }
++
++ if (buf) {
++ zend_string_release_ex(buf, 0);
++ }
++ }
++ } else {
++ zval *parameter;
++ if (Z_ISREF(param->parameter)) {
++ parameter = Z_REFVAL(param->parameter);
++ } else {
++ parameter = &param->parameter;
++ }
++ plc->quoted = zend_string_copy(Z_STR_P(parameter));
++ }
++ newbuffer_len += ZSTR_LEN(plc->quoted);
++ }
++
++rewrite:
++ /* allocate output buffer */
++ *outquery = zend_string_alloc(newbuffer_len, 0);
++ newbuffer = ZSTR_VAL(*outquery);
++
++ /* and build the query */
++ const char *ptr = ZSTR_VAL(inquery);
++ plc = placeholders;
++
++ do {
++ t = plc->pos - ptr;
++ if (t) {
++ memcpy(newbuffer, ptr, t);
++ newbuffer += t;
++ }
++ if (plc->quoted) {
++ memcpy(newbuffer, ZSTR_VAL(plc->quoted), ZSTR_LEN(plc->quoted));
++ newbuffer += ZSTR_LEN(plc->quoted);
++ } else {
++ memcpy(newbuffer, plc->pos, plc->len);
++ newbuffer += plc->len;
++ }
++ ptr = plc->pos + plc->len;
++
++ plc = plc->next;
++ } while (plc);
++
++ t = ZSTR_VAL(inquery) + ZSTR_LEN(inquery) - ptr;
++ if (t) {
++ memcpy(newbuffer, ptr, t);
++ newbuffer += t;
++ }
++ *newbuffer = '\0';
++ ZSTR_LEN(*outquery) = newbuffer - ZSTR_VAL(*outquery);
++
++ ret = 1;
++ goto clean_up;
++
++ } else if (query_type == PDO_PLACEHOLDER_POSITIONAL) {
++ /* rewrite ? to :pdoX */
++ const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d";
++ int bind_no = 1;
++
++ newbuffer_len = ZSTR_LEN(inquery);
++
++ if (stmt->bound_param_map == NULL) {
++ ALLOC_HASHTABLE(stmt->bound_param_map);
++ zend_hash_init(stmt->bound_param_map, 13, NULL, free_param_name, 0);
++ }
++
++ for (plc = placeholders; plc; plc = plc->next) {
++ int skip_map = 0;
++ zend_string *p;
++ zend_string *idxbuf;
++
++ if (plc->bindno == PDO_PARSER_BINDNO_ESCAPED_CHAR) {
++ continue;
++ }
++
++ zend_string *name = zend_string_init(plc->pos, plc->len, 0);
++
++ /* check if bound parameter is already available */
++ if (zend_string_equals_literal(name, "?") || (p = zend_hash_find_ptr(stmt->bound_param_map, name)) == NULL) {
++ idxbuf = zend_strpprintf(0, tmpl, bind_no++);
++ } else {
++ idxbuf = zend_string_copy(p);
++ skip_map = 1;
++ }
++
++ plc->quoted = idxbuf;
++ newbuffer_len += ZSTR_LEN(plc->quoted);
++
++ if (!skip_map && stmt->named_rewrite_template) {
++ /* create a mapping */
++ zend_hash_update_ptr(stmt->bound_param_map, name, zend_string_copy(plc->quoted));
++ }
++
++ /* map number to name */
++ zend_hash_index_update_ptr(stmt->bound_param_map, plc->bindno, zend_string_copy(plc->quoted));
++
++ zend_string_release(name);
++ }
++
++ goto rewrite;
++
++ } else {
++ /* rewrite :name to ? */
++
++ newbuffer_len = ZSTR_LEN(inquery);
++
++ if (stmt->bound_param_map == NULL) {
++ ALLOC_HASHTABLE(stmt->bound_param_map);
++ zend_hash_init(stmt->bound_param_map, 13, NULL, free_param_name, 0);
++ }
++
++ for (plc = placeholders; plc; plc = plc->next) {
++ zend_string *name = zend_string_init(plc->pos, plc->len, 0);
++ zend_hash_index_update_ptr(stmt->bound_param_map, plc->bindno, name);
++ plc->quoted = ZSTR_CHAR('?');
++ newbuffer_len -= plc->len - 1;
++ }
++
++ goto rewrite;
++ }
++
++clean_up:
++
++ while (placeholders) {
++ plc = placeholders;
++ placeholders = plc->next;
++ if (plc->quoted) {
++ zend_string_release_ex(plc->quoted, 0);
++ }
++ efree(plc);
++ }
++
++ return ret;
++}
diff --git a/databases/php85-pdo_dblib/Makefile b/databases/php85-pdo_dblib/Makefile
new file mode 100644
index 000000000000..1861a409bc3c
--- /dev/null
+++ b/databases/php85-pdo_dblib/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -pdo_dblib
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-pdo_firebird/Makefile b/databases/php85-pdo_firebird/Makefile
new file mode 100644
index 000000000000..2f22894505f4
--- /dev/null
+++ b/databases/php85-pdo_firebird/Makefile
@@ -0,0 +1,9 @@
+CATEGORIES= databases
+
+PORTREVISION= 0
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -pdo_firebird
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-pdo_mysql/Makefile b/databases/php85-pdo_mysql/Makefile
new file mode 100644
index 000000000000..c61de9bbc13d
--- /dev/null
+++ b/databases/php85-pdo_mysql/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -pdo_mysql
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-pdo_mysql/files/patch-mysql__sql__parser.c b/databases/php85-pdo_mysql/files/patch-mysql__sql__parser.c
new file mode 100644
index 000000000000..9a6c3b11bb6e
--- /dev/null
+++ b/databases/php85-pdo_mysql/files/patch-mysql__sql__parser.c
@@ -0,0 +1,398 @@
+--- mysql_sql_parser.c.orig 2025-07-02 13:18:02 UTC
++++ mysql_sql_parser.c
+@@ -0,0 +1,395 @@
++/* Generated by re2c 3.1 */
++/*
++ +----------------------------------------------------------------------+
++ | Copyright (c) The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.01 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | https://www.php.net/license/3_01.txt |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Author: Matteo Beccati <mbeccati@php.net> |
++ +----------------------------------------------------------------------+
++*/
++
++
++#include "php.h"
++#include "ext/pdo/php_pdo_driver.h"
++#include "ext/pdo/pdo_sql_parser.h"
++
++int pdo_mysql_scanner(pdo_scanner_t *s)
++{
++ const char *cursor = s->cur;
++
++ s->tok = cursor;
++
++
++
++{
++ YYCTYPE yych;
++ unsigned int yyaccept = 0;
++ if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy4;
++ case '#': goto yy6;
++ case '\'': goto yy7;
++ case '-': goto yy8;
++ case '/': goto yy9;
++ case ':': goto yy10;
++ case '?': goto yy11;
++ case '`': goto yy13;
++ default: goto yy2;
++ }
++yy1:
++ YYCURSOR = YYMARKER;
++ switch (yyaccept) {
++ case 0: goto yy5;
++ case 1: goto yy17;
++ case 2: goto yy24;
++ default: goto yy36;
++ }
++yy2:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00:
++ case '"':
++ case '#':
++ case '\'':
++ case '-':
++ case '/':
++ case ':':
++ case '?':
++ case '`': goto yy3;
++ default: goto yy2;
++ }
++yy3:
++ { RET(PDO_PARSER_TEXT); }
++yy4:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych >= 0x01) goto yy15;
++yy5:
++ { SKIP_ONE(PDO_PARSER_TEXT); }
++yy6:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy5;
++ default: goto yy19;
++ }
++yy7:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x00) goto yy5;
++ goto yy22;
++yy8:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ switch (yych) {
++ case '-': goto yy26;
++ default: goto yy5;
++ }
++yy9:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '*': goto yy27;
++ default: goto yy5;
++ }
++yy10:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy28;
++ case ':': goto yy30;
++ default: goto yy5;
++ }
++yy11:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '?': goto yy32;
++ default: goto yy12;
++ }
++yy12:
++ { RET(PDO_PARSER_BIND_POS); }
++yy13:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x00) goto yy5;
++ goto yy34;
++yy14:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy15:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy16;
++ case '\\': goto yy18;
++ default: goto yy14;
++ }
++yy16:
++ yyaccept = 1;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '"': goto yy14;
++ default: goto yy17;
++ }
++yy17:
++ { RET(PDO_PARSER_TEXT); }
++yy18:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ if (yych <= 0x00) goto yy1;
++ goto yy14;
++yy19:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy20;
++ default: goto yy19;
++ }
++yy20:
++ { RET(PDO_PARSER_TEXT); }
++yy21:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy22:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '\'': goto yy23;
++ case '\\': goto yy25;
++ default: goto yy21;
++ }
++yy23:
++ yyaccept = 2;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\'': goto yy21;
++ default: goto yy24;
++ }
++yy24:
++ { RET(PDO_PARSER_TEXT); }
++yy25:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ if (yych <= 0x00) goto yy1;
++ goto yy21;
++yy26:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '\t':
++ case '\v':
++ case '\f':
++ case '\r':
++ case ' ': goto yy19;
++ default: goto yy1;
++ }
++yy27:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '*': goto yy37;
++ default: goto yy27;
++ }
++yy28:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy28;
++ default: goto yy29;
++ }
++yy29:
++ { RET(PDO_PARSER_BIND); }
++yy30:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case ':': goto yy30;
++ default: goto yy31;
++ }
++yy31:
++ { RET(PDO_PARSER_TEXT); }
++yy32:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '?': goto yy32;
++ default: goto yy31;
++ }
++yy33:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy34:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '`': goto yy35;
++ default: goto yy33;
++ }
++yy35:
++ yyaccept = 3;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '`': goto yy33;
++ default: goto yy36;
++ }
++yy36:
++ { RET(PDO_PARSER_TEXT); }
++yy37:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '*': goto yy37;
++ case '/': goto yy38;
++ default: goto yy27;
++ }
++yy38:
++ ++YYCURSOR;
++ goto yy20;
++}
++
++}
diff --git a/databases/php85-pdo_odbc/Makefile b/databases/php85-pdo_odbc/Makefile
new file mode 100644
index 000000000000..41bf11b6e9b1
--- /dev/null
+++ b/databases/php85-pdo_odbc/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -pdo_odbc
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-pdo_pgsql/Makefile b/databases/php85-pdo_pgsql/Makefile
new file mode 100644
index 000000000000..5956ab7c84cf
--- /dev/null
+++ b/databases/php85-pdo_pgsql/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -pdo_pgsql
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-pdo_pgsql/files/patch-pgsql__sql__parser.c b/databases/php85-pdo_pgsql/files/patch-pgsql__sql__parser.c
new file mode 100644
index 000000000000..e2f535ec545e
--- /dev/null
+++ b/databases/php85-pdo_pgsql/files/patch-pgsql__sql__parser.c
@@ -0,0 +1,528 @@
+--- pgsql_sql_parser.c.orig 2025-07-02 13:28:41 UTC
++++ pgsql_sql_parser.c
+@@ -0,0 +1,525 @@
++/* Generated by re2c 3.1 */
++/*
++ +----------------------------------------------------------------------+
++ | Copyright (c) The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.01 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | https://www.php.net/license/3_01.txt |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Author: Matteo Beccati <mbeccati@php.net> |
++ +----------------------------------------------------------------------+
++*/
++
++
++#include "php.h"
++#include "ext/pdo/php_pdo_driver.h"
++#include "ext/pdo/pdo_sql_parser.h"
++
++int pdo_pgsql_scanner(pdo_scanner_t *s)
++{
++ const char *cursor = s->cur;
++
++ s->tok = cursor;
++
++
++
++{
++ YYCTYPE yych;
++ unsigned int yyaccept = 0;
++ if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy4;
++ case '$': goto yy6;
++ case '\'': goto yy7;
++ case '-': goto yy8;
++ case '/': goto yy9;
++ case ':': goto yy10;
++ case '?': goto yy11;
++ case 'E':
++ case 'e': goto yy13;
++ default: goto yy2;
++ }
++yy1:
++ YYCURSOR = YYMARKER;
++ switch (yyaccept) {
++ case 0: goto yy5;
++ case 1: goto yy17;
++ case 2: goto yy23;
++ default: goto yy35;
++ }
++yy2:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00:
++ case '"':
++ case '$':
++ case '\'':
++ case '-':
++ case '/':
++ case ':':
++ case '?':
++ case 'E':
++ case 'e': goto yy3;
++ default: goto yy2;
++ }
++yy3:
++ { RET(PDO_PARSER_TEXT); }
++yy4:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych >= 0x01) goto yy15;
++yy5:
++ { SKIP_ONE(PDO_PARSER_TEXT); }
++yy6:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ switch (yych) {
++ case 0x00:
++ case 0x01:
++ case 0x02:
++ case 0x03:
++ case 0x04:
++ case 0x05:
++ case 0x06:
++ case 0x07:
++ case 0x08:
++ case '\t':
++ case '\n':
++ case '\v':
++ case '\f':
++ case '\r':
++ case 0x0E:
++ case 0x0F:
++ case 0x10:
++ case 0x11:
++ case 0x12:
++ case 0x13:
++ case 0x14:
++ case 0x15:
++ case 0x16:
++ case 0x17:
++ case 0x18:
++ case 0x19:
++ case 0x1A:
++ case 0x1B:
++ case 0x1C:
++ case 0x1D:
++ case 0x1E:
++ case 0x1F:
++ case ' ':
++ case '!':
++ case '"':
++ case '#':
++ case '%':
++ case '&':
++ case '\'':
++ case '(':
++ case ')':
++ case '*':
++ case '+':
++ case ',':
++ case '-':
++ case '.':
++ case '/':
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case ':':
++ case ';':
++ case '<':
++ case '=':
++ case '>':
++ case '?':
++ case '@':
++ case '[':
++ case '\\':
++ case ']':
++ case '^':
++ case '`':
++ case '{':
++ case '|':
++ case '}':
++ case '~':
++ case 0x7F: goto yy5;
++ case '$': goto yy18;
++ default: goto yy19;
++ }
++yy7:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x00) goto yy5;
++ goto yy21;
++yy8:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '-': goto yy24;
++ default: goto yy5;
++ }
++yy9:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '*': goto yy26;
++ default: goto yy5;
++ }
++yy10:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy27;
++ case ':': goto yy29;
++ default: goto yy5;
++ }
++yy11:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '?': goto yy31;
++ default: goto yy12;
++ }
++yy12:
++ { RET(PDO_PARSER_BIND_POS); }
++yy13:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ switch (yych) {
++ case '\'': goto yy32;
++ default: goto yy5;
++ }
++yy14:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy15:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy16;
++ default: goto yy14;
++ }
++yy16:
++ yyaccept = 1;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '"': goto yy14;
++ default: goto yy17;
++ }
++yy17:
++ { RET(PDO_PARSER_TEXT); }
++yy18:
++ ++YYCURSOR;
++ { RET(PDO_PARSER_CUSTOM_QUOTE); }
++yy19:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00:
++ case 0x01:
++ case 0x02:
++ case 0x03:
++ case 0x04:
++ case 0x05:
++ case 0x06:
++ case 0x07:
++ case 0x08:
++ case '\t':
++ case '\n':
++ case '\v':
++ case '\f':
++ case '\r':
++ case 0x0E:
++ case 0x0F:
++ case 0x10:
++ case 0x11:
++ case 0x12:
++ case 0x13:
++ case 0x14:
++ case 0x15:
++ case 0x16:
++ case 0x17:
++ case 0x18:
++ case 0x19:
++ case 0x1A:
++ case 0x1B:
++ case 0x1C:
++ case 0x1D:
++ case 0x1E:
++ case 0x1F:
++ case ' ':
++ case '!':
++ case '"':
++ case '#':
++ case '%':
++ case '&':
++ case '\'':
++ case '(':
++ case ')':
++ case '*':
++ case '+':
++ case ',':
++ case '-':
++ case '.':
++ case '/':
++ case ':':
++ case ';':
++ case '<':
++ case '=':
++ case '>':
++ case '?':
++ case '@':
++ case '[':
++ case '\\':
++ case ']':
++ case '^':
++ case '`':
++ case '{':
++ case '|':
++ case '}':
++ case '~':
++ case 0x7F: goto yy1;
++ case '$': goto yy18;
++ default: goto yy19;
++ }
++yy20:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy21:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '\'': goto yy22;
++ default: goto yy20;
++ }
++yy22:
++ yyaccept = 2;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\'': goto yy20;
++ default: goto yy23;
++ }
++yy23:
++ { RET(PDO_PARSER_TEXT); }
++yy24:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy25;
++ default: goto yy24;
++ }
++yy25:
++ { RET(PDO_PARSER_TEXT); }
++yy26:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '*': goto yy33;
++ default: goto yy26;
++ }
++yy27:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy27;
++ default: goto yy28;
++ }
++yy28:
++ { RET(PDO_PARSER_BIND); }
++yy29:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case ':': goto yy29;
++ default: goto yy30;
++ }
++yy30:
++ { RET(PDO_PARSER_TEXT); }
++yy31:
++ ++YYCURSOR;
++ { RET(PDO_PARSER_ESCAPED_QUESTION); }
++yy32:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '\'': goto yy34;
++ case '\\': goto yy36;
++ default: goto yy32;
++ }
++yy33:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '*': goto yy33;
++ case '/': goto yy37;
++ default: goto yy26;
++ }
++yy34:
++ yyaccept = 3;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\'': goto yy32;
++ default: goto yy35;
++ }
++yy35:
++ { RET(PDO_PARSER_TEXT); }
++yy36:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ if (yych <= 0x00) goto yy1;
++ goto yy32;
++yy37:
++ ++YYCURSOR;
++ goto yy25;
++}
++
++}
diff --git a/databases/php85-pdo_sqlite/Makefile b/databases/php85-pdo_sqlite/Makefile
new file mode 100644
index 000000000000..c18fe80e2621
--- /dev/null
+++ b/databases/php85-pdo_sqlite/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -pdo_sqlite
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-pdo_sqlite/files/patch-sqlite__sql__parser.c b/databases/php85-pdo_sqlite/files/patch-sqlite__sql__parser.c
new file mode 100644
index 000000000000..5770c5cf3f7f
--- /dev/null
+++ b/databases/php85-pdo_sqlite/files/patch-sqlite__sql__parser.c
@@ -0,0 +1,398 @@
+--- sqlite_sql_parser.c.orig 2025-07-02 13:27:28 UTC
++++ sqlite_sql_parser.c
+@@ -0,0 +1,395 @@
++/* Generated by re2c 3.1 */
++/*
++ +----------------------------------------------------------------------+
++ | Copyright (c) The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.01 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | https://www.php.net/license/3_01.txt |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Author: Matteo Beccati <mbeccati@php.net> |
++ +----------------------------------------------------------------------+
++*/
++
++
++#include "php.h"
++#include "ext/pdo/php_pdo_driver.h"
++#include "ext/pdo/pdo_sql_parser.h"
++
++int pdo_sqlite_scanner(pdo_scanner_t *s)
++{
++ const char *cursor = s->cur;
++
++ s->tok = cursor;
++
++
++
++{
++ YYCTYPE yych;
++ unsigned int yyaccept = 0;
++ if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy4;
++ case '\'': goto yy6;
++ case '-': goto yy7;
++ case '/': goto yy8;
++ case ':': goto yy9;
++ case '?': goto yy10;
++ case '[': goto yy12;
++ case '`': goto yy13;
++ default: goto yy2;
++ }
++yy1:
++ YYCURSOR = YYMARKER;
++ switch (yyaccept) {
++ case 0: goto yy5;
++ case 1: goto yy17;
++ case 2: goto yy21;
++ case 3: goto yy33;
++ default: goto yy37;
++ }
++yy2:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00:
++ case '"':
++ case '\'':
++ case '-':
++ case '/':
++ case ':':
++ case '?':
++ case '[':
++ case '`': goto yy3;
++ default: goto yy2;
++ }
++yy3:
++ { RET(PDO_PARSER_TEXT); }
++yy4:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych >= 0x01) goto yy15;
++yy5:
++ { SKIP_ONE(PDO_PARSER_TEXT); }
++yy6:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x00) goto yy5;
++ goto yy19;
++yy7:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '-': goto yy22;
++ default: goto yy5;
++ }
++yy8:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '*': goto yy24;
++ default: goto yy5;
++ }
++yy9:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy25;
++ case ':': goto yy27;
++ default: goto yy5;
++ }
++yy10:
++ yych = *++YYCURSOR;
++ switch (yych) {
++ case '?': goto yy29;
++ default: goto yy11;
++ }
++yy11:
++ { RET(PDO_PARSER_BIND_POS); }
++yy12:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x00) goto yy5;
++ goto yy31;
++yy13:
++ yyaccept = 0;
++ yych = *(YYMARKER = ++YYCURSOR);
++ if (yych <= 0x00) goto yy5;
++ goto yy35;
++yy14:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy15:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '"': goto yy16;
++ default: goto yy14;
++ }
++yy16:
++ yyaccept = 1;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy17;
++ case '"': goto yy16;
++ default: goto yy14;
++ }
++yy17:
++ { RET(PDO_PARSER_TEXT); }
++yy18:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy19:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '\'': goto yy20;
++ default: goto yy18;
++ }
++yy20:
++ yyaccept = 2;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy21;
++ case '\'': goto yy20;
++ default: goto yy18;
++ }
++yy21:
++ { RET(PDO_PARSER_TEXT); }
++yy22:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '\n': goto yy23;
++ default: goto yy22;
++ }
++yy23:
++ { RET(PDO_PARSER_TEXT); }
++yy24:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '*': goto yy38;
++ default: goto yy24;
++ }
++yy25:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '0':
++ case '1':
++ case '2':
++ case '3':
++ case '4':
++ case '5':
++ case '6':
++ case '7':
++ case '8':
++ case '9':
++ case 'A':
++ case 'B':
++ case 'C':
++ case 'D':
++ case 'E':
++ case 'F':
++ case 'G':
++ case 'H':
++ case 'I':
++ case 'J':
++ case 'K':
++ case 'L':
++ case 'M':
++ case 'N':
++ case 'O':
++ case 'P':
++ case 'Q':
++ case 'R':
++ case 'S':
++ case 'T':
++ case 'U':
++ case 'V':
++ case 'W':
++ case 'X':
++ case 'Y':
++ case 'Z':
++ case '_':
++ case 'a':
++ case 'b':
++ case 'c':
++ case 'd':
++ case 'e':
++ case 'f':
++ case 'g':
++ case 'h':
++ case 'i':
++ case 'j':
++ case 'k':
++ case 'l':
++ case 'm':
++ case 'n':
++ case 'o':
++ case 'p':
++ case 'q':
++ case 'r':
++ case 's':
++ case 't':
++ case 'u':
++ case 'v':
++ case 'w':
++ case 'x':
++ case 'y':
++ case 'z': goto yy25;
++ default: goto yy26;
++ }
++yy26:
++ { RET(PDO_PARSER_BIND); }
++yy27:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case ':': goto yy27;
++ default: goto yy28;
++ }
++yy28:
++ { RET(PDO_PARSER_TEXT); }
++yy29:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '?': goto yy29;
++ default: goto yy28;
++ }
++yy30:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy31:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case ']': goto yy32;
++ default: goto yy30;
++ }
++yy32:
++ yyaccept = 3;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy33;
++ case ']': goto yy32;
++ default: goto yy30;
++ }
++yy33:
++ { RET(PDO_PARSER_TEXT); }
++yy34:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++yy35:
++ switch (yych) {
++ case 0x00: goto yy1;
++ case '`': goto yy36;
++ default: goto yy34;
++ }
++yy36:
++ yyaccept = 4;
++ YYMARKER = ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case 0x00: goto yy37;
++ case '`': goto yy36;
++ default: goto yy34;
++ }
++yy37:
++ { RET(PDO_PARSER_TEXT); }
++yy38:
++ ++YYCURSOR;
++ if (YYLIMIT <= YYCURSOR) YYFILL(1);
++ yych = *YYCURSOR;
++ switch (yych) {
++ case '*': goto yy38;
++ case '/': goto yy39;
++ default: goto yy24;
++ }
++yy39:
++ ++YYCURSOR;
++ goto yy23;
++}
++
++}
diff --git a/databases/php85-pgsql/Makefile b/databases/php85-pgsql/Makefile
new file mode 100644
index 000000000000..429049846f13
--- /dev/null
+++ b/databases/php85-pgsql/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -pgsql
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php85-sqlite3/Makefile b/databases/php85-sqlite3/Makefile
new file mode 100644
index 000000000000..a82d71c80d62
--- /dev/null
+++ b/databases/php85-sqlite3/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES= databases
+
+MASTERDIR= ${.CURDIR}/../../lang/php85
+
+PKGNAMESUFFIX= -sqlite3
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/pointcloud/Makefile b/databases/pointcloud/Makefile
index 428b8b193ffd..0737a6d9db4e 100644
--- a/databases/pointcloud/Makefile
+++ b/databases/pointcloud/Makefile
@@ -1,6 +1,7 @@
PORTNAME= pointcloud
DISTVERSIONPREFIX= v
DISTVERSION= 1.2.5
+PORTREVISION= 1
CATEGORIES= databases geography
MAINTAINER= lbartoletti@FreeBSD.org
diff --git a/databases/postgis33/Makefile b/databases/postgis33/Makefile
index 2771a6783720..7b951527b7f1 100644
--- a/databases/postgis33/Makefile
+++ b/databases/postgis33/Makefile
@@ -1,6 +1,6 @@
PORTNAME= postgis
DISTVERSION= 3.3.8
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= databases geography
MASTER_SITES= https://download.osgeo.org/postgis/source/
PKGNAMESUFFIX= 33
diff --git a/databases/postgis34/Makefile b/databases/postgis34/Makefile
index fe713c48bd03..4e7c8dfc4d52 100644
--- a/databases/postgis34/Makefile
+++ b/databases/postgis34/Makefile
@@ -1,6 +1,6 @@
PORTNAME= postgis
DISTVERSION= 3.4.4
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= databases geography
MASTER_SITES= https://download.osgeo.org/postgis/source/
PKGNAMESUFFIX= 34
diff --git a/databases/postgis35/Makefile b/databases/postgis35/Makefile
index a441e8c6eff9..2d4b40eb1575 100644
--- a/databases/postgis35/Makefile
+++ b/databases/postgis35/Makefile
@@ -1,6 +1,6 @@
PORTNAME= postgis
DISTVERSION= 3.5.2
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= databases geography
MASTER_SITES= https://download.osgeo.org/postgis/source/
PKGNAMESUFFIX= 35
diff --git a/databases/postgresql13-contrib/Makefile b/databases/postgresql13-contrib/Makefile
index ad8a568951ee..7bac5c915b90 100644
--- a/databases/postgresql13-contrib/Makefile
+++ b/databases/postgresql13-contrib/Makefile
@@ -1,5 +1,5 @@
PORTNAME= postgresql
-PORTREVISION= 0
+PORTREVISION= 1
CATEGORIES= databases
MAINTAINER= pgsql@FreeBSD.org
diff --git a/databases/postgresql13-server/Makefile b/databases/postgresql13-server/Makefile
index ae0b013f11c0..df8969e7cece 100644
--- a/databases/postgresql13-server/Makefile
+++ b/databases/postgresql13-server/Makefile
@@ -1,7 +1,7 @@
DISTVERSION?= 13.21
# PORTREVISION must be ?= otherwise, all slave ports get this PORTREVISION and
# not their own. Probably best to keep it at ?=0 when reset here too.
-PORTREVISION?= 0
+PORTREVISION?= 1
MAINTAINER?= pgsql@FreeBSD.org
diff --git a/databases/postgresql14-contrib/Makefile b/databases/postgresql14-contrib/Makefile
index e60bf88b53b4..f0c2e269585d 100644
--- a/databases/postgresql14-contrib/Makefile
+++ b/databases/postgresql14-contrib/Makefile
@@ -1,5 +1,5 @@
PORTNAME= postgresql
-PORTREVISION= 0
+PORTREVISION= 1
CATEGORIES= databases
MAINTAINER= pgsql@FreeBSD.org
diff --git a/databases/postgresql14-server/Makefile b/databases/postgresql14-server/Makefile
index 4fc3988300f0..d72b1bd1c81b 100644
--- a/databases/postgresql14-server/Makefile
+++ b/databases/postgresql14-server/Makefile
@@ -1,7 +1,7 @@
DISTVERSION?= 14.18
# PORTREVISION must be ?= otherwise, all slave ports get this PORTREVISION and
# not their own. Probably best to keep it at ?=0 when reset here too.
-PORTREVISION?= 0
+PORTREVISION?= 1
MAINTAINER?= pgsql@FreeBSD.org
diff --git a/databases/postgresql15-contrib/Makefile b/databases/postgresql15-contrib/Makefile
index 8d8803e14f03..029971d32399 100644
--- a/databases/postgresql15-contrib/Makefile
+++ b/databases/postgresql15-contrib/Makefile
@@ -1,5 +1,5 @@
PORTNAME= postgresql
-PORTREVISION= 0
+PORTREVISION= 1
CATEGORIES= databases
MAINTAINER= pgsql@FreeBSD.org
diff --git a/databases/postgresql15-server/Makefile b/databases/postgresql15-server/Makefile
index 09077a1fcb18..1489747d17ec 100644
--- a/databases/postgresql15-server/Makefile
+++ b/databases/postgresql15-server/Makefile
@@ -1,7 +1,7 @@
DISTVERSION?= 15.13
# PORTREVISION must be ?= otherwise, all slave ports get this PORTREVISION and
# not their own. Probably best to keep it at ?=0 when reset here too.
-PORTREVISION?= 0
+PORTREVISION?= 1
MAINTAINER?= pgsql@FreeBSD.org
diff --git a/databases/postgresql16-contrib/Makefile b/databases/postgresql16-contrib/Makefile
index cd8376580200..e68f712cb309 100644
--- a/databases/postgresql16-contrib/Makefile
+++ b/databases/postgresql16-contrib/Makefile
@@ -1,5 +1,5 @@
PORTNAME= postgresql
-PORTREVISION= 0
+PORTREVISION= 1
CATEGORIES= databases
MAINTAINER= pgsql@FreeBSD.org
diff --git a/databases/postgresql16-server/Makefile b/databases/postgresql16-server/Makefile
index a2258f336743..1e20ce62ed3c 100644
--- a/databases/postgresql16-server/Makefile
+++ b/databases/postgresql16-server/Makefile
@@ -2,7 +2,7 @@ PORTNAME?= postgresql
DISTVERSION?= 16.9
# PORTREVISION must be ?= otherwise, all slave ports get this PORTREVISION and
# not their own. Probably best to keep it at ?=0 when reset here too.
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES?= databases
MASTER_SITES= PGSQL/source/v${DISTVERSION}
PKGNAMESUFFIX?= ${PORTVERSION:R}${COMPONENT}
diff --git a/databases/postgresql17-contrib/Makefile b/databases/postgresql17-contrib/Makefile
index 1a55a4cc9a46..001c798933c8 100644
--- a/databases/postgresql17-contrib/Makefile
+++ b/databases/postgresql17-contrib/Makefile
@@ -1,5 +1,5 @@
PORTNAME= postgresql
-PORTREVISION= 0
+PORTREVISION= 1
CATEGORIES= databases
MAINTAINER= pgsql@FreeBSD.org
diff --git a/databases/postgresql17-server/Makefile b/databases/postgresql17-server/Makefile
index 9ffd292e7e70..1513d79a35d9 100644
--- a/databases/postgresql17-server/Makefile
+++ b/databases/postgresql17-server/Makefile
@@ -2,7 +2,7 @@ PORTNAME?= postgresql
DISTVERSION?= 17.5
# PORTREVISION must be ?= otherwise, all slave ports get this PORTREVISION and
# not their own. Probably best to keep it at ?=0 when reset here too.
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES?= databases
MASTER_SITES= PGSQL/source/v${DISTVERSION}
#DISTFILES+= ${PORTNAME}-${DISTVERSION}-docs.tar.bz:docs
diff --git a/databases/proxysql/Makefile b/databases/proxysql/Makefile
index 1a1f045d7791..24a1c73b91d3 100644
--- a/databases/proxysql/Makefile
+++ b/databases/proxysql/Makefile
@@ -1,5 +1,6 @@
PORTNAME= proxysql
PORTVERSION= 2.6.6
+PORTREVISION= 1
CATEGORIES= databases
MAINTAINER= zi@FreeBSD.org
@@ -18,10 +19,9 @@ BUILD_DEPENDS= aclocal:devel/automake \
ggrep:textproc/gnugrep \
libgcrypt>0:security/libgcrypt \
libtoolize:devel/libtool \
- e2fsprogs-libuuid>0:misc/e2fsprogs-libuuid \
gnutls>0:security/gnutls
+LIB_DEPENDS= libuuid.so:misc/libuuid
RUN_DEPENDS= libgcrypt>0:security/libgcrypt \
- e2fsprogs-libuuid>0:misc/e2fsprogs-libuuid \
gnutls>0:security/gnutls
USES= compiler:c++11-lang gmake libtool perl5 python:build shebangfix
diff --git a/databases/py-fakeredis/Makefile b/databases/py-fakeredis/Makefile
index 80ddc7891b6a..fcd77113a829 100644
--- a/databases/py-fakeredis/Makefile
+++ b/databases/py-fakeredis/Makefile
@@ -1,5 +1,5 @@
PORTNAME= fakeredis
-PORTVERSION= 2.30.0
+PORTVERSION= 2.30.1
CATEGORIES= databases python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/databases/py-fakeredis/distinfo b/databases/py-fakeredis/distinfo
index 96349fe10757..e9cc0c75fe7c 100644
--- a/databases/py-fakeredis/distinfo
+++ b/databases/py-fakeredis/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750188048
-SHA256 (fakeredis-2.30.0.tar.gz) = 77ca04d4925daa0569ff000a960f47e49de15a4bd37facafe4f3f3ecc66bb3ef
-SIZE (fakeredis-2.30.0.tar.gz) = 167434
+TIMESTAMP = 1750954166
+SHA256 (fakeredis-2.30.1.tar.gz) = 6489f2926e39815c9bf0fce80751635e0898e333c43a767825adf101180dbc45
+SIZE (fakeredis-2.30.1.tar.gz) = 167724
diff --git a/databases/py-sqlframe/Makefile b/databases/py-sqlframe/Makefile
index 4da584bca7e1..12a1482936ec 100644
--- a/databases/py-sqlframe/Makefile
+++ b/databases/py-sqlframe/Makefile
@@ -1,5 +1,5 @@
PORTNAME= sqlframe
-PORTVERSION= 3.35.1
+PORTVERSION= 3.36.0
CATEGORIES= databases python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -16,7 +16,7 @@ BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLA
${PYTHON_PKGNAMEPREFIX}setuptools-scm>=0:devel/py-setuptools-scm@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}prettytable>=0<4:devel/py-prettytable@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}sqlglot>=24.0.0<26.26:databases/py-sqlglot@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}sqlglot>=24.0.0<26.32:databases/py-sqlglot@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}typing-extensions>=0:devel/py-typing-extensions@${PY_FLAVOR}
USES= python
diff --git a/databases/py-sqlframe/distinfo b/databases/py-sqlframe/distinfo
index 362e7b8c0333..237cb50fcbf3 100644
--- a/databases/py-sqlframe/distinfo
+++ b/databases/py-sqlframe/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750188050
-SHA256 (sqlframe-3.35.1.tar.gz) = d7bfca67fa1490aebcbdf49127cfab261590da78976a0ac6570de9bfc46449ec
-SIZE (sqlframe-3.35.1.tar.gz) = 29477918
+TIMESTAMP = 1751208150
+SHA256 (sqlframe-3.36.0.tar.gz) = c6966b56559ce63e08d8eacd73ab6fb3070651b25cb3c62a44882c7ade586e77
+SIZE (sqlframe-3.36.0.tar.gz) = 29480398
diff --git a/databases/py-sqlglot/Makefile b/databases/py-sqlglot/Makefile
index 98b7069ed3e7..cf511dfac9b1 100644
--- a/databases/py-sqlglot/Makefile
+++ b/databases/py-sqlglot/Makefile
@@ -1,5 +1,5 @@
PORTNAME= sqlglot
-PORTVERSION= 26.25.3
+PORTVERSION= 26.31.0
CATEGORIES= databases python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/databases/py-sqlglot/distinfo b/databases/py-sqlglot/distinfo
index b9a87f01ef0e..fb751280939a 100644
--- a/databases/py-sqlglot/distinfo
+++ b/databases/py-sqlglot/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750188052
-SHA256 (sqlglot-26.25.3.tar.gz) = ca362b33c030538c8f5c8ae66ac5ae5e6c95be74170c328ad008a428687e2513
-SIZE (sqlglot-26.25.3.tar.gz) = 5322840
+TIMESTAMP = 1751208152
+SHA256 (sqlglot-26.31.0.tar.gz) = e9b8f52d02e21636cd7e463af29db0b86707437b9d468b7b2166b67fa96cdd87
+SIZE (sqlglot-26.31.0.tar.gz) = 5341968
diff --git a/databases/py-unqlite/Makefile b/databases/py-unqlite/Makefile
index 55be1c6d00e8..a5a9dc5c24ef 100644
--- a/databases/py-unqlite/Makefile
+++ b/databases/py-unqlite/Makefile
@@ -1,5 +1,5 @@
PORTNAME= unqlite
-DISTVERSION= 0.9.8
+DISTVERSION= 0.9.9
CATEGORIES= databases python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/databases/py-unqlite/distinfo b/databases/py-unqlite/distinfo
index ca214a83d054..f50cff353b67 100644
--- a/databases/py-unqlite/distinfo
+++ b/databases/py-unqlite/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1738990510
-SHA256 (unqlite-0.9.8.tar.gz) = 182c1764616f0f3a5caa52ca3bdeac3d44cce7a56b2801c4fcaf79eb2b6f30be
-SIZE (unqlite-0.9.8.tar.gz) = 634010
+TIMESTAMP = 1751442862
+SHA256 (unqlite-0.9.9.tar.gz) = 63a79975d67e3896af269c1885c2cc363fb646ff26e58541365fb5fb9e645691
+SIZE (unqlite-0.9.9.tar.gz) = 633945
diff --git a/databases/qof/Makefile b/databases/qof/Makefile
index 293cec83b14d..22419f62765b 100644
--- a/databases/qof/Makefile
+++ b/databases/qof/Makefile
@@ -1,6 +1,6 @@
PORTNAME= qof
PORTVERSION= 0.8.8
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= databases
MASTER_SITES= DEBIAN_POOL
DISTNAME= qof_${PORTVERSION}.orig
diff --git a/databases/recutils/Makefile b/databases/recutils/Makefile
index d28a59c27cd6..3ce645eb8312 100644
--- a/databases/recutils/Makefile
+++ b/databases/recutils/Makefile
@@ -1,6 +1,6 @@
PORTNAME= recutils
DISTVERSION= 1.9
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= databases
MASTER_SITES= GNU
@@ -10,7 +10,7 @@ WWW= https://www.gnu.org/software/recutils/
LICENSE= GPLv3+
-LIB_DEPENDS= libuuid.so:misc/e2fsprogs-libuuid
+LIB_DEPENDS= libuuid.so:misc/libuuid
USES= charsetfix cpe libtool makeinfo pkgconfig readline
CPE_VENDOR= gnu
diff --git a/databases/rrdtool/Makefile b/databases/rrdtool/Makefile
index 4db263ee0466..1279dbec7188 100644
--- a/databases/rrdtool/Makefile
+++ b/databases/rrdtool/Makefile
@@ -1,5 +1,6 @@
PORTNAME= rrdtool
DISTVERSION= 1.9.0
+PORTREVISION= 1
CATEGORIES= databases graphics
MASTER_SITES= https://github.com/oetiker/rrdtool-1.x/releases/download/v${DISTVERSION}/
diff --git a/databases/rubygem-flipper-active_record/Makefile b/databases/rubygem-flipper-active_record/Makefile
index d41f10d94685..32809d6adbc2 100644
--- a/databases/rubygem-flipper-active_record/Makefile
+++ b/databases/rubygem-flipper-active_record/Makefile
@@ -1,5 +1,5 @@
PORTNAME= flipper-active_record
-PORTVERSION= 1.3.4
+PORTVERSION= 1.3.5
CATEGORIES= databases rubygems
MASTER_SITES= RG
diff --git a/databases/rubygem-flipper-active_record/distinfo b/databases/rubygem-flipper-active_record/distinfo
index 331c9e27b892..00f974fa6be9 100644
--- a/databases/rubygem-flipper-active_record/distinfo
+++ b/databases/rubygem-flipper-active_record/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1742070490
-SHA256 (rubygem/flipper-active_record-1.3.4.gem) = 8cda954ebf76668ae451915fbff87670939c9178b4cbcc77816aa918c2e8612e
-SIZE (rubygem/flipper-active_record-1.3.4.gem) = 12800
+TIMESTAMP = 1751208188
+SHA256 (rubygem/flipper-active_record-1.3.5.gem) = 77867d6226d54fbd66e6fc4646595ba6b9b8305ff5efc58597d7190fde31d5a1
+SIZE (rubygem/flipper-active_record-1.3.5.gem) = 12800
diff --git a/databases/rubygem-redis-client/Makefile b/databases/rubygem-redis-client/Makefile
index fffc4a3e9f73..5511f80c6786 100644
--- a/databases/rubygem-redis-client/Makefile
+++ b/databases/rubygem-redis-client/Makefile
@@ -1,5 +1,5 @@
PORTNAME= redis-client
-PORTVERSION= 0.24.0
+PORTVERSION= 0.25.0
CATEGORIES= databases rubygems
MASTER_SITES= RG
diff --git a/databases/rubygem-redis-client/distinfo b/databases/rubygem-redis-client/distinfo
index b7bbbf2fff55..06e17fe381a7 100644
--- a/databases/rubygem-redis-client/distinfo
+++ b/databases/rubygem-redis-client/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1742070508
-SHA256 (rubygem/redis-client-0.24.0.gem) = ee65ee39cb2c38608b734566167fd912384f3c1241f59075e22858f23a085dbb
-SIZE (rubygem/redis-client-0.24.0.gem) = 28160
+TIMESTAMP = 1750954266
+SHA256 (rubygem/redis-client-0.25.0.gem) = 927dfd07a37346fd9111d80cac3199d2a02b4c084c79260acf7a5057bd742910
+SIZE (rubygem/redis-client-0.25.0.gem) = 28160
diff --git a/databases/rubygem-redis-cluster-client/Makefile b/databases/rubygem-redis-cluster-client/Makefile
index c70977aeab43..050ff2b86a28 100644
--- a/databases/rubygem-redis-cluster-client/Makefile
+++ b/databases/rubygem-redis-cluster-client/Makefile
@@ -1,5 +1,5 @@
PORTNAME= redis-cluster-client
-PORTVERSION= 0.13.4
+PORTVERSION= 0.13.5
CATEGORIES= databases rubygems
MASTER_SITES= RG
diff --git a/databases/rubygem-redis-cluster-client/distinfo b/databases/rubygem-redis-cluster-client/distinfo
index f150acb0b578..c542d7f7d3cd 100644
--- a/databases/rubygem-redis-cluster-client/distinfo
+++ b/databases/rubygem-redis-cluster-client/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1742070510
-SHA256 (rubygem/redis-cluster-client-0.13.4.gem) = cb1cfee857116999eebde5a94e1cc38bca348fe855e294054761a7cd646e31c2
-SIZE (rubygem/redis-cluster-client-0.13.4.gem) = 26624
+TIMESTAMP = 1750954268
+SHA256 (rubygem/redis-cluster-client-0.13.5.gem) = 18d6c9598009bcdb47b2a62bd6d00b833444aace740d2a2f00113774b298204c
+SIZE (rubygem/redis-cluster-client-0.13.5.gem) = 27136
diff --git a/databases/rubygem-solid_cable-rails72/Makefile b/databases/rubygem-solid_cable-rails72/Makefile
index 7c0b3a3cd41a..efc42920b3a2 100644
--- a/databases/rubygem-solid_cable-rails72/Makefile
+++ b/databases/rubygem-solid_cable-rails72/Makefile
@@ -1,5 +1,5 @@
PORTNAME= solid_cable
-PORTVERSION= 3.0.8
+PORTVERSION= 3.0.11
CATEGORIES= databases rubygems
MASTER_SITES= RG
PKGNAMESUFFIX= -rails72
diff --git a/databases/rubygem-solid_cable-rails72/distinfo b/databases/rubygem-solid_cable-rails72/distinfo
index 4b5a62830e85..c60c00fab965 100644
--- a/databases/rubygem-solid_cable-rails72/distinfo
+++ b/databases/rubygem-solid_cable-rails72/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1747715492
-SHA256 (rubygem/solid_cable-3.0.8.gem) = 71fcc85587c8899d4c145f25ac15e092ed0ecc14477e67c9220f82ae3cdd8c3a
-SIZE (rubygem/solid_cable-3.0.8.gem) = 12800
+TIMESTAMP = 1750954270
+SHA256 (rubygem/solid_cable-3.0.11.gem) = b7cb3de7eb65fada32f4a70e47897c7dd3ee4a8d3ad08a278f2340037e07384c
+SIZE (rubygem/solid_cable-3.0.11.gem) = 12800
diff --git a/databases/rubygem-solid_cable/Makefile b/databases/rubygem-solid_cable/Makefile
index 4c0a940417fd..d9dc359d55b7 100644
--- a/databases/rubygem-solid_cable/Makefile
+++ b/databases/rubygem-solid_cable/Makefile
@@ -1,5 +1,5 @@
PORTNAME= solid_cable
-PORTVERSION= 3.0.8
+PORTVERSION= 3.0.11
CATEGORIES= databases rubygems
MASTER_SITES= RG
diff --git a/databases/rubygem-solid_cable/distinfo b/databases/rubygem-solid_cable/distinfo
index 9998669e5710..c60c00fab965 100644
--- a/databases/rubygem-solid_cable/distinfo
+++ b/databases/rubygem-solid_cable/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1747715490
-SHA256 (rubygem/solid_cable-3.0.8.gem) = 71fcc85587c8899d4c145f25ac15e092ed0ecc14477e67c9220f82ae3cdd8c3a
-SIZE (rubygem/solid_cable-3.0.8.gem) = 12800
+TIMESTAMP = 1750954270
+SHA256 (rubygem/solid_cable-3.0.11.gem) = b7cb3de7eb65fada32f4a70e47897c7dd3ee4a8d3ad08a278f2340037e07384c
+SIZE (rubygem/solid_cable-3.0.11.gem) = 12800
diff --git a/databases/spatialite-tools/Makefile b/databases/spatialite-tools/Makefile
index d3347d655708..1fae531ad338 100644
--- a/databases/spatialite-tools/Makefile
+++ b/databases/spatialite-tools/Makefile
@@ -1,6 +1,6 @@
PORTNAME= spatialite-tools
PORTVERSION= 5.0.1
-PORTREVISION= 11
+PORTREVISION= 12
CATEGORIES= databases geography
MASTER_SITES= http://www.gaia-gis.it/gaia-sins/
diff --git a/databases/spatialite/Makefile b/databases/spatialite/Makefile
index 842498ac355d..fc65877bdd56 100644
--- a/databases/spatialite/Makefile
+++ b/databases/spatialite/Makefile
@@ -1,6 +1,6 @@
PORTNAME= spatialite
PORTVERSION= 5.1.0
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= databases geography
MASTER_SITES= http://www.gaia-gis.it/gaia-sins/libspatialite-sources/
DISTNAME= lib${PORTNAME}-${PORTVERSION}
diff --git a/databases/spatialite_gui/Makefile b/databases/spatialite_gui/Makefile
index 6399298ca38b..bcad5147258d 100644
--- a/databases/spatialite_gui/Makefile
+++ b/databases/spatialite_gui/Makefile
@@ -1,6 +1,6 @@
PORTNAME= spatialite_gui
DISTVERSION= 2.1.0
-PORTREVISION= 16
+PORTREVISION= 17
DISTVERSIONSUFFIX= -beta1
CATEGORIES= databases geography
MASTER_SITES= http://www.gaia-gis.it/gaia-sins/spatialite-gui-sources/
diff --git a/databases/sqliteodbc/Makefile b/databases/sqliteodbc/Makefile
index f17414096a8f..78d65dc75416 100644
--- a/databases/sqliteodbc/Makefile
+++ b/databases/sqliteodbc/Makefile
@@ -1,5 +1,6 @@
PORTNAME= sqliteodbc
PORTVERSION= 0.99991
+PORTREVISION= 1
CATEGORIES= databases
MASTER_SITES= http://www.ch-werner.de/sqliteodbc/
diff --git a/databases/xrootd/Makefile b/databases/xrootd/Makefile
index d0e4124e86d7..55771760e750 100644
--- a/databases/xrootd/Makefile
+++ b/databases/xrootd/Makefile
@@ -1,5 +1,6 @@
PORTNAME= xrootd
DISTVERSION= 5.6.9
+PORTREVISION= 2
CATEGORIES= databases
MASTER_SITES= https://xrootd.slac.stanford.edu/download/v${DISTVERSION}/
@@ -18,7 +19,7 @@ LICENSE_FILE_LGPL3= ${WRKSRC}/COPYING.LGPL
BUILD_DEPENDS= bash:shells/bash
LIB_DEPENDS= libcurl.so:ftp/curl \
libtinyxml.so:textproc/tinyxml \
- libuuid.so:misc/e2fsprogs-libuuid
+ libuuid.so:misc/libuuid
TEST_DEPENDS= cppunit>0:devel/cppunit \
googletest>0:devel/googletest
diff --git a/databases/xtrabackup80/Makefile b/databases/xtrabackup80/Makefile
index e8db161f55b9..600a5f6b380f 100644
--- a/databases/xtrabackup80/Makefile
+++ b/databases/xtrabackup80/Makefile
@@ -1,7 +1,7 @@
PORTNAME= xtrabackup80
PORTVERSION= 8.0.35
DISTVERSIONSUFFIX= -30
-PORTREVISION= 8
+PORTREVISION= 9
CATEGORIES= databases
MASTER_SITES= https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-30/source/tarball/:percona \
SF/boost/boost/${BOOST_VERSION}:boost
diff --git a/databases/xtrabackup80/files/patch-sql_binlog__ostream.cc b/databases/xtrabackup80/files/patch-sql_binlog__ostream.cc
new file mode 100644
index 000000000000..870b55e23bf3
--- /dev/null
+++ b/databases/xtrabackup80/files/patch-sql_binlog__ostream.cc
@@ -0,0 +1,11 @@
+--- sql/binlog_ostream.cc.orig 2023-11-24 10:33:10 UTC
++++ sql/binlog_ostream.cc
+@@ -239,7 +239,7 @@ bool IO_CACHE_binlog_cache_storage::setup_ciphers_pass
+
+ /* Generate password, it is a random string. */
+ if (my_rand_buffer(password, sizeof(password))) return true;
+- password_str.append(password, sizeof(password));
++ password_str.insert(password_str.end(), password, password + sizeof(password));
+
+ m_io_cache.m_encryptor->close();
+ m_io_cache.m_decryptor->close();
diff --git a/databases/xtrabackup80/files/patch-sql_mdl__context__backup.cc b/databases/xtrabackup80/files/patch-sql_mdl__context__backup.cc
new file mode 100644
index 000000000000..0d670ed2d1a2
--- /dev/null
+++ b/databases/xtrabackup80/files/patch-sql_mdl__context__backup.cc
@@ -0,0 +1,36 @@
+--- sql/mdl_context_backup.cc.orig 2023-11-24 10:33:10 UTC
++++ sql/mdl_context_backup.cc
+@@ -159,7 +159,7 @@ bool MDL_context_backup_manager::create_backup(const M
+ DBUG_TRACE;
+
+ try {
+- MDL_context_backup_key key_obj(key, keylen);
++ MDL_context_backup_key key_obj(key, key + keylen);
+
+ /*
+ Since this method is called as part of THD cleaning up, every XA
+@@ -192,7 +192,7 @@ bool MDL_context_backup_manager::create_backup(MDL_req
+
+ bool result = false;
+ try {
+- MDL_context_backup_key key_obj(key, keylen);
++ MDL_context_backup_key key_obj(key, key + keylen);
+ /*
+ Check for presence a record with specified key in the collection of
+ MDL_context_backup elements. It is ok to already have a record with
+@@ -238,7 +238,7 @@ bool MDL_context_backup_manager::restore_backup(MDL_co
+
+ MUTEX_LOCK(guard, &m_LOCK_mdl_context_backup);
+
+- auto result = m_backup_map.find(MDL_context_backup_key(key, keylen));
++ auto result = m_backup_map.find(MDL_context_backup_key(key, key + keylen));
+ if (result != m_backup_map.end()) {
+ element = result->second.get();
+ res = mdl_context->clone_tickets(element->get_context(), MDL_TRANSACTION);
+@@ -251,5 +251,5 @@ void MDL_context_backup_manager::delete_backup(const u
+ const size_t keylen) {
+ DBUG_TRACE;
+ MUTEX_LOCK(guard, &m_LOCK_mdl_context_backup);
+- m_backup_map.erase(MDL_context_backup_key(key, keylen));
++ m_backup_map.erase(MDL_context_backup_key(key, key + keylen));
+ }
diff --git a/databases/xtrabackup80/files/patch-sql_mdl__context__backup.h b/databases/xtrabackup80/files/patch-sql_mdl__context__backup.h
new file mode 100644
index 000000000000..3c9fc1e28992
--- /dev/null
+++ b/databases/xtrabackup80/files/patch-sql_mdl__context__backup.h
@@ -0,0 +1,11 @@
+--- sql/mdl_context_backup.h.orig 2023-11-24 10:33:10 UTC
++++ sql/mdl_context_backup.h
+@@ -46,7 +46,7 @@ class MDL_context_backup_manager {
+ /**
+ Key for uniquely identifying MDL_context in the MDL_context_backup map.
+ */
+- typedef std::basic_string<uchar> MDL_context_backup_key;
++ typedef std::vector<uchar> MDL_context_backup_key;
+
+ class MDL_context_backup;
+
diff --git a/databases/xtrabackup80/files/patch-sql_range__optimizer_index__range__scan__plan.cc b/databases/xtrabackup80/files/patch-sql_range__optimizer_index__range__scan__plan.cc
new file mode 100644
index 000000000000..7dda71eef0e1
--- /dev/null
+++ b/databases/xtrabackup80/files/patch-sql_range__optimizer_index__range__scan__plan.cc
@@ -0,0 +1,39 @@
+--- sql/range_optimizer/index_range_scan_plan.cc.orig 2023-11-24 10:33:10 UTC
++++ sql/range_optimizer/index_range_scan_plan.cc
+@@ -1015,11 +1015,11 @@ static bool null_part_in_key(KEY_PART *key_part, const
+ return false;
+ }
+
+-// TODO(sgunders): This becomes a bit simpler with C++20's string_view
+-// constructors.
+-static inline std::basic_string_view<uchar> make_string_view(const uchar *start,
+- const uchar *end) {
+- return {start, static_cast<size_t>(end - start)};
++static inline bool equal(const uchar *start1, const uchar *end1,
++ const uchar *start2, const uchar *end2) {
++ auto diff1 = end1 - start1;
++ auto diff2 = end2 - start2;
++ return diff1 == diff2 && memcmp(start1, start2, diff1) == 0;
+ }
+
+ /**
+@@ -1082,8 +1082,7 @@ static bool get_ranges_from_tree_given_base(
+ node->next_key_part->type == SEL_ROOT::Type::KEY_RANGE &&
+ node->next_key_part->root->part == part + 1) {
+ if (node->min_flag == 0 && node->max_flag == 0 &&
+- make_string_view(min_key, tmp_min_key) ==
+- make_string_view(max_key, tmp_max_key)) {
++ equal(min_key, tmp_min_key, max_key, tmp_max_key)) {
+ // This range was an equality predicate, and we have more
+ // keyparts to scan, so use its range as a base for ranges on
+ // the next keypart(s). E.g. if we have (a = 3) on this keypart,
+@@ -1159,8 +1158,7 @@ static bool get_ranges_from_tree_given_base(
+ else
+ flag |= NO_MAX_RANGE;
+ }
+- if (flag == 0 && make_string_view(base_min_key, tmp_min_key) ==
+- make_string_view(base_max_key, tmp_max_key)) {
++ if (flag == 0 && equal(base_min_key, tmp_min_key, base_max_key, tmp_max_key)) {
+ flag |= EQ_RANGE;
+ /*
+ Note that keys which are extended with PK parts have no
diff --git a/databases/xtrabackup80/files/patch-sql_rpl__log__encryption.cc b/databases/xtrabackup80/files/patch-sql_rpl__log__encryption.cc
new file mode 100644
index 000000000000..3acbfdd9b46c
--- /dev/null
+++ b/databases/xtrabackup80/files/patch-sql_rpl__log__encryption.cc
@@ -0,0 +1,143 @@
+--- sql/rpl_log_encryption.cc.orig 2023-11-24 10:33:10 UTC
++++ sql/rpl_log_encryption.cc
+@@ -212,7 +212,7 @@ bool Rpl_encryption::recover_master_key() {
+ Rpl_encryption_header::seqno_to_key_id(m_master_key_seqno);
+ auto master_key =
+ get_key(m_master_key.m_id, Rpl_encryption_header::get_key_type());
+- m_master_key.m_value.assign(master_key.second);
++ m_master_key.m_value = master_key.second;
+ /* No keyring error */
+ if (master_key.first == Keyring_status::KEYRING_ERROR_FETCHING) goto err1;
+ }
+@@ -289,7 +289,7 @@ bool Rpl_encryption::recover_master_key() {
+
+ if (new_master_key.first == Keyring_status::SUCCESS) {
+ m_master_key.m_id = new_master_key_id;
+- m_master_key.m_value.assign(new_master_key.second);
++ m_master_key.m_value = new_master_key.second;
+ if (new_master_key_seqno.second > m_master_key_seqno &&
+ new_master_key_seqno.second > old_master_key_seqno.second) {
+ if (m_master_key_seqno > 0) {
+@@ -379,8 +379,8 @@ std::pair<Rpl_encryption::Keyring_status, Key_string>
+ reinterpret_cast<unsigned char *>(std::get<1>(tuple));
+ first[0] = ~(first[0]);
+ });
+- key_str.append(reinterpret_cast<unsigned char *>(std::get<1>(tuple)),
+- std::get<2>(tuple));
++ auto *first = reinterpret_cast<unsigned char *>(std::get<1>(tuple));
++ key_str.insert(key_str.end(), first, first + std::get<2>(tuple));
+ my_free(std::get<1>(tuple));
+ }
+
+@@ -395,7 +395,7 @@ std::pair<Rpl_encryption::Keyring_status, Key_string>
+ if (pair.first == Keyring_status::SUCCESS) {
+ DBUG_EXECUTE_IF("corrupt_replication_encryption_key_size",
+ { pair.second.resize(key_size / 2); });
+- if (pair.second.length() != key_size)
++ if (pair.second.size() != key_size)
+ pair.first = Keyring_status::UNEXPECTED_KEY_SIZE;
+ }
+ return pair;
+@@ -449,7 +449,7 @@ bool Rpl_encryption::enable_for_xtrabackup() {
+ Rpl_encryption_header::seqno_to_key_id(m_master_key_seqno);
+ auto master_key =
+ get_key(m_master_key.m_id, Rpl_encryption_header::get_key_type());
+- m_master_key.m_value.assign(master_key.second);
++ m_master_key.m_value = master_key.second;
+ /* No keyring error */
+ if (master_key.first == Keyring_status::KEYRING_ERROR_FETCHING) res = true;
+ }
+@@ -770,7 +770,7 @@ Rpl_encryption::get_seqno_from_keyring(std::string key
+ auto fetched_key = get_key(key_id, SEQNO_KEY_TYPE, SEQNO_KEY_LENGTH);
+ uint32_t seqno = 0;
+ if (fetched_key.first == Keyring_status::SUCCESS) {
+- const void *key = fetched_key.second.c_str();
++ const void *key = fetched_key.second.data();
+ memcpy(&seqno, key, sizeof(seqno));
+ seqno = le32toh(seqno);
+ }
+@@ -975,7 +975,7 @@ bool Rpl_encryption::generate_master_key_on_keyring(ui
+
+ /* Store the generated key as the new master key */
+ m_master_key.m_id = key_id;
+- m_master_key.m_value.assign(pair.second);
++ m_master_key.m_value = pair.second;
+
+ return false;
+ }
+@@ -1078,12 +1078,12 @@ bool Rpl_encryption_header_v1::serialize(Basic_ostream
+
+ assert(m_encrypted_password.length() == PASSWORD_FIELD_SIZE);
+ *ptr++ = ENCRYPTED_FILE_PASSWORD;
+- memcpy(ptr, m_encrypted_password.data(), m_encrypted_password.length());
++ memcpy(ptr, m_encrypted_password.data(), m_encrypted_password.size());
+ ptr += PASSWORD_FIELD_SIZE;
+
+ assert(m_iv.length() == IV_FIELD_SIZE);
+ *ptr++ = IV_FOR_FILE_PASSWORD;
+- memcpy(ptr, m_iv.data(), m_iv.length());
++ memcpy(ptr, m_iv.data(), m_iv.size());
+
+ bool res = DBUG_EVALUATE_IF("fail_to_serialize_encryption_header", true,
+ ostream->write(header, HEADER_SIZE));
+@@ -1138,13 +1138,13 @@ bool Rpl_encryption_header_v1::deserialize(Basic_istre
+ reinterpret_cast<const unsigned char *>(
+ reader.ptr(PASSWORD_FIELD_SIZE));
+ if (!reader.has_error())
+- m_encrypted_password.assign(password_ptr, PASSWORD_FIELD_SIZE);
++ m_encrypted_password.assign(password_ptr, password_ptr + PASSWORD_FIELD_SIZE);
+ break;
+ }
+ case IV_FOR_FILE_PASSWORD: {
+ const unsigned char *iv_ptr =
+ reinterpret_cast<const unsigned char *>(reader.ptr(IV_FIELD_SIZE));
+- if (!reader.has_error()) m_iv.assign(iv_ptr, IV_FIELD_SIZE);
++ if (!reader.has_error()) m_iv.assign(iv_ptr, iv_ptr + IV_FIELD_SIZE);
+ break;
+ }
+ default:
+@@ -1204,11 +1204,11 @@ Key_string Rpl_encryption_header_v1::decrypt_file_pass
+ unsigned char buffer[Aes_ctr::PASSWORD_LENGTH];
+
+ if (my_aes_decrypt(m_encrypted_password.data(),
+- m_encrypted_password.length(), buffer,
++ m_encrypted_password.size(), buffer,
+ error_and_key.second.data(),
+- error_and_key.second.length(), my_aes_256_cbc,
++ error_and_key.second.size(), my_aes_256_cbc,
+ m_iv.data(), false) != MY_AES_BAD_DATA)
+- file_password.append(buffer, Aes_ctr::PASSWORD_LENGTH);
++ file_password.insert(file_password.end(), buffer, buffer + Aes_ctr::PASSWORD_LENGTH);
+ }
+ }
+ #endif
+@@ -1239,16 +1239,16 @@ bool Rpl_encryption_header_v1::encrypt_file_password(K
+
+ /* Generate iv, it is a random string. */
+ error = my_rand_buffer(iv, Aes_ctr::AES_BLOCK_SIZE);
+- m_iv = Key_string(iv, sizeof(iv));
++ m_iv = Key_string(iv, iv + sizeof(iv));
+
+ /* Encrypt password */
+ if (!error) {
+- error = (my_aes_encrypt(password_str.data(), password_str.length(),
++ error = (my_aes_encrypt(password_str.data(), password_str.size(),
+ encrypted_password, master_key.m_value.data(),
+- master_key.m_value.length(), my_aes_256_cbc, iv,
++ master_key.m_value.size(), my_aes_256_cbc, iv,
+ false) == MY_AES_BAD_DATA);
+ m_encrypted_password =
+- Key_string(encrypted_password, sizeof(encrypted_password));
++ Key_string(encrypted_password, encrypted_password + sizeof(encrypted_password));
+ }
+
+ return error;
+@@ -1264,7 +1264,7 @@ Key_string Rpl_encryption_header_v1::generate_new_file
+ /* Generate password, it is a random string. */
+ error = my_rand_buffer(password, sizeof(password));
+ if (!error) {
+- password_str.append(password, sizeof(password));
++ password_str.insert(password_str.end(), password, password + sizeof(password));
+ }
+
+ if (error || encrypt_file_password(password_str) ||
diff --git a/databases/xtrabackup80/files/patch-sql_stream__cipher.cc b/databases/xtrabackup80/files/patch-sql_stream__cipher.cc
new file mode 100644
index 000000000000..e9b1b0e5a573
--- /dev/null
+++ b/databases/xtrabackup80/files/patch-sql_stream__cipher.cc
@@ -0,0 +1,11 @@
+--- sql/stream_cipher.cc.orig 2023-11-24 10:33:10 UTC
++++ sql/stream_cipher.cc
+@@ -45,7 +45,7 @@ bool Aes_ctr_cipher<TYPE>::open(const Key_string &pass
+ m_header_size = header_size;
+ #ifdef HAVE_BYTESTOKEY_SHA512_HANDLING
+ if (EVP_BytesToKey(Aes_ctr::get_evp_cipher(), Aes_ctr::get_evp_md(), nullptr,
+- password.data(), password.length(), 1, m_file_key,
++ password.data(), password.size(), 1, m_file_key,
+ m_iv) == 0)
+ return true;
+ #else
diff --git a/databases/xtrabackup80/files/patch-sql_stream__cipher.h b/databases/xtrabackup80/files/patch-sql_stream__cipher.h
new file mode 100644
index 000000000000..dfef2c2b2246
--- /dev/null
+++ b/databases/xtrabackup80/files/patch-sql_stream__cipher.h
@@ -0,0 +1,20 @@
+--- sql/stream_cipher.h.orig 2023-11-24 10:33:10 UTC
++++ sql/stream_cipher.h
+@@ -25,7 +25,7 @@
+
+ #include <openssl/evp.h>
+ #include <memory>
+-#include <string>
++#include <vector>
+
+ /**
+ @file stream_cipher.h
+@@ -34,7 +34,7 @@
+ binary log files.
+ */
+
+-typedef std::basic_string<unsigned char> Key_string;
++typedef std::vector<unsigned char> Key_string;
+
+ /**
+ @class Stream_cipher
diff --git a/databases/xtrabackup80/files/patch-storage_innobase_log__log0recv.cc b/databases/xtrabackup80/files/patch-storage_innobase_log__log0recv.cc
deleted file mode 100644
index 4f6c96125878..000000000000
--- a/databases/xtrabackup80/files/patch-storage_innobase_log__log0recv.cc
+++ /dev/null
@@ -1,29 +0,0 @@
---- storage/innobase/log/log0recv.cc.orig 2023-11-24 13:33:10.000000000 +0300
-+++ storage/innobase/log/log0recv.cc 2024-02-16 15:16:49.528584000 +0300
-@@ -3702,7 +3702,7 @@
- #else /* !UNIV_HOTBACKUP */
- bool meb_scan_log_recs(
- #endif /* !UNIV_HOTBACKUP */
-- size_t *max_memory, const byte *buf, size_t len,
-+ size_t max_memory, const byte *buf, size_t len,
- lsn_t start_lsn, lsn_t *read_upto_lsn,
- lsn_t to_lsn) {
- const byte *log_block = buf;
-@@ -3975,7 +3975,7 @@
- recv_parse_log_recs();
-
- #ifndef UNIV_HOTBACKUP
-- if (recv_heap_used() > *max_memory) {
-+ if (recv_heap_used() > max_memory) {
- recv_apply_hashed_log_recs(log, false);
- }
- #endif /* !UNIV_HOTBACKUP */
-@@ -4161,7 +4161,7 @@
- break;
- }
-
-- finished = recv_scan_log_recs(log, &max_mem, log.buf, end_lsn - start_lsn,
-+ finished = recv_scan_log_recs(log, max_mem, log.buf, end_lsn - start_lsn,
- start_lsn, &log.m_scanned_lsn, to_lsn);
-
- start_lsn = end_lsn;
diff --git a/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_src_keyring__plugins.cc b/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_src_keyring__plugins.cc
new file mode 100644
index 000000000000..5a1124f11f87
--- /dev/null
+++ b/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_src_keyring__plugins.cc
@@ -0,0 +1,11 @@
+--- storage/innobase/xtrabackup/src/keyring_plugins.cc.orig 2023-11-24 10:33:10 UTC
++++ storage/innobase/xtrabackup/src/keyring_plugins.cc
+@@ -890,7 +890,7 @@ bool xb_binlog_password_reencrypt(const char *binlog_f
+ return (false);
+ }
+
+- Key_string file_password(key, Encryption::KEY_LEN);
++ Key_string file_password(key, key + Encryption::KEY_LEN);
+ header->encrypt_file_password(file_password);
+
+ IO_CACHE_ostream ostream;
diff --git a/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_src_utils.cc b/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_src_utils.cc
deleted file mode 100644
index 34feee9867f6..000000000000
--- a/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_src_utils.cc
+++ /dev/null
@@ -1,59 +0,0 @@
---- storage/innobase/xtrabackup/src/utils.cc.orig 2023-01-30 20:34:34.000000000 +0700
-+++ storage/innobase/xtrabackup/src/utils.cc 2023-02-25 02:50:31.899561000 +0700
-@@ -21,6 +21,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Bos
-
- #ifdef __APPLE__
- #include <mach/mach_host.h>
-+#endif
-+#if defined(__APPLE__) || defined(__FreeBSD__)
- #include <sys/sysctl.h>
- #else
- #include <proc/sysinfo.h>
-@@ -112,12 +114,14 @@ unsigned long get_version_number(std::string version_s
- return major * 10000 + minor * 100 + version;
- }
-
--#ifdef __APPLE__
-+#if defined(__APPLE__) || defined(__FreeBSD__)
- unsigned long host_total_memory() {
- unsigned long total_mem = sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE);
- return total_mem;
- }
-+#endif
-
-+#ifdef __APPLE__
- unsigned long host_free_memory() {
- unsigned long total_mem = host_total_memory();
- int64_t used_mem;
-@@ -138,6 +142,31 @@ unsigned long host_free_memory() {
- return total_mem - (unsigned long)used_mem;
- }
- return 0;
-+}
-+#elif defined(__FreeBSD__)
-+unsigned long host_free_memory() {
-+ static int mib_free[2] = { -1, 0 };
-+ static int mib_inactive[2] = { -1, 0 };
-+ size_t miblen = sizeof(mib_free) / sizeof(mib_free[0]);
-+ uint32_t free_pages, inactive_pages;
-+ size_t sz = sizeof(free_pages);
-+
-+ free_pages = inactive_pages = 0;
-+
-+ if (mib_free[0] < 0 &&
-+ sysctlnametomib("vm.stats.vm.v_free_count", mib_free, &miblen) < 0)
-+ mib_free[0] = 0;
-+ if (mib_inactive[0] < 0 &&
-+ sysctlnametomib("vm.stats.vm.v_inactive_count", mib_inactive, &miblen) < 0)
-+ mib_inactive[0] = 0;
-+
-+ if (mib_free[0] &&
-+ sysctl(mib_free, 2, &free_pages, &sz, NULL, 0) < 0)
-+ free_pages = 0; /* should not happen */
-+ if (mib_inactive[0] && sysctl(mib_inactive, 2, &inactive_pages, &sz, NULL, 0) < 0)
-+ inactive_pages = 0; /* should not happen, too */
-+
-+ return (free_pages + inactive_pages) * sysconf(_SC_PAGESIZE);
- }
- #else
- unsigned long host_total_memory() {
diff --git a/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_xbcloud__osenv.sh b/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_xbcloud__osenv.sh
deleted file mode 100644
index 37b1e45afc66..000000000000
--- a/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_xbcloud__osenv.sh
+++ /dev/null
@@ -1,15 +0,0 @@
---- storage/innobase/xtrabackup/xbcloud_osenv.sh.orig 2020-08-28 21:02:32 UTC
-+++ storage/innobase/xtrabackup/xbcloud_osenv.sh
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- # Copyright (C) 2015 Percona LLC and/or its affiliates.
- # This software comes with ABSOLUTELY NO WARRANTY. This is free software,
-@@ -105,5 +105,5 @@ fi
-
- # do it
- # shellcheck disable=SC2086,SC2048
--${XBCLOUD_BIN} $* ${XBCLOUD_OS_ENV}
-+${XBCLOUD_BIN} "$@" ${XBCLOUD_OS_ENV}
-
diff --git a/databases/xtrabackup80/files/patch-storage_temptable_include_temptable_lock_free_type.h b/databases/xtrabackup80/files/patch-storage_temptable_include_temptable_lock_free_type.h
deleted file mode 100644
index a229da5b0adc..000000000000
--- a/databases/xtrabackup80/files/patch-storage_temptable_include_temptable_lock_free_type.h
+++ /dev/null
@@ -1,17 +0,0 @@
---- storage/temptable/include/temptable/lock_free_type.h.orig 2020-06-16 16:31:03 UTC
-+++ storage/temptable/include/temptable/lock_free_type.h
-@@ -31,6 +31,14 @@ Lock-free type (selection) implementation. */
-
- #include "storage/temptable/include/temptable/constants.h"
-
-+#if defined(__i386__) //&& defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)
-+/* Fix for clang setting __GCC_ATOMIC_LLONG_LOCK_FREE incorrectly for x86
-+ * https://llvm.org/bugs/show_bug.cgi?id=19355
-+ */
-+#undef ATOMIC_LLONG_LOCK_FREE
-+#define ATOMIC_LLONG_LOCK_FREE 2
-+#endif
-+
- namespace temptable {
-
- /** Enum class describing alignment-requirements. */
diff --git a/databases/xtrabackup80/files/patch-utils.cc b/databases/xtrabackup80/files/patch-utils.cc
new file mode 100644
index 000000000000..7cc27bc79dd7
--- /dev/null
+++ b/databases/xtrabackup80/files/patch-utils.cc
@@ -0,0 +1,83 @@
+--- storage/innobase/xtrabackup/src/utils.cc.orig 2025-06-26 11:44:12.347914000 +0300
++++ storage/innobase/xtrabackup/src/utils.cc 2025-06-26 11:47:31.087768000 +0300
+@@ -19,16 +19,6 @@
+ #include <my_default.h>
+ #include <mysqld.h>
+
+-#ifdef __APPLE__
+-#include <mach/mach_host.h>
+-#include <sys/sysctl.h>
+-#else
+-#ifdef HAVE_PROCPS_V3
+-#include <proc/sysinfo.h>
+-#else
+-#include <libproc2/meminfo.h>
+-#endif // HAVE_PROCPS_V3
+-#endif // __APPLE__
+ #include <boost/uuid/uuid.hpp> // uuid class
+ #include <boost/uuid/uuid_generators.hpp> // generators
+ #include <boost/uuid/uuid_io.hpp> // streaming operators etc.
+@@ -116,62 +106,13 @@
+ return major * 10000 + minor * 100 + version;
+ }
+
+-#ifdef __APPLE__
+ unsigned long host_total_memory() {
+- unsigned long total_mem = sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE);
+- return total_mem;
++ return 0;
+ }
+
+ unsigned long host_free_memory() {
+- unsigned long total_mem = host_total_memory();
+- int64_t used_mem;
+- vm_size_t page_size;
+- mach_msg_type_number_t count;
+- vm_statistics_data_t vm_stats;
+-
+- // Get used memory
+- mach_port_t host = mach_host_self();
+- count = sizeof(vm_stats) / sizeof(natural_t);
+- if (KERN_SUCCESS == host_page_size(host, &page_size) &&
+- KERN_SUCCESS ==
+- host_statistics(host, HOST_VM_INFO, (host_info_t)&vm_stats, &count)) {
+- used_mem = ((int64_t)vm_stats.active_count + (int64_t)vm_stats.wire_count) *
+- (int64_t)page_size;
+-
+- ut_a(total_mem >= (unsigned long)used_mem);
+- return total_mem - (unsigned long)used_mem;
+- }
+ return 0;
+ }
+-#else
+-unsigned long host_total_memory() {
+-#ifdef HAVE_PROCPS_V3
+- meminfo();
+- return kb_main_total * 1024;
+-#else
+- struct meminfo_info *mem_info;
+- if (procps_meminfo_new(&mem_info) < 0) {
+- return 0;
+- }
+-
+- return MEMINFO_GET(mem_info, MEMINFO_MEM_TOTAL, ul_int) * 1024;
+-#endif // HAVE_PROCPS_V3
+-}
+-
+-unsigned long host_free_memory() {
+-#ifdef HAVE_PROCPS_V3
+- meminfo();
+- return kb_main_available * 1024;
+-#else
+- struct meminfo_info *mem_info;
+- if (procps_meminfo_new(&mem_info) < 0) {
+- return 0;
+- }
+-
+- return MEMINFO_GET(mem_info, MEMINFO_MEM_AVAILABLE, ul_int) * 1024;
+-#endif // HAVE_PROCPS_V3
+-}
+-#endif
+
+ std::string generate_uuid() {
+ boost::uuids::uuid uuid = gen();