'make check' fails on OS X 10.5 with gnuradio 3.1 release

Hello…

After installing all necessary libraries using MacPorts and following
instructions from Jon Jacky
(GNU Radio on Mac OS X), the make check
fails on my MacBook Pro… Ignoring that and issuing ‘make install’
leads to the same error when trying to import gnuradio in python:

dyld: Library not loaded: /opt/local/lib/libfftw3f.3.dylib
Referenced from:
/Users/Jakub/sources/gnuradio/gnuradio-core/src/tests/.libs/test_all
Reason: Incompatible library version: test_all requires version
6.0.0 or later, but libfftw3f.3.dylib provides version 5.0.0
/bin/sh: line 1: 26477 Trace/BPT trap ${dir}$tst
FAIL: test_all

I installed the fftw-3-single using MacPorts, ‘port installed’
includes the following lines:
fftw-3 @3.2_1 (active)
fftw-3-single @3.2_0 (active)

What does the ‘version 6.0.0’ or ‘5.0.0’ refer to? As far as I know
there is no newer version of the fftw-3-single which provides the
library in question. Anyone else came across the same problem?

Any help greatly appreciated!
Jakub

Hi Jakob - Answering your questions up front:

The ‘version 6.0.0’ refers to the embedded versioning info inside the
library which is being loaded. FFTW 3.2 embeds versioning info
“6.2.0” for some reason. So I would tend to believe that FFTW 2.X
embeds info “5.X.0”. IIRC: GNU Radio requires the 3.X libraries, and
you can’t execute GR applications without it.

To get back to your issue, I would guess there are 2 potential problems:

  1. ‘configure’ is finding FFTW3 from pkg-config (as desired), but it’s
    not the version which occurs first in your shell environment’s
    DYLD_LIBRARY_PATH … so compiling happens with one, but loading with
    another. Unless you -truly- require the DYLD_LIBRARY_PATH, don’t use
    it; it will cause you headaches. There are ways around using this
    variable; use those instead.

  2. PKG_CONFIG_PATH isn’t set correctly in your shell environment: /opt/
    local/lib/pkgconfig must be first in the list.

If neither of these work, then email me off list with the results of
“env” (executed in your shell of choice) as well as which libraries /
apps you installed from where, and I’ll do what I can to help. - MLD

Michael,

thank you for help! It turned out that I had set the DYLD_LIBRARY_PATH
for my Matlab, so that I could interface it with Java. Also, the
PKG_CONFIG_PATH hadn’t been set at all. After removing the
DYLD_LIBRARY_PATH and setting the PKG_CONFIG_PATH I managed to compile
3.1 release from svn. I got some warnings from bootstrap (namely,
“AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS”, which
didn’t appear with 3.2 branch) and the ‘make test’ failed two tests
(gr_goertzel), the same way it did for
http://www.mail-archive.com/[email protected]/msg13160.html
I ignored it, installed and managed to import gr in python without any
warnings.

Thanks a lot for help!
Jakub

Hi Jakob - Good to hear you got GNU Radio running on your OSX
install. All of the bootstrap warnings and the failed tests on OSX
have been corrected in the latest trunk; I highly recommend updating
to it (“svn up”) if you have the time. - MLD

On Feb 10, 2009, at 1:35 PM, Jakub M. wrote:

I checkout the latest trunk, bootstrap finished without any warnings.
The configure finished in the same way as it did for the 3.1 release.
However, when trying to compile I get the following error:

In file included from ./gr_msg_queue.h:26,
from gr_msg_queue.cc:26:
/opt/local/include/omnithread.h:178:2: error: #error “No
implementation header file”

Hi Jakob - It looks like MacPorts has installed omniORB, which
includes the file omnithread.h, which is placed into the search path
for CXX pretty early on. If you don’t need this port, try
uninstall’ing it (sudo port uninstall omniORB).

I can’t explain why the 3.1 release compiled while the trunk does not,
under the same (presumedly) shell environment and pre-installed
libraries / headers.

In your shell, if you do “env | grep CPATH” does it return anything?
At least on OSX, this variable is no longer needed because the boost
M4 scripts (which are used to create “configure”) check for headers
in /opt/local/include by default. So if this variable does exist, try
removing it & recompiling … that may or not work.

Let me know (on or off list, depending on the complexity of it) of
your progress. - MLD

Hi Michael,

unfortunately I do need omniORB and omniORBpy, so I don’t want to
uninstall them… The CPATH is not set. Do you think that temporarily
removing it, compiling gnuradio and installing it back on would do the
trick?

Thanks a lot for your help!!
Jakub

Michael,

I checkout the latest trunk, bootstrap finished without any warnings.
The configure finished in the same way as it did for the 3.1 release.
However, when trying to compile I get the following error:

In file included from ./gr_msg_queue.h:26,
from gr_msg_queue.cc:26:
/opt/local/include/omnithread.h:178:2: error: #error “No
implementation header file”
/opt/local/include/omnithread.h:191:2: error: #error “Implementation
header file incomplete”
/opt/local/include/omnithread.h:241: error: ISO C++ forbids
declaration of ‘OMNI_MUTEX_IMPLEMENTATION’ with no type
/opt/local/include/omnithread.h:242: error: expected ‘;’ before ‘}’
token
/opt/local/include/omnithread.h:242: error: expected ;' before '}' token /opt/local/include/omnithread.h: In member function 'void omni_mutex::lock()': /opt/local/include/omnithread.h:226: error: 'OMNI_MUTEX_LOCK_IMPLEMENTATION' was not declared in this scope /opt/local/include/omnithread.h:226: error: expected;’ before ‘}’
token
/opt/local/include/omnithread.h: In member function ‘void
omni_mutex::unlock()’:
/opt/local/include/omnithread.h:227: error:
‘OMNI_MUTEX_UNLOCK_IMPLEMENTATION’ was not declared in this scope
/opt/local/include/omnithread.h:227: error: expected ;' before '}' token /opt/local/include/omnithread.h: At global scope: /opt/local/include/omnithread.h:321: error: ISO C++ forbids declaration of 'OMNI_CONDITION_IMPLEMENTATION' with no type /opt/local/include/omnithread.h:322: error: expected ';' before '}' token /opt/local/include/omnithread.h:322: error: expected;’ before ‘}’
token
/opt/local/include/omnithread.h:355: error: ISO C++ forbids
declaration of ‘OMNI_SEMAPHORE_IMPLEMENTATION’ with no type
/opt/local/include/omnithread.h:356: error: expected ‘;’ before ‘}’
token
/opt/local/include/omnithread.h:356: error: expected ;' before '}' token /opt/local/include/omnithread.h:641: error: ISO C++ forbids declaration of 'OMNI_THREAD_IMPLEMENTATION' with no type /opt/local/include/omnithread.h:642: error: expected ';' before '}' token /opt/local/include/omnithread.h:642: error: expected;’ before ‘}’
token
make[5]: *** [gr_msg_queue.lo] Error 1

Any ideas? 3.1 compiled without any problem and I was able to run some
examples that didn’t require USRP.

Thanks!
Jakub

Hi Michael,

that would be great. I actually want to use CORBA along with GNU
Radio, so that would be perfect.

Thanks a lot for your help.
Jakub

On Feb 11, 2009, at 12:15 AM, Jakub M. wrote:

unfortunately I do need omniORB and omniORBpy, so I don’t want to
uninstall them… The CPATH is not set. Do you think that temporarily
removing it, compiling gnuradio and installing it back on would do the
trick?

Hi Jakob - I’m working on a branch right now which moves
<omnithread.h> to <gnuradio/omnithread.h>, so that GNU Radio is self-
contained w/r.t. omnithread headers and will work with omniORB
installed elsewhere. More soon. - MLD