summaryrefslogtreecommitdiff
path: root/grc
diff options
context:
space:
mode:
authorJosh Blum2011-04-15 13:09:55 -0700
committerJosh Blum2011-04-19 18:23:05 -0700
commita92cb89b5529728d9fce781aff85916b3879fbdd (patch)
tree568579da05388206bc64b33bb266ad81ba46f870 /grc
parentaf1d0a61d01c7c17dedcb5388ed8a077213d4b4f (diff)
downloadgnuradio-a92cb89b5529728d9fce781aff85916b3879fbdd.tar.gz
gnuradio-a92cb89b5529728d9fce781aff85916b3879fbdd.tar.bz2
gnuradio-a92cb89b5529728d9fce781aff85916b3879fbdd.zip
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')
-rw-r--r--grc/Makefile.am1
-rw-r--r--grc/grc.conf.in1
-rw-r--r--grc/python/Constants.py6
-rw-r--r--grc/python/Generator.py20
4 files changed, 17 insertions, 11 deletions
diff --git a/grc/Makefile.am b/grc/Makefile.am
index c36786281..9d473b4d3 100644
--- a/grc/Makefile.am
+++ b/grc/Makefile.am
@@ -43,7 +43,6 @@ BUILT_SOURCES += grc.conf
grc.conf: $(srcdir)/grc.conf.in Makefile
sed \
- -e 's|@pythonw[@]|$(PYTHONW)|g' \
-e 's|@blocksdir[@]|$(grc_blocksdir)|g' \
-e 's|@docdir[@]|$(gr_docdir)|g' \
$< > $@
diff --git a/grc/grc.conf.in b/grc/grc.conf.in
index 37a049971..9363ca981 100644
--- a/grc/grc.conf.in
+++ b/grc/grc.conf.in
@@ -3,7 +3,6 @@
# ~/.gnuradio/config.conf
[grc]
-pythonw = @pythonw@
doc_dir = @docdir@
global_blocks_path = @blocksdir@
local_blocks_path =
diff --git a/grc/python/Constants.py b/grc/python/Constants.py
index e661c3927..868c822aa 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 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