Since you know how to build from source, you're better off sticking with
that. The trick to multiple installs is just to use
-DCMAKE_INSTALL_PREFIX during the cmake step. For example:
cmake -DCMAKE_INSTALL_PREFIX=/opt/gnuradio-3.7.14 ../
/opt is a better location than /usr/local since you can just delete
entire directories without upsetting already installed modules in
/usr/local/ from other source builds.
Then you just need an environment script for each install. For example:
#!/bin/bash
export PATH=$PATH:/opt/gnuradio-3.7.14/bin
export
PYTHONPATH=$PYTHONPATH:/opt/gnuradio-3.7.14/lib/python2.7/dist-packages
1) gedit env37
2) insert above text and save
3) chmod +x env37
4) create different scripts for each install.
5) to avoid duplicate paths when changing to a different install, exit
the shell and start a new one.
Ron
On 5/19/20 11:15, Lukas Haase wrote:
Hi,
On an Ubuntu 18 system I would like to use multiple gnuradio+uhd instances in
parallel (3.7 with python 2.7, 3.8 with python 3, and a variety of versions
with patches applied, different UHD versions, RFnoc etc).
So far, I have multiple source trees and when I switch I completely delete /usr/local and do
"sudo make install && sudo ldconfig" in the respective build directory. Clearly
a bad solution. As far as I understand, pybombs should be a solution to that. But its usage is
pretty confusing to me (difference between user wide config and a single prefix). Despite reading
the the docs and playing around for many hours, I have not been able to successfully use 3.7 and
3.8 in parallel.
My main issue is: https://github.com/gnuradio/pybombs just explains how to get
a single prefix running at once (pybombs prefix init ~/{base_folder} -R
{your_recipe}). However, I need to do this step by step (since each prefix has
different modules, source code patches etc).
For the beginning, suppose I'd just want to have the "maint" branch of each
version (in following steps, I'd like to just copy prefix and make individual changes)
$ sudo mv /usr/local /usr/local_OLD # just to make sure nothing interferes with
systemwide stuff
$ sudo pip3 install --upgrade git+https://github.com/gnuradio/pybombs.git
$ pybombs prefix init ~/gr37 -R gnuradio-stable
$ pybombs prefix init ~/gr38 -R gnuradio-default
$ cd ~/gr37
$ pybombs -p . config --env python_ver 2.7
1.) Why do I explicitely need to add "-p" above? According to the manual, the prefix in the current
directory should be taken when not supplied with "-p". But without "-p", it gets written
into ~/.pybombs/config.yml
2.) Why is "Prefix python version" still set to 3.6.9? Why is PYTHONPATH wrong
(*/python3.6/*)?
$ cd ~/gr37
$ pybombs prefix env | grep -i python
[INFO] Prefix Python version is: 3.6.9
[INFO] PyBOMBS Version 2.3.4a0
PYTHONPATH=/home/l/gr37/lib/python3.6/site-packages:/home/l/gr37/lib/python3.6/dist-packages:/home/l/gr37/lib64/python3.6/site-packages:/home/l/gr37/lib64/python3.6/dist-packages:$PYTHONPATH
PYTHON_VER=2.7
3.) Now running gr 3.7 in that prefix does not work:
$ cd ~/gr37
$ pybombs run gnuradio-companion
[INFO] Prefix Python version is: 3.6.9
[INFO] PyBOMBS Version 2.3.4a0
and the error message
"Cannot import gnuradio.
Is the model path environment variable set correctly?
All OS: PYTHONPATH
Is the library path environment variable set correctly?
Linux: LD_LIBRARY_PATH
Windows: PATH
MacOSX: DYLD_LIBRARY_PATH
(No module named gnuradio)"
4.) Also gr 3.8 does not work:
$ cd ~/gr38
pybombs run -- gnuradio-companion
[INFO] Prefix Python version is: 3.6.9
[INFO] PyBOMBS Version 2.3.4a0
and then I get the same error message as above ("Cannot import gnuradio")
5.) I think setup-env.sh is wrong. Which command generates this and how can
this file be regenetated with correct settings for each prefix (like python
version and library paths)?
6.) How do I modify each prefix?
For example, how to I switch the source to a specific branch or tag in uhd
or gnuradio?
How do I add my custom OOT module?
7.) How do I update a prefix?
For example, if I want to modify gnuradio or uhd source, where do I edit
the files (I assume $prefix/src ?) and how do I recompile/reinstall?
8.) When playing around I found that the following two commands sometimes have
different behavior (according to the manual, they should be identical but the
first one does not work):
$ cd ~/gr37
$ pybombs run gnuradio-compantion
vs
$ cd ~/gr37
$ source setup-end.sh
$ gnuradio-companion
Are they supposed to be identical? If yes, why could they give different
results? If not, what is the difference?
9.) How do I list installed packages in a prefix? (I think I can remove them with "pybombs
remove package", rebuild with "pybombs rebuild package" ?)
Sorry this is really confusing to me so I hope you could shed some light how
this is supposed to be used.
Thanks!
Lukas