From e1ce6e3115eb3941ade27ef009d1245e4b0b74f1 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Mon, 19 Sep 2022 09:48:46 +0200 Subject: [PATCH] python-setup: Fix venv creation in Ubuntu 22.04 Fixes https://github.com/github/codeql-action/issues/1249 --- python-setup/install_tools.ps1 | 8 ++++++-- python-setup/install_tools.sh | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/python-setup/install_tools.ps1 b/python-setup/install_tools.ps1 index 3c78378a3..796c0ecb9 100644 --- a/python-setup/install_tools.ps1 +++ b/python-setup/install_tools.ps1 @@ -1,7 +1,11 @@ #! /usr/bin/pwsh -py -2 -m pip install --user --upgrade pip setuptools wheel -py -3 -m pip install --user --upgrade pip setuptools wheel +# while waiting for the next release of `virtualenv` after v20.16.5, we install an older +# version of `setuptools` to ensure that binaries are always put under +# `/bin`, which wouldn't always happen with the GitHub actions version of +# Ubuntu 22.04. See https://github.com/github/codeql-action/issues/1249 +py -2 -m pip install --user --upgrade pip 'setuptools<60' wheel +py -3 -m pip install --user --upgrade pip 'setuptools<60' wheel # virtualenv is a bit nicer for setting up virtual environment, since it will provide up-to-date versions of # pip/setuptools/wheel which basic `python3 -m venv venv` won't diff --git a/python-setup/install_tools.sh b/python-setup/install_tools.sh index 7acb33f14..e2e5be36b 100755 --- a/python-setup/install_tools.sh +++ b/python-setup/install_tools.sh @@ -11,7 +11,13 @@ set -e export PATH="$HOME/.local/bin:$PATH" # Setup Python 3 dependency installation tools. -python3 -m pip install --user --upgrade pip setuptools wheel + +# we install an older version of `setuptools` to ensure that binaries are always put +# under `/bin`, which wouldn't always happen with the GitHub actions version +# of Ubuntu 22.04. See https://github.com/github/codeql-action/issues/1249. The the next +# release of `virtualenv` after v20.16.5 will include a fix for this, so we can remove +# this bit of the logic again. +python3 -m pip install --user --upgrade pip 'setuptools<60' wheel # virtualenv is a bit nicer for setting up virtual environment, since it will provide up-to-date versions of # pip/setuptools/wheel which basic `python3 -m venv venv` won't @@ -40,7 +46,7 @@ if command -v python2 >/dev/null 2>&1; then curl --location --fail https://bootstrap.pypa.io/pip/2.7/get-pip.py | python2 fi - python2 -m pip install --user --upgrade pip setuptools wheel + python2 -m pip install --user --upgrade pip 'setuptools<60' wheel python2 -m pip install --user 'virtualenv<20.11' fi