Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Jan 2026 20:02:02 +0100
From:      Jochen Neumeister <joneum@FreeBSD.org>
To:        Dimitry Andric <dim@FreeBSD.org>, ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   Re: git: 12e52077d3db - main - databases/mysql80-server: fix build with libc++ 20 and higher
Message-ID:  <2fd28e7e-d753-4c0c-8e31-35f62f350f29@FreeBSD.org>
In-Reply-To: <697e4cda.24c69.1758c44a@gitrepo.freebsd.org>

index | next in thread | previous in thread | raw e-mail



Am 31.01.26 um 19:41 schrieb Dimitry Andric:
> The branch main has been updated by dim:
> 
> URL: https://cgit.FreeBSD.org/ports/commit/?id=12e52077d3db077a821277d20d8c8c4310174a1b
> 
> commit 12e52077d3db077a821277d20d8c8c4310174a1b
> Author:     Dimitry Andric <dim@FreeBSD.org>
> AuthorDate: 2026-01-19 18:46:29 +0000
> Commit:     Dimitry Andric <dim@FreeBSD.org>
> CommitDate: 2026-01-31 18:41:22 +0000
> 
>      databases/mysql80-server: fix build with libc++ 20 and higher
>      
>      With libc++ 20 and higher, databases/mysql80-server fails to compile,
>      resulting in errors similar to:
>      
>          In file included from /wrkdirs/usr/ports/databases/mysql80-server/work/mysql-8.0.44/router/src/harness/src/stdx/filesystem.cc:40:
>          /wrkdirs/usr/ports/databases/mysql80-server/work/mysql-8.0.44/router/src/harness/src/../include/mysql/harness/stdx/expected.h:74:8: error: 'is_default_constructible' cannot be specialized: Users are not allowed to specialize this standard library entity [-Winvalid-specialization]
>             74 | struct is_default_constructible<std::unique_ptr<T, void (*)(T *)>>
>                |        ^
>          /usr/include/c++/v1/__type_traits/is_constructible.h:49:8: note: marked '_Clang::no_specializations' here
>             49 | struct _LIBCPP_NO_SPECIALIZATIONS is_default_constructible : integral_constant<bool, __is_constructible(_Tp)> {};
>                |        ^
>          /usr/include/c++/v1/__config:1167:9: note: expanded from macro '_LIBCPP_NO_SPECIALIZATIONS'
>           1167 |       [[_Clang::__no_specializations__("Users are not allowed to specialize this standard library entity")]]
>                |         ^
>      
>      This is due to a workaround for a std::unique_ptr problem which is only
>      applicable to gcc before 7.1, so the whole workaround can be deleted,
>      which fixes the problem.
>      
>      See also: https://bugs.mysql.com/bug.php?id=119238
>      
>      PR:             292589
>      Approved by:    maintainer timeout (2 weeks)

Bug opened on January 19, 2026.
Please explain how you arrived at a maintainer timeout of two weeks.

>      MFH:            2026Q1
> ---
>   ...c_harness_include_mysql_harness_stdx_expected.h | 29 ++++++++++++++++++++++
>   1 file changed, 29 insertions(+)
> 
> diff --git a/databases/mysql80-server/files/patch-router_src_harness_include_mysql_harness_stdx_expected.h b/databases/mysql80-server/files/patch-router_src_harness_include_mysql_harness_stdx_expected.h
> new file mode 100644
> index 000000000000..5dc97a85bb45
> --- /dev/null
> +++ b/databases/mysql80-server/files/patch-router_src_harness_include_mysql_harness_stdx_expected.h
> @@ -0,0 +1,29 @@
> +--- router/src/harness/include/mysql/harness/stdx/expected.h.orig	2025-09-24 11:00:44 UTC
> ++++ router/src/harness/include/mysql/harness/stdx/expected.h
> +@@ -55,26 +55,6 @@
> +   };
> + #endif
> +
> +-/* workaround default-constructor of std::unique_ptr<T, D> triggering a
> +- * static-exception when it is tested for "std::is_default_constructible"
> +- *
> +- * The problem exists in GCC's libstdc++ up to 7.0.0 and is tracked by C++ std
> +- * as DR 2801
> +- *
> +- *   http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2801
> +- *
> +- * It is fixed in GCC-7.1.0 and later:
> +- *
> +- * https://gcc.gnu.org/legacy-ml/gcc-cvs/2017-01/msg00068.html
> +- */
> +-
> +-#include <memory>
> +-namespace std {
> +-template <class T>
> +-struct is_default_constructible<std::unique_ptr<T, void (*)(T *)>>
> +-    : std::false_type {};
> +-}  // namespace std
> +-
> + namespace stdx {
> +
> + // inplace construction of unexpected values.
> 
> 



home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2fd28e7e-d753-4c0c-8e31-35f62f350f29>