0.1.0-0-pre.5-fix.2

This commit is contained in:
2026-09-16 01:32:18 +02:00
parent 4a5471c5f4
commit a503975d36
4 changed files with 227 additions and 4 deletions

View File

@@ -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 <games@sasedev.com>"]
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"] }

View File

@@ -0,0 +1,152 @@
<!-- file: deltas/0.1.0/0-pre.5.fix.2.md -->
<!-- version: 1 -->
# 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`.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/000-README.md -->
<!-- version: 6 -->
<!-- version: 7 -->
# 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é

View File

@@ -0,0 +1,70 @@
<!-- file: docs/development/004-SDL3_DESKTOP_PREREQUISITES.md -->
<!-- version: 1 -->
# 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/<arch>/libSDL3.so
/usr/lib/<arch>/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.