summaryrefslogtreecommitdiff
path: root/grc/scripts/grcc
diff options
context:
space:
mode:
Diffstat (limited to 'grc/scripts/grcc')
-rwxr-xr-xgrc/scripts/grcc103
1 files changed, 39 insertions, 64 deletions
diff --git a/grc/scripts/grcc b/grc/scripts/grcc
index e93802f051..c3a53a91a6 100755
--- a/grc/scripts/grcc
+++ b/grc/scripts/grcc
@@ -1,89 +1,64 @@
#!/usr/bin/env python
-#
-# Copyright 2012 Free Software Foundation, Inc.
-#
+# Copyright 2016 Free Software Foundation, Inc.
# This file is part of GNU Radio
#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
+# GNU Radio Companion is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
#
-# GNU Radio is distributed in the hope that it will be useful,
+# GNU Radio Companion is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
import os
import sys
-from argparse import ArgumentParser
-import warnings
-warnings.simplefilter('ignore')
-
-from gnuradio import gr
-try:
- from grc.core.Platform import Platform
-except ImportError:
- from gnuradio.grc.core.Platform import Platform
+GR_IMPORT_ERROR_MESSAGE = """\
+Cannot import gnuradio.
-class GRCC:
- def __init__(self, grcfile, out_dir):
- self.out_dir = out_dir
- self.platform = Platform(
- prefs_file=gr.prefs(),
- version=gr.version(),
- version_parts=(gr.major_version(), gr.api_version(), gr.minor_version())
- )
- data = self.platform.parse_flow_graph(grcfile)
+Is the model path environment variable set correctly?
+ All OS: PYTHONPATH
- self.fg = self.platform.get_new_flow_graph()
- self.fg.import_data(data)
- self.fg.grc_file_path = os.path.abspath(grcfile)
- self.fg.validate()
+Is the library path environment variable set correctly?
+ Linux: LD_LIBRARY_PATH
+ Windows: PATH
+ MacOSX: DYLD_LIBRARY_PATH
+"""
- if not self.fg.is_valid():
- raise StandardError("\n\n".join(
- ["Validation failed:"] + self.fg.get_error_messages()
- ))
- self.gen = self.platform.Generator(self.fg, out_dir)
- self.gen.write()
+def die(error, message):
+ msg = "{0}\n\n({1})".format(message, error)
+ exit(type(error).__name__ + '\n\n' + msg)
- def exec_program(self):
- progname = self.fg.get_option('id')
- os.system("{0}/{1}.py".format(self.out_dir, progname))
+def check_gnuradio_import():
+ try:
+ from gnuradio import gr
+ except ImportError as err:
+ die(err, GR_IMPORT_ERROR_MESSAGE)
-def main():
- description = "Compiles a GRC file (.grc) into a GNU Radio Python program. The program is stored in ~/.grc_gnuradio by default, but this location can be changed with the -d option."
-
- parser = ArgumentParser(description=description)
- parser.add_argument("-d", "--directory",
- default='{0}/.grc_gnuradio/'.format(os.environ["HOME"]),
- help="Specify the directory to output the compile program [default=%(default)s]")
- parser.add_argument("-e", "--execute", action="store_true", default=False,
- help="Run the program after compiling [default=%(default)s]")
- parser.add_argument('grc_file', metavar="GRC_FILE", help=".grc file to compile")
- args = parser.parse_args()
- try:
- g = GRCC(args.grc_file, args.directory + "/")
- except Exception as e:
- sys.stderr.write(str(e) + "\n")
- sys.stderr.write("Error during file compilation.\n")
- sys.exit(1)
+def run_main():
+ script_path = os.path.dirname(os.path.abspath(__file__))
+ source_tree_subpath = "/grc/scripts"
- if args.execute:
- g.exec_program()
+ if not script_path.endswith(source_tree_subpath):
+ # run the installed version
+ from gnuradio.grc.compiler import main
+ else:
+ print("Running from source tree")
+ sys.path.insert(1, script_path[:-len(source_tree_subpath)])
+ from grc.compiler import main
+ exit(main())
-if __name__ == "__main__":
- main()
+if __name__ == '__main__':
+ check_gnuradio_import()
+ run_main()