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
3.6 KiB
| name | description |
|---|---|
| erplibre-deployment | 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.