]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
autogen.sh: Detect python
authorPetr Vorel <pvorel@suse.cz>
Mon, 30 Aug 2021 09:53:17 +0000 (11:53 +0200)
committerDaniel Kiper <daniel.kiper@oracle.com>
Mon, 6 Sep 2021 15:00:53 +0000 (17:00 +0200)
It helps to avoid an error on distros which has only python3 binary:
  ./autogen.sh: line 20: python: command not found

Use python3 as the default as python2 is EOL since Jan 2020. However,
check also for python which is on most distros, if not all, python2
because code still works on python2.

Although it should not be needed keep the possibility to define PYTHON
variable.

For detection use "command -v" which is POSIX and supported on all
common shells (bash, zsh, dash, busybox sh, mksh) instead requiring
"which" as an extra dependency (usable on containers).

Update the INSTALL file too.

Signed-off-by: Petr Vorel <pvorel@suse.cz>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
INSTALL
autogen.sh

diff --git a/INSTALL b/INSTALL
index 3270743b7ed55fe65f35f1e4f781778432780ccb..5e152b71f977c5452f1ffdf9f2b84538b3677517 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -42,7 +42,7 @@ To build GRUB's graphical terminal (gfxterm), you need:
 If you use a development snapshot or want to hack on GRUB you may
 need the following.
 
-* Python 2.6 or later
+* Python 3 (NOTE: python 2.6 should still work, but it's not tested)
 * Autoconf 2.63 or later
 * Automake 1.11 or later
 
@@ -87,9 +87,8 @@ The simplest way to compile this package is:
   
   3. Type `./bootstrap'.
 
-     * autogen.sh (called by bootstrap) uses python. By default the
-       invocation is "python", but it can be overridden by setting the
-       variable $PYTHON.
+     The autogen.sh (called by bootstrap) uses python. By default autodetect
+     it, but it can be overridden by setting the PYTHON variable.
 
   4. Type `./configure' to configure the package for your system.
      If you're using `csh' on an old version of System V, you might
index 31b0ced7e4163bf06696643457b6e2d843ed5bd8..5a5c356fda42246646d314628bc18382fb8d12a5 100755 (executable)
@@ -7,8 +7,21 @@ if [ ! -e grub-core/lib/gnulib/stdlib.in.h ]; then
   exit 1
 fi
 
-# Set ${PYTHON} to plain 'python' if not set already
-: ${PYTHON:=python}
+# Detect python
+if [ -z "$PYTHON" ]; then
+  for i in python3 python; do
+    if command -v "$i" > /dev/null 2>&1; then
+      PYTHON="$i"
+      echo "Using $PYTHON..."
+      break
+    fi
+  done
+
+  if [ -z "$PYTHON" ]; then
+    echo "python not found." >&2
+    exit 1
+  fi
+fi
 
 export LC_COLLATE=C
 unset LC_ALL