diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-08-02 17:21:19 +0200 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-10-14 09:35:56 -0700 |
| commit | dfbb1ab78186de259ce759b91d4061b8a246f2b1 (patch) | |
| tree | eae0b9d0859d2fa47e8ada15e3d02dbf2d8f746e /mesonbuild | |
| parent | c97970a3c476df05984f171fae74b21fb07a7428 (diff) | |
| download | meson-dfbb1ab78186de259ce759b91d4061b8a246f2b1.tar.gz | |
cargo: load a toplevel Cargo.lock
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index b8c1f8298..631890d0f 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -314,6 +314,18 @@ class Interpreter(InterpreterBase, HoldableObject): def __getnewargs_ex__(self) -> T.Tuple[T.Tuple[object], T.Dict[str, object]]: raise MesonBugException('This class is unpicklable') + def load_root_cargo_lock_file(self) -> None: + cargo_lock_filename = os.path.join(self.subdir, 'Cargo.lock') + cargo_lock = os.path.join(self.source_root, cargo_lock_filename) + if not os.path.isfile(cargo_lock): + return + from .. import cargo + try: + self.cargo = cargo.Interpreter(self.environment, self.subdir, self.subproject_dir) + except cargo.TomlImplementationMissing as e: + # error delayed to actual usage of a Cargo subproject + mlog.warning(f'cannot load Cargo.lock: {e}', fatal=False) + def _redetect_machines(self) -> None: # Re-initialize machine descriptions. We can do a better job now because we # have the compilers needed to gain more knowledge, so wipe out old @@ -1286,6 +1298,9 @@ class Interpreter(InterpreterBase, HoldableObject): assert self.environment.wrap_resolver is not None, 'for mypy' self.environment.wrap_resolver.load_and_merge(subprojects_dir, self.subproject) + if self.cargo is None: + self.load_root_cargo_lock_file() + self.build.projects[self.subproject] = proj_name mlog.log('Project name:', mlog.bold(proj_name)) mlog.log('Project version:', mlog.bold(self.project_version)) |
