Les choses sérieuses commencent
This commit is contained in:
parent
7a9fe18463
commit
c63f62721b
41 changed files with 1270 additions and 0 deletions
55
doc/architecture.md
Normal file
55
doc/architecture.md
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# Architecture Erminig
|
||||
|
||||
---
|
||||
|
||||
## Vue Globale
|
||||
|
||||
Erminig est une forge artisanale en 3 piliers :
|
||||
|
||||
- **Evezh** : Veille logicielle, détection de nouvelles versions.
|
||||
- **Govel** : Construction et maintenance des paquets à partir des fichiers Pakva.
|
||||
- **Keo** : Gestion du dépôt de paquets et mise à disposition publique.
|
||||
|
||||
Chaque module est indépendant, mais communique par base de données et sockets.
|
||||
|
||||
---
|
||||
|
||||
## Détails
|
||||
|
||||
| Module | Rôle | Langage | Communication |
|
||||
|:-------|:-----|:--------|:---------------|
|
||||
| Evezh | Check des versions upstream | Python 3.13 | SQLite |
|
||||
| Govel | Build + révision + création Pakva | Python 3.13 | SQLite, fichiers système |
|
||||
| Keo | Mirroir de paquets `.bzh` | À venir | SQLite, HTTP (futur) |
|
||||
|
||||
---
|
||||
|
||||
## Dossiers critiques
|
||||
|
||||
| Dossier | Contenu |
|
||||
|:--------|:--------|
|
||||
| `/var/lib/erminig` | Données persistantes (db, Pakva, builds, etc.) |
|
||||
| `/var/cache/erminig` | Temporaire (compilations, archives, logs) |
|
||||
| `/opt/erminig` | Sources du projet installées |
|
||||
|
||||
---
|
||||
|
||||
## Principes
|
||||
|
||||
- **KISS** : Keep it simple, stupid.
|
||||
- **Séparation stricte** entre utilisateur système (`pak`) et root.
|
||||
- **Aucune dépendance inutile.**
|
||||
- **Logs clairs** pour tout ce qui est critique.
|
||||
- **Architecture modulaire.**
|
||||
|
||||
---
|
||||
|
||||
# Motto
|
||||
|
||||
> **Un système simple.
|
||||
> Une forge robuste.
|
||||
> Un esprit libre.**
|
||||
|
||||
---
|
||||
|
||||
# FIN
|
||||
6
doc/bugs.md
Normal file
6
doc/bugs.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
[gcc] Erreur HTTP : HTTPSConnectionPool(host='ftp.mpi-inf.mpg.de', port=443): Max retries exceeded with url: /mirrors/gnu/mirror/gcc.gnu.org/pub/gcc/releases/ (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fc45e207ed0>: Failed to resolve 'ftp.mpi-inf.mpg.de' ([Errno -5] No address associated with hostname)"))
|
||||
[gcc] Aucune version détectée.
|
||||
-----
|
||||
|
||||
|
||||
|
||||
69
doc/roadmap.md
Normal file
69
doc/roadmap.md
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
# Roadmap Erminig
|
||||
|
||||
---
|
||||
|
||||
## 1. Stabilisation du Cœur
|
||||
|
||||
- Finaliser `evezh` (veille versions)
|
||||
- Finaliser `govel` (build)
|
||||
- Finaliser `pakva` (formules)
|
||||
- Finaliser `keo` (mirroir)
|
||||
- Freeze code sauf bugfixes.
|
||||
|
||||
---
|
||||
|
||||
## 2. Documentation Interne
|
||||
|
||||
- `/doc/architecture.md` : Décrire les modules.
|
||||
- `/doc/usage.md` : Exemples de commandes.
|
||||
- `/doc/rules.md` : Bonnes pratiques de dev (ex : jamais builder en root).
|
||||
|
||||
---
|
||||
|
||||
## 3. Automatisation
|
||||
|
||||
- Script `evezh sync && govel build --all`
|
||||
- Script `init-db.sh` pour première installation.
|
||||
|
||||
---
|
||||
|
||||
## 4. Versionning
|
||||
|
||||
- Commencer à versionner dès premier gel :
|
||||
- `0.1.0` : Forge fonctionnelle (check + build ok)
|
||||
- `0.2.0` : Ajout du mirroir Keo
|
||||
- `0.3.0` : Ajout communication sockets entre modules
|
||||
- `1.0.0` : Première release publique
|
||||
|
||||
---
|
||||
|
||||
## 5. Tests Simples
|
||||
|
||||
- Tests manuels à chaque changement critique.
|
||||
- (Optionnel plus tard : sanity-checks automatiques sur `.Pakva`, db, build).
|
||||
|
||||
---
|
||||
|
||||
## 6. Releases
|
||||
|
||||
- Utiliser git tags :
|
||||
- `v0.1.0`, `v0.2.0`, `v0.3.0`, `v1.0.0`
|
||||
- Archiver les builds, backups réguliers de `/var/lib/erminig` et `/var/cache/erminig`.
|
||||
|
||||
---
|
||||
|
||||
## 7. Écosystème Ouvert (Optionnel)
|
||||
|
||||
- Documenter comment contribuer un `.Pakva`
|
||||
- (Peut devenir communautaire si volonté future.)
|
||||
|
||||
---
|
||||
|
||||
# Mantra
|
||||
|
||||
> **Simple. Robuste. Artisan. Libre.**
|
||||
|
||||
---
|
||||
|
||||
# Forge On.
|
||||
|
||||
78
doc/specs-pakva.md
Normal file
78
doc/specs-pakva.md
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
# Specifications du format PAKVA v0.1
|
||||
|
||||
Le fichier **PAKVA** est un fichier qui définit les spécifications d'un logiciel. Il est utilisé par **evezh** pour
|
||||
chercher les dernières versions disponibles pour un logiciel et par **govel** pour construire les paquets.
|
||||
La syntaxe des fichiers **PAKVA** est prévue pour etre lisible en python et en bash.
|
||||
|
||||
Ce document décrit les différentes clés, fonctions et macros disponibles.
|
||||
|
||||
## Structure générale
|
||||
Les lignes commençant par # sont des commentaires
|
||||
|
||||
la syntaxe est de type clé=valeur (avec ou sans guillemets)
|
||||
les tableaux sont en style bash clé=(val1 val2 val3)
|
||||
les fonction sont en style bash fonction(){}
|
||||
|
||||
### Clés disponibles
|
||||
|
||||
**PAKVA** dispose de nombreuses clé disponibles :
|
||||
|
||||
| Clé | Type | Obligatoire | Description |
|
||||
| :---| :--- | :---------- | :---------- |
|
||||
| `name` | string | oui | Nom du paquet principal |
|
||||
| `basename` | string | non | Nom utilisé pour les archives/source/builddir (défaut = $name) |
|
||||
| `description` | string | non | Description du paquet |
|
||||
| `packager` | string | non | Packager du paquet |
|
||||
| `version` | string | oui | Version du logiciel |
|
||||
| `revision` | int | non | Révision locale |
|
||||
| `url` | string | non | Page d'accueil du logiciel |
|
||||
| `source` | array | oui | Sources du paquets |
|
||||
| `license` | string | non | Licence du logiciel |
|
||||
| `depends` | array | oui | Dépendances d'utilisation |
|
||||
| `make_depends` | array | non | Dépendances de construction |
|
||||
| `check_depends` | array | non | Dépendances de test |
|
||||
|
||||
|
||||
### Fonctions disponibles
|
||||
|
||||
| Fonction | Obligatoire | Instructions |
|
||||
| :------- | :---------- | :---------- |
|
||||
| `build()` | oui | Compilation |
|
||||
| `check()` | non | Tests |
|
||||
| `pak()` | oui | Packaging |
|
||||
| `pre_install()` | non | Avant installation |
|
||||
| `post_install()` | non | Après installation |
|
||||
| `pre_upgrade()` | non | Avant mise à jour |
|
||||
| `post_upgrade()` | non | Après mise à jour |
|
||||
| `pre_remove()` | non | Avant suppression |
|
||||
| `post_remove()` | non | Après suppression |
|
||||
|
||||
### Multi Packaging
|
||||
|
||||
On peut packager plus d'un paquet à partir d'un seul fichier **PAKVA**, et c'est assez simple.
|
||||
|
||||
la syntaxe devient :
|
||||
|
||||
`pak:<name>()`
|
||||
`pre_install:<name>()`
|
||||
`post_install:<name>()`
|
||||
`pre_upgrade:<name>()`
|
||||
`post_upgrade:<name>()`
|
||||
`pre_remove:<name>()`
|
||||
`post_remove:<name>()`
|
||||
|
||||
### Macros disponibles
|
||||
|
||||
| Macro | Description |
|
||||
| :---- | :---------- |
|
||||
| `$PAK` | Dossier global d'installation |
|
||||
| `$SRC` | Dossier d'extraction des sources |
|
||||
| `$TMP` | Dossier temporaire pour chaque `pak:<name>` |
|
||||
| `name, $version, $revision, $basename` | Metadonnées du paquet principal |
|
||||
| `pakname` | nom du paquet courant dans un `pak:<name>` |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue