diff --git a/cargo/flatpak-cargo-generator.py b/cargo/flatpak-cargo-generator.py index 2901692c..6f6866b8 100755 --- a/cargo/flatpak-cargo-generator.py +++ b/cargo/flatpak-cargo-generator.py @@ -118,14 +118,13 @@ def fetch_git_repo(git_url: str, commit: str) -> str: def update_workspace_keys(pkg, workspace): for key, item in pkg.items(): - # target.cfg(..).dependencies should reference root dependencies table from workspace + # Recurse for keys under target.cfg(..) if key == 'target': for target in item.values(): - if 'dependencies' in target: - update_workspace_keys(target['dependencies'], workspace.get('dependencies', None)) + update_workspace_keys(target, workspace) continue; - # dev-dependencies should reference root dependencies table from workspace - elif key == 'dev-dependencies': + # dev-dependencies and build-dependencies should reference root dependencies table from workspace + elif key == 'dev-dependencies' or key == 'build-dependencies': update_workspace_keys(item, workspace.get('dependencies', None)) continue; @@ -137,7 +136,13 @@ def update_workspace_keys(pkg, workspace): if 'workspace' in item: if isinstance(workspace_item, dict): del item['workspace'] - item.update(workspace_item) + + for dep_key, workspace_value in workspace_item.items(): + # features are additive + if dep_key == 'features' and 'features' in item: + item['features'] += workspace_value + else: + item[dep_key] = workspace_value elif len(item) > 1: del item['workspace'] item.update({ 'version': workspace_item })