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 10:03:11 UTC
(...)

This conversation related to "compiler:c++11-lang" on lang/gcc14-devel

Nuno Teixeira <eduardo@freebsd.org> escreveu (quinta, 8/02/2024 à(s) 10:00):

> Ok, let's try other way:
>
> Suppose that port compiles with c++17. Do you need to set
> "compiler:c++17-lang' capability?
> No, base clang supports it. Same for the other capabilities listed in
> porter's handbook.
>
> Dimitry Andric <dim@freebsd.org> escreveu (quinta, 8/02/2024 à(s) 08:39):
>
>> Deprecated? It's essential to figure out the compiler type and version,
>> if you need that in a port Makefile!
>>
>> How are you going to do that otherwise? If you don't set USES=compiler,
>> at the least, COMPILER_TYPE and _VERSION aren't even defined...
>>
>> -Dimitry
>>
>> > On 8 Feb 2024, at 08:40, Nuno Teixeira <eduardo@freebsd.org> wrote:
>> >
>> > 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)
>>
>>
>
> --
> Nuno Teixeira
> FreeBSD Committer (ports)
>


-- 
Nuno Teixeira
FreeBSD Committer (ports)