Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto Apto para principiantes
#9,616 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
66/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
c
Área
build-system

Línea de trabajo

El conflicto está en ccan/ccan/asort/asort.h, donde una declaración local de qsort_r choca con la macro que /usr/include/stdlib.h de FreeBSD 15.1 define. Empieza por la rama de la firma GNU de ese header y reproduce el problema compilando ccan/ccan/asort/asort.c en FreeBSD (la regla del Makefile en la línea 1106 falla). Está terminado cuando el archivo compila en FreeBSD 15.1 y sigue compilando en Linux, donde se usa la declaración GNU de qsort_r. Verifica la guarda __FreeBSD_version del reportante contra la firma real de FreeBSD antes de adoptarla.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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,
Lenguaje dominante
C
Estrellas
3.1k
Forks
1k
Merge medio
3 d 7 h
PR fusionados (30 d)
42

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ElementsProject/lightning

Todos los issues de ElementsProject/lightning

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.