GNU Radio: now allowing you to shoot yourself in the foot! We've identified a few versions of Boost that don't work well with GNU Radio, 1.46, 1.47, and 1.52. A little while ago, I updated our cmake build files to look for these specific versions and disable their use if found. Sadly, many distros currently ship with one of these known bad versions. Looking at Boost's website, 1.47 and 1.52 are by far the most downloaded Boost versions. So, as recommended by Johnathan, I put in a cmake command line option that allows you to override the version check so GNU Radio will build with any current Boost. To use it, just specify "-DENABLE_BAD_BOOST=True" on your cmake command line. By default this is False. That will allow you to build against anything. If this value is False, all GNU Radio components will be disabled if it finds one of the bad versions. (VOLK and a couple of others will still pass and compile since they are not affected by the problem). Just be aware that using one of these versions can cause problems. Specifically, it can lock up your application when shutting down a flowgraph. Also, many distros that ship with one of these bad versions also have other, good, versions that you can pretty easily switch to. Tom
on 2013-02-13 20:38
on 2013-02-26 13:02
On Wed, Feb 13, 2013 at 8:12 PM, Tom Rondeau <tom@trondeau.com> wrote: > build with any current Boost. > have other, good, versions that you can pretty easily switch to. > Hi, Sorry for the late reply, but I just realized that half of my computers running Mint 13 (based on Ubuntu 12.04) come with Boost 1.46, yet I have had no problem building gnuradio without using "-DENABLE_BAD_BOOST=True" Admittedly, this distro appears to have a horrible mix of 1.46 and 1.48, which may confuse cmake - I really have no idea which one really is installed but I do have runtime issues on these computers. If anybody has ideas for what we can do on Mint 13 / Ubuntu 12.04, please let me know. Alex
on 2013-02-26 15:17
On Tue, Feb 26, 2013 at 7:01 AM, Alexandru Csete <oz9aec@gmail.com> wrote: >> line option that allows you to override the version check so GNU Radio will >> flowgraph. Also, many distros that ship with one of these bad versions also > 1.48, which may confuse cmake - I really have no idea which one really > is installed but I do have runtime issues on these computers. If > anybody has ideas for what we can do on Mint 13 / Ubuntu 12.04, please > let me know. > > Alex Alex, You can see which Boost version Cmake is finding for you by looking at CMakeCache.txt in the top of the build directory. Check out the "Boost_<library>_LIBRARY" and "Boost_INCLUDE_DIR" to see which ones were found and are being used. Hopefully, it's finding the 1.48 version that's installed. Tom
on 2013-02-26 15:38
Hi, > You can see which Boost version Cmake is finding for you by looking at > CMakeCache.txt in the top of the build directory. Check out the > "Boost_<library>_LIBRARY" and "Boost_INCLUDE_DIR" to see which ones > were found and are being used. Hopefully, it's finding the 1.48 version that's > installed. It seems some older gnuradio versions and other SDR tools do not want the 1.48, they want a 1.46 or maybe a boost lib without any version in its name, who knows. I got into problems when compiling gnuradio 3.4.2 for OpenBTS, but lacking the knowledge how to solve this in a proper way I just fiddled around with uninstalling and installing several parts of the packages until it compiled. Not satisfying, such a workaround... > Tom Ralph.
on 2013-02-26 15:55
On Tue, Feb 26, 2013 at 9:38 AM, Ralph A. Schmid, dk5ras <ralph@schmid.xxx> wrote: > 1.48, they want a 1.46 or maybe a boost lib without any version in its name, > who knows. I got into problems when compiling gnuradio 3.4.2 for OpenBTS, > but lacking the knowledge how to solve this in a proper way I just fiddled > around with uninstalling and installing several parts of the packages until > it compiled. Not satisfying, such a workaround... > >> Tom > > Ralph. Two things with this. First, the checking and rejecting of bad Boost versions is new since we just started to understand the issue. So older versions do not have this protection. Second, GNU Radio doesn't /prefer/ a version of Boost; it'll likely just picks the first one it finds that is valid. With 3.4.2, the only non-valid Boost versions would be those before the minimum version of 1.35. Most likely, it'll take whichever the sym link to libboost_xxx.so it finds. For instance, my machine has: /usr/lib/libboost_filesystem-mt.so -> libboost_filesystem.so.1.48.0 It'll depend on how to installed, order of install, or OS issues that would determine this if you have multiple versions installed. You can always tell cmake (and configure before it) which Boost libraries and include directories you want to specify. With cmake, you use -DBoost_LIBRARY_DIRS=..., -DBoost_INCLUDE_DIR=..., and even library-specific directives (if multiple Boost libs are installed into the same directory) like -DBoost_FILESYSTEM_LIBRARY=.../libboost_filesystem-mt.so. I don't recall how to set these using configure, though. Tom
on 2013-02-26 17:11
On Tue, Feb 26, 2013 at 3:15 PM, Tom Rondeau <tom@trondeau.com> wrote: >>> Boost versions. So, as recommended by Johnathan, I put in a cmake command >>> Specifically, it can lock up your application when shutting down a >> Admittedly, this distro appears to have a horrible mix of 1.46 and > CMakeCache.txt in the top of the build directory. Check out the > "Boost_<library>_LIBRARY" and "Boost_INCLUDE_DIR" to see which ones > were found and are being used. Hopefully, it's finding the 1.48 > version that's installed. Actually, it seems that I only have version 1.46 libraries installed, see the attached file. This is really screwed up: I have libboost-dev installed, which according to synaptic is at version 1.48.0.2. Looking in the package info I see that it depends on libboost1.46-dev, which explain why all my boost libs are version 1.46. The same applies to many other boost packages, e.g. libboost-thread-dev. Cmake didn't complain about bad boost version and I can see no version info in CMakeCache.txt. Gnuradio compiles and install just fine. I can rerun cmake and submit the cmake files on a system with boost 1.46 if needed. I have uninstalled the 1.46 libs manually (except those that are required by some applications) and the installed libboost-xyz1.48-dev libraries. recompiled uhd and gnuradio and it seems the run-time issue I was having before (app freezes) is now gone. Alex
on 2013-02-26 17:23
On Tue, Feb 26, 2013 at 11:10 AM, Alexandru Csete <oz9aec@gmail.com> wrote: >>>> Looking at Boost's website, 1.47 and 1.52 are by far the most downloaded >>>> Just be aware that using one of these versions can cause problems. >>> "-DENABLE_BAD_BOOST=True" >> You can see which Boost version Cmake is finding for you by looking at > info I see that it depends on libboost1.46-dev, which explain why all > my boost libs are version 1.46. The same applies to many other boost > packages, e.g. libboost-thread-dev. Grep CMakeCache.txt for "Boost_VERSION" and see what that returns. For 1.48, it'll look like 104800, and for 1.46 it should be 104600. Also see what it tells you when you grep for ENABLE_BAD_BOOST. If this is set to True, it will allow any version. > Cmake didn't complain about bad boost version and I can see no version > info in CMakeCache.txt. Gnuradio compiles and install just fine. I can > rerun cmake and submit the cmake files on a system with boost 1.46 if > needed. Maybe delete CMakeCache.txt and rerun cmake to make sure it refreshes everything. > I have uninstalled the 1.46 libs manually (except those that are > required by some applications) and the installed libboost-xyz1.48-dev > libraries. recompiled uhd and gnuradio and it seems the run-time issue > I was having before (app freezes) is now gone. > > Alex Ok, glad you got it working. Tom
on 2013-02-26 19:13
On Tue, Feb 26, 2013 at 5:21 PM, Tom Rondeau <tom@trondeau.com> wrote: >>>>> Sadly, many distros currently ship with one of these known bad versions. >>>>> >>>> 1.46, yet I have had no problem building gnuradio without using >>> >> according to synaptic is at version 1.48.0.2. Looking in the package >> Cmake didn't complain about bad boost version and I can see no version >> info in CMakeCache.txt. Gnuradio compiles and install just fine. I can >> rerun cmake and submit the cmake files on a system with boost 1.46 if >> needed. > > Maybe delete CMakeCache.txt and rerun cmake to make sure it refreshes > everything. Hi Tom, I started with a clean build directory and after cmake finishes without errors I get: oz9aec@romit ~/sdr/gnuradio/v3.6.3-146-ga54dc5ba/build $ cat CMakeCache.txt | grep ENABLE_BAD_BOOST ENABLE_BAD_BOOST:BOOL=OFF oz9aec@romit ~/sdr/gnuradio/v3.6.3-146-ga54dc5ba/build $ cat CMakeCache.txt | grep "Boost_VERSION" Boost_VERSION:INTERNAL=104601 Alex
on 2013-02-26 19:14
On Tue, Feb 26, 2013 at 1:12 PM, Alexandru Csete <oz9aec@gmail.com> wrote: >>>>>> >>>>>> pass and compile since they are not affected by the problem). >>>>> computers running Mint 13 (based on Ubuntu 12.04) come with Boost >>>> Alex, >>> This is really screwed up: I have libboost-dev installed, which >> > I started with a clean build directory and after cmake finishes > without errors I get: > > oz9aec@romit ~/sdr/gnuradio/v3.6.3-146-ga54dc5ba/build $ cat > CMakeCache.txt | grep ENABLE_BAD_BOOST > ENABLE_BAD_BOOST:BOOL=OFF > oz9aec@romit ~/sdr/gnuradio/v3.6.3-146-ga54dc5ba/build $ cat > CMakeCache.txt | grep "Boost_VERSION" > Boost_VERSION:INTERNAL=104601 > > Alex That clears it up, thanks! I read somewhere that the last two digits would always be 00, so that's all I checked for. With yours being 104601, I'll need to be more clever about it. Tom
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.