Trying this I noticed a few things (ordered by urgency from my point of view).
With this change, we Bro cannot be compiled out of the Box on RedHat/Centos 7 anymore. Since that is the latest release of RedHat and probably used in production by quite a few people a potentially significant amount of people might not be able to (easily) compile Bro with this merge.
It aborts in configure, with:
-- Performing Test cxx11_header_works - Success
CMake Error at aux/broker/CMakeLists.txt:4 (cmake_minimum_required):
CMake 3.0.2 or higher is required. You are running version 2.8.12.2
--snip
Compiling on Debian 8 gives some CAF warnings that are a tad ugly:
In file included from /root/bro/aux/broker/3rdparty/caf/libcaf_core/caf/serializer.hpp:32:0,
from /root/bro/aux/broker/3rdparty/caf/libcaf_core/caf/detail/tuple_vals.hpp:25,
from /root/bro/aux/broker/3rdparty/caf/libcaf_core/caf/make_message.hpp:28,
from /root/bro/aux/broker/3rdparty/caf/libcaf_core/caf/mailbox_element.hpp:27,
from /root/bro/aux/broker/3rdparty/caf/libcaf_core/caf/abstract_actor.hpp:37,
from /root/bro/aux/broker/3rdparty/caf/libcaf_core/caf/actor.hpp:32,
from /root/bro/aux/broker/broker/data.hh:11,
from /root/bro/aux/broker/broker/broker.hh:8,
from /root/bro/src/broker/Data.h:4,
from /root/bro/src/broker/Data.cc:1:
/root/bro/aux/broker/3rdparty/caf/libcaf_core/caf/data_processor.hpp: In function ‘typename std::enable_if<std::is_same<caf::error, decltype (declval<caf::deserializer&>().caf::data_processor<caf::deserializer>::apply(declval<T&>()))>::value>::type caf::operator&(caf::deserializer&, T&) [with T = std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000000l> > >; typename std::enable_if<std::is_same<caf::error, decltype (declval<caf::deserializer&>().caf::data_processor<caf::deserializer>::apply(declval<T&>()))>::value>::type = void]’:
/root/bro/aux/broker/3rdparty/caf/libcaf_core/caf/data_processor.hpp:478:7: warning: ‘dur’ may be used uninitialized in this function [-Wmaybe-uninitialized]
t = std::chrono::time_point<std::chrono::system_clock,
{dur};
^
/root/bro/aux/broker/3rdparty/caf/libcaf_core/caf/data_processor.hpp:476:16: note: ‘dur’ was declared here
Duration dur;
^
--snip
/root/bro/aux/broker/3rdparty/caf/libcaf_core/src/scheduled_actor.cpp:892:55: warning: unused parameter ‘sender’ [-Wunused-parameter]
actor_addr& sender,
--snip
I noticed one small thing while building with make -j4; in this case you get several different % numbers simultaneously (one for car and one for broker).
Example:
[ 25%] Built target plugin-Bro-BackDoor
[ 25%] Building CXX object src/analyzer/protocol/bittorrent/CMakeFiles/plugin-Bro-BitTorrent.dir/bittorrent_pac.cc.o
[ 85%] Building CXX object libcaf_io/CMakeFiles/libcaf_io_shared.dir/src/interfaces.cpp.o
[ 25%] Building CXX object src/analyzer/protocol/bittorrent/CMakeFiles/plugin-Bro-BitTorrent.dir/events.bif.cc.o
While this is obviously cosmetic, it still looks weird to me :).
Apart from that it compiled and ran all tests on all systems I tried it on.
There were a few test failures on the first run (that succeeded on a rerun) though.
These were (from different systems):
MacOs:
[ 76%] scripts.base.frameworks.logging.field-extension-cluster ... failed
[ 21%] broker.disconnect ... failed
[ 56%] broker.ssl_auth_failure ... failed
[ 89%] scripts.base.frameworks.control.shutdown ... failed
[ 99%] scripts.base.frameworks.openflow.log-cluster ... failed
There were also a couple that did not succeed after several reruns for me. This was on a digital ocean 4cpu optimized debian8 instance for me; the reruns were not parallel:
root@debian-c-4-8gib-sfo2-01:~/bro/testing/btest# ../../aux/btest/btest -r -d
[ 0%] scripts.base.frameworks.control.configuration_update ... failed
% 'btest-bg-wait 10' failed unexpectedly (exit code 1)
% cat .stderr
The following processes did not terminate:
BROPATH=.:/root/bro/scripts:/root/bro/scripts/policy:/root/bro/scripts/site:/root/bro/build/scripts:.. bro /root/bro/testing/btest/.tmp/scripts.base.frameworks.control.configuration_update/configuration_update.bro frameworks/control/controller Control::host=127.0.0.1 Control::host_port=65531/tcp Control::cmd=shutdown