From a503975d3644ab33844581fbe668857219836a7e Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Wed, 16 Sep 2026 01:32:18 +0200 Subject: [PATCH] 0.1.0-0-pre.5-fix.2 --- Cargo.toml | 6 +- deltas/0.1.0/0-pre.5.fix.2.md | 152 ++++++++++++++++++ docs/000-README.md | 3 +- .../004-SDL3_DESKTOP_PREREQUISITES.md | 70 ++++++++ 4 files changed, 227 insertions(+), 4 deletions(-) create mode 100644 deltas/0.1.0/0-pre.5.fix.2.md create mode 100644 docs/development/004-SDL3_DESKTOP_PREREQUISITES.md diff --git a/Cargo.toml b/Cargo.toml index 924ebf9..7e861db 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ # file: Cargo.toml -# version: 9 +# version: 10 [workspace] resolver = "3" @@ -15,7 +15,7 @@ members = [ ] [workspace.package] -version = "0.1.0-0-pre.5.fix.1" +version = "0.1.0-0-pre.5.fix.2" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/games" @@ -23,7 +23,7 @@ authors = ["Sasedev "] publish = false [workspace.dependencies] -sdl3 = { version = "0.16.1", features = ["build-from-source"] } +sdl3 = { version = "0.16.1", features = ["use-pkg-config"] } tracing = "0.1.44" tracing-appender = "0.2.5" tracing-subscriber = { version = "0.3.23", features = ["fmt"] } diff --git a/deltas/0.1.0/0-pre.5.fix.2.md b/deltas/0.1.0/0-pre.5.fix.2.md new file mode 100644 index 0000000..c7c686b --- /dev/null +++ b/deltas/0.1.0/0-pre.5.fix.2.md @@ -0,0 +1,152 @@ + + + +# Delta 0.1.0-0-pre.5.fix.2 + +## Base + +Base déclarée : `0.1.0-0-pre.5.fix.1`, non validée. + +## Validation du delta précédent + +L'utilisateur a exécuté les validations de `0.1.0-0-pre.5.fix.1` le 2026-09-16. + +Les audits Rust/workspace étaient propres avant la phase de compilation SDL3. + +La compilation a ensuite échoué dans le build script de `sdl3-sys v0.5.12+SDL3-3.2.30`. + +Erreur déterminante : + +```text +CMake Error at CMakeLists.txt:4363 (add_subdirectory): + add_subdirectory given source "test" which is not an existing directory. +``` + +Le build vendored utilisait : + +```text +sdl3-src-3.4.16/SDL +``` + +avec `SDL_TESTS` activé par défaut alors que le package source utilisé par le build ne fournissait pas le répertoire `test`. + +Les commandes `cargo check`, Clippy, tests ciblés et runners n'ont donc pas pu atteindre la compilation du code projet SDL3. + +Une commande de test a également été collée accidentellement sous la forme : + +```text +--all-featurescargo +``` + +Cet incident de saisie est indépendant du défaut principal : plusieurs autres commandes distinctes ont reproduit le même échec CMake SDL3. + +`0.1.0-0-pre.5.fix.1` n'est donc pas validé. + +## Correctif + +La stratégie Desktop Linux passe de : + +```toml +features = ["build-from-source"] +``` + +à : + +```toml +features = ["use-pkg-config"] +``` + +Le workspace utilise ainsi une SDL3 système pour le développement Desktop. + +Aucun fichier Rust n'est modifié par ce fix. + +## Prérequis Desktop Linux + +Sur Debian 13/Trixie : + +```bash +sudo apt update +sudo apt install pkg-config libsdl3-dev +``` + +Préflight : + +```bash +pkg-config --modversion sdl3 +pkg-config --cflags --libs sdl3 +``` + +Le package Debian `libsdl3-dev` fournit le fichier `sdl3.pc` utilisé par `pkg-config`. + +## Documentation + +Ajout de : + +```text +docs/development/004-SDL3_DESKTOP_PREREQUISITES.md +``` + +Ce document sépare explicitement : + +- dépendance SDL3 système pour le développement Desktop Linux ; +- intégration Android future via NDK/AAR ; +- intégration Web future via Emscripten/WASM. + +## Validation à exécuter par l'utilisateur + +Aucun fichier Rust n'est modifié ; `cargo fmt --all` mutatif n'est pas requis. + +### Préflight SDL3 + +```bash +pkg-config --modversion sdl3 +pkg-config --cflags --libs sdl3 +``` + +Si `pkg-config` ne trouve pas SDL3 : + +```bash +sudo apt update +sudo apt install pkg-config libsdl3-dev +``` + +Puis exécuter : + +```bash +cargo fmt --all -- --check + +python3 scripts/audit_rust_workspace_rules.py +python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android deltas history + +cargo check --workspace +cargo clippy --workspace --all-targets --all-features -- -D warnings +``` + +Tests ciblés : + +```bash +cargo test -p engine-v1-sdl --all-targets --all-features +cargo test -p game-reflex-poc --all-targets --all-features +cargo test -p game-snake-poc --all-targets --all-features +``` + +Smokes Desktop : + +```bash +cargo run -p game-reflex-poc-desktop +cargo run -p game-snake-poc-desktop +``` + +Pour chaque runner : + +- une fenêtre SDL3 doit s'ouvrir ; +- `Escape` doit fermer proprement la fenêtre ; +- la fermeture système doit fonctionner ; +- `Space` doit être traité comme `GameAction::Primary` ; +- aucun panic ne doit apparaître. + +## Règle de transition + +Si toutes les validations sont propres, `0.1.0-0-pre.5.fix.2` est accepté et le travail passe automatiquement à `0.1.0-0-pre.6`. + +Si une gate échoue, rester sur `0-pre.5` et produire `0.1.0-0-pre.5.fix.3`. diff --git a/docs/000-README.md b/docs/000-README.md index ade1ecb..c18f5e7 100644 --- a/docs/000-README.md +++ b/docs/000-README.md @@ -1,5 +1,5 @@ - + # Documentation games.sasedev @@ -48,6 +48,7 @@ Voir [`../RULES.md`](../RULES.md), notamment [`rules/RULES_COMMANDS.md`](rules/R - [`testing/001-TEST_ARCHITECTURE.md`](testing/001-TEST_ARCHITECTURE.md) — séparation `unit_tests/` / `tests/`, tests ciblés et tracing de test. - [`development/003-TRACING_AND_DIAGNOSTICS.md`](development/003-TRACING_AND_DIAGNOSTICS.md) — socle `tracing`, subscriber et appender communs. +- [`development/004-SDL3_DESKTOP_PREREQUISITES.md`](development/004-SDL3_DESKTOP_PREREQUISITES.md) — prérequis SDL3 Desktop, stratégie de liaison système et vérification `pkg-config`. ## Historique validé diff --git a/docs/development/004-SDL3_DESKTOP_PREREQUISITES.md b/docs/development/004-SDL3_DESKTOP_PREREQUISITES.md new file mode 100644 index 0000000..462c6ba --- /dev/null +++ b/docs/development/004-SDL3_DESKTOP_PREREQUISITES.md @@ -0,0 +1,70 @@ + + + +# Prérequis SDL3 Desktop + +## Portée + +Cette politique concerne le développement et les runners Desktop natifs basés sur SDL3. + +Elle ne définit pas le packaging Android ni Web : + +- Android utilisera son intégration SDL3/NDK/AAR dédiée ; +- Web utilisera la cible Emscripten/WASM dédiée ; +- la présence de SDL3 système sur le poste Desktop n'implique aucune dépendance runtime identique sur Android ou Web. + +## Stratégie Desktop Linux + +Le workspace utilise la crate Rust `sdl3` avec la feature `use-pkg-config`. + +Le build Desktop recherche donc une installation SDL3 système à travers `pkg-config`. + +Cette stratégie est préférée au build vendored `build-from-source` pour la baseline actuelle, car la combinaison `sdl3 0.16.x` / `sdl3-sys 0.5.12` / `sdl3-src 3.4.16` peut échouer lorsque la source empaquetée active les tests CMake sans fournir le répertoire `test`. + +## Debian 13 / Trixie + +Installer les dépendances de développement : + +```bash +sudo apt update +sudo apt install pkg-config libsdl3-dev +``` + +Vérifier ensuite : + +```bash +pkg-config --modversion sdl3 +pkg-config --cflags --libs sdl3 +``` + +Sur Debian 13/Trixie, `libsdl3-dev` fournit notamment : + +```text +/usr/include/SDL3/ +/usr/lib//libSDL3.so +/usr/lib//pkgconfig/sdl3.pc +``` + +## Règle de validation + +Avant les premières gates Cargo SDL3 sur une nouvelle machine Desktop Linux, exécuter : + +```bash +pkg-config --modversion sdl3 +``` + +Si cette commande échoue, installer/configurer SDL3 avant de considérer un échec Cargo comme un défaut du code du projet. + +## Portabilité future + +La dépendance système Desktop est une décision de développement, pas une contrainte universelle de distribution. + +Les options futures restent ouvertes : + +- bundle de SDL3 avec un package Desktop ; +- AppImage/Flatpak ; +- package natif par distribution ; +- build statique si une justification apparaît ; +- distribution Tauri distincte si un shell Desktop riche est nécessaire. + +Toute évolution de stratégie doit être documentée explicitement avant modification des manifests.