Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add mongocxx dependencies to all dev environments #218

Merged
merged 7 commits into from
Jan 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
gibber9809 marked this conversation as resolved.
Show resolved Hide resolved
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

gibber9809 marked this conversation as resolved.
Show resolved Hide resolved
# 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
Loading