diff options
-rw-r--r-- | mesonbuild/cmake/interpreter.py | 6 | ||||
-rw-r--r-- | mesonbuild/dependencies/base.py | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py index 7e9873f..125f18b 100644 --- a/mesonbuild/cmake/interpreter.py +++ b/mesonbuild/cmake/interpreter.py @@ -15,6 +15,8 @@ # This class contains the basic functionality needed to run any interpreter # or an interpreter-based tool. +import pkg_resources + from .common import CMakeException, CMakeTarget from .client import CMakeClient, RequestCMakeInputs, RequestConfigure, RequestCompute, RequestCodeModel from .fileapi import CMakeFileAPI @@ -789,7 +791,7 @@ class CMakeInterpreter: raise CMakeException('Unable to find CMake') self.trace = CMakeTraceParser(cmake_exe.version(), self.build_dir, permissive=True) - preload_file = Path(__file__).resolve().parent / 'data' / 'preload.cmake' + preload_file = pkg_resources.resource_filename('mesonbuild', 'cmake/data/preload.cmake') # Prefere CMAKE_PROJECT_INCLUDE over CMAKE_TOOLCHAIN_FILE if possible, # since CMAKE_PROJECT_INCLUDE was actually designed for code injection. @@ -1034,7 +1036,7 @@ class CMakeInterpreter: root_cb.lines += [function('project', [self.project_name] + self.languages)] # Add the run script for custom commands - run_script = '{}/data/run_ctgt.py'.format(os.path.dirname(os.path.realpath(__file__))) + run_script = pkg_resources.resource_filename('mesonbuild', 'cmake/data/run_ctgt.py') run_script_var = 'ctgt_run_script' root_cb.lines += [assign(run_script_var, function('find_program', [[run_script]], {'required': True}))] diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 8b452cd..c0ec089 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -28,6 +28,8 @@ import typing as T from enum import Enum from pathlib import Path, PurePath +import pkg_resources + from .. import mlog from .. import mesonlib from ..compilers import clib_langs @@ -1522,8 +1524,8 @@ class CMakeDependency(ExternalDependency): build_dir = self._get_build_dir() # Insert language parameters into the CMakeLists.txt and write new CMakeLists.txt - src_cmake = Path(__file__).parent / 'data' / cmake_file - cmake_txt = src_cmake.read_text() + # Per the warning in pkg_resources, this is *not* a path and os.path and Pathlib are *not* safe to use here. + cmake_txt = pkg_resources.resource_string('mesonbuild', 'dependencies/data/' + cmake_file).decode() # In general, some Fortran CMake find_package() also require C language enabled, # even if nothing from C is directly used. An easy Fortran example that fails |