summaryrefslogtreecommitdiff
path: root/mesonbuild/cargo
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2024-08-15 09:13:20 -0400
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2024-08-16 10:31:33 +0530
commit42a4d1aaa0854d376e9d28cf4b6ca93df90c8213 (patch)
treeb16b3491507d8e5e55809ee2765ddc5aea79f12d /mesonbuild/cargo
parent4b76aabe3a4dcc929edb5734b15e2468193c8879 (diff)
downloadmeson-42a4d1aaa0854d376e9d28cf4b6ca93df90c8213.tar.gz
cargo: Ignore Cargo.lock if toml implementation is missing
It is only required if a Cargo subproject is actually configured.
Diffstat (limited to 'mesonbuild/cargo')
-rw-r--r--mesonbuild/cargo/interpreter.py12
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']