git: c64e355e6226 - 2024Q1 - databases/mysql80-server: fix build with clang 16

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Thu, 01 Feb 2024 19:06:22 UTC
The branch 2024Q1 has been updated by dim:

URL: https://cgit.FreeBSD.org/ports/commit/?id=c64e355e6226d1dd403874a0bc73ada0f13f8ca3

commit c64e355e6226d1dd403874a0bc73ada0f13f8ca3
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2024-01-16 11:45:17 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2024-02-01 19:06:06 +0000

    databases/mysql80-server: fix build with clang 16
    
    Similar to bug 272295, building databases/mysql80-server with clang 16
    or higher can result in an error:
    
      /wrkdirs/usr/ports/databases/mysql80-server/work/mysql-8.0.35/boost/boost_1_77_0/boost/mpl/aux_/integral_wrapper.hpp:73:31: error: integer value -1 is outside the valid range of values [0, 3] for the enumeration type 'udt_builtin_mixture_enum' [-Wenum-constexpr-conversion]
         73 |     typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
            |                               ^
      /wrkdirs/usr/ports/databases/mysql80-server/work/mysql-8.0.35/boost/boost_1_77_0/boost/mpl/aux_/static_cast.hpp:24:47: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST'
         24 | #   define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
            |                                               ^
    
    This is because the vendored copy of boost in mysql80-server is using
    undefined behavior in a possibly constexpr context.
    
    Fix this by unconditionally enabling the "boost workaround" for aux
    wrapper value types in integral_wrapper.hpp.
    
    PR:             276749
    Approved by:    joneum (maintainer)
    MFH:            2024Q1
    
    (cherry picked from commit bfdc368a6edddc2c8c305e60dd89c96d7ecb7fc2)
---
 databases/mysql80-server/Makefile                             |  2 +-
 ...oost_boost__1__77__0_boost_mpl_aux___integral__wrapper.hpp | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/databases/mysql80-server/Makefile b/databases/mysql80-server/Makefile
index e4bd7f2a9758..8053ff41f708 100644
--- a/databases/mysql80-server/Makefile
+++ b/databases/mysql80-server/Makefile
@@ -1,6 +1,6 @@
 PORTNAME?=		mysql
 PORTVERSION=		8.0.35
-PORTREVISION?=		0
+PORTREVISION?=		1
 CATEGORIES=		databases
 MASTER_SITES=		MYSQL/MySQL-8.0
 PKGNAMESUFFIX?=		80-server
diff --git a/databases/mysql80-server/files/patch-boost_boost__1__77__0_boost_mpl_aux___integral__wrapper.hpp b/databases/mysql80-server/files/patch-boost_boost__1__77__0_boost_mpl_aux___integral__wrapper.hpp
new file mode 100644
index 000000000000..66c430a4346f
--- /dev/null
+++ b/databases/mysql80-server/files/patch-boost_boost__1__77__0_boost_mpl_aux___integral__wrapper.hpp
@@ -0,0 +1,11 @@
+--- boost/boost_1_77_0/boost/mpl/aux_/integral_wrapper.hpp.orig	2021-08-05 09:42:13 UTC
++++ boost/boost_1_77_0/boost/mpl/aux_/integral_wrapper.hpp
+@@ -56,7 +56,7 @@ struct AUX_WRAPPER_NAME
+ // have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC),
+ // while some other don't like 'value + 1' (Borland), and some don't like
+ // either
+-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
++#if 1 //BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
+  private:
+     BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
+     BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));