diff options
Diffstat (limited to 'src/arrow/cpp/build-support/trim-boost.sh')
-rwxr-xr-x | src/arrow/cpp/build-support/trim-boost.sh | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/arrow/cpp/build-support/trim-boost.sh b/src/arrow/cpp/build-support/trim-boost.sh new file mode 100755 index 000000000..477a5e965 --- /dev/null +++ b/src/arrow/cpp/build-support/trim-boost.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# This script is used to make the subset of boost that we actually use, +# so that we don't have to download the whole big boost project when we build +# boost from source. +# +# To test building Arrow locally with the boost bundle this creates, add: +# +# set(BOOST_SOURCE_URL /path/to/arrow/cpp/build-support/boost_1_75_0/boost_1_75_0.tar.gz) +# +# to the beginning of the build_boost() macro in ThirdpartyToolchain.cmake, +# +# or set the env var ARROW_BOOST_URL before calling cmake, like: +# +# ARROW_BOOST_URL=/path/to/arrow/cpp/build-support/boost_1_75_0/boost_1_75_0.tar.gz cmake ... +# +# After running this script, upload the bundle to +# https://github.com/ursa-labs/thirdparty/releases/edit/latest +# TODO(ARROW-6407) automate uploading to github + +set -eu + +# if version is not defined by the caller, set a default. +: ${BOOST_VERSION:=1.75.0} +: ${BOOST_FILE:=boost_${BOOST_VERSION//./_}} +: ${BOOST_URL:=https://sourceforge.net/projects/boost/files/boost/${BOOST_VERSION}/${BOOST_FILE}.tar.gz} + +# Arrow tests require these +BOOST_LIBS="system.hpp filesystem.hpp process.hpp" +# Add these to be able to build those +BOOST_LIBS="$BOOST_LIBS config build boost_install headers log predef" +# Gandiva needs these (and some Arrow tests do too) +BOOST_LIBS="$BOOST_LIBS multiprecision/cpp_int.hpp" +# These are for Thrift when Thrift_SOURCE=BUNDLED +BOOST_LIBS="$BOOST_LIBS locale.hpp scope_exit.hpp boost/typeof/incr_registration_group.hpp" + +if [ ! -d ${BOOST_FILE} ]; then + curl -L "${BOOST_URL}" > ${BOOST_FILE}.tar.gz + tar -xzf ${BOOST_FILE}.tar.gz +fi + +pushd ${BOOST_FILE} + +if [ ! -f "dist/bin/bcp" ]; then + ./bootstrap.sh + ./b2 tools/bcp +fi +mkdir -p ${BOOST_FILE} +./dist/bin/bcp ${BOOST_LIBS} ${BOOST_FILE} + +tar -czf ${BOOST_FILE}.tar.gz ${BOOST_FILE}/ +# Resulting tarball is in ${BOOST_FILE}/${BOOST_FILE}.tar.gz + +popd |