Re: Why lang/gcc14-devel builds are failing on the build servers: needs USES= compiler:c++14-lang (or higher) instead of compiler:c++11-lang

From: Nuno Teixeira <eduardo_at_freebsd.org>
Date: Thu, 08 Feb 2024 07:40:17 UTC
USES compiler is somehow deprecated as clang and gcc on base and ports
supports capable compiler described in handbook:
https://docs.freebsd.org/en/books/porters-handbook/book/#uses-compiler

Mark Millard <marklmi@yahoo.com> escreveu (quinta, 8/02/2024 à(s) 05:52):

> The error on the FreeBSD build servers:
>
> QUOTE
> /wrkdirs/usr/ports/lang/gcc14-devel/work/gcc-14-20240114/gcc/config/aarch64/aarch64.cc:13095:50:
> error: constexpr variable 'tiles' must be initialized by a constant
> expression
> 13095 | static constexpr std::pair<unsigned int, char> tiles[] = {
> | ^ ~
> 13096 | { 0xff, 'b' },
> | ~~~~~~~~~~~~~~
> 13097 | { 0x55, 'h' },
> | ~~~~~~~~~~~~~~
> 13098 | { 0x11, 's' },
> | ~~~~~~~~~~~~~~
> 13099 | { 0x01, 'd' }
> | ~~~~~~~~~~~~~
> 13100 | };
> | ~
> /wrkdirs/usr/ports/lang/gcc14-devel/work/gcc-14-20240114/gcc/config/aarch64/aarch64.cc:13096:5:
> note: non-constexpr constructor 'pair<int, char, nullptr>' cannot be used
> in a constant expression
> 13096 | { 0xff, 'b' },
> | ^
> /usr/include/c++/v1/__utility/pair.h:225:5: note: declared here
> 225 | pair(_U1&& __u1, _U2&& __u2)
> END QUOTE
>
> is because C++11 did not have pair constructors being constexpr.
> C++14 (and later) does. Yet lang/gcc14-devel 's Makefile says:
>
> USES=           compiler:c++11-lang cpe gmake iconv libtool makeinfo perl5
> tar:xz
>
>
> ===
> Mark Millard
> marklmi at yahoo.com
>
>
>

-- 
Nuno Teixeira
FreeBSD Committer (ports)