0.1.0-0-pre.5-fix.2
This commit is contained in:
@@ -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"] }
|
||||
|
||||
152
deltas/0.1.0/0-pre.5.fix.2.md
Normal file
152
deltas/0.1.0/0-pre.5.fix.2.md
Normal 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`.
|
||||
@@ -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é
|
||||
|
||||
|
||||
70
docs/development/004-SDL3_DESKTOP_PREREQUISITES.md
Normal file
70
docs/development/004-SDL3_DESKTOP_PREREQUISITES.md
Normal 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.
|
||||
Reference in New Issue
Block a user