commit: 1e2df4c0df919f62ba68ed1a9d43bcd855e074ee
Author: Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Wed Oct 30 20:11:34 2024 +0000
Commit: Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sun Nov 3 21:26:02 2024 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=1e2df4c0
Skip self update logic when installation.TYPE != SYSTEM
If we are running from source (git) or as a module installed via pip, we
don't need to worry about overwriting the existing system install via an
ebuild installation.
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>
lib/_emerge/Scheduler.py | 4 ++++
lib/portage/package/ebuild/doebuild.py | 16 ++++++++++------
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/lib/_emerge/Scheduler.py b/lib/_emerge/Scheduler.py
index 283144b55a..fea151d5d1 100644
--- a/lib/_emerge/Scheduler.py
+++ b/lib/_emerge/Scheduler.py
@@ -17,6 +17,7 @@ import portage
from portage import os
from portage import _encodings
from portage import _unicode_encode
+from portage import installation
from portage.cache.mappings import slot_dict_class
from portage.elog.messages import eerror
from portage.output import colorize, create_color_func, red
@@ -339,6 +340,9 @@ class Scheduler(PollScheduler):
)
def _handle_self_update(self):
+ if installation.TYPE != installation.TYPES.SYSTEM:
+ return os.EX_OK
+
if self._opts_no_self_update.intersection(self.myopts):
return os.EX_OK
diff --git a/lib/portage/package/ebuild/doebuild.py
b/lib/portage/package/ebuild/doebuild.py
index b5fb46df70..47bd706c40 100644
--- a/lib/portage/package/ebuild/doebuild.py
+++ b/lib/portage/package/ebuild/doebuild.py
@@ -50,6 +50,7 @@ portage.proxy.lazyimport.lazyimport(
from portage import (
bsd_chflags,
eapi_is_supported,
+ installation,
merge,
os,
selinux,
@@ -3280,10 +3281,13 @@ def _prepare_self_update(settings):
def _handle_self_update(settings, vardb):
- cpv = settings.mycpv
- if settings["ROOT"] == "/" and portage.dep.match_from_list(
- portage.const.PORTAGE_PACKAGE_ATOM, [cpv]
+ if installation.TYPE != installation.TYPES.SYSTEM:
+ return False
+ if settings["ROOT"] != "/":
+ return False
+ if not portage.dep.match_from_list(
+ portage.const.PORTAGE_PACKAGE_ATOM, [settings.mycpv]
):
- _prepare_self_update(settings)
- return True
- return False
+ return False
+ _prepare_self_update(settings)
+ return True