Make sure mysettings.setcpv() always gets called when necessary inside
authorZac Medico <zmedico@gentoo.org>
Mon, 23 Mar 2009 02:17:03 +0000 (02:17 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 23 Mar 2009 02:17:03 +0000 (02:17 -0000)
doebuild_environment(). (trunk r13136)

svn path=/main/branches/2.1.6/; revision=13155

pym/portage/__init__.py

index 2c4b447b6d6d035ba43c578f89079cfb69d17415..4462e0b125a9a3b2984d34e7baebea3509419360 100644 (file)
@@ -5032,14 +5032,16 @@ def doebuild_environment(myebuild, mydo, myroot, mysettings, debug, use_cache, m
        # so that the caller can override it.
        tmpdir = mysettings["PORTAGE_TMPDIR"]
 
-       if mydo != "depend" and mycpv != mysettings.mycpv:
-               """For performance reasons, setcpv only triggers reset when it
-               detects a package-specific change in config.  For the ebuild
-               environment, a reset call is forced in order to ensure that the
-               latest env.d variables are used."""
+       if mycpv != mysettings.mycpv:
+               # Reload env.d variables and reset any previous settings.
                mysettings.reload()
-               mysettings.reset(use_cache=use_cache)
-               mysettings.setcpv(mycpv, use_cache=use_cache, mydb=mydbapi)
+               mysettings.reset()
+               if mydo == 'depend':
+                       # Don't pass in mydbapi here since the resulting aux_get
+                       # call would lead to infinite 'depend' phase recursion.
+                       mysettings.setcpv(mycpv)
+               else:
+                       mysettings.setcpv(mycpv, mydb=mydbapi)
 
        # config.reset() might have reverted a change made by the caller,
        # so restore it to it's original value.