erplibre/script/poetry/poetry_add_build_dependency.sh
Mathieu Benoit 3fbde848f8 [ADD] poetry: pin a dependency per architecture
factur-x >= 4.0 needs saxonche, which Saxonica ships no s390x wheel for.
Pin 3.x there, 4.2+ everywhere else.

PEP 508 markers now survive the whole chain: kept instead of evaluated,
and each line reaches "poetry add" as a single argument -- the
"grep -v ';'" silently dropped them. Since "poetry add" dedupes by name,
the multi-constraint form, which the CLI cannot express, is written back
into the pyproject and the lock regenerated.

PyMuPDF is set aside on s390x for the same reason: MuPDF does not build
there. Along the way, the ignore list missed pymssql, whose key carried
its version, and two pre-existing solver deadlocks, lxml-html-clean and
s3fs, blocked any regeneration.

--- FR ---

factur-x >= 4.0 dépend de saxonche, sans roue s390x chez Saxonica. On
épingle la 3.x là-bas, la 4.2+ ailleurs.

Le marqueur PEP 508 traverse maintenant la chaîne : il est conservé au
lieu d'être évalué, et chaque ligne devient un seul argument de « poetry
add » — le « grep -v ';' » écartait ces lignes en silence. « poetry add »
dédupliquant par nom, la forme multi-contraintes, hors de portée du CLI,
est réécrite dans le pyproject, puis le lock refait.

PyMuPDF est écarté sur s390x pour la même raison : MuPDF ne s'y construit
pas. Au passage, la liste d'ignorés ratait pymssql, dont la clé portait sa
version, et deux blocages préexistants du solveur, lxml-html-clean et
s3fs, interdisaient toute régénération.

Assisted-by: Claude Opus 5
2026-08-16 06:11:44 -04:00

30 lines
1.1 KiB
Bash
Executable file

#!/usr/bin/env bash
Red='\033[0;31m' # Red
Color_Off='\033[0m' # Text Reset
VENV="./.venv.$(cat ".erplibre-version" | xargs)"
BUILD="${VENV}/build_dependency.txt"
# Chaque ligne devient UN argument, jamais plusieurs.
#
# L'expansion « $(...) » non quotée découpait sur les espaces : une ligne
# portant un marqueur — « factur-x>=4.2 ; platform_machine != "s390x" » —
# arrivait à poetry en cinq arguments. D'où le « grep -v ';' » historique, qui
# écartait purement et simplement ces lignes : la dépendance n'était jamais
# ajoutée. Or « poetry add » sait lire une chaîne PEP 508 complète, marqueur
# compris — vérifié avec son propre parseur.
#
# On garde le filtre sur « * » : une contrainte joker n'apporte rien à poetry.
mapfile -t DEPS < <(grep -v '\*' "${BUILD}" | grep -v '^[[:space:]]*$')
if [[ ${#DEPS[@]} -eq 0 ]]; then
echo "Aucune dépendance à ajouter depuis ${BUILD}."
exit 0
fi
"${VENV}/bin/poetry" add -vv "${DEPS[@]}"
retVal=$?
if [[ $retVal -ne 0 ]]; then
echo -e "${Red}Error${Color_Off} ./script/poetry/poetry_add_build_dependency.sh"
exit 1
fi