Adar Dembo has submitted this change and it was merged.

Change subject: thirdparty: add boost and switch to header-only build

thirdparty: add boost and switch to header-only build

The addition of boost to thirdparty is bound to make some squeamish, so
here's my rationale:
1. My original goal was to enable the TSAN build on Ubuntu 16.04, a distro
   that has switched to the new gcc5 ABI. This renders the system boost
   installation unusable as it can't link against our TSAN-instrumented
   libstdc++. To be fair, switching to a header-only build has eliminated
   this problem.
2. Boost is effectively the last remaining dependency that isn't explicitly
   managed as a thirdparty dependency. The only exceptions are glibc,
   libstdc++, and libsasl, all of which should not be managed due to their
   interactions with other ABIs. In my opinion, Kudu should manage as many
   dependencies as possible in this way.
3. Doing this means Kudu developers will no longer need to install boost
   system packages to build Kudu.
4. Historically, Kudu has permitted the use of any boost version even
   though some versions needed patches to build with a new compiler. IIRC, was one such instance.
5. For the boost logic that Kudu does use, we'll know exactly which features
   exist and which do not. There'll be no more version-based ambiguity.
6. Doing this means we can drop the odd boost_uuid appendage.
7. This patch by no means implies that boost is to stay in Kudu forever.
   We're already at the point where we can get by with boost headers alone.
   Once we replace the remaining bits (i.e. optional and intrusive lists
   come to mind), we can jettison it altogether.

With that out of the way, here are the details:
- Inclusion of boost as a thirdparty dependency. I spent some time fighting
  with the boost build to get it to copy the headers without building
  anything; eventually I gave up and used rsync instead.
- Removal of boost components from Kudu's cmake logic. This netted a nice
  cleanup of cmake code.
- Removal of boost handling from documentation and other random places.
- Removal of boost_uuid.

Change-Id: Id5b73a8e2a86099429b6032023a01a0da7b02371
Tested-by: Kudu Jenkins
Reviewed-by: Dan Burkert <>
M CMakeLists.txt
M build-support/
M build-support/release/rat_exclude_files.txt
M docs/contributing.adoc
M docs/installation.adoc
M src/kudu/util/CMakeLists.txt
M thirdparty/.gitignore
M thirdparty/LICENSE.txt
D thirdparty/boost_uuid/LICENSE.txt
D thirdparty/boost_uuid/boost/uuid/name_generator.hpp
D thirdparty/boost_uuid/boost/uuid/nil_generator.hpp
D thirdparty/boost_uuid/boost/uuid/random_generator.hpp
D thirdparty/boost_uuid/boost/uuid/seed_rng.hpp
D thirdparty/boost_uuid/boost/uuid/sha1.hpp
D thirdparty/boost_uuid/boost/uuid/string_generator.hpp
D thirdparty/boost_uuid/boost/uuid/uuid.hpp
D thirdparty/boost_uuid/boost/uuid/uuid_generators.hpp
D thirdparty/boost_uuid/boost/uuid/uuid_io.hpp
D thirdparty/boost_uuid/boost/uuid/uuid_serialize.hpp
M thirdparty/
M thirdparty/
M thirdparty/
A thirdparty/patches/boost-issue-12179-fix-compilation-errors.patch
M thirdparty/
M thirdparty/
26 files changed, 98 insertions(+), 1,558 deletions(-)

  Dan Burkert: Looks good to me, approved
  Kudu Jenkins: Verified

To view, visit
To unsubscribe, visit

Gerrit-MessageType: merged
Gerrit-Change-Id: Id5b73a8e2a86099429b6032023a01a0da7b02371
Gerrit-PatchSet: 5
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Adar Dembo <>
Gerrit-Reviewer: Adar Dembo <>
Gerrit-Reviewer: Dan Burkert <>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Todd Lipcon <>

Reply via email to