Problem compiling OLA

Rui Barreiros rbarreiros at gmail.com
Wed May 4 18:42:10 CEST 2016


Hi,

I've been trying to compile OLA (https://www.openlighting.org) but been 
having so many problems I'm melting my brains out !!

To build OLA without any plugins, and all superfluous stuff disabled 
(doc, examples, etc) requires protobuf and uuid, I managed successfully 
to build and install this libraries (uuid is provided by util-linux), I 
just make a plain DESTDIR=$(PATH_FS) make install for uuid and protobuf.

OLA relies on either pkg-config or env variables to find protobuf and 
uuid, I tried both and the problem I have happens on any.

My problem is, OLA binaries have the lib path hardcoded and when I run 
them on the raspberry pi, it just hangs forever, an strace reveals:

root at tridmx_raspi_b_rev2-952bbb2c:~> strace olad
execve("/usr/bin/olad", ["olad"], [/* 15 vars */]) = 0
brk(0)                                  = 0x15000
uname({sys="Linux", node="tridmx_raspi_b_rev2-952bbb2c", ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 
0) = 0xa6ffc000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or 
directory)
open("/home/rbarreiros/Projectos/RaspberryPi/nard/nard-git/intermediate/fs/usr/lib/tls/v6l/vfp/libolaserver.so.0", 
O_RDONLY|O_CLOEXEC) = -1 ELOOP (Too many levels of symbolic links)
stat64("/home/rbarreiros/Projectos/RaspberryPi/nard/nard-git/intermediate/fs/usr/lib/tls/v6l/vfp",

Everytime an open/stat call is made, it takes a long long time, until it 
receives the ELOOP error and attempts another path to try and open 
libolaserver.so.0


Here is the configure/build section for ola Makefile

To properly build ola for another system, one needs to build 
ola_protoc_plugin natively first, as it's used by the protoc (which 
needs to be built natively first also) to parse from protobuf message 
files during build, then the cross compilation is done.

         # Need to build a native ola-protoc-plugin first
         if [ ! -e native/protoc/ola_protoc_plugin ]; then \
         cd native && env CFLAGS="" CPPFLAGS="" LDFLAGS="" 
PKG_CONFIG="/usr/bin/pkg-config" \
                 ./configure \
                 --disable-all-plugins \
                 --disable-osc \
                 --disable-uart \
                 --disable-libusb \
                 --disable-libftdi \
                 --disable-http  \
                 --disable-examples \
                 --disable-unittests \
                 --disable-doxygen-html \
                 --disable-doxygen-doc \
                 --without-dns-sd \
                 && $(MAKE) -j "$(CPUS)" protoc/ola_protoc_plugin; fi

         cd $(dir $@) && env PKG_CONFIG_DIR="" 
PKG_CONFIG_LIBDIR="$(PATH_FS)/usr/lib/pkgconfig:$(PATH_FS)/usr/share/pkgconfig" 
PKG_CONFIG_SYSROOT_DIR="$(PATH_FS)" \
                 CFLAGS="$(CROSS_CFLAGS)" \
                 CPPFLAGS="$(CROSS_CFLAGS)" \
                 LDFLAGS="-Wl,-rpath -Wl,/usr/lib -Wl,-rpath-link 
-Wl,$(PATH_FS)/usr/lib -L$(PATH_FS)/lib -L$(PATH_FS)/usr/lib" \
                 PKG_CONFIG="/usr/bin/pkg-config" \
                 ./configure \
                 ac_cv_func_malloc_0_nonnull=yes 
ac_cv_func_realloc_0_nonnull=yes \
                 libprotobuf_CFLAGS="-I$(PATH_FS)/usr/include 
-L$(PATH_FS)/usr/lib -Wl,-rpath-link,$(PATH_FS)/usr/lib" \
                 libprotobuf_LIBS="-L$(PATH_FS)/usr/lib -lprotobuf 
-lprotoc" \
                 base_uuid_CFLAGS="-I$(PATH_FS)/usr/include 
-L$(PATH_FS)/usr/lib -Wl,-rpath-link,$(PATH_FS)/usr/lib" \
                 base_uuid_LIBS="-L$(PATH_FS)/usr/lib -luuid" \
                 --prefix=/usr \
                 --host=$(CROSS_TUPLE) \
                 --target=$(CROSS_TUPLE) \
                 --disable-dependency-tracking \
                 --without-dns-sd \
--with-protoc=$(PATH_APPS)/protobuf/native/src/protoc \
--with-ola-protoc-plugin=$(PATH_APPS)/ola/native/protoc/ola_protoc_plugin \
                 --disable-unittests \
                 --disable-examples \
                 --disable-rdm-tests \
                 --disable-doxygen-doc \
                 --disable-gcov \
                 --disable-tcmalloc \
                 --disable-root-check \
                 --disable-java-libs \
                 --disable-python-libs \
                 --disable-fatal-warnings \
                 --disable-all-plugins
         $(MAKE) -C "$(PKG_VER)" -j $(CPUS)

Worthy of note, I couldn't finish OLA compilation because I kept getting 
an error where libtool couldn't find it's libraries (OLA libraries) and 
suggested using rpath or rpath-link, I managed to fix this issue by 
implementing a fix found here http://bugs.lttng.org/issues/321 in which 
the configure script goes through all occurrences of link_all_deplibs in 
config/libtool.m4 and replace all 'no|yes' to unknown.

Does anyone have any idea what I'm doing wrong ? or where the bug is ?

Best regards.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2109 bytes
Desc: S/MIME Cryptographic Signature
Url : http://www.arbetsmyra.dyndns.org/pipermail/nard/attachments/20160504/785d7e3b/attachment.bin 


More information about the Nard mailing list