From e059d96826799db01e4b7117d2bd2a2df46a1199 Mon Sep 17 00:00:00 2001 From: Jonathan Rosser Date: Wed, 12 Feb 2020 22:05:30 +0000 Subject: [PATCH] Verify version number for virtualenv>=20.0.0 Depends-On: https://review.opendev.org/711015 Change-Id: Ibc92a6126ff161e1f2edd5d831a1f832d328323e --- tasks/python_venv_preflight.yml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/tasks/python_venv_preflight.yml b/tasks/python_venv_preflight.yml index 6c500a0..3c6a3d0 100644 --- a/tasks/python_venv_preflight.yml +++ b/tasks/python_venv_preflight.yml @@ -21,27 +21,34 @@ when: - venv_install_destination_path is not defined -- name: Collect the version of virtualenv +- name: Collect the version of virtualenv from either stdout or stderr shell: | - virtualenv --version 2>/dev/null || echo 'none' + virtualenv --version 2>&1 || echo 'none' args: executable: /bin/bash changed_when: false failed_when: false register: _virtualenv_version + # _virtualenv_version may take two forms: + # (stdout) '15.1.0' + # (stderr) 'virtualenv 20.0.1 from /usr/local/lib/python2.7/dist-packages/virtualenv/__init__.pyc' +- name: Extract just the virtualevn version number + set_fact: + _virtualenv_version_number: "{{ (_virtualenv_version.stdout.split(' ') | length == 1) | ternary(_virtualenv_version.stdout, _virtualenv_version.stdout.split(' ')[1]) }}" + - name: Fail when required virtualenv version is not present fail: msg: >- The required virtualenv version is not present. The minimum version of 1.10 is required, but - {{ _virtualenv_version.stdout }} is installed. + {{ _virtualenv_version_number }} is installed. when: - - ((_virtualenv_version.stdout | trim) == 'none') or - ((_virtualenv_version.stdout | trim) is version('1.10', '<')) + - ((_virtualenv_version_number | trim) == 'none') or + ((_virtualenv_version_number | trim) is version('1.10', '<')) - name: Set extra virtualenv parameters set_fact: _venv_create_extra_options: >- - {{ ((_virtualenv_version.stdout | trim) is version('14.0.0', '<')) | ternary('--never-download', '--no-download') }} - {{ ((_virtualenv_version.stdout | trim) is version('1.7.0', '<')) | ternary('--no-site-packages', '') }} + {{ ((_virtualenv_version_number | trim) is version('14.0.0', '<')) | ternary('--never-download', '--no-download') }} + {{ ((_virtualenv_version_number | trim) is version('1.7.0', '<')) | ternary('--no-site-packages', '') }}