diff options
Diffstat (limited to 'mesonbuild/cargo')
| -rw-r--r-- | mesonbuild/cargo/interpreter.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py index 06076fa69..e26298641 100644 --- a/mesonbuild/cargo/interpreter.py +++ b/mesonbuild/cargo/interpreter.py @@ -819,6 +819,7 @@ def load_cargo_lock(filename: str, subproject_dir: str) -> T.Optional[CargoLock] toml = load_toml(filename) raw_cargolock = T.cast('raw.CargoLock', toml) cargolock = CargoLock.from_raw(raw_cargolock) + packagefiles_dir = os.path.join(subproject_dir, 'packagefiles') wraps: T.Dict[str, PackageDefinition] = {} for package in cargolock.package: meson_depname = _dependency_name(package.name, version.api(package.version)) @@ -832,6 +833,7 @@ def load_cargo_lock(filename: str, subproject_dir: str) -> T.Optional[CargoLock] url = f'https://crates.io/api/v1/crates/{package.name}/{package.version}/download' directory = f'{package.name}-{package.version}' name = meson_depname + wrap_type = 'file' cfg = { 'directory': directory, 'source_url': url, @@ -842,17 +844,19 @@ def load_cargo_lock(filename: str, subproject_dir: str) -> T.Optional[CargoLock] elif package.source.startswith('git+'): url, revision, directory = _parse_git_url(package.source) name = directory + wrap_type = 'git' cfg = { 'url': url, 'revision': revision, 'method': 'cargo', } - wraps[directory].add_provided_dep(meson_depname) else: mlog.warning(f'Unsupported source URL in {filename}: {package.source}') continue + if os.path.isdir(os.path.join(packagefiles_dir, name)): + cfg['patch_directory'] = name if directory not in wraps: - wraps[directory] = PackageDefinition.from_values(name, subproject_dir, 'file', cfg) + wraps[directory] = PackageDefinition.from_values(name, subproject_dir, wrap_type, cfg) wraps[directory].add_provided_dep(meson_depname) cargolock.wraps = {w.name: w for w in wraps.values()} return cargolock |
