Disregard this one - v3 is coming :-)

On Wednesday, February 17, 2021 at 12:23:21 AM UTC-5 Waldek Kozaczuk wrote:

> On some distributions, like CentOS, the default version of boost
> is really old. So the best option is to build a newer one from source.
> Also even on Fedora or Ubuntu it might be useful to point to
> different version of boost other than what ./scripts/setup.py installs.
>
> This script automates process of downloading the sources of specified 
> version
> of boost and building it using default or specified toolchain.
> Please set proper CROSS_PREFIX if you intend to cross-compile
> the aarch64 version of boost on x86_64 machine like so:
>
> CROSS_PREFIX=aarch64-none-linux-gnu- ./scripts/download_and_build_boost.sh 
> 1.70.0 aarch64
>
> The built version of the boost is symlinked into the
> build/downloaded_packages/<arch>/boost/install/ directory and will
> automatically be used where cross-compiling aarch64 OSv kernel.
> In order to use x64 version of boost built using this script
> we still need to make changes to the main makefile and
> modules/common.gmk.
>
> Signed-off-by: Waldemar Kozaczuk <[email protected]>
> ---
> scripts/download_and_build_boost.sh | 56 +++++++++++++++++++++++++++++
> 1 file changed, 56 insertions(+)
> create mode 100755 scripts/download_and_build_boost.sh
>
> diff --git a/scripts/download_and_build_boost.sh 
> b/scripts/download_and_build_boost.sh
> new file mode 100755
> index 00000000..bf250e98
> --- /dev/null
> +++ b/scripts/download_and_build_boost.sh
> @@ -0,0 +1,56 @@
> +#!/bin/bash
> +#
> +# Copyright (C) 2021 Waldemar Kozaczuk
> +#
> +# This work is open source software, licensed under the terms of the
> +# BSD license as described in the LICENSE file in the top-level directory.
> +#
> +
> +# Usage:
> +# ./scripts/download_and_build_boost.sh <BOOST_VERSION> <ARCH>
> +#
> +set -e
> +
> +OSV_ROOT=$(dirname $(readlink -e $0))/..
> +
> +BOOST_VERSION="$1"
> +if [[ "${BOOST_VERSION}" == "" ]]; then
> + BOOST_VERSION="1.70.0"
> +fi
> +BOOST_VERSION2=${BOOST_VERSION//[.]/_}
> +
> +ARCH=$2
> +if [[ "${ARCH}" == "" ]]; then
> + ARCH=$(uname -m)
> +fi
> +
>
> +TAR_DOWNLOAD_DIR="${OSV_ROOT}"/build/downloaded_packages/"${ARCH}"/boost/upstream/
> +mkdir -p "${TAR_DOWNLOAD_DIR}"
> +
> +BOOST_URL=https://dl.bintray.com/boostorg/release/
> "${BOOST_VERSION}"/source/boost_"${BOOST_VERSION2}".tar.gz
> +wget -c -O "${TAR_DOWNLOAD_DIR}"/boost_"${BOOST_VERSION2}".tar.gz 
> "${BOOST_URL}"
> +
> +pushd "${TAR_DOWNLOAD_DIR}"
> +rm -rf ./boost_"${BOOST_VERSION2}"
> +tar -xf ./boost_"${BOOST_VERSION2}".tar.gz
> +cd ./boost_"${BOOST_VERSION2}"
> +./bootstrap.sh 
> --with-libraries=system,thread,test,chrono,regex,date_time,filesystem,locale,random,atomic,log,program_options
> +
> +BOOST_DIR=$(pwd)
> +if [[ "$CROSS_PREFIX" == aarch64* ]]; then
> + echo "using gcc : arm : ${CROSS_PREFIX}g++ ;" > user-config.jam
> +fi
> +
> +B2_OPTIONS="threading=multi"
> +if [[ "${CROSS_PREFIX}" == aarch64* ]]; then
> + B2_OPTIONS="${B2_OPTIONS} --user-config=${BOOST_DIR}/user-config.jam 
> toolset=gcc-arm architecture=arm address-model=64"
> +fi
> +./b2 ${B2_OPTIONS} -j$(nproc)
> +
> +#
> +# Create symlinks to install boost and make it visible to OSv makefile
> +rm -f ../../install
> +ln -s upstream/boost_${BOOST_VERSION2}/stage ../../install
> +mkdir -p stage/usr/include
> +ln -s ../../../boost stage/usr/include/boost
> +popd
> -- 
> 2.29.2
>
>

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/7c05c632-09f8-4311-84fb-e1abe6d78c6an%40googlegroups.com.

Reply via email to