nodejs 26.8.2 fails to build with clang/LLVM
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 122k
- Forks
- 37.3k
- Ø Merge
- 4 T. 2 Std.
- Gemergte PRs (30 T.)
- 283
Beschreibung
Version
26.8.2
Platform
Linux (Gentoo with LLVM profile)
Subsystem
LIEF (or forzen)
What steps will reproduce the bug?
- Build nodejs version 26.8.2 with clang
- Observe failure
How often does it reproduce? Is there a required condition?
Always while building with clang
What is the expected behavior? Why is that the expected behavior?
Successful build with clang
What do you see instead?
Build failure while building with Clang
A snippet from the build log:
...
In file included from ../../deps/LIEF/src/platforms/android/version.cpp:17:
In file included from ../../deps/LIEF/src/frozen.hpp:22:
../../deps/LIEF/third-party/frozen/include/frozen/map.h:40:20: error: implicit instantiation of undefined template 'std::less<LIEF::Android::ANDROID_VERSIONS>'
40 | Comparator const comparator_;
| ^
../../deps/LIEF/third-party/frozen/include/frozen/map.h:75:29: note: in instantiation of template class 'frozen::impl::CompareKey<std::less<LIEF::Android::ANDROID_VERSIONS>>' requested here
75 | impl::CompareKey<Compare> less_than_;
| ^
../../deps/LIEF/src/platforms/android/version.cpp:22:47: note: in instantiation of template class 'frozen::map<LIEF::Android::ANDROID_VERSIONS, const char *, 8>' requested here
22 | CONST_MAP(ANDROID_VERSIONS, const char*, 8) version2code {
| ^
/usr/include/c++/v1/__fwd/functional.h:25:8: note: template is declared here
25 | struct less;
| ^
In file included from ../../deps/LIEF/src/platforms/android/version.cpp:17:
In file included from ../../deps/LIEF/src/frozen.hpp:22:
../../deps/LIEF/third-party/frozen/include/frozen/map.h:110:20: error: implicit instantiation of undefined template 'std::less<LIEF::Android::ANDROID_VERSIONS>'
110 | : map{items, Compare{}} {}
| ^
../../deps/LIEF/src/platforms/android/version.cpp:22:47: note: in instantiation of member function 'frozen::map<LIEF::Android::ANDROID_VERSIONS, const char *, 8>::map' requested here
22 | CONST_MAP(ANDROID_VERSIONS, const char*, 8) version2code {
| ^
/usr/include/c++/v1/__fwd/functional.h:25:8: note: template is declared here
25 | struct less;
| ^
../../deps/LIEF/src/platforms/android/version.cpp:22:47: error: constexpr variable 'version2code' must be initialized by a constant expression
22 | CONST_MAP(ANDROID_VERSIONS, const char*, 8) version2code {
...
Additional information
I think this is due to stricter include requirements on clang
I was able to build by adding #include <functional> in deps/LIEF/third-party/frozen/include/frozen/map.h
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit deps/LIEF/third-party/frozen/include/frozen/map.h und reproduziere anschließend den Node.js 26.8.2-Build unter Linux mit Clang. Überprüfe die in der Fehlermeldung angegebene Standardbibliotheksabhängigkeit und verifiziere, dass der Build mit Clang ohne die Fehler zu undefiniertem std::less erfolgreich abgeschlossen wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp, linux, nodejs
- Bereich
- build-system, operating-systems
- Issue-Typ
- Bug
- Schwierigkeit
- 1/5
- Geschätzter Aufwand
- Unter einer Stunde
- Aktivitätsstatus
- Aktiv
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 88/100