RFC: Support for CMake `codegen` target
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Tranquilo
- Stack tecnológico
- cmake, cpp
- Área
- build-system
Línea de trabajo
Comienza leyendo cmake/TargetCapnpSources.cmake, especialmente target_capnp_sources y su add_custom_command; después, inspecciona CMakeLists.txt en la llamada a capnp_generate_cpp alrededor de las líneas 137-138. Revisa el comportamiento de generación de código de CMake y las rutas de generación disponibles. Se considerará terminado cuando exista un enfoque acordado que pueda generar todos los headers y fuentes necesarios antes de que IWYU procese la base de datos de compilación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
CMake allows different approaches for running static analysis tools over a codebase: co-compiling and using a compilation database.
Bitcoin Core uses the latter. This approach has many benefits: for example, the ability to filter entries, which allows us to maintain a list of sources where IWYU warnings are enforced. When processing the compilation database, IWYU expects to find every source and header. This is not the case when the database is generated solely during the configuration step, as it lacks the headers and sources that will be generated during the subsequent build step.
Modern CMake provides a way to generate expected headers and sources beforehand using the built-in codegen target. This approach is currently used in the Bitcoin Core IWYU CI job.
However, the Libmultiprocess project seems inherently incapable of supporting the codegen target. While it is almost trivial to amend add_custom_command in the target_capnp_sources function with the conditional CODEGEN option, doing so is not possible for the capnp_generate_cpp function shipped by libcapnp-dev or similar packages.
There are several ways we could tackle this issue:
-
Execute a normal build step: This guarantees that all files will be generated without relying on codegen at all.
-
Introduce a custom target: We could create a custom target to generate all files beforehand, though this might be challenging.
-
Use CMake's co-compilation: Switch to the co-compiling approach, though I am unsure about the usability of this method for the CI job.
-
Alternative solutions: Open to other ideas.
I am hoping to gather my colleagues' opinions on the best way forward.
- Lenguaje dominante
- C++
- Estrellas
- 62
- Forks
- 58
- Merge medio
- 6 d 11 h
- PR fusionados (30 d)
- 7
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de bitcoin-core/libmultiprocess
-
Listeners can't be stopped, so bitcoin-node can hang after shutdown when an IPC client reconnectsAbiertobug
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
bitcoin-core/libmultiprocess#385 ·
Los mantenedores suelen responder en 1 día
-
ListenConnections stops listening for good after one temporary accept() failure such as EMFILEAbiertobug hardening
Dificultad 3/5 1-2 días Aptitud para principiantes 57/100
bitcoin-core/libmultiprocess#384 ·
Los mantenedores suelen responder en 1 día
-
Calling an IPC object after or during destroy() makes the server use a null or freed implementationPosiblemente ocupada @xyzconstant la tomó hace 14 días. Abiertobug hardening
Dificultad 4/5 3-5 días Aptitud para principiantes 40/100
bitcoin-core/libmultiprocess#378 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
iwyu: --check_also=*.h ?Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
bitcoin-core/libmultiprocess#329 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
bitcoin-core/libmultiprocess#328 ·
Los mantenedores suelen responder en 1 día
Todos los issues de bitcoin-core/libmultiprocess
Issues similares
-
go perft exits when EvalFile is unavailablePosiblemente ocupada @Muawiya-contact la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
official-stockfish/Stockfish#7292 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
arvidn/libtorrent#9149 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Niko1221/Strata#5560 · 2 comentarios ·
Los mantenedores suelen responder en 4 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
hyprwm/xdg-desktop-portal-hyprland#453 · 1 comentario ·