Tuesday, May 19, 2020

Re: pybombs confusions

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
>
>
>

No comments:

Post a Comment