Skip to content

Commit

Permalink
Add mongocxx dependencies to all dev environments. (#218)
Browse files Browse the repository at this point in the history
  • Loading branch information
gibber9809 authored Jan 8, 2024
1 parent 2ae14de commit efc34ae
Show file tree
Hide file tree
Showing 7 changed files with 210 additions and 0 deletions.
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ brew install \
libarchive \
lz4 \
mariadb-connector-c \
mongo-cxx-driver \
msgpack-cxx \
spdlog \
pkg-config \
Expand Down
99 changes: 99 additions & 0 deletions components/core/tools/scripts/lib_install/mongoc.sh
Original file line number Diff line number Diff line change
@@ -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]} <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..."
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"
101 changes: 101 additions & 0 deletions components/core/tools/scripts/lib_install/mongocxx.sh
Original file line number Diff line number Diff line change
@@ -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]} <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..."
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"
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit efc34ae

Please sign in to comment.