0.1.0-0-pre.5-fix.3
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/development/004-SDL3_DESKTOP_PREREQUISITES.md -->
|
||||
<!-- version: 1 -->
|
||||
<!-- version: 2 -->
|
||||
|
||||
# Prérequis SDL3 Desktop
|
||||
|
||||
@@ -13,58 +13,59 @@ Elle ne définit pas le packaging Android ni Web :
|
||||
- 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.
|
||||
|
||||
## Version Rust SDL3
|
||||
|
||||
La version canonique est déclarée au workspace sans feature globale :
|
||||
|
||||
```toml
|
||||
[workspace.dependencies]
|
||||
sdl3 = "^0.20"
|
||||
```
|
||||
|
||||
La crate d'adaptation SDL3 Desktop active elle-même la méthode de liaison dont elle a besoin :
|
||||
|
||||
```toml
|
||||
sdl3 = { workspace = true, features = ["use-pkg-config"] }
|
||||
```
|
||||
|
||||
Cette séparation suit la règle générale du workspace : version commune à la racine, features au niveau de la crate consommatrice.
|
||||
|
||||
## Stratégie Desktop Linux
|
||||
|
||||
Le workspace utilise la crate Rust `sdl3` avec la feature `use-pkg-config`.
|
||||
Le build Desktop recherche une installation SDL3 système avec `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`.
|
||||
Cette stratégie évite le défaut rencontré avec le build vendored de la série `sdl3 0.16.x` / `sdl3-sys 0.5.12`, où CMake tentait d'ajouter un répertoire `test` absent du package source utilisé.
|
||||
|
||||
## Debian 13 / Trixie
|
||||
|
||||
Installer les dépendances de développement :
|
||||
Installer au besoin :
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install pkg-config libsdl3-dev
|
||||
```
|
||||
|
||||
Vérifier ensuite :
|
||||
Préflight :
|
||||
|
||||
```bash
|
||||
pkg-config --modversion sdl3
|
||||
pkg-config --cflags --libs sdl3
|
||||
```
|
||||
|
||||
Sur Debian 13/Trixie, `libsdl3-dev` fournit notamment :
|
||||
La machine de validation a fourni SDL `3.2.10`.
|
||||
|
||||
```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.
|
||||
`sdl3-sys 0.7.x` annonce la compatibilité avec SDL `3.1.3` et versions ultérieures ; certaines API particulières peuvent toutefois nécessiter une version SDL plus récente. Les API minimales actuellement employées par le POC doivent donc rester vérifiées par compilation et smoke runtime.
|
||||
|
||||
## Portabilité future
|
||||
|
||||
La dépendance système Desktop est une décision de développement, pas une contrainte universelle de distribution.
|
||||
Cette décision concerne le développement Desktop Linux et ne préjuge pas du packaging final.
|
||||
|
||||
Les options futures restent ouvertes :
|
||||
|
||||
- bundle de SDL3 avec un package Desktop ;
|
||||
- AppImage/Flatpak ;
|
||||
- bundle SDL3 dans un package Desktop ;
|
||||
- AppImage ou Flatpak ;
|
||||
- package natif par distribution ;
|
||||
- build statique si une justification apparaît ;
|
||||
- distribution Tauri distincte si un shell Desktop riche est nécessaire.
|
||||
- liaison statique si elle devient justifiée ;
|
||||
- distribution Tauri distincte lorsqu'un shell Desktop riche est requis.
|
||||
|
||||
Toute évolution de stratégie doit être documentée explicitement avant modification des manifests.
|
||||
Toute évolution de cette stratégie doit être documentée avant modification des manifests.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/rules/RULES_RUST.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Règles Rust générales
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
- **RUST-BASE-003** — Les lints communs sont déclarés au workspace et hérités par les crates.
|
||||
- **RUST-BASE-004** — Le code `unsafe` est interdit sauf future exception normative extrêmement ciblée et justifiée.
|
||||
- **RUST-BASE-005** — Tout fichier Rust possède les en-têtes `// file: ...` et `// version: N`.
|
||||
- **RUST-DEP-001** — Une dépendance tierce partagée déclare uniquement sa contrainte de version canonique sous `[workspace.dependencies]`, sauf exception normative explicitement documentée.
|
||||
- **RUST-DEP-002** — Les features d'une dépendance tierce sont activées dans le `Cargo.toml` de la crate qui en a réellement besoin, via `workspace = true`; elles ne sont pas activées globalement au workspace par commodité.
|
||||
- **RUST-DEP-003** — Une feature plateforme, telle que `use-pkg-config`, reste portée par la crate d'adaptation plateforme concernée et ne contamine pas les crates qui consomment seulement les abstractions du moteur.
|
||||
|
||||
## Documentation et API
|
||||
|
||||
|
||||
Reference in New Issue
Block a user