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
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)