diff --git a/src/ahriman/models/package_archive.py b/src/ahriman/models/package_archive.py index e334d0c8..81bbab04 100644 --- a/src/ahriman/models/package_archive.py +++ b/src/ahriman/models/package_archive.py @@ -207,11 +207,12 @@ class PackageArchive: dependencies = set() roots: set[Path] = set() - package_dir = self.root / "build" / self.package.base / "pkg" - for path in filter(lambda p: p.is_file(), walk(package_dir)): - dependencies.update(PackageArchive.dynamic_needed(path)) - filesystem_path = Path(*path.relative_to(package_dir).parts[1:]) - roots.update(filesystem_path.parents[:-1]) # last element is always . because paths are relative + for package in self.package.packages: + package_dir = self.root / "build" / self.package.base / "pkg" / package + for path in filter(lambda p: p.is_file(), walk(package_dir)): + dependencies.update(PackageArchive.dynamic_needed(path)) + filesystem_path = Path(*path.relative_to(package_dir).parts) + roots.update(filesystem_path.parents[:-1]) # last element is always . because paths are relative return dependencies, roots diff --git a/tests/ahriman/models/test_package_archive.py b/tests/ahriman/models/test_package_archive.py index 8b0cd068..8d78898a 100644 --- a/tests/ahriman/models/test_package_archive.py +++ b/tests/ahriman/models/test_package_archive.py @@ -188,10 +188,11 @@ def test_depends_on_paths(package_archive_ahriman: PackageArchive, mocker: Mocke """ must correctly extract dependencies """ - package_dir = package_archive_ahriman.root / "build" / package_archive_ahriman.package.base / "pkg" + package_dir = package_archive_ahriman.root / "build" / \ + package_archive_ahriman.package.base / "pkg" / package_archive_ahriman.package.base dynamic_mock = mocker.patch("ahriman.models.package_archive.PackageArchive.dynamic_needed", return_value=["lib"]) walk_mock = mocker.patch("ahriman.models.package_archive.walk", return_value=[ - package_dir / package_archive_ahriman.package.base / "root" / "file", + package_dir / "root" / "file", Path("directory"), ]) mocker.patch("pathlib.Path.is_file", autospec=True, side_effect=lambda path: path != Path("directory")) @@ -199,7 +200,7 @@ def test_depends_on_paths(package_archive_ahriman: PackageArchive, mocker: Mocke dependencies, roots = package_archive_ahriman.depends_on_paths() assert dependencies == {"lib"} assert roots == {Path("root")} - dynamic_mock.assert_called_once_with(package_dir / package_archive_ahriman.package.base / "root" / "file") + dynamic_mock.assert_called_once_with(package_dir / "root" / "file") walk_mock.assert_called_once_with(package_dir)