From bfc9eb64b1ffb5801b40b0785e2458cc112dc1a1 Mon Sep 17 00:00:00 2001
From: Zac Medico <zmedico@gentoo.org>
Date: Wed, 11 Mar 2009 07:40:25 +0000
Subject: [PATCH] Bug #261670 - Generate a QA Notice if CHOST (from
 dyn_install) has a value which differs from the initial setting. (trunk
 r12810)

svn path=/main/branches/2.1.6/; revision=13042
---
 pym/portage/dbapi/vartree.py | 41 +++++++++++++++++++++---------------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
index c3684b843..00a5c682f 100644
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@ -1986,6 +1986,15 @@ class dblink(object):
 
 		return 1
 
+	def _eqawarn(self, phase, lines):
+		from portage.elog.messages import eqawarn as _eqawarn
+		if self._scheduler is None:
+			for l in lines:
+				_eqawarn(l, phase=phase, key=self.settings.mycpv)
+		else:
+			self._scheduler.dblinkElog(self,
+				phase, _eqawarn, lines)
+
 	def _eerror(self, phase, lines):
 		from portage.elog.messages import eerror as _eerror
 		if self._scheduler is None:
@@ -2042,29 +2051,27 @@ class dblink(object):
 				level=logging.ERROR, noiselevel=-1)
 			return 1
 
-		inforoot_slot_file = os.path.join(inforoot, "SLOT")
-		slot = None
-		try:
-			f = open(inforoot_slot_file)
+		slot = ''
+		for var_name in ('CHOST', 'SLOT'):
 			try:
-				slot = f.read().strip()
-			finally:
-				f.close()
-		except EnvironmentError, e:
-			if e.errno != errno.ENOENT:
-				raise
-			del e
+				val = open(os.path.join(inforoot, var_name)).readline().strip()
+			except EnvironmentError, e:
+				if e.errno != errno.ENOENT:
+					raise
+				del e
+				val = ''
 
-		if slot is None:
-			slot = ""
+			if var_name == 'SLOT':
+				slot = val
+
+			if val != self.settings.get(var_name, ''):
+				self._eqawarn('preinst',
+					["QA Notice: Expected %s='%s', got '%s'\n" % \
+					(var_name, self.settings.get(var_name, ''), val)])
 
 		def eerror(lines):
 			self._eerror("preinst", lines)
 
-		if slot != self.settings["SLOT"]:
-			showMessage("!!! WARNING: Expected SLOT='%s', got '%s'\n" % \
-				(self.settings["SLOT"], slot), level=logging.WARN)
-
 		if not os.path.exists(self.dbcatdir):
 			os.makedirs(self.dbcatdir)
 
-- 
2.26.2