summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt10
-rw-r--r--README.md24
-rwxr-xr-xscripts/install-build-deps.sh28
-rwxr-xr-xscripts/print-install-deps.sh23
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 .)
diff --git a/README.md b/README.md
index 02515e0..6378c61 100644
--- a/README.md
+++ b/README.md
@@ -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