* [gentoo-commits] proj/portage:master commit in: lib/portage/package/ebuild/_config/, /, lib/portage/package/ebuild/
@ 2022-11-23 23:02 Sam James
0 siblings, 0 replies; only message in thread
From: Sam James @ 2022-11-23 23:02 UTC (permalink / raw
To: gentoo-commits
commit: e4902028b2cc86957fd91f411662b9710100e771
Author: James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 27 22:48:35 2018 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Nov 23 23:01:57 2022 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=e4902028
Fix definition of ESYSROOT to use SYSROOT's prefix
For a given location, we were basing ESYSROOT on the prefix of that
location instead of the prefix used by the SYSROOT location. For
example, if BROOT=/foo, ROOT=/bar, EPREFIX=/baz, EROOT=/bar/baz, and
SYSROOT=/ then ESYSROOT should be /foo, not /baz.
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>
Closes: https://github.com/gentoo/portage/pull/932
Signed-off-by: Sam James <sam <AT> gentoo.org>
NEWS | 5 +++++
lib/portage/package/ebuild/_config/LocationsManager.py | 11 +++++++++--
lib/portage/package/ebuild/config.py | 2 +-
3 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/NEWS b/NEWS
index a0463aa4c..1426a0856 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,11 @@ Bug fixes:
fatal for now. The number of failures in bug #870412 is too large for the time
being.
+* Fix definition of ESYSROOT to use SYSROOT's prefix. For a given location, we
+ were basing ESYSROOT on the prefix of that location instead of the prefix used
+ by the SYSROOT location. For example, if BROOT=/foo, ROOT=/bar, EPREFIX=/baz,
+ EROOT=/bar/baz, and SYSROOT=/ then ESYSROOT should be /foo, not /baz.
+
portage-3.0.39 (2022-11-20)
--------------
diff --git a/lib/portage/package/ebuild/_config/LocationsManager.py b/lib/portage/package/ebuild/_config/LocationsManager.py
index 5c3592f5d..a92407dbd 100644
--- a/lib/portage/package/ebuild/_config/LocationsManager.py
+++ b/lib/portage/package/ebuild/_config/LocationsManager.py
@@ -93,8 +93,6 @@ class LocationsManager:
+ os.sep
)
- self.esysroot = self.sysroot.rstrip(os.sep) + self.eprefix + os.sep
-
# TODO: Set this via the constructor using
# PORTAGE_OVERRIDE_EPREFIX.
self.broot = portage.const.EPREFIX
@@ -405,6 +403,15 @@ class LocationsManager:
self.eroot = self.target_root.rstrip(os.sep) + self.eprefix + os.sep
+ # In a cross-prefix scenario where SYSROOT=/ and ROOT=/, assume we want
+ # ESYSROOT to point to the target prefix.
+ if self.sysroot == self.target_root:
+ self.esysroot = self.sysroot.rstrip(os.sep) + self.eprefix + os.sep
+ elif self.sysroot == "/":
+ self.esysroot = self.broot + os.sep
+ else:
+ self.esysroot = self.sysroot
+
self.global_config_path = GLOBAL_CONFIG_PATH
if portage.const.EPREFIX:
self.global_config_path = os.path.join(
diff --git a/lib/portage/package/ebuild/config.py b/lib/portage/package/ebuild/config.py
index 74f7ab371..a37b373cf 100644
--- a/lib/portage/package/ebuild/config.py
+++ b/lib/portage/package/ebuild/config.py
@@ -424,7 +424,6 @@ class config:
eprefix = locations_manager.eprefix
config_root = locations_manager.config_root
sysroot = locations_manager.sysroot
- esysroot = locations_manager.esysroot
broot = locations_manager.broot
abs_user_config = locations_manager.abs_user_config
make_conf_paths = [
@@ -467,6 +466,7 @@ class config:
locations_manager.set_root_override(make_conf.get("ROOT"))
target_root = locations_manager.target_root
eroot = locations_manager.eroot
+ esysroot = locations_manager.esysroot
self.global_config_path = locations_manager.global_config_path
# The expand_map is used for variable substitution
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2022-11-23 23:02 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-23 23:02 [gentoo-commits] proj/portage:master commit in: lib/portage/package/ebuild/_config/, /, lib/portage/package/ebuild/ Sam James
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox