mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 07:17:17 +00:00
trim versions before dependency list calculation
When dependencies list contains same package with version it tries to find packages which don't exists
This commit is contained in:
parent
9f7995fb2f
commit
bee41dcc55
@ -211,23 +211,25 @@ class Package:
|
||||
:return: list of package dependencies including makedepends array, but excluding packages from this base
|
||||
"""
|
||||
# additional function to remove versions from dependencies
|
||||
def trim_version(name: str) -> str:
|
||||
def extract_packages(raw_packages_list: List[str]) -> Set[str]:
|
||||
return {trim_version(package_name) for package_name in raw_packages_list}
|
||||
|
||||
def trim_version(package_name: str) -> str:
|
||||
for symbol in ("<", "=", ">"):
|
||||
name = name.split(symbol)[0]
|
||||
return name
|
||||
package_name = package_name.split(symbol)[0]
|
||||
return package_name
|
||||
|
||||
srcinfo, errors = parse_srcinfo((path / ".SRCINFO").read_text())
|
||||
if errors:
|
||||
raise InvalidPackageInfo(errors)
|
||||
makedepends = srcinfo.get("makedepends", [])
|
||||
makedepends = extract_packages(srcinfo.get("makedepends", []))
|
||||
# sum over each package
|
||||
depends: List[str] = srcinfo.get("depends", [])
|
||||
depends = extract_packages(srcinfo.get("depends", []))
|
||||
for package in srcinfo["packages"].values():
|
||||
depends.extend(package.get("depends", []))
|
||||
depends |= extract_packages(package.get("depends", []))
|
||||
# we are not interested in dependencies inside pkgbase
|
||||
packages = set(srcinfo["packages"].keys())
|
||||
full_list = set(depends + makedepends) - packages
|
||||
return {trim_version(package_name) for package_name in full_list}
|
||||
return (depends | makedepends) - packages
|
||||
|
||||
def actual_version(self, paths: RepositoryPaths) -> str:
|
||||
"""
|
||||
|
@ -317,6 +317,7 @@ def test_walk(resource_path_root: Path) -> None:
|
||||
resource_path_root / "models" / "package_ahriman_aur",
|
||||
resource_path_root / "models" / "package_akonadi_aur",
|
||||
resource_path_root / "models" / "package_ahriman_srcinfo",
|
||||
resource_path_root / "models" / "package_gcc10_srcinfo",
|
||||
resource_path_root / "models" / "package_tpacpi-bat-git_srcinfo",
|
||||
resource_path_root / "models" / "package_yay_srcinfo",
|
||||
resource_path_root / "web" / "templates" / "build-status" / "login-modal.jinja2",
|
||||
|
@ -261,6 +261,16 @@ def test_dependencies_with_version(mocker: MockerFixture, resource_path_root: Pa
|
||||
assert Package.dependencies(Path("path")) == {"git", "go", "pacman"}
|
||||
|
||||
|
||||
def test_dependencies_with_version_and_overlap(mocker: MockerFixture, resource_path_root: Path) -> None:
|
||||
"""
|
||||
must load correct list of dependencies with version
|
||||
"""
|
||||
srcinfo = (resource_path_root / "models" / "package_gcc10_srcinfo").read_text()
|
||||
mocker.patch("pathlib.Path.read_text", return_value=srcinfo)
|
||||
|
||||
assert Package.dependencies(Path("path")) == {"glibc", "doxygen", "binutils", "git", "libmpc", "python", "zstd"}
|
||||
|
||||
|
||||
def test_actual_version(package_ahriman: Package, repository_paths: RepositoryPaths) -> None:
|
||||
"""
|
||||
must return same actual_version as version is
|
||||
|
57
tests/testresources/models/package_gcc10_srcinfo
Normal file
57
tests/testresources/models/package_gcc10_srcinfo
Normal file
@ -0,0 +1,57 @@
|
||||
pkgbase = gcc10
|
||||
pkgdesc = The GNU Compiler Collection (10.x.x)
|
||||
pkgver = 10.3.0
|
||||
pkgrel = 2
|
||||
url = https://gcc.gnu.org
|
||||
arch = x86_64
|
||||
license = GPL
|
||||
license = LGPL
|
||||
license = FDL
|
||||
license = custom
|
||||
checkdepends = dejagnu
|
||||
checkdepends = inetutils
|
||||
makedepends = binutils
|
||||
makedepends = doxygen
|
||||
makedepends = git
|
||||
makedepends = libmpc
|
||||
makedepends = python
|
||||
options = !emptydirs
|
||||
options = !lto
|
||||
source = https://sourceware.org/pub/gcc/releases/gcc-10.3.0/gcc-10.3.0.tar.xz
|
||||
source = https://sourceware.org/pub/gcc/releases/gcc-10.3.0/gcc-10.3.0.tar.xz.sig
|
||||
source = https://mirror.sobukus.de/files/src/isl/isl-0.24.tar.xz
|
||||
source = c89
|
||||
source = c99
|
||||
validpgpkeys = F3691687D867B81B51CE07D9BBE43771487328A9
|
||||
validpgpkeys = 86CFFCA918CF3AF47147588051E8B148A9999C34
|
||||
validpgpkeys = 13975A70E63C361C73AE69EF6EEB81F8981C74C7
|
||||
validpgpkeys = D3A93CAD751C2AF4F8C7AD516C35B99309B5FA62
|
||||
b2sums = ac7898f5eb8a7c5f151a526d1bb38913a68b50a65e4d010ac09fa20b6c801c671c790d780f23ccb8e4ecdfc686f4aa588082ccc9eb5c80c7b0e30788f824c1eb
|
||||
b2sums = SKIP
|
||||
b2sums = 39cbfd18ad05778e3a5a44429261b45e4abc3efe7730ee890674d968890fe5e52c73bc1f8d271c7c3bc72d5754e3f7fcb209bd139e823d19cb9ea4ce1440164d
|
||||
b2sums = a76d19c7830b0a141302890522086fc1548c177611501caac7e66d576e541b64ca3f6e977de715268a9872dfdd6368a011b92e01f7944ec0088f899ac0d2a2a5
|
||||
b2sums = 02b655b5668f7dea51c3b3e4ff46d5a4aee5a04ed5e26b98a6470f39c2e98ddc0519bffeeedd982c31ef3c171457e4d1beaff32767d1aedd9346837aac4ec3ee
|
||||
|
||||
pkgname = gcc10
|
||||
pkgdesc = The GNU Compiler Collection - C and C++ frontends (10.x.x)
|
||||
depends = gcc10-libs=10.3.0-2
|
||||
depends = binutils>=2.28
|
||||
depends = libmpc
|
||||
depends = zstd
|
||||
options = !emptydirs
|
||||
options = staticlibs
|
||||
|
||||
pkgname = gcc10-libs
|
||||
pkgdesc = Runtime libraries shipped by GCC (10.x.x)
|
||||
depends = glibc>=2.27
|
||||
provides = libgfortran.so
|
||||
provides = libubsan.so
|
||||
provides = libasan.so
|
||||
provides = libtsan.so
|
||||
provides = liblsan.so
|
||||
options = !emptydirs
|
||||
options = !strip
|
||||
|
||||
pkgname = gcc10-fortran
|
||||
pkgdesc = Fortran front-end for GCC (10.x.x)
|
||||
depends = gcc10=10.3.0-2
|
Loading…
Reference in New Issue
Block a user