Date: Sun, 6 Oct 2024 18:59:09 -0700 From: Mark Millard <marklmi@yahoo.com> To: Dimitry Andric <dim@FreeBSD.org>, FreeBSD Mailing List <freebsd-ports@freebsd.org> Cc: xavier@groumpf.org Subject: Re: devel/qt6-tools does not build with LLVM 19 Message-ID: <9CB93865-26EA-4741-8D0E-E6236B587057@yahoo.com> References: <9CB93865-26EA-4741-8D0E-E6236B587057.ref@yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Dimitry Andric <dim_at_FreeBSD.org> wrote on Date: Sun, 06 Oct 2024 21:23:23 UTC : > On 6 Oct 2024, at 20:44, Xavier Humbert <xavier@groumpf.org> wrote: > >=20 > > I use > > DEFAULT_VERSIONS+=3Dllvm=3D19 > > in my /etc/make.conf. > >=20 > > devel/qt6-tools does not build : > >=20 > > = /usr/ports/devel/qt6-tools/work/qttools-everywhere-src-6.7.3/src/linguist/= lupdate/clangtoolastreader.cpp:785:73: error: no member named 'getName' = in 'clang::FileEntry' > > 785 | if = (!LupdatePrivate::isFileSignificant(fullLocation.getFileEntry()->getName()= .str())) > >=20 > > Reverting back to > > DEFAULT_VERSIONS+=3Dllvm=3D18 > >=20 > > makes it compile fine > >=20 > > Read on Chromium forum, same error, reason is : > >=20 > >> commit 1b04e6d4a314cf677b5320b26f2746733b11152c > >> Author: Hans Wennborg <hans@chromium.org> > >> Date: Thu Jan 25 13:36:37 2024 > >>=20 > >> [clang] Remove use of FileEntry::getName() > >>=20 > >> That method was dropped recently. Instead, we should get the name = via > >> the new FileEntryRef class. That one has existed for a while, so = this > >> code works for both pinned and tip-of-tree Clang. >=20 > It's better to import the upstream fix, obviously. I have been fixing > llvm 19 related issues such as https://bugs.freebsd.org/281474, but = this > looks a little different. It's a bit strange that this error did not > come up during the exp-run for https://bugs.freebsd.org/280562 ? Note the removal of getName : # diff -u = /usr/main-src/contrib/llvm-project/clang/include/clang/Basic/FileEntry.h = /usr/local/llvm19/include/clang/Basic/FileEntry.h --- = /usr/main-src/contrib/llvm-project/clang/include/clang/Basic/FileEntry.h = 2024-04-07 03:32:58.854825000 +0000 +++ /usr/local/llvm19/include/clang/Basic/FileEntry.h 2024-09-17 = 11:26:36.000000000 +0000 @@ -317,19 +317,9 @@ /// The file content, if it is owned by the \p FileEntry. std::unique_ptr<llvm::MemoryBuffer> Content; - - // First access name for this FileEntry. - // - // This is Optional only to allow delayed construction (FileEntryRef = has no - // default constructor). It should always have a value in practice. - // - // TODO: remove this once everyone that needs a name uses = FileEntryRef. - OptionalFileEntryRef LastRef; public: ~FileEntry(); - LLVM_DEPRECATED("Use FileEntryRef::getName() instead.", "") - StringRef getName() const { return LastRef->getName(); } StringRef tryGetRealPathName() const { return RealPathName; } off_t getSize() const { return Size; } In other words: /usr/local/llvm19/include/clang/Basic/FileEntry.h is based on llvm19's libc++ and llvm19 instead of being based on the system's llvm18 based libc++. So the context with devel/llvm19 is an example of where: /usr/local/llvm19/include/clang/ . . . vs. the system's: /usr/include/c++/v1/ are both used for devel/llvm19 but are not independent and are in fact mismatched in at least some ways at this point (mixing 19 and 18 library code). devel/llvm19 does not manage to only update the language handling but leave the library handling as it is for the system llvm's libc++ and llvm (currently 18 based). In other words, for how things are handled by FreeBSD: This is an item for waiting until FreeBSD is itself based on llvm19, including the libc++ from llvm19! FYI . . . I have a somewhat older /usr/ports/ tree and it shows the problem when I try a poudriere-devel based build: . . . port directory: /usr/ports/devel/qt6-tools package name: qt6-tools-6.7.2_1 building for: FreeBSD amd64optb_ZFS 15.0-CURRENT FreeBSD 15.0-CURRENT = amd64 maintained by: kde@FreeBSD.org port version: 6.7.2 port revision: 1 . . . =3D=3D=3D> Installing existing package /packages/All/llvm19-19.1.0.pkg [amd64optb_ZFS] Installing llvm19-19.1.0... [amd64optb_ZFS] `-- Installing libedit-3.1.20240808,1... [amd64optb_ZFS] `-- Extracting libedit-3.1.20240808,1: .......... done [amd64optb_ZFS] `-- Installing lua53-5.3.6_1... [amd64optb_ZFS] `-- Extracting lua53-5.3.6_1: .......... done [amd64optb_ZFS] `-- Installing perl5-5.36.3_2... [amd64optb_ZFS] `-- Extracting perl5-5.36.3_2: .......... done [amd64optb_ZFS] Extracting llvm19-19.1.0: .......... done . . . = /wrkdirs/usr/ports/devel/qt6-tools/work/qttools-everywhere-src-6.7.2/src/l= inguist/lupdate/clangtoolastreader.cpp:785:73: error: no member named = 'getName' in 'clang::FileEntry' 785 | if = (!LupdatePrivate::isFileSignificant(fullLocation.getFileEntry()->getName()= .str())) | = ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 1 error generated. . . . For reference: # ~/fbsd-based-on-what-commit.sh -C /usr/ports/ 3ec21e417cd5 (HEAD -> main, freebsd/main, freebsd/HEAD) java/eclipse: = Remove unnecessary *.so files Author: Norbert Grundmann <ngrundmann@gmx.de> Commit: Vladimir Druzenko <vvd@FreeBSD.org> CommitDate: 2024-09-20 00:14:47 +0000 branch: main merge-base: 3ec21e417cd5752c96b88587a5a605567ba5cd19 merge-base: CommitDate: 2024-09-20 00:14:47 +0000 n679096 (--first-parent --count for merge-base) # uname -apKU FreeBSD 7950X3D-ZFS 15.0-CURRENT FreeBSD 15.0-CURRENT #147 = main-n272664-149e1af6ae49-dirty: Sun Oct 6 02:05:51 UTC 2024 = root@7950X3D-ZFS:/usr/obj/BUILDs/main-amd64-nodbg-clang/usr/main-src/amd64= .amd64/sys/GENERIC-NODBG amd64 amd64 1500024 1500024 =3D=3D=3D Mark Millard marklmi at yahoo.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9CB93865-26EA-4741-8D0E-E6236B587057>