diff --git a/CMakeLists.txt b/CMakeLists.txt index da6b44e43..18a6c26f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,4 @@ -# CMake 3.22.1 is the default on Ubuntu 22.04 -cmake_minimum_required(VERSION 3.22.1) +cmake_minimum_required(VERSION 3.23) project( spider @@ -180,12 +179,8 @@ else() endif() # Add ystdlib-cpp -set(YSTDLIB_CPP_BUILD_TESTING OFF) -add_subdirectory( - "${SPIDER_YSTDLIB_SOURCE_DIRECTORY}" - "${CMAKE_BINARY_DIR}/ystdlib" - EXCLUDE_FROM_ALL -) +find_package(ystdlib REQUIRED) +message(STATUS "Found ystdlib ${ystdlib_VERSION}.") find_package(Threads REQUIRED) diff --git a/dep-tasks.yaml b/dep-tasks.yaml index 40f1af76e..0cf4ba1f2 100644 --- a/dep-tasks.yaml +++ b/dep-tasks.yaml @@ -22,7 +22,7 @@ tasks: - task: "install-mariadb-connector-cpp" - task: "install-msgpack" - task: "install-spdlog" - - task: "download-ystdlib" + - task: "install-ystdlib" install-abseil: internal: true @@ -56,21 +56,24 @@ tasks: - "-DCATCH_BUILD_TESTING=OFF" JOBS: "{{.G_DEPS_MAX_PARALLELISM_PER_TASK}}" - download-ystdlib: + install-ystdlib: internal: true run: "once" + deps: + - "install-boost" cmds: - - task: ":utils:remote:download-and-extract-tar" + - task: ":utils:cmake:install-remote-tar" vars: - FILE_SHA256: "36fa0e9d96b7307ca92482343d6ba1091c5576370676e6d423cce32c20e34a3d" - OUTPUT_DIR: "{{.G_DEPS_DIR}}/ystdlib/ystdlib-src" - URL: "https://github.com/y-scope/ystdlib-cpp/archive/d80cf86.tar.gz" - - | - cat <> "{{.G_DEPS_CMAKE_SETTINGS_DIR}}/ystdlib.cmake" - set( - SPIDER_YSTDLIB_SOURCE_DIRECTORY "{{.G_DEPS_DIR}}/ystdlib/ystdlib-src" - ) - EOF + CMAKE_PACKAGE_NAME: "ystdlib" + WORK_DIR: "{{.G_DEPS_DIR}}/ystdlib" + TAR_SHA256: "4c027c884506e1775070192f9d1d58238a6d5b078608211fa442477393676738" + TAR_URL: "https://github.com/y-scope/ystdlib-cpp/archive/0ae886c.tar.gz" + CMAKE_SETTINGS_DIR: "{{.G_DEPS_CMAKE_SETTINGS_DIR}}" + CMAKE_GEN_ARGS: + - "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" + - "-Dystdlib_BUILD_TESTING=OFF" + - "-C {{.G_DEPS_CMAKE_SETTINGS_DIR}}/Boost.cmake" + JOBS: "{{.G_DEPS_MAX_PARALLELISM_PER_TASK}}" install-fmtlib: internal: true diff --git a/tools/scripts/lib_install/install-cmake.sh b/tools/scripts/lib_install/install-cmake.sh new file mode 100755 index 000000000..c9bd48256 --- /dev/null +++ b/tools/scripts/lib_install/install-cmake.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +# Exit on error +set -euo pipefail + +cUsage="Usage: ${BASH_SOURCE[0]} " +if [ "$#" -lt 1 ] ; then + echo $cUsage + exit 1 +fi +version=$1 + +echo "Checking for elevated privileges..." +if [ ${EUID:-$(id -u)} -ne 0 ] ; then + sudo echo "Script can elevate privileges." +fi + +# Get number of cpu cores +num_cpus=$(nproc 2>/dev/null || grep -c ^processor /proc/cpuinfo) + +package_name=cmake + +# Create temp dir for installation +temp_dir=/tmp/${package_name}-installation +mkdir -p $temp_dir + +# Clean up +trap 'rm -rf "$temp_dir"' EXIT + +cd $temp_dir + +# Download source +tar_filename=cmake-${version}.tar.gz +curl -fsSL https://github.com/Kitware/CMake/releases/download/v${version}/${tar_filename} -o ${tar_filename} +tar xzf ${tar_filename} +cd cmake-${version} + +# Build +./bootstrap +make -j${num_cpus} + +# Install +if [ ${EUID:-$(id -u)} -ne 0 ] ; then + sudo make install +else + make install +fi diff --git a/tools/scripts/lib_install/linux/install-dev.sh b/tools/scripts/lib_install/linux/install-dev.sh index f88c9cc93..cd20d51fe 100755 --- a/tools/scripts/lib_install/linux/install-dev.sh +++ b/tools/scripts/lib_install/linux/install-dev.sh @@ -16,7 +16,6 @@ ${privileged_command_prefix} apt-get update DEBIAN_FRONTEND=noninteractive ${privileged_command_prefix} apt-get install --no-install-recommends -y \ ca-certificates \ checkinstall \ - cmake \ curl \ g++ \ gcc \ @@ -34,6 +33,7 @@ DEBIAN_FRONTEND=noninteractive ${privileged_command_prefix} apt-get install --no script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" lib_install_scripts_dir="$script_dir/.." +${privileged_command_prefix} "$lib_install_scripts_dir"/install-cmake.sh 3.23.5 # TODO https://github.com/y-scope/spider/issues/86 "$lib_install_scripts_dir"/check-cmake-version.sh