git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2] ci: use absolute PYTHON_PATH in the Linux jobs

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Jul 23, 2020, 21:38 UTC
Message-ID
<20200723213848.30032-1-szeder.dev@gmail.com>
In-Reply-To
<xmqqsgdk7gkq.fsf@gitster.c.googlers.com>

In our test suite, when 'git p4' invokes a Git command as a subprocesses, then it should run the 'git' binary we are testing. Unfortunately, this is not the case in the 'linux-clang' and 'linux-gcc' jobs on Travis CI, where 'git p4' runs the system '/usr/bin/git' instead.

Travis CI's default Linux image includes 'pyenv', and all Python invocations that involve PATH lookup go through 'pyenv', e.g. our 'PYTHON_PATH=$(which python3)' sets '/opt/pyenv/shims/python3' as PYTHON_PATH, which in turn will invoke '/usr/bin/python3'. Alas, the 'pyenv' version included in this image is buggy, and prepends the directory containing the Python binary to PATH even if that is a system directory already in PATH near the end. Consequently, 'git p4' in those jobs ends up with its PATH starting with '/usr/bin', and then runs '/usr/bin/git'.

So use the absolute paths '/usr/bin/python{2,3}' explicitly when setting PYTHON_PATH in those Linux jobs to avoid the PATH lookup and thus the bogus 'pyenv' from interfering with our 'git p4' tests. Don't bother with special-casing Travis CI: while this issue doesn't affect the corresponding Linux jobs on GitHub Actions, both CI systems use Ubuntu LTS-based images, so we can safely rely on these Python paths.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
---

Junio, I see that you picked up the first/RFC version and applied it on top of v2.26.2. This patch won't work on v2.26.2, because its 'git p4' is not compatible with python3 yet.

 ci/lib.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ci/lib.sh b/ci/lib.sh
index ff24c547c8..3eefec500d 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -184,9 +184,9 @@ linux-clang|linux-gcc)
 	if [ "$jobname" = linux-gcc ]
 	then
 		export CC=gcc-8
-		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
+		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3"
 	else
-		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
+		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python2"
 	fi
 
 	export GIT_TEST_HTTPD=true
-- 
2.28.0.rc2.319.g2e16345e2b
Previous: Junio C HamanoNext: Junio C Hamano
Message 4 of 7 in “[RFC] travis-ci: remove bogus 'pyenv' in the Linux jobs”
  1. [RFC] travis-ci: remove bogus 'pyenv' in the Linux jobsSZEDER Gábor, Jul 21, 2020
  2. Eric SunshineJul 21, 2020
  3. Junio C HamanoJul 21, 2020
  4. ci: use absolute PYTHON_PATH in the Linux jobsSZEDER Gábor, Jul 23, 2020
  5. Junio C HamanoJul 23, 2020
  6. SZEDER GáborJul 24, 2020
  7. brian m. carlsonJul 21, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.