PYBOMBs Testing

Hi,

I’ve been trying out pybombs again for building the latest gnuradio. I
keep getting errors, but interestingly, if I just run the build again, I
always get a little further. That seems strange. Here’s the tail of
one
of the errors:

[ 65%] Building CXX object
gr-blocks/lib/CMakeFiles/gnuradio-blocks.dir/ctrlport_probe2_s_impl.cc.o
[ 65%] Building CXX object
gr-blocks/lib/CMakeFiles/gnuradio-blocks.dir/ctrlport_probe2_i_impl.cc.o
[ 65%] Building CXX object
gr-blocks/lib/CMakeFiles/gnuradio-blocks.dir/ctrlport_probe2_b_impl.cc.o
Linking CXX shared library libgnuradio-blocks-3.7.3git.so
[ 65%] Built target gnuradio-blocks
make: *** [all] Error 2
ERROR:root:PyBOMBS Make step failed for package (gnuradio) please see
bash
output above for a reason (hint: look for the word Error)

If I can provide any clearer information, I will.

I am building on a 8-core Ubuntu laptop, but only letting the compiler
use
4 cores.

Thanks!

output above for a reason (hint: look for the word Error)
That message is useless … with a parallell build, the error can be
much before the end of the logs so you need to looks for it at any
point before the end.

That’s also why it seems to go a little further each time, it’s
because the various parallell branch, only one crashes and the other
slightly go forward.

Cheers,

Sylvain

Thanks. I’ll try single-stringing it or looking further back to catch
the
actual error.

Very Respectfully,

Dan CaJacob

OK,

Here’s a specific error. Seems like it’s related to ICE, which compiled
successfully as a dependency.

Scanning dependencies of target gr_runtime_test
[ 13%] Building CXX object
gnuradio-runtime/lib/CMakeFiles/gr_runtime_test.dir/test_runtime.cc.o
Linking CXX executable gr_runtime_test
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceInternal::IncomingBase::__endWriteParams(bool)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceInternal::BasicStream::readEnum(int)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::upCast(Ice::ObjectFactory*)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceDelegateD::Ice::Object::ice_invoke(std::string const&,
Ice::OperationMode, std::pair<unsigned char const*, unsigned char
const*>
const&, std::vector<unsigned char, std::allocator >&,
std::map<std::string, std::string, std::lessstd::string,
std::allocator<std::pair<std::string const, std::string> > > const*,
IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::upCast(Ice::ServantLocator*)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIce::upCast(Ice::Logger*)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceProxy::Ice::Object::__handleExceptionWrapper(IceInternal::Handle<IceDelegate::Ice::Object> const&, IceInternal::LocalExceptionWrapper const&, IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceInternal::Ex::throwMarshalException(char const*, int, std::string
const&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to virtual thunk to IceDelegateD::Ice::Object::ice_id(std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const*, IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceDelegateD::Ice::Object::ice_id(std::map<std::string, std::string,
std::lessstd::string, std::allocator<std::pair<std::string const,
std::string> > > const*, IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::upCast(Ice::AsyncResult*)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceDelegateM::Ice::Object::ice_ids(std::map<std::string, std::string,
std::lessstd::string, std::allocator<std::pair<std::string const,
std::string> > > const*, IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceDelegateD::Ice::Object::ice_flushBatchRequests(IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference tovirtual
thunk to IceDelegateD::Ice::Object::ice_ids(std::map<std::string,
std::string, std::lessstd::string,
std::allocator<std::pair<std::string
const, std::string> > > const*, IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::upCast(Ice::Object*)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceDelegateD::Ice::Object::ice_ids(std::map<std::string, std::string,
std::lessstd::string, std::allocator<std::pair<std::string const,
std::string> > > const*, IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to virtual thunk to IceDelegateM::Ice::Object::ice_ids(std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const*, IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceInternal::IncomingBase::__startWriteParams(Ice::FormatType)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceDelegateM::Ice::Object::ice_ping(std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const*, IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceInternal::Ex::throwUOE(std::string const&,
IceInternal::HandleIce::Object const&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceInternal::BasicStream::initReadEncaps()' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceInternal::BasicStream::read(std::vector<unsigned char,
std::allocator >&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to virtual thunk to IceDelegateM::Ice::Object::ice_flushBatchRequests(IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceInternal::Outgoing::Outgoing(IceInternal::RequestHandler*,
std::string
const&, Ice::OperationMode, std::map<std::string, std::string,
std::lessstd::string, std::allocator<std::pair<std::string const,
std::string> > > const*, IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to virtual thunk to IceDelegateM::Ice::Object::ice_isA(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const*, IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference tovirtual
thunk to IceDelegateD::Ice::Object::ice_invoke(std::string const&,
Ice::OperationMode, std::pair<unsigned char const*, unsigned char
const*>
const&, std::vector<unsigned char, std::allocator >&,
std::map<std::string, std::string, std::lessstd::string,
std::allocator<std::pair<std::string const, std::string> > > const*,
IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceInternal::BasicStream::skipOpts()' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference tovirtual
thunk to IceDelegateM::Ice::Object::ice_ping(std::map<std::string,
std::string, std::lessstd::string,
std::allocator<std::pair<std::string
const, std::string> > > const*, IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceInternal::IncomingBase::__writeEmptyParams()' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference tovirtual
thunk to IceDelegateD::Ice::Object::ice_isA(std::string const&,
std::map<std::string, std::string, std::lessstd::string,
std::allocator<std::pair<std::string const, std::string> > > const*,
IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::upCast(Ice::LocalObject*)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceMX::UnknownMetricsView::~UnknownMetricsView()’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceInternal::throwUnsupportedEncodingException(char const*, int, Ice::EncodingVersion const&, Ice::EncodingVersion const&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceInternal::BasicStream::writeEnum(int, int)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to vtable for IceMX::UnknownMetricsView' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIce::upCast(Ice::Stats*)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::Instrumentation::upCast(Ice::Instrumentation::CommunicatorObserver*)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceDelegateM::Ice::Object::ice_id(std::map<std::string, std::string,
std::lessstd::string, std::allocator<std::pair<std::string const,
std::string> > > const*, IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::upCast(Ice::Communicator*)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceDelegateM::Ice::Object::ice_isA(std::string const&,
std::map<std::string, std::string, std::lessstd::string,
std::allocator<std::pair<std::string const, std::string> > > const*,
IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceProxy::Ice::Object::__handleExceptionWrapperRelaxed(IceInternal::Handle<IceDelegate::Ice::Object> const&, IceInternal::LocalExceptionWrapper const&, bool, int&, IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIce::Object::__read(IceInternal::BasicStream*)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::Object::__readImpl(IceInternal::Handle<Ice::InputStream> const&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference tovirtual
thunk to IceDelegateD::Ice::Object::ice_ping(std::map<std::string,
std::string, std::lessstd::string,
std::allocator<std::pair<std::string
const, std::string> > > const*, IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::LocalObject::internal_getHash() const' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference tovtable
for
IceMX::Metrics’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to VTT for IceMX::Metrics' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIce::Encoding_1_0’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to virtual thunk to IceDelegateM::Ice::Object::ice_invoke(std::string const&, Ice::OperationMode, std::pair<unsigned char const*, unsigned char const*> const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const*, IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIce::Instrumentation::upCast(Ice::Instrumentation::InvocationObserver*)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to virtual thunk to IceDelegateM::Ice::Object::ice_id(std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const*, IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIce::upCast(Ice::Connection*)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceDelegateM::Ice::Object::ice_flushBatchRequests(IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceDelegateD::Ice::Object::ice_isA(std::string const&,
std::map<std::string, std::string, std::lessstd::string,
std::allocator<std::pair<std::string const, std::string> > > const*,
IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::Object::__writeImpl(IceInternal::Handle<Ice::OutputStream> const&) const' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceInternal::BasicStream::initWriteEncaps()’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceDelegateM::Ice::Object::ice_invoke(std::string const&, Ice::OperationMode, std::pair<unsigned char const*, unsigned char const*> const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const*, IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceInternal::InvocationObserver::InvocationObserver(IceProxy::Ice::Object*,
std::string const&, std::map<std::string, std::string,
std::lessstd::string, std::allocator<std::pair<std::string const,
std::string> > > const*)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::currentEncoding' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIce::Object::__read(IceInternal::HandleIce::InputStream const&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
IceDelegateD::Ice::Object::ice_ping(std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const*, IceInternal::InvocationObserver&)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceProxy::Ice::Object::__handleException(IceInternal::HandleIceDelegate::Ice::Object
const&, Ice::LocalException const&, bool, int&,
IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::upCast(Ice::ObjectAdapter*)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference tovirtual
thunk to
IceDelegateD::Ice::Object::ice_flushBatchRequests(IceInternal::InvocationObserver&)’
libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference to
Ice::upCast(Ice::Properties*)' libgnuradio-runtime-3.7.3git.so.0.0.0: undefined reference toIceInternal::Direct::getServant()’
collect2: error: ld returned 1 exit status
make[2]: *** [gnuradio-runtime/lib/gr_runtime_test] Error 1
make[1]: *** [gnuradio-runtime/lib/CMakeFiles/gr_runtime_test.dir/all]
Error 2
make: *** [all] Error 2
ERROR:root:PyBOMBS Make step failed for package (gnuradio) please see
bash
output above for a reason (hint: look for the word Error)

Very Respectfully,

Dan CaJacob

On Thu, Jan 9, 2014 at 7:15 AM, Martin B. [email protected]
wrote:

MB

I’ll bet I can guess, the relevant parts at least. He’s using Ice
3.4.2 and GCC >= 4.7. This is a nasty issue because of the default
versions of many deb packages that don’t actually work together.
Either updating to Ice 3.5 or downgrading GCC to 4.6 will solve this
issue. We were hoping for a patch against Ice 3.4.2, but I don’t think
that’s going to happen.

Now, PyBOMBS is set to look for Ice >= 3.5, though, so we still need
more information. My guess is that you have Ice 3.4.2 installed on the
system already and for some reason, GNU Radio is finding that and not
3.5, even though the script is supposed to look for 3.5 before
anything else.

In a slight look inside the process, I think it’s time I do a blunt
check for the GCC version if Ice 3.4 is found. I was holding off on
this in hopes that a) it would be fixed in Ice and b) getting the
compiler version isn’t exactly simple. (Cmake does have a variable
that holds the value of the compiler version, but it’s only made
available in newer versions of cmake, which we are not requiring yet,
so we can’t use it). But since it’s only a problem if GCC is used, I
can parse the version string from it and get the info I need. Much
better to disable ControlPort in this case than to fail during
compilation.

Tom

On Wed, Jan 08, 2014 at 10:18:20PM -0500, Dan CaJacob wrote:

OK,

Here’s a specific error. Seems like it’s related to ICE, which compiled
successfully as a dependency.

Dan,

can you please post your exact ICE version as well as other relevant
system info (distro, version etc.).

MB

On Thu, Jan 9, 2014 at 10:44 AM, Dan CaJacob [email protected]
wrote:

Very Respectfully,

Dan CaJacob

Can you let me know if Ice 3.4.2 is also installed on your system?
Most likely it would have been through apt-get, so just see what
‘aptitude search zeroc’ comes back with; hopefully it says that
zeroc-ice34 is installed. If that’s the case, then cmake is likely
finding that version of Ice and not 3.5.1.

You can also check to see what cmake found in CMakeCache.txt in the
build directory and looking for ICE. Or look at the output of cmake
when configuring GNU Radio and you’ll see “Ice-3.4 found” or “Ice-3.5
found”.

If it’s actually trying to build off Ice 3.5.1, then we have a new
problem. Otherwise, it’s a matter of getting cmake to find the correct
version of Ice, which might mean updating the recipe to explicitly set
the version info.

Tom

Hey guys, thanks for the responses!

I’m running Ubuntu 13.10 x64 and ICE version 3.5.1, I think, based on
pybombs list output:

ice installed inventory f00c59983cc904bca977133c0a9b3e8 wget://
http://www.zeroc.com/download/Ice/3.5/Ice-3.5.1.tar.gz

pybombs did successfully build ice from source.

Very Respectfully,

Dan CaJacob

On Thu, Jan 9, 2014 at 12:09 PM, Dan CaJacob [email protected]
wrote:

Hey Tom,

Thanks. I didn’t know how or what to search for, so that was useful.
Here’s the result:

i libzeroc-ice34 - Ice for C++ runtime
library

That there confirms that the Ice 3.4.2 library is installed on your
system, which is what I was expecting.

ICE_ICESTORM:FILEPATH=/usr/lib/libIceStorm.so
//Details about finding ICE

FIND_PACKAGE_MESSAGE_DETAILS_ICE:INTERNAL=[/usr/lib/libIce.so;/usr/lib/libIceUtil.so][/usr/include][v()]

Very Respectfully,

Dan CaJacob

And that tells us that GNU Radio is trying to build using the Ice libs
in /usr/lib, which is where apt-get would have installed ICE, so yeah,
it’s trying to build off Ice 3.4.2.

You could solve this pretty easily by doing an “aptitude remove
libzeroc-ice” to get rid of Ice 3.4.2 altogether on your system. But
I’m more interested in solving this issue in general.

I’ve brought up a VM that has this behavior. Let me see about working
out a solution.

Tom

Hey Tom,

Thanks. I didn’t know how or what to search for, so that was useful.
Here’s the result:

p kde-zeroconf - zeroconf plugins and
kio

DNS service discovery
p libzeroc-ice-ruby1.8:i386 - Ice for Ruby modules
symbols
p php-zeroc-ice:i386 - Ice for PHP extension

p zeroc-ice34 - Internet Communications
Engine
p zeroc-icee - Embedded edition of the
ZeroC Ice

Here’s what I found in the gnuradio CMakeCache.txt file:

ICE_CONFIG_INCLUDE_DIR:PATH=/usr/include

//Path to a file.
//ADVANCED property for variable: ICE_INCLUDE_DIR
PC_ICE_LIBDIR:INTERNAL=
PC_ICE_STATIC_LIBS_L:INTERNAL=
PC_ICE_STATIC_LIBS_OTHER:INTERNAL=
PC_ICE_STATIC_LIBS_PATHS:INTERNAL=
PC_ICE_VERSION:INTERNAL=
__pkg_config_checked_PC_ICE:INTERNAL=1

Very Respectfully,

Dan CaJacob

Thanks, Tom!

Digression warning:
While we’re on the topic, I’ve always wondered if virtualenv would help
with build dependency problems and multiple installed versions (e.g. for
devs). I have never immersed myself into the tool, but I know that it
is
intended for things like this where you want to install specific package
versions for a specific application without affecting other things on
your
system. It’s a sandbox, I guess. What I’ve never been clear on is
whether
it works for C/C++ applications, since it seems to be a python tool. Do
you have any thoughts on that?

Very Respectfully,

Dan CaJacob

All it DOES see if ice3.4.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Dan,

no, Virtualenv is “virtualenv is a tool to create isolated Python
environments.” only.

For unix systems, having multiple versions of the same library is not
a problem by itself, especially since there are several environment
variables that control the behaviour of the dynamic run time linker.

A nice method to employ this is described in
http://gnuradio.org/redmine/projects/gnuradio/wiki/FAQ#Experts-only-How-can-I-deliberately-install-GNU-Radio-multiple-times-different-versions
; just install your application specific libraries, headers etc into
~/.usrlocal.

Also, if you need to capsulate your system more thoroughly, consider
using chroot; although this has become less popular over the last few
years due to the fact that virtualization has become so easy.

Hope that was a little insightful. If someone comes up with something
interesting on this topic, a new thread should be started; although I
consider this problem to be of a typical linux distribution concern,
and not very much specific to GR.

Greetings,
Marcus

On 10.01.2014 16:45, Dan CaJacob wrote:

tool. Do you have any thoughts on that?

[email protected] wrote:

file. ICE_INCLUDE_DIR:PATH=/usr/include //Path to a library.

Very Respectfully,

But I’m more interested in solving this issue in general.
mailing list [email protected]
Discuss-gnuradio Info Page

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJS0Dn7AAoJEAFxB7BbsDrLEOwH/RTC+kW1/vgQ6NQxaoTDYFTv
vxz9B5PbOxocH9/dnINdqtctJw63f/gfIqwUzZK2uuZOJKR1HYbbeIm6diheOexU
B+KVgGDyMbcCIw2Xioo+B/Gr8b7sQPZjOnJNztg1Se1wpOLPtCcwP6fTv9j6xZog
olcyQ1cxezRikja/DX/E52DxJ/fVgDawMoR+KoMQOQ4SvL98KiTuD/X6vRuc2TOz
xt81GwAs6LJh8HVr+kMBXFq1UaN3WxrMPHXtg/db0uxWZXgvKoQYLv6fpCMb+9BZ
eAXgzDkh1SXyaB9K6G6Q6qTO95el6W/VRDgbRyUC8SvP4IN72i4R+jhG6cwwCKg=
=M0JC
-----END PGP SIGNATURE-----

Thanks, Marcus. It seemed too good to be true :wink:

Very Respectfully,

Dan CaJacob