@@ -, +, @@ Preventing self-blockers, if a package is moved and the package maintainer decided to block the old package name. (see #367215) --- a/pym/portage/tests/update/test_update_dbentry.py +++ a/pym/portage/tests/update/test_update_dbentry.py @@ -24,6 +24,18 @@ class UpdateDbentryTestCase(TestCase): (("move", Atom("dev-libs/A"), Atom("dev-libs/B")), "1", " >=dev-libs/A-1:0 ", " >=dev-libs/B-1:0 "), + (("move", Atom("dev-libs/A"), Atom("dev-libs/B")), "1", + " !dev-libs/A ", " !dev-libs/A "), + + (("move", Atom("dev-libs/A"), Atom("dev-libs/B")), "1", + " !dev-libs/A:0 ", " !dev-libs/B:0 "), + + (("move", Atom("dev-libs/A"), Atom("dev-libs/B")), "1", + " !>=dev-libs/A-1:0 ", " !>=dev-libs/B-1:0 "), + + (("move", Atom("dev-libs/A"), Atom("dev-libs/B")), "1", + " !>=dev-libs/A-1 ", " !>=dev-libs/B-1 "), + (("move", Atom("dev-libs/A"), Atom("dev-libs/B")), "2", " dev-libs/A[foo] ", " dev-libs/B[foo] "), --- a/pym/portage/update.py +++ a/pym/portage/update.py @@ -53,6 +53,9 @@ def update_dbentry(update_cmd, mycontent, eapi=None): continue if atom.cp != old_value: continue + # prevent self-blockers + if atom.blocker and atom.slot is None and atom.operator is None and atom.version is None: + continue split_content[i] = token.replace(old_value, new_value, 1) modified = True