From 3f7b6eade8d7aaa1103733fb9677042e85fd46ee 2020-12-25 17:51:40 From: Branko Majic Date: 2020-12-25 17:51:40 Subject: [PATCH] MAR-177: Do not pin pip/setuptools to specific versions when setting up Python virtual environment: - Provided more details for the pkg-resources workaround. - Skip installing latest version of pip - it will get installed automatically via the virtualenv command already. - Do not pin the setuptools package when installing. - Updated release notes. --- diff --git a/docs/releasenotes.rst b/docs/releasenotes.rst index 07d19cd7410a8a5169f9b06f7f886453def52502..000e051dc88c32af2603f9ed6e8497f2e143d2ae 100644 --- a/docs/releasenotes.rst +++ b/docs/releasenotes.rst @@ -2,6 +2,20 @@ Release notes ============= +NEXT RELEASE +------------ + +**Bug fixes:** + +* ``wsgi_website_`` role + + * When the virtual environment is created, the ``setuptools`` and + ``pip`` packages will not get pinned to any specific version, + allowing roles that are based on ``wsgi_website`` to easily + install preferred versions, and avoid idempotence problems in the + process. + + 5.0.0 ----- diff --git a/roles/wsgi_website/tasks/main.yml b/roles/wsgi_website/tasks/main.yml index c74b3ce06c3ab61098b24ddb84e0988432745dcb..ab2256d2547132ba2a3e7615c0d5f77bdd50db3f 100644 --- a/roles/wsgi_website/tasks/main.yml +++ b/roles/wsgi_website/tasks/main.yml @@ -113,8 +113,24 @@ group: "{{ user }}" mode: 02750 -# setuptools is excluded on Stretch, because it would pull-in the -# pkg-resources package that then messes with pip freeze etc. +# @TODO: Get rid of this if possible in Debian Buster. +# Do not install setuptools when creating the virtual environment - +# otherwise it will also install Debian-specific pkg-resources +# package. The pkg-resources package can be removed, but this breaks +# the package downloading via pip. +# +# Install setuptools later on via separate pip invocation. +# +# The pkg-resources package is also annoying because it shows-up in +# the output of the pip freeze command, and also interferes with the +# virtual environment management using pip-tools. +# +# For more details, see: +# +# - https://github.com/pypa/pip/issues/4022 +# - https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463 +# - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=871790 + - name: Create Python virtual environment command: '/usr/bin/virtualenv --no-setuptools --python "{{ python_interpreter }}" --prompt "({{ fqdn }})" "{{ home }}/virtualenv"' args: @@ -127,20 +143,16 @@ # created (thanks to 'creates' parameter). - skip_ansible_lint -- name: Install latest pip and setuptools in virtual environment +# @TODO: Park of the pkg-resources described above. +- name: Install setuptools in virtual environment pip: name: - - "pip>=18.0.0,<19.0.0" - - "setuptools>=40.0.0,<41.0.0" + - "setuptools" virtualenv: "{{ home }}/virtualenv" become: true become_user: "{{ admin }}" -# Workaround for: -# -# - https://github.com/pypa/pip/issues/4022 -# - https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463 -# - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=871790 +# @TODO: Park of the pkg-resources described above. - name: Remove the pkg-resources package from virtual environment (see comments above for details) pip: name: pkg-resources