Hello Dan Burkert, Todd Lipcon,

I'd like you to do a code review.  Please visit


to review the following change.

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. Some distros (e.g. SLES12) don't offer
   system packages, forcing developers to set up with the tarball.
4. Historically, Kudu has permitted the use of any boost version even
   though some versions needed patches to build with a new compiler. IIRC,
   https://svn.boost.org/trac/boost/ticket/6165 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 few 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
M CMakeLists.txt
M build-support/dist_test.py
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/build-definitions.sh
M thirdparty/build-thirdparty.sh
M thirdparty/download-thirdparty.sh
A thirdparty/patches/boost-issue-12179-fix-compilation-errors.patch
M thirdparty/preflight.py
M thirdparty/vars.sh
26 files changed, 92 insertions(+), 1,558 deletions(-)

  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/00/3500/1
To view, visit http://gerrit.cloudera.org:8080/3500
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id5b73a8e2a86099429b6032023a01a0da7b02371
Gerrit-PatchSet: 1
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Adar Dembo <a...@cloudera.com>
Gerrit-Reviewer: Dan Burkert <d...@cloudera.com>
Gerrit-Reviewer: Todd Lipcon <t...@apache.org>

Reply via email to