install_erplibre.sh bâtissait .venv.erplibre avec le python3 du système, quelle que soit sa version : un 3.10 y donnait un venv que l'outillage ne sait pas charger. Il délègue à install_venv.sh, qui obtient la version par mise, pyenv ou la distribution, et rebâtit un venv hors service. Le PATCH ne borne que le venv d'Odoo, dont le pyproject exige « >=3.12.10,<3.13 » : l'exiger ailleurs écartait un Python de distribution d'un cran en retard — NixOS 25.11 livre 3.14.2 — et faisait compiler CPython pour rien. Le module NixOS déclare désormais les DEUX Python, substitués depuis les fichiers de version. Vérifié : 15 tests sur des venvs factices, conservés, rebâtis ou refusés selon leur état, et un chemin sans pyvenv.cfg garde son contenu. --- EN --- install_erplibre.sh built .venv.erplibre with the system python3, whatever its version: a 3.10 gave a venv the tooling cannot load. It delegates to install_venv.sh, which obtains the version through mise, pyenv or the distribution, and rebuilds a venv out of service. The PATCH bounds only Odoo's venv, whose pyproject requires ">=3.12.10,<3.13": requiring it elsewhere turned away a distribution Python one step behind — NixOS 25.11 ships 3.14.2 — and compiled CPython for nothing. The NixOS module now declares BOTH Pythons, substituted from the version files. Checked: 15 tests on stub venvs, kept, rebuilt or refused by their state, and a path without pyvenv.cfg keeps its content. Assisted-by: Claude Opus 5
76 lines
3.6 KiB
Markdown
76 lines
3.6 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 Python de l'outillage
|
|
|
|
`conf/python-erplibre-version` (3.14.7) donne l'interpréteur de
|
|
`.venv.erplibre`, le venv d'outillage, distinct du venv Odoo (3.12.10 pour
|
|
Odoo 18.0). C'est la seule version que `script/` vise : là où une distribution
|
|
ne la porte pas, pyenv la compile.
|
|
|
|
Le PATCH ne borne que le venv d'Odoo, dont le pyproject exige
|
|
`>=3.12.10,<3.13`. Pour l'outillage, la majeure.mineure suffit : exiger le
|
|
patch écarterait le Python d'une distribution d'un cran en retard — NixOS 25.11
|
|
livre 3.14.2 — et ferait compiler CPython pour rien.
|
|
|
|
`install_erplibre.sh` passe par `install_venv.sh`, donc par
|
|
`EL_PYTHON_PROVIDER`. Un venv dont `bin/python` n'est pas compatible (même
|
|
majeure.mineure, patch au moins égal) est DÉTRUIT puis rebâti : ce qui y avait
|
|
été posé à la main part avec lui. Le venv d'Odoo, lui, n'est rebâti que s'il
|
|
est HORS SERVICE : une simple différence de version le laisse en place, parce
|
|
que le rebâtir refait une installation Poetry entière. Un répertoire sans
|
|
`pyvenv.cfg` n'est jamais effacé.
|
|
|
|
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.
|
|
L'image Docker de production bâtit `.venv.erplibre` sur le Python d'Odoo de son
|
|
image de base, et s'arrête si ce Python ne sait pas lire `script/`.
|
|
|
|
## 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.
|