Une syntaxe plus récente que le Python du dépôt ne casse qu'au chargement, et aucun outil en place ne la voyait : la cible de black borne ce qu'il ÉCRIT, jamais ce qu'il accepte, et flake8 analyse avec l'interpréteur courant. Le contrôle compile les fichiers indexés avec un vrai interpréteur de la version déclarée, trouvé sans réseau par mise, pyenv ou le PATH, et se prend lui-même quand il y tourne déjà. Sans interpréteur, il DIT qu'il n'a pas vérifié plutôt que de laisser croire le contraire. Le hook relaie, sans bloquer le commit, et écarte les dépôts rapatriés dont ce dépôt ne répond pas. Vérifié : les f-strings PEP 701 de la révision précédente sont signalées, rien ne l'est sur l'arbre courant, et l'absence du fichier de version se dit. --- EN --- A syntax newer than the repository's Python only breaks at load, and no tool in place saw it: black's target bounds what it WRITES, never what it accepts, and flake8 parses with the running interpreter. The check compiles staged files with a real interpreter of the declared version, found without network through mise, pyenv or the PATH, and takes itself when it already runs under it. Without one, it SAYS it did not check rather than implying it did. The hook relays, without blocking the commit, and skips the checked-out repositories this one does not answer for. Checked: the PEP 701 f-strings of the previous revision are reported, nothing is on the current tree, and a missing version file is announced. Assisted-by: Claude Opus 5
54 lines
2.4 KiB
Markdown
54 lines
2.4 KiB
Markdown
---
|
|
name: erplibre-deployment
|
|
description: >-
|
|
Déploiement ERPLibre : Docker, systemd, nginx, SSL, DNS, plateformes
|
|
supportées, et le choix de l'interpréteur Python (EL_PYTHON_PROVIDER)
|
|
comme du gestionnaire de paquets (EL_PIP_PROVIDER). À charger pour
|
|
déployer, installer ou changer de fournisseur Python.
|
|
---
|
|
|
|
- **Docker** : `docker-compose.yml` (PostgreSQL 18 + PostGIS 3.6)
|
|
- **Systemd** : `script/systemd/` pour les services
|
|
- **Nginx** : `script/nginx/` pour le reverse proxy
|
|
- **SSL** : Certbot pour les certificats
|
|
- **DNS** : `script/deployment/update_dns_cloudflare.py`
|
|
- **VPN** : `script/vpn/` — cinq pilotes (L2TP/IPsec PSK, WireGuard,
|
|
OpenVPN, OpenConnect, sshuttle), profils en JSON et secrets dans un
|
|
coffre KeePassXC. Mode d'emploi : `script/vpn/README.md`.
|
|
|
|
Plateformes supportées : Ubuntu 24.04 / 25.10 / 26.04, Linux Mint 22.3,
|
|
Debian 12, AlmaLinux 9+, Rocky Linux 9+, openSUSE Leap 16 et Tumbleweed,
|
|
Arch Linux,
|
|
macOS (mise ou pyenv),
|
|
Windows (WSL/Docker).
|
|
|
|
Ubuntu 20.04 et 22.04 sont abandonnées : pikepdf exige qpdf >= 12.2, compilé
|
|
en C++20, quand focal livre GCC 9.
|
|
|
|
## Interpréteur Python
|
|
|
|
`EL_PYTHON_PROVIDER` (dans `env_var.sh`) vaut `auto`, `mise` ou `pyenv`.
|
|
`auto` reprend un interpréteur DÉJÀ posé, quel que soit le fournisseur ; sinon
|
|
il préfère mise, qui pose un CPython précompilé, et retombe sur pyenv, qui le
|
|
compile.
|
|
|
|
Un seul fichier décide : `script/install/lib_python_provider.sh`. mise n'est
|
|
jamais installé automatiquement — `make install_mise` porte cette décision.
|
|
Pas de binaire mise pour s390x à ce jour : cette architecture reste sur pyenv.
|
|
|
|
Le hook `pre-commit` relaie `script/analyse/check_python_version.py` : il
|
|
signale le source qui ne parse pas sous cette version, sans bloquer, et dit
|
|
quand aucun interpréteur de cette version n'était là pour vérifier.
|
|
|
|
## Paquets Python
|
|
|
|
`EL_PIP_PROVIDER` (dans `env_var.sh`) vaut `auto`, `uv` ou `pip`. `auto` prend
|
|
uv s'il est présent et si le venv visé est en Python ≥ 3.8, sinon pip ; un
|
|
échec d'uv retombe sur pip. Un seul fichier décide :
|
|
`script/install/lib_pip_provider.sh`. uv n'est jamais installé
|
|
automatiquement — `make install_uv` porte cette décision.
|
|
|
|
Portée réelle : le venv d'outils et l'amorçage de Poetry. **`poetry install`
|
|
n'est pas concerné** — uv ne lit pas `poetry.lock` — et c'est pourtant l'étape
|
|
qui domine. Sur s390x le gain est quasi nul : une trentaine de paquets sans
|
|
roue se compilent, et uv n'enlève pas une seconde de gcc.
|