From a22200a646eaf42cd4902a2fe3358d29717ac129 Mon Sep 17 00:00:00 2001 From: Martin Kelly Date: Thu, 2 Apr 2020 13:56:32 -0700 Subject: cmake: fix Python executable with cmake Currently, CMake has two ways of finding Python executables: FindPythonInterp and FindPython/FindPython3. FindPythonInterp is deprecated and may be removed at some point. Currently, python3native sets PYTHON_EXECUTABLE, which FindPythonInterp uses. This is a problem for a few reasons: - Setting PYTHON_EXECUTABLE as an environment variable doesn't work, as CMake needs it to be set as an explicit CMake option via -D. - Projects using the newer FindPython/FindPython3 don't pickup the right Python, as the newer routines use Python_EXECUTABLE and Python3_EXECUTABLE. Fix this by setting PYTHON_EXECUTABLE, Python_EXECUTABLE, and Python3_EXECUTABLE using -D options to EXTRA_OECMAKE. The CMake routines are documented below: https://cmake.org/cmake/help/latest/module/FindPythonInterp.html https://cmake.org/cmake/help/latest/module/FindPython.html https://cmake.org/cmake/help/latest/module/FindPython3.html Signed-off-by: Martin Kelly Signed-off-by: Richard Purdie --- meta/classes/cmake.bbclass | 3 +++ meta/classes/python3native.bbclass | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass index d91cf20130..94ed8061bb 100644 --- a/meta/classes/cmake.bbclass +++ b/meta/classes/cmake.bbclass @@ -175,6 +175,9 @@ cmake_do_configure() { -DCMAKE_INSTALL_LIBDIR:PATH=${@os.path.relpath(d.getVar('libdir'), d.getVar('prefix') + '/')} \ -DCMAKE_INSTALL_INCLUDEDIR:PATH=${@os.path.relpath(d.getVar('includedir'), d.getVar('prefix') + '/')} \ -DCMAKE_INSTALL_DATAROOTDIR:PATH=${@os.path.relpath(d.getVar('datadir'), d.getVar('prefix') + '/')} \ + -DPYTHON_EXECUTABLE:PATH=${PYTHON} \ + -DPython_EXECUTABLE:PATH=${PYTHON} \ + -DPython3_EXECUTABLE:PATH=${PYTHON} \ -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \ -DCMAKE_INSTALL_SO_NO_EXE=0 \ -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \ diff --git a/meta/classes/python3native.bbclass b/meta/classes/python3native.bbclass index 182c11aa2e..d98fb4c758 100644 --- a/meta/classes/python3native.bbclass +++ b/meta/classes/python3native.bbclass @@ -1,8 +1,6 @@ inherit python3-dir PYTHON="${STAGING_BINDIR_NATIVE}/python3-native/python3" -# PYTHON_EXECUTABLE is used by cmake -PYTHON_EXECUTABLE="${PYTHON}" EXTRANATIVEPATH += "python3-native" DEPENDS_append = " python3-native " -- cgit 1.2.3-korg