Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

v26.06.9 not compiling on FreeBSD 15.1 (ccan/ccan/asort/asort.h with a solution)

Aperta Adatta ai principianti
#9,616 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
66/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
c
Ambito
build-system

Direzione di ricerca

Il conflitto si trova in ccan/ccan/asort/asort.h, dove una dichiarazione locale di qsort_r collide con la macro definita da /usr/include/stdlib.h di FreeBSD 15.1. Inizia dal ramo della firma GNU di quell'header, poi riproduci il problema compilando ccan/ccan/asort/asort.c su FreeBSD (la regola del Makefile alla riga 1106 fallisce). È completato quando il file compila su FreeBSD 15.1 e continua a costruirsi su Linux, dove viene usata la dichiarazione GNU di qsort_r. Verifica la guardia __FreeBSD_version proposta dal segnalatore rispetto alla firma effettiva di FreeBSD prima di adottarla.

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

Descrizione

A recent change in ccan/ccan/asort/asort.h makes v26.06.9 not compilable on FreeBSD 15.1:

cc ccan/ccan/asort/asort.c
In file included from ccan/ccan/asort/asort.c:1:
ccan/ccan/asort/asort.h:30:6: error: expected identifier or '('
   30 | void qsort_r(void *base, size_t nmemb, size_t size,
      |      ^
/usr/include/stdlib.h:367:5: note: expanded from macro 'qsort_r'
  367 |     __generic(arg5, int (*)(void *, const void *, const void *),        \
      |     ^
/usr/include/sys/cdefs.h:228:2: note: expanded from macro '__generic'
  228 |         _Generic(expr, t: yes, default: no)
      |         ^
1 error generated.
gmake: *** [Makefile:1106: ccan-asort.o] Error 1

I think you might need something like this:

diff --git a/ccan/ccan/asort/asort.h b/ccan/ccan/asort/asort.h
index 4f5ab2402..d30e65a61 100644
--- a/ccan/ccan/asort/asort.h
+++ b/ccan/ccan/asort/asort.h
@@ -4,6 +4,7 @@
 #include "config.h"
 #include <ccan/order/order.h>
 #include <stdlib.h>
+#include <sys/param.h>
 
 /**
  * asort - sort an array of elements
@@ -27,8 +28,10 @@ _asort((base), (num), sizeof(*(base)),                                       \
  * first libc include — we can't control our includers, so declare it
  * ourselves (the configurator only sets this where this GNU signature
  * was detected). */
+#if !defined(__FreeBSD__) || __FreeBSD_version < 1400000
 void qsort_r(void *base, size_t nmemb, size_t size,
             int (*compar)(const void *, const void *, void *), void *arg);
+#endif
 #define _asort(b, n, s, cmp, ctx) qsort_r(b, n, s, cmp, ctx)
 #else
 void _asort(void *base, size_t nmemb, size_t size,
Lingua principale
C
Stelle
3.1k
Fork
1k
Merge medio
3g 6h
PR unite (30g)
41

Preparare l'ambiente

  • Include un Dockerfile o un file Docker Compose
  • Ha un modello di pull request
  • Nessuna 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.

Altre issue di ElementsProject/lightning

Tutte le issue di ElementsProject/lightning

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.