diff --git a/src/ahriman/models/package.py b/src/ahriman/models/package.py index a4b9f98d..b3ced65b 100644 --- a/src/ahriman/models/package.py +++ b/src/ahriman/models/package.py @@ -538,14 +538,10 @@ class Package(LazyLogging): if local_version is None: return None # local version not found, keep upstream pkgrel - epoch, pkgver, _ = parse_version(self.version) - local_epoch, local_pkgver, local_pkgrel = parse_version(local_version) - - if epoch != local_epoch or pkgver != local_pkgver: - return None # epoch or pkgver are different, keep upstream pkgrel if vercmp(self.version, local_version) > 0: return None # upstream version is newer than local one, keep upstream pkgrel + *_, local_pkgrel = parse_version(local_version) if "." in local_pkgrel: major, minor = local_pkgrel.rsplit(".", maxsplit=1) else: diff --git a/tests/ahriman/core/build_tools/test_task.py b/tests/ahriman/core/build_tools/test_task.py index 2433733f..460819e9 100644 --- a/tests/ahriman/core/build_tools/test_task.py +++ b/tests/ahriman/core/build_tools/test_task.py @@ -134,9 +134,10 @@ def test_init_bump_pkgrel_skip(task_ahriman: Task, mocker: MockerFixture) -> Non """ must keep pkgrel if version is different from provided """ + task_ahriman.package.version = "2.0.0-1" mocker.patch("ahriman.models.package.Package.from_build", return_value=task_ahriman.package) mocker.patch("ahriman.core.build_tools.sources.Sources.load", return_value="sha") write_mock = mocker.patch("ahriman.models.pkgbuild_patch.PkgbuildPatch.write") - assert task_ahriman.init(Path("ahriman"), [], f"2:{task_ahriman.package.version}") == "sha" + assert task_ahriman.init(Path("ahriman"), [], "1.0.0-1") == "sha" write_mock.assert_not_called() diff --git a/tests/ahriman/models/test_package.py b/tests/ahriman/models/test_package.py index 01a50e41..870d03b4 100644 --- a/tests/ahriman/models/test_package.py +++ b/tests/ahriman/models/test_package.py @@ -474,11 +474,11 @@ def test_next_pkgrel(package_ahriman: Package) -> None: assert package_ahriman.next_pkgrel(package_ahriman.version) == "1.2.2" package_ahriman.version = "1:1.0.0-1" - assert package_ahriman.next_pkgrel("1:1.0.1-1") is None - assert package_ahriman.next_pkgrel("2:1.0.0-1") is None + assert package_ahriman.next_pkgrel("1:1.0.1-1") == "1.1" + assert package_ahriman.next_pkgrel("2:1.0.0-1") == "1.1" package_ahriman.version = "1.0.0-1.1" - assert package_ahriman.next_pkgrel("1.0.1-2") is None + assert package_ahriman.next_pkgrel("1.0.1-2") == "2.1" assert package_ahriman.next_pkgrel("1.0.0-2") == "2.1" package_ahriman.version = "1.0.0-2"