erplibre/env_var.sh
Mathieu Benoit a9f91dda87 [FIX] install nixos : l'amorçage, les en-têtes, les manuels écartés
L'amorçage d'ERPLibre n'atteignait pas NixOS : le Makefile force
« SHELL := /bin/bash », que l'image ne porte pas, et le fournisseur de
Python ne cherche l'interpréteur du système qu'en /usr/bin/pythonX.Y.
Les deux répondent une fois envfs déclaré.

Ce qui n'a pas de roue amont se compile et réclame ses en-têtes : ils sont
liés au profil du système, leurs bibliothèques vont au chargeur, et
pg_config — dérivation à part dans nixpkgs — est nommé. La sortie « doc »
de CPython est écartée : sa construction est un Sphinx de 3 000 pages qui
domine le temps d'installation d'une VM de 4 Go.

--- EN ---

ERPLibre's bootstrap did not reach NixOS: the Makefile forces "SHELL :=
/bin/bash", which the image lacks, and the Python provider only looks for
the system interpreter at /usr/bin/pythonX.Y. Both answer once envfs is
declared.

What has no upstream wheel compiles and demands its headers: they are
linked into the system profile, their libraries reach the loader, and
pg_config — a separate derivation in nixpkgs — is named. CPython's "doc"
output is left out: building it is a 3000-page Sphinx run that dominates
install time on a 4 GB VM.

Assisted-by: Claude Opus 5
2026-09-16 21:31:03 -04:00

83 lines
4 KiB
Bash
Executable file

#!/usr/bin/env bash
ERPLIBRE_VERSION=$(cat ".erplibre-semver-version" | xargs)
#EL_USER="erplibre"
EL_USER="${USER}"
#EL_HOME="/${EL_USER}"
EL_HOME="${HOME}"
#EL_HOME_ERPLIBRE="${EL_HOME}/erplibre"
EL_HOME_ERPLIBRE="${PWD}"
EL_HOME_ODOO="${EL_HOME_ERPLIBRE}"/odoo$(cat ".odoo-version" | xargs)/odoo
EL_ODOO_VERSION=$(cat ".odoo-version" | xargs)
EL_POETRY_VERSION=$(cat ".poetry-version" | xargs)
EL_PYTHON_ODOO_VERSION=$(cat ".python-odoo-version" | xargs)
EL_PYTHON_ERPLIBRE_VERSION=$(cat "./conf/python-erplibre-version" | xargs)
EL_ERPLIBRE_VERSION=$(cat ".erplibre-version" | xargs)
# Fournisseur d'interpreteur Python : auto | mise | pyenv.
# « auto » prend ce qui est DEJA pose, sinon mise s'il est present (Python
# precompile, quelques secondes), sinon pyenv (compilation). Voir
# script/install/lib_python_provider.sh.
EL_PYTHON_PROVIDER="${EL_PYTHON_PROVIDER:-auto}"
# Installateur de paquets Python : auto | uv | pip.
# « auto » prend uv s'il est present et si le venv vise est en Python >= 3.8,
# sinon pip ; un echec d'uv retombe sur pip. Voir
# script/install/lib_pip_provider.sh. Note : « poetry install » n'est PAS
# concerne, uv ne lit pas poetry.lock.
EL_PIP_PROVIDER="${EL_PIP_PROVIDER:-auto}"
# The default port where this Odoo instance will run under (provided you use the command -c in the terminal)
# Set to true if you want to install it, false if you don't need it or have it already installed.
EL_INSTALL_WKHTMLTOPDF="True"
# Set the default Odoo port
EL_PORT="8069"
EL_LONGPOLLING_PORT="8072"
# set the superadmin password
EL_SUPERADMIN="admin"
# The configuration systemctl service will be erplibre_dirname
EL_CONFIG="erplibre_${PWD##*/}"
EL_MINIMAL_ADDONS="False"
# Set this to True if you want to install Nginx!
EL_INSTALL_NGINX="False"
# Set the website name
EL_WEBSITE_NAME="localhost"
EL_GITHUB_TOKEN=""
EL_MANIFEST_PROD="./default.xml"
EL_MANIFEST_DEV="./manifest/git_manifest_erplibre.xml"
EL_LANG="fr"
# Verbosité de l'installation (poetry install, repo sync, git daemon).
# 0 = silencieux (défaut), 1 = logs détaillés. On respecte une valeur déjà
# passée en environnement : EL_VERBOSE=1 make install_odoo_18
EL_VERBOSE="${EL_VERBOSE:-0}"
# NixOS : donner aux roues manylinux les bibliotheques que nix-ld declare.
#
# nix-ld fournit l'editeur de liens (/lib64/ld-linux-x86-64.so.2) aux binaires
# etrangers qu'il LANCE. Mais un « .so » de roue manylinux n'est pas lance :
# il est charge par dlopen depuis le CPython du systeme, qui est un binaire de
# Nix et ne lit pas NIX_LD_LIBRARY_PATH. Sans cette ligne, l'installation
# reussit et « import psycopg2 » echoue APRES, sur « libz.so.1: cannot open
# shared object file » -- une erreur qui ne parle ni de pip ni de Nix.
#
# Rien ailleurs : la variable n'est posee que la ou nix-ld existe, et ne
# masque donc aucune bibliotheque sur les autres systemes.
if [ -n "${NIX_LD_LIBRARY_PATH:-}" ]; then
export LD_LIBRARY_PATH="${NIX_LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
fi
# NixOS : les chemins de compilation, relus du SYSTEME DE FICHIERS.
#
# Le module declare CPATH, LIBRARY_PATH et PKG_CONFIG_PATH, mais une session
# les recoit de pam_env a son OUVERTURE. Or l'installation applique le module
# (« make install_os ») puis compile (« make install_odoo_18 ») dans la MEME
# session : la sienne est plus vieille que ce qu'elle vient de declarer. Les
# trois paquets du verrou qui n'ont pas de roue amont s'arretaient alors sur
# « lber.h », « cups/http.h » et « mysql.h » -- au PREMIER passage seulement,
# ce qui est la pire des pannes : le second reussit et donne raison a tort.
#
# « /run/current-system/sw » est le profil courant du systeme, un lien que le
# rebuild vient de reposer : le lire ne depend d'aucune variable heritee.
if [ -d /run/current-system/sw ]; then
export CPATH="/run/current-system/sw/include${CPATH:+:${CPATH}}"
export LIBRARY_PATH="/run/current-system/sw/lib${LIBRARY_PATH:+:${LIBRARY_PATH}}"
export PKG_CONFIG_PATH="/run/current-system/sw/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
fi