PyBOMBS GNU Radio Build Quick Start

To perform a simple GNU Radio install using the python build overlay managed bundle system (PyBOMBS) simply do the following

git clone git://github.com/pybombs/pybombs
cd pybombs
./pybombs install gnuradio

Alternatively, to build the older GNU Radio 3.6 version, do this

git clone git://github.com/pybombs/pybombs
cd pybombs
git checkout gr-3.6
./pybombs install gnuradio
Upon running the first install command you will be prompted for a few simple preferences such as
  • which install prefix to use
  • cmake debug flags to use
  • how to try to satisfy dependencies (typically "rpm,src" for fedora/centos/RHEL and "deb,src" for debian/ubuntu or just "src" to ignore the system package manager)

If you don't know what any of the above mean, pick the default answer by just hitting enter and accepting what's in the brackets.

After the install is finished you can create an environment file (located in $prefix/setup_env.sh) for your install by running

./pybombs env

Source this file (replace $prefix with the prefix of your recently finished pybombs install) with

source $prefix/setup_env.sh

That's it! You can now run any GNU Radio tools from this shell. Please submit any recipes you add using github merge requests and report any bugs you run into either using the github issue tracker or the gnuradio mailing list

If you are feeling brave try running

./app_store.py

Please keep in mind that each out-of-tree module has a separate maintainer, release schedule, and level of coding standards. At any given time not all out-of-tree modules or applications listed in PyBOMBS will necessarily build flawlessly. Please report module build errors to their respective maintainers.

If you experience excessive swapping during the compilation of source, you can try changing the makewidth=4 to makewidth=1 line in the ~/pybombs/config.dat file, which limits how many simultaneous compiler instances are spawned at the same time.

Also please keep in mind that performing source installs across a wide range of Linux distributions is a very tedious task. When using satisfy_order values of rpm or deb, packages are typically tested against newer versions of Ubuntu, Fedora, and RHEL - for less widely used distributions there may be minor differences. If you do run into this issue, please note that enforced dependency lists and rpm/deb package names can easily be modified to suit your specific environment by editing the appropriate recipe file in the recipes directory (such as pybombs/recipes/gnuradio.lwr). Again, please contribute your non-destructive compatibility fixes back upstream.

Further Explanation of Configuration Options

  • gituser
    • This is if you will be using a project (likely of your own) that requires authentication through the git service, like your username on github. Likely, if you don't have a clue what this means then you don't need it; accept the default.
  • Prefix
    • This is where PyBOMBS will install all of the projects. typical system-wide directory is /usr/local on Linux. PyBOMBS recommends that you don't do that but rather install into a user-writable dir, such as ~/target.
    • Once installed, you'll need to tell the machine how to locate the libraries, Python modules, binaries, etc. Luckily, that's what the "./pybombs env" tool is for. See the above instructions for using this.
  • Order of installation
    • On some supported platforms that use deb or rpms, PyBOMBS will attempt to use the standard package manager to install some dependencies. If you are on a Debian-based system or RedHat-based system, this can make the installation much faster. You can opt to just use the source, 'src', install and build everything from source.
  • Force Packages
    • If you've been working on your system for a while, you might have installed some dependencies yourself, maybe with different flags or versions. You might have even installed these into non-standard directories, which means that PyBOMBS won't know where to find them. If that's the case, PyBOMBS may try and install the package itself. You can add a list of dependencies or projects to this line to force PyBOMBS to assume these packages are already installed on your system and not try to build or install them itself. The package names can be derived from the filenames in the recipes directory.
  • Timeout
    • Explained in the configure instructions.
  • CMAKE_BUILD_TYPE
    • Cmake allows different build profiles. See the Build Guide in the GNU Radio manual for and explanation of the different types available.
  • Builddocs
    • Asks if you want to build the documentation with the projects, specifically the GNU Radio manual.
  • C and C++ compilers
    • If you have a specific C/C++ compiler you'd rather use than the default GCC.
  • Makewidth
    • This allows you to parallelize your build. The 'make' command allows you to pass the option '-jN' for N concurrent threads compiling the code. This can dramatically speed up your compilations of big projects. A general rule for GNU Radio is N <= RAM (GB). That is, for every 1 GB of RAM you have, you can add one more thread to the build script. In other areas, N is usually capped by the number of cores in your machine.