From 237f7f7c771bff6e9ad37e271a1904e40d0f4114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pelayo=20Garc=C3=ADa?= <25091358+oyale@users.noreply.github.com> Date: Tue, 27 Feb 2024 20:39:44 +0100 Subject: [PATCH] feat: remove venv and reinstall odoo on python version change Without this steps, changing the python version will not cause any effect in venv. When the venv is destroyed, Odoo needs to be reinstalled. --- tasks/main.yml | 2 +- tasks/pyenv.yml | 25 +++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/tasks/main.yml b/tasks/main.yml index b3d9960..a28cfd8 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -123,7 +123,7 @@ become: true become_user: "{{ odoo_role_odoo_user }}" shell: "cd {{ odoo_role_odoo_path }} && {{ odoo_role_odoo_python_path }} setup.py install" - when: odoo_role_desired_tar_download.changed or odoo_role_desired_git_download.changed + when: odoo_role_desired_tar_download.changed or odoo_role_desired_git_download.changed or (python_version_changed is defined and python_version_changed.changed) - name: Populate community db modules set_fact: diff --git a/tasks/pyenv.yml b/tasks/pyenv.yml index eb8d3ae..19101c6 100644 --- a/tasks/pyenv.yml +++ b/tasks/pyenv.yml @@ -75,17 +75,38 @@ become_user: "{{ odoo_role_odoo_user }}" shell: . /home/{{ odoo_role_odoo_user }}/pyenv/.pyenvrc && pyenv update +- name: "Check if virtual environment exists" + become: true + become_user: "{{ odoo_role_odoo_user }}" + stat: + path: "/home/{{ odoo_role_odoo_user }}/pyenv/versions/{{ odoo_role_venv_name }}/bin/python" + register: venv_python + +- name: "Check Python version in virtual environment" + become: true + become_user: "{{ odoo_role_odoo_user }}" + shell: "/home/{{ odoo_role_odoo_user }}/pyenv/versions/{{ odoo_role_venv_name }}/bin/python --version" + register: python_version + when: venv_python.stat.exists + +- name: "Delete existing virtual environment with different Python version" + become: true + become_user: "{{ odoo_role_odoo_user }}" + shell: ". /home/{{ odoo_role_odoo_user }}/pyenv/.pyenvrc && pyenv virtualenv-delete -f {{ odoo_role_venv_name }}" + register: python_version_changed + when: venv_python.stat.exists and (python_version.stdout.split()[1] != odoo_role_python_version) + - name: "Install Python interpreter {{ odoo_role_python_version }}" become: true become_user: "{{ odoo_role_odoo_user }}" - shell: . /home/{{ odoo_role_odoo_user }}/pyenv/.pyenvrc && pyenv install {{ odoo_role_python_version }} + shell: ". /home/{{ odoo_role_odoo_user }}/pyenv/.pyenvrc && pyenv install {{ odoo_role_python_version }}" args: creates: "/home/{{ odoo_role_odoo_user }}/pyenv/versions/{{ odoo_role_python_version }}/bin/python" - name: "Create virtual environment {{ odoo_role_venv_name }}" become: true become_user: "{{ odoo_role_odoo_user }}" - shell: . /home/{{ odoo_role_odoo_user }}/pyenv/.pyenvrc && pyenv virtualenv {{ odoo_role_python_version }} {{ odoo_role_venv_name }} + shell: ". /home/{{ odoo_role_odoo_user }}/pyenv/.pyenvrc && pyenv virtualenv {{ odoo_role_python_version }} {{ odoo_role_venv_name }}" args: creates: "/home/{{ odoo_role_odoo_user }}/pyenv/versions/{{ odoo_role_venv_name }}/bin/python"