You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cette issue récapitule la série de pull-requests #472 à #535, qui remplace #403, les PR #408 à #469 et l'issue #470 (la première PR de cette série-là, #407, est déjà mergée). Elles viennent de la branche dev-clean-v2 de Jordan08/codac, partent de l'état actuel de codac2, et y apportent le travail des branches fix-warnings-v2 puis GAOL-v2, en 64 commits d'une taille relisible.
Démarche
Remplacer IBEX par GAOL. Codac ne se servait d'IBEX que pour GAOL, sur lequel repose codac2::Interval. Codac trouve maintenant GAOL sur le système ou compile le master du fork Jordan08/GAOL, qui porte les correctifs dont Codac a besoin : les garde-fous que Codac maintenait autour de GAOL disparaissent, et les options de compilation (arrondi, FMA) viennent de GAOL lui-même. Les conversions to_ibex()/to_codac() restent, pour qui utilise IBEX à côté de Codac : elles ne sont compilées que si IBEX est inclus.
Outiller le debug et la CI. ASan/UBSan en Debug, couverture de code (WITH_COVERAGE), exemples lancés comme tests, workflows Debug sous Linux, macOS et Windows, vérification du paquet installé (find_package et pkg-config).
Reprendre le reste de Fix warnings v2 #403. Corrections de bugs relevés par les sanitizers, corrections d'avertissements, packaging CMake, opérateur @ en Python, documentation.
Un graphe plutôt qu'une chaîne
Dans la série précédente, chaque PR contenait toutes les précédentes : en refuser une bloquait toutes les suivantes. Ici, chaque PR ne dépend que de ce dont elle a réellement besoin, pour s'appliquer (mêmes lignes modifiées) ou pour fonctionner (par exemple, tout ce qui suppose GAOL dépend de la PR qui passe à GAOL).
36 PR sont indépendantes : basées directement sur codac2, elles peuvent être mergées, ou refusées, dans n'importe quel ordre.
28 PR dépendent d'une ou plusieurs autres, selon le graphe ci-dessous ; en refuser une ne bloque que celles qui en dépendent.
flowchart TD
n472["#472 Make Approx#lt;double#gt; relative for large…"]
n475["#475 Build Codac on GAOL from Jordan Ninin's…"]
n472 --> n475
n476["#476 Stop installing IBEX in the workflows,…"]
n475 --> n476
n477["#477 Drop the MinGW jobs whose mingw-w64 the…"]
n476 --> n477
n478["#478 Document in the manual that Codac depends…"]
n475 --> n478
n479["#479 Call GAOL directly, without the guards its…"]
n475 --> n479
n480["#480 Take atan2 from GAOL, whose fork now…"]
n475 --> n480
n481["#481 Build GAOL with the FMA instructions and…"]
n475 --> n481
n482["#482 Hand Threads to the users of…"]
n475 --> n482
n493["#493 Enable ASan/UBSan in Debug builds when the…"]
n482 --> n493
n494["#494 Compile against the headers in src/ instead…"]
n493 --> n494
n495["#495 Add the WITH_COVERAGE option and the…"]
n494 --> n495
n497["#497 Build and run the examples as ctest tests…"]
n494 --> n497
n496["#496 Update the examples to axis() in set_axes…"]
n496 --> n497
n500["#500 Retry the Doxygen install on Windows, pin…"]
n476 --> n500
n501["#501 Build the wheels with python -m build and…"]
n500 --> n501
n502["#502 Run only the Python tests in the…"]
n501 --> n502
n503["#503 Add Debug workflows with sanitizers and…"]
n495 --> n503
n497 --> n503
n504["#504 Run the examples as tests in the Windows…"]
n503 --> n504
n505["#505 Run the examples as tests in the package…"]
n502 --> n505
n506["#506 Build Catch2 for the macOS deployment…"]
n505 --> n506
n509["#509 Set C++20 without compiler extensions on…"]
n503 --> n509
n510["#510 Treat the Eigen and Catch2 headers from…"]
n509 --> n510
n511["#511 Set CMP0156 so that each static library is…"]
n510 --> n511
n514["#514 Drop the -fPIC given by hand in the…"]
n478 --> n514
n504 --> n514
n506 --> n514
n513["#513 Set CMAKE_POSITION_INDEPENDENT_CODE before…"]
n513 --> n514
n517["#517 Export the Codac targets and fix codac.pc…"]
n511 --> n517
n518["#518 Check in CI that find_package and…"]
n517 --> n518
n531["#531 Compile the parallelepiped, peibos and…"]
n510 --> n531
n533["#533 Document how to use Codac from an external…"]
n478 --> n533
n529["#529 Fail the configuration when Doxygen or…"]
n534["#534 Add an Examples section and the 2.0.3 to…"]
n529 --> n534
n530["#530 Fix the Sphinx warnings and build the…"]
n530 --> n534
Loading
Règles de merge
Merger une PR après celles dont elle dépend. Tant qu'elles ne sont pas mergées, une PR affiche aussi leurs commits ; une fois qu'elles le sont, elle ne montre plus que le sien.
Merger avec « Create a merge commit », pour que les PR suivantes reconnaissent les commits déjà intégrés (« Squash and merge » les obligerait à être rebasées, et « Rebase and merge » n'accepte pas les PR qui partent d'un merge).
Mergées dans l'ordre de la liste en bas de cette issue, les PR s'appliquent toutes sans conflit (vérifié en rejouant ces merges), et l'état final est exactement celui de la branche GAOL-v2, dont la CI complète est verte. Si un merge dans un autre ordre produisait un conflit, je rebase la PR concernée.
Chaque PR a été compilée et testée localement sur sa propre base, c'est-à-dire codac2 avec les PR dont elle dépend (Linux, Clang 18, Release, avec les bindings Python et les exemples ; avant le passage à GAOL, avec IBEX) : 47 PR passent toute la suite de tests ; 15 ne touchent que la CI, le manuel ou la page de couverture, et n'ont pas eu à être compilées ; #530 ne touche que la génération du manuel, que cette validation ne construit pas ; #473 ne change qu'une URL de téléchargement.
codac2 a aussi été compilé et testé tel qu'il sera après chaque bloc de la liste ci-dessous, les PR mergées dans cet ordre : après #482, #492, #499, #508, #518, #526 et #535 (sans l'URL de #473). Ces 7 états passent tous la suite de tests (158 à 198 tests). Ils comprennent les dernières retouches de la série : version minimale de GAOL, operator& sans garde-fou, rad() et bisect() pris dans GAOL.
L'état final, identique à la branche GAOL-v2, a en plus passé la CI complète du fork (Linux, macOS, Windows, Docker, Debug sous sanitizers). L'extension CAPD, non installée, n'a pas été compilée : la PR qui la touche n'est vérifiée que par relecture.
Cette issue récapitule la série de pull-requests #472 à #535, qui remplace #403, les PR #408 à #469 et l'issue #470 (la première PR de cette série-là, #407, est déjà mergée). Elles viennent de la branche
dev-clean-v2de Jordan08/codac, partent de l'état actuel decodac2, et y apportent le travail des branchesfix-warnings-v2puisGAOL-v2, en 64 commits d'une taille relisible.Démarche
codac2::Interval. Codac trouve maintenant GAOL sur le système ou compile le master du fork Jordan08/GAOL, qui porte les correctifs dont Codac a besoin : les garde-fous que Codac maintenait autour de GAOL disparaissent, et les options de compilation (arrondi, FMA) viennent de GAOL lui-même. Les conversionsto_ibex()/to_codac()restent, pour qui utilise IBEX à côté de Codac : elles ne sont compilées que si IBEX est inclus.WITH_COVERAGE), exemples lancés comme tests, workflows Debug sous Linux, macOS et Windows, vérification du paquet installé (find_packageet pkg-config).@en Python, documentation.Un graphe plutôt qu'une chaîne
Dans la série précédente, chaque PR contenait toutes les précédentes : en refuser une bloquait toutes les suivantes. Ici, chaque PR ne dépend que de ce dont elle a réellement besoin, pour s'appliquer (mêmes lignes modifiées) ou pour fonctionner (par exemple, tout ce qui suppose GAOL dépend de la PR qui passe à GAOL).
codac2, elles peuvent être mergées, ou refusées, dans n'importe quel ordre.Règles de merge
GAOL-v2, dont la CI complète est verte. Si un merge dans un autre ordre produisait un conflit, je rebase la PR concernée.codac2augmenté de la PR et de celles dont elle dépend.Ordre conseillé en plus des dépendances
TEST_EXAMPLESn'a pas d'effet.Validation
Chaque PR a été compilée et testée localement sur sa propre base, c'est-à-dire
codac2avec les PR dont elle dépend (Linux, Clang 18, Release, avec les bindings Python et les exemples ; avant le passage à GAOL, avec IBEX) : 47 PR passent toute la suite de tests ; 15 ne touchent que la CI, le manuel ou la page de couverture, et n'ont pas eu à être compilées ; #530 ne touche que la génération du manuel, que cette validation ne construit pas ; #473 ne change qu'une URL de téléchargement.codac2a aussi été compilé et testé tel qu'il sera après chaque bloc de la liste ci-dessous, les PR mergées dans cet ordre : après #482, #492, #499, #508, #518, #526 et #535 (sans l'URL de #473). Ces 7 états passent tous la suite de tests (158 à 198 tests). Ils comprennent les dernières retouches de la série : version minimale de GAOL,operator&sans garde-fou,rad()etbisect()pris dans GAOL.L'état final, identique à la branche
GAOL-v2, a en plus passé la CI complète du fork (Linux, macOS, Windows, Docker, Debug sous sanitizers). L'extension CAPD, non installée, n'a pas été compilée : la PR qui la touche n'est vérifiée que par relecture.Liste des PR, dans l'ordre conseillé