From 6fa52ca8fe053118d3cc44dc9202ed88da99685d Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Mon, 3 Sep 2018 18:24:17 +0800 Subject: [PATCH] cmake: Call check_python_dependencies.py from idf.py & cmake --- tools/cmake/project.cmake | 9 +++++++++ tools/idf.py | 16 +++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/tools/cmake/project.cmake b/tools/cmake/project.cmake index bf1ab269be..8784a9e9ba 100644 --- a/tools/cmake/project.cmake +++ b/tools/cmake/project.cmake @@ -29,6 +29,15 @@ include(idf_functions) set_default(PYTHON "python") +if(NOT PYTHON_DEPS_CHECKED AND NOT BOOTLOADER_BUILD) + message(STATUS "Checking Python dependencies...") + execute_process(COMMAND "${PYTHON}" "${IDF_PATH}/tools/check_python_dependencies.py" + RESULT_VARIABLE result) + if(NOT result EQUAL 0) + message(FATAL_ERROR "Some Python dependencies must be installed. Check above message for details.") + endif() +endif() + # project # # This macro wraps the cmake 'project' command to add diff --git a/tools/idf.py b/tools/idf.py index 1f017e7fce..2f552fa5d5 100755 --- a/tools/idf.py +++ b/tools/idf.py @@ -21,6 +21,11 @@ # See the License for the specific language governing permissions and # limitations under the License. # + +# Note: we don't check for Python build-time dependencies until +# check_environment() function below. If possible, avoid importing +# any external libraries here - put in external script, or import in +# their specific function instead. import sys import argparse import os @@ -98,6 +103,15 @@ def check_environment(): print("Setting IDF_PATH environment variable: %s" % detected_idf_path) os.environ["IDF_PATH"] = detected_idf_path + # check Python dependencies + print("Checking Python dependencies...") + try: + subprocess.check_call([ os.environ["PYTHON"], + os.path.join(os.environ["IDF_PATH"], "tools", "check_python_dependencies.py")], + env=os.environ) + except subprocess.CalledProcessError: + raise SystemExit(1) + def executable_exists(args): try: subprocess.check_output(args) @@ -143,7 +157,7 @@ def _ensure_build_directory(args, always_run_cmake=False): if args.generator is None: args.generator = detect_cmake_generator() try: - cmake_args = ["cmake", "-G", args.generator] + cmake_args = ["cmake", "-G", args.generator, "-DPYTHON_DEPS_CHECKED=1"] if not args.no_warnings: cmake_args += [ "--warn-uninitialized" ] if args.no_ccache: