mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-05-05 12:43:49 +00:00
feat: add blacklisted paths to implicit dependencies processing
It has been found that in some cases additional packages have been added as dependencies, like usr/share/applications, usr/lib/cmake, etc This commit adds an ability to blacklist specific paths from processing
This commit is contained in:
parent
0861548b56
commit
61a09ce705
@ -38,6 +38,7 @@ class PackageArchive:
|
||||
helper for package archives
|
||||
|
||||
Attributes:
|
||||
BLACKLISTED_PATHS(list[Path]): (class attribute) paths blacklisted from scan
|
||||
package(Package): package descriptor
|
||||
root(Path): path to root filesystem
|
||||
pacman(Pacman): alpm wrapper instance
|
||||
@ -47,6 +48,16 @@ class PackageArchive:
|
||||
package: Package
|
||||
pacman: Pacman
|
||||
|
||||
BLACKLISTED_PATHS = [
|
||||
Path("boot"),
|
||||
Path("etc"),
|
||||
Path("opt"),
|
||||
Path("run"),
|
||||
Path("usr") / "lib" / "cmake", # well-known case, cmake doesn't contain this directory
|
||||
Path("usr") / "share", # share mostly contains like icons, cursors. etc
|
||||
Path("var"),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def dynamic_needed(binary_path: Path) -> list[str]:
|
||||
"""
|
||||
@ -165,6 +176,10 @@ class PackageArchive:
|
||||
if any(package.package_name in base_packages for package in packages):
|
||||
continue
|
||||
|
||||
# skip blacklisted paths
|
||||
if any(path.is_relative_to(parent) for parent in self.BLACKLISTED_PATHS):
|
||||
continue
|
||||
|
||||
# remove explicit dependencies
|
||||
packages = [package for package in packages if package.is_root_package(packages, include_optional=False)]
|
||||
# remove optional dependencies
|
||||
|
@ -134,8 +134,10 @@ def test_refine_dependencies(package_archive_ahriman: PackageArchive, mocker: Mo
|
||||
|
||||
path1 = Path("usr") / "lib" / "python3.12"
|
||||
path2 = path1 / "site-packages"
|
||||
path3 = Path("etc")
|
||||
path4 = Path("var") / "lib" / "whatever"
|
||||
path3 = Path("base") / "path"
|
||||
path4 = Path("usr") / "lib" / "whatever"
|
||||
path5 = Path("usr") / "share" / "applications"
|
||||
path6 = Path("etc")
|
||||
|
||||
package1 = FilesystemPackage(package_name="package1", depends={"package5"}, opt_depends={"package2"})
|
||||
package2 = FilesystemPackage(package_name="package2", depends={"package1"}, opt_depends=set())
|
||||
@ -149,6 +151,8 @@ def test_refine_dependencies(package_archive_ahriman: PackageArchive, mocker: Mo
|
||||
path2: [package1, package2, package3, package5],
|
||||
path3: [package1, package4],
|
||||
path4: [package1],
|
||||
path5: [package1],
|
||||
path6: [package1],
|
||||
}) == {
|
||||
path1: [package6],
|
||||
path2: [package1, package5],
|
||||
|
Loading…
x
Reference in New Issue
Block a user