[OE-core] [PATCH] patch: Convert to use oe_terminal

Richard Purdie richard.purdie at linuxfoundation.org
Thu Nov 3 22:00:55 UTC 2011


Unfortunately we can't access oe_terminal directly from patch.py
so we have to pass in the correct terminal function pointer.

[YOCTO #1587]

Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass
index 7622163..86046e1 100644
--- a/meta/classes/patch.bbclass
+++ b/meta/classes/patch.bbclass
@@ -5,6 +5,8 @@ QUILTRCFILE ?= "${STAGING_BINDIR_NATIVE}/quiltrc"
 
 PATCHDEPENDENCY = "${PATCHTOOL}-native:do_populate_sysroot"
 
+inherit terminal
+
 python patch_do_patch() {
 	import oe.patch
 
@@ -124,7 +126,7 @@ python patch_do_patch() {
 
 		if not patchdir in classes:
 			patchset = cls(patchdir, d)
-			resolver = rcls(patchset)
+			resolver = rcls(patchset, oe_terminal)
 			classes[patchdir] = (patchset, resolver)
 			patchset.Clean()
 		else:
diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index 9768be0..75fb91e 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -311,7 +311,7 @@ class QuiltTree(PatchSet):
             self._runcmd(args)
 
 class Resolver(object):
-    def __init__(self, patchset):
+    def __init__(self, patchset, terminal):
         raise NotImplementedError()
 
     def Resolve(self):
@@ -324,8 +324,9 @@ class Resolver(object):
         raise NotImplementedError()
 
 class NOOPResolver(Resolver):
-    def __init__(self, patchset):
+    def __init__(self, patchset, terminal):
         self.patchset = patchset
+        self.terminal = terminal
 
     def Resolve(self):
         olddir = os.path.abspath(os.curdir)
@@ -341,13 +342,13 @@ class NOOPResolver(Resolver):
 # resolution, with the exception of refreshing the remote copy of the patch
 # files (the urls).
 class UserResolver(Resolver):
-    def __init__(self, patchset):
+    def __init__(self, patchset, terminal):
         self.patchset = patchset
+        self.terminal = terminal
 
     # Force a push in the patchset, then drop to a shell for the user to
     # resolve any rejected hunks
     def Resolve(self):
-
         olddir = os.path.abspath(os.curdir)
         os.chdir(self.patchset.dir)
         try:
@@ -368,16 +369,10 @@ class UserResolver(Resolver):
             f.write("echo 'Run \"quilt refresh\" when patch is corrected, press CTRL+D to exit.'\n")
             f.write("echo ''\n")
             f.write(" ".join(patchcmd) + "\n")
-            f.write("#" + bb.data.getVar('TERMCMDRUN', self.patchset.d, 1))
             f.close()
             os.chmod(rcfile, 0775)
 
-            os.environ['TERMWINDOWTITLE'] = "Bitbake: Please fix patch rejects manually"
-            os.environ['SHELLCMDS'] = "bash --rcfile " + rcfile
-            rc = os.system(bb.data.getVar('TERMCMDRUN', self.patchset.d, 1))
-            if os.WIFEXITED(rc) and os.WEXITSTATUS(rc) != 0:
-                bb.msg.fatal("Build", ("Cannot proceed with manual patch resolution - '%s' not found. " \
-                    + "Check TERMCMDRUN variable.") % bb.data.getVar('TERMCMDRUN', self.patchset.d, 1))
+            self.terminal("bash --rcfile " + rcfile, 'Patch Rejects: Please fix patch rejects manually', self.patchset.d)
 
             # Construct a new PatchSet after the user's changes, compare the
             # sets, checking patches for modifications, and doing a remote






More information about the Openembedded-core mailing list