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

Reply via email to