Albin Vass 58381f58f1 ensure-pip: update include to include_tasks
include is being deprecated and import_tasks is supported
since 2.4 so update bindep to use that instead.

Change-Id: I21670d7d687b81ac745a74cf43cbe747eefde08c
2020-05-26 10:20:33 +02:00

100 lines
3.1 KiB
YAML

- name: Check if pip is installed
shell: |
PYTHON2=0
PYTHON3=1
{% if ensure_pip_from_packages and ensure_pip_from_packages_with_python2 %}
PYTHON2=1
{% elif ensure_pip_from_upstream and 'python2' in ensure_pip_from_upstream_interpreters %}
PYTHON2=1
{% endif %}
{% if ensure_pip_from_upstream and 'python3' not in ensure_pip_from_upstream_interpreters %}
PYTHON3=0
{% endif %}
# Not all platforms install a `pip` when installing python
# specific pip packages. We first check if pip$VERSION is
# available and if not fallback to checking if just `pip`
# is present.
if [ "$PYTHON2" -eq "1" ] ; then
command -v pip2 || command -v pip || exit 1
fi
if [ "$PYTHON3" -eq "1" ] ; then
command -v pip3 || command -v pip || exit 1
fi
args:
executable: /bin/bash
register: pip_preinstalled
failed_when: false
- name: Install pip from packages
include_tasks: "{{ zj_distro_os }}"
with_first_found:
- "{{ ansible_distribution_release }}.yaml"
- "{{ ansible_distribution }}.yaml"
- "{{ ansible_os_family }}.yaml"
- "default.yaml"
when:
- ensure_pip_from_packages
- pip_preinstalled.rc != 0
loop_control:
loop_var: zj_distro_os
- name: Include workarounds
import_tasks: workarounds.yaml
- name: Install pip from source
include_tasks: source.yaml
when:
- ensure_pip_from_upstream
- pip_preinstalled.rc != 0
#
# Export a working virtualenv_command
#
# Ansible's "pip:" module looks at the virtualenv_command and, if it
# isn't fully qualified, tries to find the command and add the leading
# path for you. However, it doesn't split it up; it will actually
# look for a command "python3 -m venv" (not, as you'd want, just
# "python") and everything fails. Thus we find the full path to
# python3 and build our default command for output.
- name: Probe for venv python full path
shell: |
command -v python3
args:
executable: /bin/bash
tags:
- skip_ansible_lint # command is a bash built-in
failed_when: false
register: _venv_probe
- name: Set host default
set_fact:
_host_virtualenv: '{{ (_venv_probe.rc == 0) | ternary(_venv_probe.stdout + " -m venv", "virtualenv") }}'
- name: Set ensure_pip_virtualenv_cmd
set_fact:
ensure_pip_virtualenv_command: '{{ ensure_pip_virtualenv_command | default(_host_virtualenv) }}'
cacheable: true
# NOTE(ianw): "python3 -m venv" is broken on Xenial images with
# pip-and-virtualenv because the pip is too old to handle our mirrors.
# We can't easily install our backport version because that element
# has put all the packages on hold. In this case, export
# ensure_pip_virtualenv_command as virtualenv until we have got rid of
# this element.
- name: Xenial override
when: ansible_distribution_release == 'xenial'
block:
- name: Check if we have pip-and-virtualenv
command: grep -q 'pip-and-virtualenv' /etc/dib-manifests/dib_environment
failed_when: false
register: _pip_check
become: yes
- name: Override virtualenv
set_fact:
ensure_pip_virtualenv_command: '/usr/local/bin/virtualenv -p python3'
when: _pip_check.rc == 0