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.
Created attachment 248100 [details] databases/mysql80-server: fix build with clang 16
Moin Dimitry, when the patch work, feel free to ship it :-)
(In reply to Jochen Neumeister from comment #2) It's the same fix that has already been used for bug bug 272295. The actual problem is that these ports carry an old copy of boost, while in the mean time boost has already fixed this issue. In any case, I built it with clang 18 and it works.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=bfdc368a6edddc2c8c305e60dd89c96d7ecb7fc2 commit bfdc368a6edddc2c8c305e60dd89c96d7ecb7fc2 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:02:03 +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 databases/mysql80-server/Makefile | 2 +- ...oost__1__77__0_boost_mpl_aux___integral__wrapper.hpp (new) | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-)
A commit in branch 2024Q1 references this bug: 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__1__77__0_boost_mpl_aux___integral__wrapper.hpp (new) | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-)