diff options
author | Josh Blum <josh@joshknows.com> | 2011-04-15 13:09:55 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-04-19 18:23:05 -0700 |
commit | a92cb89b5529728d9fce781aff85916b3879fbdd (patch) | |
tree | 568579da05388206bc64b33bb266ad81ba46f870 /grc/python | |
parent | af1d0a61d01c7c17dedcb5388ed8a077213d4b4f (diff) |
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)
Diffstat (limited to 'grc/python')
-rw-r--r-- | grc/python/Constants.py | 6 | ||||
-rw-r--r-- | grc/python/Generator.py | 20 |
2 files changed, 17 insertions, 9 deletions
diff --git a/grc/python/Constants.py b/grc/python/Constants.py index e661c39278..868c822aaa 100644 --- a/grc/python/Constants.py +++ b/grc/python/Constants.py @@ -1,5 +1,5 @@ """ -Copyright 2008, 2009 Free Software Foundation, Inc. +Copyright 2008-2011 Free Software Foundation, Inc. This file is part of GNU Radio GNU Radio Companion is free software; you can redistribute it and/or @@ -23,10 +23,8 @@ from gnuradio import gr _gr_prefs = gr.prefs() -PYEXEC = os.environ.get('PYTHONW', _gr_prefs.get_string('grc', 'pythonw', '')) - #setup paths -PATH_SEP = ':' +PATH_SEP = {'/':':', '\\':';'}[os.path.sep] DOCS_DIR = os.environ.get('GR_DOC_DIR', _gr_prefs.get_string('grc', 'doc_dir', '')) HIER_BLOCKS_LIB_DIR = os.path.join(os.path.expanduser('~'), '.grc_gnuradio') BLOCKS_DIRS = filter( #filter blank strings diff --git a/grc/python/Generator.py b/grc/python/Generator.py index b669fa65af..b31f0a009d 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 |