Skip to content

Commit

Permalink
Add mongocxx to Ubuntu 20 dependencies container image.
Browse files Browse the repository at this point in the history
  • Loading branch information
kirkrodrigues committed Oct 8, 2023
1 parent 69bba30 commit bb51d8d
Show file tree
Hide file tree
Showing 3 changed files with 161 additions and 0 deletions.
78 changes: 78 additions & 0 deletions components/core/tools/scripts/lib_install/mongoc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#!/bin/bash

# Exit on any error
set -e

cUsage="Usage: ${BASH_SOURCE[0]} <version>[ <.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
81 changes: 81 additions & 0 deletions components/core/tools/scripts/lib_install/mongocxx.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
#!/bin/bash

# Exit on any error
set -e

cUsage="Usage: ${BASH_SOURCE[0]} <version>[ <.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
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
./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

0 comments on commit bb51d8d

Please sign in to comment.