Skip to content

1.10 Step | CreateVirtualenv

Omisen edited this page Jul 26, 2026 · 3 revisions

Crea il virtualenv Python in <install_dir>/sandbox, in modo reversibile. Vive in src/steps/create_virtualenv.rs. Secondo dei tre sotto-step dei sorgenti (1.9 CloneOdooRepovenv1.11 InstallPythonRequirements). Come utente odoo.


Ciclo di vita

Fase Comportamento
snapshot <venv>/bin/python3 eseguibile esiste? → Preexisting/Untracked
run Preexisting → skip. Altrimenti verifica python3 -m venv disponibile (dalle dipendenze di Fase 4), poi sudo -u odoo python3 -m venv <venv>, poi CreatedByUs. dry_run → log
undo solo CreatedByUs: rm -rf <venv>. Idempotente, best-effort

Se python3-venv non è disponibile → errore chiaro (non un fallimento oscuro più avanti).


L'undo che assorbe quello di 1.11

Il punto architetturale: rm -rf sandbox non rimuove solo il venv, ma tutti i pacchetti pip al suo interno. Per questo 1.11 InstallPythonRequirements non ha un undo proprio: sarebbe ridondante e fragile disinstallare i pacchetti uno a uno quando basta rimuovere il contenitore.

rollback (ordine inverso):
  undo pip   → NO-OP
  undo venv  → rm -rf sandbox   ← rimuove venv + tutti i pacchetti pip
  undo clone → rm -rf odoo

È il contenitore (venv) che possiede la rimozione del contenuto (pip). Modello per le scomposizioni future.


Note di design

  • Se il venv era Preexisting (non nostro), l'undo lo lascia intatto — e di conseguenza anche i suoi pacchetti.
  • rm -rf legittimo: il venv è sotto <install_dir>, nostro perimetro.
  • Test: assente (crea + undo rm -rf), Preexisting (no-op), python3-venv mancante (errore).

Clone this wiki locally