# Build et compilation Cette page décrit comment compiler **Pena-tauri** depuis les sources, en développement comme en production. Pour une installation sur un système immuable (Bazzite, Silverblue, etc.), voir plutôt [Installation sur Bazzite OS](3.2-Installation-Bazzite.md). ## Prérequis | Outil | Détail | |---|---| | **Rust** | Toolchain stable, via [rustup](https://rustup.rs/) (édition 2021). | | **Tauri CLI v2** | `cargo install tauri-cli --version "^2"` (fournit `cargo tauri`). | | **Dépendances système** | WebKitGTK et libs associées (voir ci-dessous selon la distribution). | Le frontend n'a **aucune dépendance Node** : c'est du JS vanilla servi statiquement depuis `src/`. Il n'y a donc pas de `npm install` à faire pour `Pena-tauri`. ### Dépendances système Linux **Fedora / RHEL :** ```bash sudo dnf install webkit2gtk4.1-devel \ openssl-devel curl wget file libappindicator-gtk3-devel librsvg2-devel sudo dnf group install "C Development Tools and Libraries" ``` **Debian / Ubuntu :** ```bash sudo apt update sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \ libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev ``` > Sur une distribution immuable (Bazzite, Fedora Silverblue, Kinoite…), n'installez pas ces > paquets sur l'hôte : utilisez un container ou un Flatpak. Voir > [Installation sur Bazzite OS](3.2-Installation-Bazzite.md). ## Lancer en développement Depuis `Pena-tauri/` : ```bash cargo tauri dev ``` - Le frontend est servi directement depuis `src/` (fichiers statiques, sans bundler). - La compilation Rust est lancée automatiquement et l'application s'ouvre. - Toute modification du Rust déclenche une recompilation. ## Construire une release Depuis `Pena-tauri/` : ```bash cargo tauri build ``` L'exécutable est produit dans : ``` src-tauri/target/release/ ``` ### À propos du bundling Dans `src-tauri/tauri.conf.json`, le bundling est **désactivé** : ```json "bundle": { "active": false, "targets": "all", "icon": [] } ``` `cargo tauri build` produit donc l'**exécutable natif** (dans `target/release/`), mais ne génère pas de paquets `.deb`, `.rpm` ou `.AppImage`. Pour activer la génération de ces paquets, passer `bundle.active` à `true` et renseigner les icônes. ## Compiler le backend seul (sans Tauri CLI) Pour de la compilation / des tests bas niveau, depuis `src-tauri/` : ```bash cargo build # compilation debug cargo build --release # compilation optimisée cargo test # tests unitaires cargo clippy -- -D warnings # lint (zéro warning toléré) ``` ## Qualité et couverture Le dépôt `Pena-tauri` impose un hook `pre-commit` qui bloque le commit si : - **Clippy** remonte le moindre warning (`-D warnings`) ; - la **couverture de lignes** est inférieure à **60 %** (via `cargo-llvm-cov`). Installer l'outil de couverture : ```bash cargo install cargo-llvm-cov cargo llvm-cov --summary-only ``` ## Récapitulatif des commandes | But | Commande (depuis `Pena-tauri/`) | |---|---| | Développement | `cargo tauri dev` | | Release (exécutable) | `cargo tauri build` | | Compiler le backend | `cargo build --release` (depuis `src-tauri/`) | | Tests | `cargo test` (depuis `src-tauri/`) | | Lint | `cargo clippy -- -D warnings` | | Couverture | `cargo llvm-cov --summary-only` | ## Voir aussi - [Release et distribution](3.4-Release-et-distribution.md) — portabilité du binaire et création d'un paquet Flatpak - [Installation (Linux générique)](3.1-Installation.md) - [Installation sur Bazzite OS](3.2-Installation-Bazzite.md) - [Architecture](../2-technique/2.1-Architecture.md)