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
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.
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-Owner: Adar Dembo <a...@cloudera.com>
Gerrit-Reviewer: Dan Burkert <d...@cloudera.com>
Gerrit-Reviewer: Todd Lipcon <t...@apache.org>