diff options
| author | Xavier Claessens <xavier.claessens@collabora.com> | 2024-08-15 09:13:20 -0400 |
|---|---|---|
| committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2024-08-16 10:31:33 +0530 |
| commit | 42a4d1aaa0854d376e9d28cf4b6ca93df90c8213 (patch) | |
| tree | b16b3491507d8e5e55809ee2765ddc5aea79f12d | |
| parent | 4b76aabe3a4dcc929edb5734b15e2468193c8879 (diff) | |
| download | meson-42a4d1aaa0854d376e9d28cf4b6ca93df90c8213.tar.gz | |
cargo: Ignore Cargo.lock if toml implementation is missing
It is only required if a Cargo subproject is actually configured.
| -rw-r--r-- | mesonbuild/cargo/interpreter.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py index 6c84672bc..98ffa50ac 100644 --- a/mesonbuild/cargo/interpreter.py +++ b/mesonbuild/cargo/interpreter.py @@ -55,13 +55,17 @@ else: toml2json = shutil.which('toml2json') +class TomlImplementationMissing(MesonException): + pass + + def load_toml(filename: str) -> T.Dict[object, object]: if tomllib: with open(filename, 'rb') as f: raw = tomllib.load(f) else: if toml2json is None: - raise MesonException('Could not find an implementation of tomllib, nor toml2json') + raise TomlImplementationMissing('Could not find an implementation of tomllib, nor toml2json') p, out, err = Popen_safe([toml2json, filename]) if p.returncode != 0: @@ -742,7 +746,11 @@ def load_wraps(source_dir: str, subproject_dir: str) -> T.List[PackageDefinition wraps: T.List[PackageDefinition] = [] filename = os.path.join(source_dir, 'Cargo.lock') if os.path.exists(filename): - cargolock = T.cast('manifest.CargoLock', load_toml(filename)) + try: + cargolock = T.cast('manifest.CargoLock', load_toml(filename)) + except TomlImplementationMissing as e: + mlog.warning('Failed to load Cargo.lock:', str(e), fatal=False) + return wraps for package in cargolock['package']: name = package['name'] version = package['version'] |
