From 153eaec61513e14f5a7f8f2a998600d07f17bc84 Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Fri, 31 May 2024 10:51:42 +0200 Subject: [PATCH] kbuild: Allow Kconfig dependendencies on Python Recently drivers have started depending on Python to generate register definitions during the build process. In order to prevent such drivers from breaking builds on systems that don't have Python installed, make them depend on the minimum required Python version that they need via Kconfig. If Python is not installed on the system, these drivers will be automatically disabled. Signed-off-by: Thierry Reding --- drivers/gpu/drm/msm/Kconfig | 1 + scripts/min-tool-version.sh | 3 +++ scripts/python-version.sh | 41 +++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100755 scripts/python-version.sh diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig index 1931ecf73e32..5f7f84de55e4 100644 --- a/drivers/gpu/drm/msm/Kconfig +++ b/drivers/gpu/drm/msm/Kconfig @@ -11,6 +11,7 @@ config DRM_MSM depends on QCOM_LLCC || QCOM_LLCC=n depends on QCOM_COMMAND_DB || QCOM_COMMAND_DB=n depends on PM + depends on $(success,$(srctree)/scripts/python-version.sh) select IOMMU_IO_PGTABLE select QCOM_MDT_LOADER if ARCH_QCOM select REGULATOR diff --git a/scripts/min-tool-version.sh b/scripts/min-tool-version.sh index 91c91201212c..447a3ad4c0bf 100755 --- a/scripts/min-tool-version.sh +++ b/scripts/min-tool-version.sh @@ -38,6 +38,9 @@ rustc) bindgen) echo 0.65.1 ;; +python) + echo 3.5.0 + ;; *) echo "$1: unknown tool" >&2 exit 1 diff --git a/scripts/python-version.sh b/scripts/python-version.sh new file mode 100755 index 000000000000..c997d40418dc --- /dev/null +++ b/scripts/python-version.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-only +# +# Print the Python version in a 5 or 6-digit form. +# Also, perform the minimum version check. + +set -e + +PYTHON=${PYTHON:-python} + +get_canonical_version() +{ + IFS=. + set -- $1 + + # If the 2nd or 3rd field is missing, fill it with a zero. + echo $((10000 * $1 + 100 * ${2:-0} + ${3:-0})) +} + +output=$(LC_ALL=C "$PYTHON" --version) + +# Split the line on spaces. +IFS=' ' +set -- $output +name=$1 +version=$2 + +min_tool_version=$(dirname $0)/min-tool-version.sh +min_version=$($min_tool_version python) + +cversion=$(get_canonical_version $version) +min_version=$(get_canonical_version $min_version) + +if [ "$cversion" -lt "$min_version" ]; then + echo >&2 "***" + echo >&2 "*** Python is too old." + echo >&2 "***" + exit 1 +fi + +echo $name $version -- 2.44.0