diff --git a/components/core/tools/docker-images/clp-env-base-ubuntu-focal/build.sh b/components/core/tools/docker-images/clp-env-base-ubuntu-focal/build.sh old mode 100644 new mode 100755 diff --git a/components/core/tools/scripts/lib_install/centos7.4/install-packages-from-source.sh b/components/core/tools/scripts/lib_install/centos7.4/install-packages-from-source.sh index daeef06be..58d5cb38e 100755 --- a/components/core/tools/scripts/lib_install/centos7.4/install-packages-from-source.sh +++ b/components/core/tools/scripts/lib_install/centos7.4/install-packages-from-source.sh @@ -3,6 +3,9 @@ # Enable gcc 10 source /opt/rh/devtoolset-10/enable +# Enable git +source /opt/rh/rh-git227/enable + # NOTE: cmake and boost must be installed first since the remaining packages depend on them ./tools/scripts/lib_install/install-cmake.sh 3.21.2 ./tools/scripts/lib_install/install-boost.sh 1.76.0 @@ -11,6 +14,8 @@ source /opt/rh/devtoolset-10/enable ./tools/scripts/lib_install/libarchive.sh 3.5.1 ./tools/scripts/lib_install/lz4.sh 1.8.2 ./tools/scripts/lib_install/mariadb-connector-c.sh 3.2.3 +./tools/scripts/lib_install/mongoc.sh 1.24.4 +./tools/scripts/lib_install/mongocxx.sh 3.8.0 ./tools/scripts/lib_install/msgpack.sh 6.0.0 ./tools/scripts/lib_install/spdlog.sh 1.9.2 ./tools/scripts/lib_install/zstandard.sh 1.4.9 diff --git a/components/core/tools/scripts/lib_install/macos-12/install-all.sh b/components/core/tools/scripts/lib_install/macos-12/install-all.sh index 17f7a4d71..d49b6ee7a 100755 --- a/components/core/tools/scripts/lib_install/macos-12/install-all.sh +++ b/components/core/tools/scripts/lib_install/macos-12/install-all.sh @@ -9,6 +9,7 @@ brew install \ libarchive \ lz4 \ mariadb-connector-c \ + mongo-cxx-driver \ msgpack-cxx \ spdlog \ pkg-config \ diff --git a/components/core/tools/scripts/lib_install/mongoc.sh b/components/core/tools/scripts/lib_install/mongoc.sh new file mode 100755 index 000000000..016ac52e7 --- /dev/null +++ b/components/core/tools/scripts/lib_install/mongoc.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +# Dependencies: +# - cmake +# - curl +# - git +# - g++ +# NOTE: Dependencies should be installed outside the script to allow the script to be largely +# distro-agnostic + +# Exit on any error +set -e + +# Error on undefined variable +set -u + +cUsage="Usage: ${BASH_SOURCE[0]} [ <.deb output directory>]" +if [ "$#" -lt 1 ] ; then + echo "$cUsage" + exit +fi +version=$1 + +package_name=libmongoc-dev +temp_dir="/tmp/${package_name}-installation" +deb_output_dir="${temp_dir}" +if [[ "$#" -gt 1 ]] ; then + deb_output_dir="$(readlink -f "$2")" + if [ ! -d "${deb_output_dir}" ] ; then + echo "${deb_output_dir} does not exist or is not a directory" + exit + fi +fi + +# Check if already installed +set +e +dpkg -l "${package_name}" | grep "${version}" +installed=$? +set -e +if [ $installed -eq 0 ] ; then + # Nothing to do + exit +fi + +echo "Checking for elevated privileges..." +install_command_prefix_args=() +if [ ${EUID:-$(id -u)} -ne 0 ] ; then + sudo echo "Script can elevate privileges." + install_command_prefix_args+=("sudo") +fi + +# Download +mkdir -p "$temp_dir" +cd "$temp_dir" +extracted_dir="${temp_dir}/mongo-c-driver-${version}" +if [ ! -e "${extracted_dir}" ] ; then + tar_filename="mongo-c-driver-${version}.tar.gz" + if [ ! -e "${tar_filename}" ] ; then + curl \ + -fsSL \ + "https://github.com/mongodb/mongo-c-driver/releases/download/${version}/${tar_filename}" \ + -o "${tar_filename}" + fi + + tar -xf "${tar_filename}" +fi + +# Set up +cd "${extracted_dir}" +mkdir -p build +cd build +cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF \ + -DENABLE_TESTS=OFF \ + .. + +# Check if checkinstall is installed +set +e +command -v checkinstall +checkinstall_installed=$? +set -e + +# Install +if [ $checkinstall_installed -eq 0 ] ; then + install_command_prefix_args+=( + checkinstall + --pkgname "${package_name}" + --pkgversion "${version}" + --provides "${package_name}" + --nodoc + -y + --pakdir "${deb_output_dir}" + ) +fi +"${install_command_prefix_args[@]}" cmake --build . --target install --parallel + +# Clean up +rm -rf "$temp_dir" diff --git a/components/core/tools/scripts/lib_install/mongocxx.sh b/components/core/tools/scripts/lib_install/mongocxx.sh new file mode 100755 index 000000000..a8c688606 --- /dev/null +++ b/components/core/tools/scripts/lib_install/mongocxx.sh @@ -0,0 +1,101 @@ +#!/usr/bin/env bash + +# Dependencies: +# - cmake +# - curl +# - git +# - g++ +# NOTE: Dependencies should be installed outside the script to allow the script to be largely +# distro-agnostic + +# Exit on any error +set -e + +# Error on undefined variable +set -u + +cUsage="Usage: ${BASH_SOURCE[0]} [ <.deb output directory>]" +if [ "$#" -lt 1 ] ; then + echo "$cUsage" + exit +fi +version=$1 + +package_name=libmongocxx-dev +temp_dir="/tmp/${package_name}-installation" +deb_output_dir="${temp_dir}" +if [[ "$#" -gt 1 ]] ; then + deb_output_dir="$(readlink -f "$2")" + if [ ! -d "${deb_output_dir}" ] ; then + echo "${deb_output_dir} does not exist or is not a directory" + exit + fi +fi + +# Check if already installed +set +e +dpkg -l "${package_name}" | grep "${version}" +installed=$? +set -e +if [ $installed -eq 0 ] ; then + # Nothing to do + exit +fi + +echo "Checking for elevated privileges..." +install_command_prefix_args=() +if [ ${EUID:-$(id -u)} -ne 0 ] ; then + sudo echo "Script can elevate privileges." + install_command_prefix_args+=("sudo") +fi + +# Download +mkdir -p "$temp_dir" +cd "$temp_dir" +extracted_dir="${temp_dir}/mongo-cxx-driver-r${version}" +if [ ! -e "${extracted_dir}" ] ; then + tar_filename="mongo-cxx-driver-r${version}.tar.gz" + if [ ! -e "${tar_filename}" ] ; then + curl \ + -fsSL \ + "https://github.com/mongodb/mongo-cxx-driver/releases/download/r${version}/${tar_filename}" \ + -o "${tar_filename}" + fi + + tar -xf "${tar_filename}" +fi + +# Set up +cd "${extracted_dir}/build" +# NOTE: Although the mongocxx docs indicate we should use +# '-DMONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX=OFF' to install to the default location (/usr/local), +# this doesn't seem to work, so we specify CMAKE_INSTALL_PREFIX here +cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr/local \ + -DBUILD_SHARED_AND_STATIC_LIBS=ON \ + -DENABLE_TESTS=OFF \ + .. + +# Check if checkinstall is installed +set +e +command -v checkinstall +checkinstall_installed=$? +set -e + +# Install +if [ $checkinstall_installed -eq 0 ] ; then + install_command_prefix_args+=( + checkinstall + --pkgname "${package_name}" + --pkgversion "${version}" + --provides "${package_name}" + --nodoc + -y + --pakdir "${deb_output_dir}" + ) +fi +"${install_command_prefix_args[@]}" cmake --build . --target install --parallel + +# Clean up +rm -rf "$temp_dir" diff --git a/components/core/tools/scripts/lib_install/ubuntu-focal/install-packages-from-source.sh b/components/core/tools/scripts/lib_install/ubuntu-focal/install-packages-from-source.sh index ccbae9230..bdfa5c97c 100755 --- a/components/core/tools/scripts/lib_install/ubuntu-focal/install-packages-from-source.sh +++ b/components/core/tools/scripts/lib_install/ubuntu-focal/install-packages-from-source.sh @@ -3,6 +3,8 @@ ./tools/scripts/lib_install/fmtlib.sh 8.0.1 ./tools/scripts/lib_install/libarchive.sh 3.5.1 ./tools/scripts/lib_install/lz4.sh 1.8.2 +./tools/scripts/lib_install/mongoc.sh 1.24.4 +./tools/scripts/lib_install/mongocxx.sh 3.8.0 ./tools/scripts/lib_install/msgpack.sh 6.0.0 ./tools/scripts/lib_install/spdlog.sh 1.9.2 ./tools/scripts/lib_install/zstandard.sh 1.4.9 diff --git a/components/core/tools/scripts/lib_install/ubuntu-jammy/install-packages-from-source.sh b/components/core/tools/scripts/lib_install/ubuntu-jammy/install-packages-from-source.sh index ccbae9230..bdfa5c97c 100755 --- a/components/core/tools/scripts/lib_install/ubuntu-jammy/install-packages-from-source.sh +++ b/components/core/tools/scripts/lib_install/ubuntu-jammy/install-packages-from-source.sh @@ -3,6 +3,8 @@ ./tools/scripts/lib_install/fmtlib.sh 8.0.1 ./tools/scripts/lib_install/libarchive.sh 3.5.1 ./tools/scripts/lib_install/lz4.sh 1.8.2 +./tools/scripts/lib_install/mongoc.sh 1.24.4 +./tools/scripts/lib_install/mongocxx.sh 3.8.0 ./tools/scripts/lib_install/msgpack.sh 6.0.0 ./tools/scripts/lib_install/spdlog.sh 1.9.2 ./tools/scripts/lib_install/zstandard.sh 1.4.9