nodejs / nodejs/node

nodejs 26.8.2 fails to build with clang/LLVM

Aperta Adatta ai principianti
#66,076 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

build
Lingua principale
JavaScript
Stelle
122k
Fork
37.3k
Merge medio
4g 2h
PR unite (30g)
283

Descrizione

Version

26.8.2

Platform
Linux (Gentoo with LLVM profile)
Subsystem

LIEF (or forzen)

What steps will reproduce the bug?
  1. Build nodejs version 26.8.2 with clang
  2. 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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia da deps/LIEF/third-party/frozen/include/frozen/map.h, quindi riproduci la build di Node.js 26.8.2 su Linux con Clang. Controlla la dipendenza dalla libreria standard riportata nell'errore e verifica che la build venga completata correttamente con Clang senza gli errori relativi a std::less non definito.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp, linux, nodejs
Ambito
build-system, operating-systems
Tipo di issue
Bug
Difficoltà
1/5
Tempo stimato
Meno di un'ora
Stato di attività
Attiva
Chiarezza
Specificata chiaramente
Idoneità per principianti
88/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.