[Mlir-commits] [mlir] Fix for issue #126162: warn for inconsistent Python search options (PR #126329)
Dmitry Babokin
llvmlistbot at llvm.org
Fri Feb 7 16:35:58 PST 2025
https://github.com/dbabokin created https://github.com/llvm/llvm-project/pull/126329
Fixes #126162
I check locally that it works without warning for:
- neither options are defined
- both defined to the same value
And I checked that it warns if:
- only one is defined
- they defined to different values
>From 63c4c615559236ad9f4c95e15728dd32c6070d2a Mon Sep 17 00:00:00 2001
From: Dmitry Babokin <babokin at gmail.com>
Date: Fri, 7 Feb 2025 16:29:31 -0800
Subject: [PATCH] Fix for issue #126162: warn for inconsistent Python search
options
---
mlir/cmake/modules/MLIRDetectPythonEnv.cmake | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/mlir/cmake/modules/MLIRDetectPythonEnv.cmake b/mlir/cmake/modules/MLIRDetectPythonEnv.cmake
index 3a87d39c28a061b..f7a6fa624844046 100644
--- a/mlir/cmake/modules/MLIRDetectPythonEnv.cmake
+++ b/mlir/cmake/modules/MLIRDetectPythonEnv.cmake
@@ -22,6 +22,21 @@ macro(mlir_configure_python_dev_packages)
find_package(Python3 ${LLVM_MINIMUM_PYTHON_VERSION}
COMPONENTS Interpreter ${_python_development_component} REQUIRED)
+ # We look for both Python3 and Python, the search algorithm should be
+ # consistent, otherwise disastrous result is almost guaranteed.
+ # Warn if the policies for treating virtual environment are not defined
+ # consistently.
+ # For more details check issue #126162.
+ if(((DEFINED Python_FIND_VIRTUALENV) AND (NOT DEFINED Python3_FIND_VIRTUALENV)) OR
+ ((NOT DEFINED Python_FIND_VIRTUALENV) AND (DEFINED Python3_FIND_VIRTUALENV)))
+ message(WARNING "Only one of Python3_FIND_VIRTUALENV and Python_FIND_VIRTUALENV variables is defined. "
+ "Make sure that both variables are defined and have the same value.")
+ elseif((DEFINED Python_FIND_VIRTUALENV) AND (DEFINED Python3_FIND_VIRTUALENV) AND
+ (NOT Python_FIND_VIRTUALENV STREQUAL Python3_FIND_VIRTUALENV))
+ message(WARNING "Python3_FIND_VIRTUALENV and Python_FIND_VIRTUALENV are defined differently. "
+ "Make sure that the variables have the same values.")
+ endif()
+
# It's a little silly to detect Python a second time, but nanobind's cmake
# code looks for Python_ not Python3_.
find_package(Python ${LLVM_MINIMUM_PYTHON_VERSION}
More information about the Mlir-commits
mailing list