commit:     5d5525ff57e9f0e28a17ea63aac19739cb5e77de
Author:     Michael Haubenwallner <haubi <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 28 15:43:29 2020 +0000
Commit:     Michael Haubenwallner <haubi <AT> gentoo <DOT> org>
CommitDate: Tue Jan 28 15:51:10 2020 +0000
URL:        https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=5d5525ff

bootstrap-prefix.sh: fix circular deps in stage3

In prefix guest, when about to "with_stack_emerge_pkgs sys-apps/grep",
portage fails with circular dependencies potentially breakable with
USE=-berkdb, although we do set the USE=-berkdb environment variable.
The problem here is that USE=-berkdb does apply to the stacked prefix
only, not the base prefix, so we need to persist the base prefix' USE
flags when we are about to do "with_stack_emerge_pkgs", even if this is
not a problem with RAP right now, maybe because of a different tree.

Signed-off-by: Michael Haubenwallner <haubi <AT> gentoo.org>

 scripts/bootstrap-prefix.sh | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/scripts/bootstrap-prefix.sh b/scripts/bootstrap-prefix.sh
index 2c26201141..7bb3e9df35 100755
--- a/scripts/bootstrap-prefix.sh
+++ b/scripts/bootstrap-prefix.sh
@@ -1556,6 +1556,17 @@ do_emerge_pkgs() {
                        clang
                        internal-glib
                )
+               if [[ " ${USE} " == *" prefix-stack "* ]] &&
+                  [[ ${PORTAGE_OVERRIDE_EPREFIX} == */tmp ]] &&
+                  ! grep -q '^USE=".*" # by bootstrap-prefix.sh$' 
"${PORTAGE_OVERRIDE_EPREFIX}/etc/portage/make.conf"
+               then
+                       # With prefix-stack, the USE env var does apply to the 
stacked
+                       # prefix only, not the base prefix (any more? since 
some portage
+                       # version?), so we have to persist the base USE flags 
into the
+                       # base prefix - without the additional incoming USE 
flags.
+                       echo "USE=\"\${USE} ${myuse[*]}\" # by 
bootstrap-prefix.sh" \
+                               >> 
"${PORTAGE_OVERRIDE_EPREFIX}/etc/portage/make.conf"
+               fi
                myuse=" ${myuse[*]} "
                local use
                for use in ${USE} ; do

Reply via email to