GobySoft/goby

Unable to find 'protoc-gen-dccl' on EL 6 build

Closed this issue · 3 comments

I'm trying to build Goby 2.1.8 using DCCL 3.0.4 on Enterprise Linux 6.9, but it appears that protoc-gen-dccl is not being built. It's not obvious where this is attempted, as DCCL builds cleanly and a simple grep of its tree didn't reveal any eurekas.

What is required to generate protoc-gen-dccl ?

Note that I'm using an older version of protoc (v2.3) at this point. It is provided by the EPEL repository.


ERROR MESSAGE


$ ./build.sh
Configuring Goby
cmake ..
Compiling in Git source tree.
libprotobuf < 2.5.0
Using DCCL in /opt/dccl/build
Including protobuf dir: /opt/dccl/include
-- Boost version: 1.41.0
-- Found the following Boost libraries:
-- signals
-- GMP libs: /usr/lib64/libgmp.so /usr/lib64/libgmpxx.so
-- Boost version: 1.41.0
-- Found the following Boost libraries:
-- system
-- date_time
-- thread
-- program_options
-- filesystem
-- regex
-- Boost version: 1.41.0
-- Found the following Boost libraries:
-- signals
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/goby/build
Building Goby
make
[ 1%] Generating BinLink
[ 1%] Built target bin_link
[ 1%] Generating IncludeLink
[ 1%] Built target inc_link
[ 1%] Generating LibLink
[ 1%] Built target lib_link
[ 1%] Generating ShareLink
[ 1%] Built target share_link
[ 2%] Generating WtResourcesLink
[ 2%] Built target wt_link
[ 2%] Running C++ protocol buffer compiler on /opt/goby/src/common/protobuf/pubsub_node_config.proto
protoc-gen-dccl: program not found or is not executable
--dccl_out: protoc-gen-dccl: Plugin failed with status code 1.
make[2]: *** [include/goby/common/protobuf/pubsub_node_config.pb.cc] Error 1
make[1]: *** [src/common/CMakeFiles/goby_common.dir/all] Error 2
make: *** [all] Error 2


SOFTWARE VERSIONS


$ g++ --version
g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


$ protoc --version
libprotoc 2.3.0


$ pwd
/opt/moos-ivp
$ git log -1
commit 62dca1c06aa532c984420283b7aba4103b769879
Author: Mohamed Saad Ibn Seddik msis@mit.edu
Date: Thu Mar 3 15:13:35 2016 -0500

15.5

$ pwd
/opt/dccl
$ git log -1
commit 7abb906be5b705cdf876f4324cf5fd8c887c117e
Author: Toby Schneider toby@gobysoft.org
Date: Fri Jun 24 11:36:08 2016 -0400

Release 3.0.4

$ ls bin/
analyze_dccl dccl
$ ls lib/
libdccl_arithmetic.so libdccl_ccl_compat.so libdccl.so
libdccl_arithmetic.so.30 libdccl_ccl_compat.so.30 libdccl.so.30
libdccl_arithmetic.so.3.0.4 libdccl_ccl_compat.so.3.0.4 libdccl.so.3.0.4


$ echo $DCCL_DIR
/opt/dccl/build


$ pwd
/opt/goby
$ git log -1
commit a3a92af
Author: Toby Schneider toby@gobysoft.org
Date: Tue May 9 16:43:42 2017 -0400

Release 2.1.8

protobuf_gen_dccl requires the stable Protobuf plugins infrastructure, which isn't available until Protobuf 2.4.0. After installing Protobuf 2.4.0 you'll either need to remove the CMakeCache.txt in dccl/build or pass -Denable_units=ON to cmake to enable building protobuf_gen_dccl

Goby >= 2.1.6 requires protobuf_gen_dccl for the static units support (http://libdccl.org/idl.html#idl-units).

So you'll need Protobuf >= 2.4.0 (preferred) or use Goby <= 2.1.5.

Great, thanks! I'll identify a way forward to get Protobuf 2.4+ running on EL 6.

Closing the loop:

I found protobuf_2.4.1 SRPM from the CERT Forensics Tools repository (x86_64, i386), which I was able to rebuild and deploy in my local yum repository.

Doing a clean/rebuild in DCCL, then, correctly generated the 'protobuf_gen_dccl' app.