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:00:56 UTC
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)