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..748b78958 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 \ + mongocxx-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..c3d8c2056 --- /dev/null +++ b/components/core/tools/scripts/lib_install/mongoc.sh @@ -0,0 +1,85 @@ +#!/bin/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 + +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..." +privileged_command_prefix="" +if [ ${EUID:-$(id -u)} -ne 0 ] ; then + sudo echo "Script can elevate privileges." + privileged_command_prefix="${privileged_command_prefix} 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 +install_command_prefix="${privileged_command_prefix}" +if [ $checkinstall_installed -eq 0 ] ; then + install_command_prefix="${install_command_prefix} checkinstall --pkgname '${package_name}' --pkgversion '${version}' --provides '${package_name}' --nodoc -y --pakdir \"${deb_output_dir}\"" +fi +${install_command_prefix} cmake --build . --target install + +# 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..676d57875 --- /dev/null +++ b/components/core/tools/scripts/lib_install/mongocxx.sh @@ -0,0 +1,88 @@ +#!/bin/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 + +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..." +privileged_command_prefix="" +if [ ${EUID:-$(id -u)} -ne 0 ] ; then + sudo echo "Script can elevate privileges." + privileged_command_prefix="${privileged_command_prefix} 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) but 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 +install_command_prefix="${privileged_command_prefix}" +if [ $checkinstall_installed -eq 0 ] ; then + install_command_prefix="${install_command_prefix} checkinstall --pkgname '${package_name}' --pkgversion '${version}' --provides '${package_name}' --nodoc -y --pakdir \"${deb_output_dir}\"" +fi +${install_command_prefix} cmake --build . --target install + +# 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