diff options
-rw-r--r-- | CMakeLists.txt | 10 | ||||
-rw-r--r-- | README.md | 24 | ||||
-rwxr-xr-x | scripts/install-build-deps.sh | 28 | ||||
-rwxr-xr-x | scripts/print-install-deps.sh | 23 |
4 files changed, 58 insertions, 27 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 37167f8..e324e65 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,15 +80,19 @@ if(UNIX AND NOT APPLE) # on linux execute_process(COMMAND bash "-c" "cat /etc/os-release|grep '^VERSION_ID='|cut -d '=' -f 2|tr -d '\"'" OUTPUT_VARIABLE DIST_VER OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND + bash "-c" "${mscp_SOURCE_DIR}/scripts/print-install-deps.sh ${DIST_NAME}-${DIST_VER}" + OUTPUT_VARIABLE DIST_DEP OUTPUT_STRIP_TRAILING_WHITESPACE) + set(PACKAGE_FILE_NAME ${PROJECT_NAME}_${PROJECT_VERSION}-${DIST_NAME}-${DIST_VER}-${ARCH}) set(CPACK_DEBIAN_FILE_NAME ${PACKAGE_FILE_NAME}.deb) - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libssh-4") + set(CPACK_DEBIAN_PACKAGE_DEPENDS ${DIST_DEP}) set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/upa/mscp") set(CPACK_RPM_FILE_NAME ${PACKAGE_FILE_NAME}.rpm) - set(CPACK_RPM_PACKAGE_REQUIRES "libssh") + set(CPACK_RPM_PACKAGE_REQUIRES ${DIST_DEP}) set(CPACK_RPM_PACKAGE_HOMEPAGE "https://github.com/upa/mscp") set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION}) endif() # on linux @@ -119,7 +123,7 @@ foreach(x RANGE ${DIST_LISTLEN}) add_custom_target(docker-build-${DOCKER_INDEX} COMMENT "Build mscp in ${DOCKER_IMAGE} container" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${mscp_SOURCE_DIR} COMMAND docker build -t ${DOCKER_IMAGE} -f docker/${DOCKER_INDEX}.Dockerfile .) @@ -44,35 +44,27 @@ patch introduces asynchronous SFTP Write, which is derived from https://github.com/limes-datentechnik-gmbh/libssh (see [Re: SFTP Write async](https://archive.libssh.org/libssh/2020-06/0000004.html)). -- macOS - -```console -brew install openssl -``` - -- ubuntu - -```console -sudo apt-get install zlib1g-dev libssl-dev libkrb5-dev -``` - -Clone and build this repositoy. +Currently macOS and Linux (Ubuntu, CentOS, Rocky) are supported. ```console +# 1. clone this repository git clone https://github.com/upa/mscp.git cd mscp -# prepare patched libssh +# 2. install build dependency +bash ./scripts/install-build-deps.sh + +# 3. prepare patched libssh git submodule init git submodule update cd libssh && git apply ../patch/libssh-0.10.4.patch -# configure mscp +# 4. configure mscp cd .. mkdir build && mv build cmake .. -# in macOS, you may need OPENSSL_ROOT_DIR for cmake like: +## in macOS, you may need OPENSSL_ROOT_DIR for cmake like: cmake .. -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl # build diff --git a/scripts/install-build-deps.sh b/scripts/install-build-deps.sh index 0d7bd94..fa16b55 100755 --- a/scripts/install-build-deps.sh +++ b/scripts/install-build-deps.sh @@ -1,18 +1,30 @@ -#!/bin/bash -e +#!/bin/bash -eu # # Install build dpenedencies. -source /etc/os-release +platform=$(uname -s) + +if [ -e /etc/os-release ]; then + source /etc/os-release + platform=${platform}-${ID} +fi + set -x -case $ID in - ubuntu*) - apt-get install -y gcc make cmake libssh-dev +case $platform in + Darwin) + brew install openssl ;; - centos* | rhel* | rocky*) - yum install -y gcc make cmake libssh-devel rpm-build + Linux-ubuntu*) + sudo apt-get install -y \ + gcc make cmake zlib1g-dev libssl-dev libkrb5-dev + ;; + Linux-centos* | Linux-rhel* | Linux-rocky*) + sudo yum install -y \ + gcc make cmake zlib-devel openssl-devel rpm-build ;; *) - echo "unsupported dependency install: $ID" + echo "unsupported platform: $platform" exit 1 + ;; esac diff --git a/scripts/print-install-deps.sh b/scripts/print-install-deps.sh new file mode 100755 index 0000000..e0e2f09 --- /dev/null +++ b/scripts/print-install-deps.sh @@ -0,0 +1,23 @@ +#!/bin/bash -e +# +# Print install dpenedencies on Linux. CMake runs this script to obtain deps for CPACK. +# mscp dependes on packages on which libssh depends. + +source /etc/os-release + +release=$1 + +case $release in + ubuntu-20.04*) + echo "libc6 (>= 2.27), libgssapi-krb5-2 (>= 1.17), libssl1.1 (>= 1.1.1), zlib1g (>= 1:1.1.4)" + ;; + ubuntu-22.04*) + echo "libc6 (>= 2.33), libgssapi-krb5-2 (>= 1.17), libssl3 (>= 3.0.0~~alpha1), zlib1g (>= 1:1.1.4)" + ;; + centos* | rhel* | rocky*) + echo "glibc crypto-policies krb5-libs openssl-libs libcom_err" + ;; + *) + echo "unsupported install dependency: $release" + exit 1 +esac |