From a92cb89b5529728d9fce781aff85916b3879fbdd Mon Sep 17 00:00:00 2001
From: Josh Blum
Date: Fri, 15 Apr 2011 13:09:55 -0700
Subject: grc: added logic to discover the path to the python interpreter

Rather than simply exec-ing the application w/ "python",
use the same interpreter that executed grc w/ full path.

Added code to handle the following exceptions:
- for a wx app on mac osx, use the pythonw interpreter
  (this was in the m4 file, but its easier as a runtime check)
- for a no gui app on linux, prepend xterm cuz its nice
  (we were already doing that but its now restricted to linux)
---
 grc/python/Generator.py | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

(limited to 'grc/python/Generator.py')

diff --git a/grc/python/Generator.py b/grc/python/Generator.py
index b669fa65a..b31f0a009 100644
--- a/grc/python/Generator.py
+++ b/grc/python/Generator.py
@@ -18,14 +18,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
 """
 
 import os
+import sys
 import subprocess
 import tempfile
 from Cheetah.Template import Template
 import expr_utils
 from Constants import \
 	TOP_BLOCK_FILE_MODE, HIER_BLOCK_FILE_MODE, \
-	HIER_BLOCKS_LIB_DIR, PYEXEC, \
-	FLOW_GRAPH_TEMPLATE
+	HIER_BLOCKS_LIB_DIR, FLOW_GRAPH_TEMPLATE
 import convert_hier
 from .. gui import Messages
 
@@ -74,10 +74,20 @@ Add a Misc->Throttle block to your flow graph to avoid CPU congestion.''')
 		Execute this python flow graph.
 		@return a popen object
 		"""
-		#execute
-		cmds = [PYEXEC, '-u', self.get_file_path()] #-u is unbuffered stdio
-		if self._generate_options == 'no_gui':
+		#extract the path to the python executable
+		python_exe = sys.executable
+
+		#when using wx gui on mac os, execute with pythonw
+		if self._generate_options == 'wx_gui' and 'darwin' in sys.platform.lower():
+			python_exe += 'w'
+
+		#setup the command args to run
+		cmds = [python_exe, '-u', self.get_file_path()] #-u is unbuffered stdio
+
+		#when in no gui mode on linux, use an xterm (looks nice)
+		if self._generate_options == 'no_gui' and 'linux' in sys.platform.lower():
 			cmds = ['xterm', '-e'] + cmds
+
 		p = subprocess.Popen(args=cmds, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False, universal_newlines=True)
 		return p
 
-- 
cgit