diff options
-rw-r--r-- | CMakeLists.txt | 171 | ||||
-rw-r--r-- | docker/centos-8.Dockerfile | 2 | ||||
-rw-r--r-- | docker/rocky-8.6.Dockerfile | 4 | ||||
-rw-r--r-- | docker/ubuntu-20.04.Dockerfile | 2 | ||||
-rw-r--r-- | docker/ubuntu-22.04.Dockerfile | 2 |
5 files changed, 87 insertions, 94 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 08f09b1..27f3cbb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,93 +68,86 @@ add_test(NAME pytest enable_testing() -# Build Packages -if(BUILD_PKG) - - # CPACK Rules - set(CPACK_SET_DESTDIR true) - set(CPACK_PROJECT_NAME ${PROJECT_NAME}) - set(CPACK_PROJECT_VERSION ${PROJECT_VERSION}) - set(CPACK_PACKAGE_CONTACT "Ryo Nakamura <upa@haeena.net>") - set(CPACK_PACKAGE_DESCRIPTION - "mscp, copy files over multiple ssh connections") - - # on linux - if(UNIX AND NOT APPLE) - execute_process(COMMAND - bash "-c" "cat /etc/os-release|grep '^ID='|cut -d '=' -f 2|tr -d '\"'" - OUTPUT_VARIABLE DIST_NAME OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND - bash "-c" "cat /etc/os-release|grep '^VERSION_ID='|cut -d '=' -f 2|tr -d '\"'" - OUTPUT_VARIABLE DIST_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND uname -p - OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) - set(PACKAGE_FILE_NAME - ${PROJECT_NAME}_${PROJECT_VERSION}-${DIST_NAME}-${DIST_VERSION}-${ARCH}) - - set(CPACK_DEBIAN_FILE_NAME ${PACKAGE_FILE_NAME}.deb) - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libssh-4") - 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_HOMEPAGE "https://github.com/upa/mscp") - set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION}) - - endif() # on linux - - include(CPack) - - - # Custom commands to build mscp in docker containers - - # Ubuntu 20.04 - add_custom_target(package-ubuntu-20.04-in-docker - COMMENT "Build mscp in ubuntu 20.04 docker container" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMAND docker build -t mscp-ubuntu:20.04 -f docker/ubuntu-20.04.Dockerfile . - COMMAND docker run --init --rm mscp-ubuntu:20.04 - /mscp/scripts/test-in-container.sh - COMMAND docker run --rm -v ${CMAKE_BINARY_DIR}:/out mscp-ubuntu:20.04 - cp /mscp/build/mscp_${PROJECT_VERSION}-ubuntu-20.04-${ARCH}.deb /out/) - - # Ubuntu 22.04 - add_custom_target(package-ubuntu-22.04-in-docker - COMMENT "Build mscp in ubuntu 22.04 docker container" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMAND docker build -t mscp-ubuntu:22.04 -f docker/ubuntu-22.04.Dockerfile . - COMMAND docker run --init --rm mscp-ubuntu:22.04 - /mscp/scripts/test-in-container.sh - COMMAND docker run --rm -v ${CMAKE_BINARY_DIR}:/out mscp-ubuntu:22.04 - cp /mscp/build/mscp_${PROJECT_VERSION}-ubuntu-22.04-${ARCH}.deb /out/) - - # CentOS 8 - add_custom_target(package-centos-8-in-docker - COMMENT "Build mscp in centos 8 docker container" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMAND docker build -t mscp-centos:8 -f docker/centos-8.Dockerfile . - COMMAND docker run --init --rm mscp-centos:8 - /mscp/scripts/test-in-container.sh - COMMAND docker run --rm -v ${CMAKE_BINARY_DIR}:/out mscp-centos:8 - cp /mscp/build/mscp_${PROJECT_VERSION}-centos-8-${ARCH}.rpm /out/) - - # Rocky 8.6 - add_custom_target(package-rocky-8.6-in-docker - COMMENT "Build mscp in rocky 8.6 docker container" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMAND docker build -t mscp-rocky:8.6 -f docker/rocky-8.6.Dockerfile . - COMMAND docker run --init --rm mscp-rocky:8.6 - /mscp/scripts/test-in-container.sh - COMMAND docker run --rm -v ${CMAKE_BINARY_DIR}:/out mscp-rocky:8.6 - cp /mscp/build/mscp_${PROJECT_VERSION}-rocky-8.6-${ARCH}.rpm /out/) - - # build on all conatiners - add_custom_target(package-all-in-docker - COMMENT "Build mscp in all docker containers" - DEPENDS package-ubuntu-20.04-in-docker - DEPENDS package-ubuntu-22.04-in-docker - DEPENDS package-centos-8-in-docker - DEPENDS package-rocky-8.6-in-docker) - -endif() # BUILD_PKG +# CPACK Rules +set(CPACK_SET_DESTDIR true) +set(CPACK_PROJECT_NAME ${PROJECT_NAME}) +set(CPACK_PROJECT_VERSION ${PROJECT_VERSION}) +set(CPACK_PACKAGE_CONTACT "Ryo Nakamura <upa@haeena.net>") +set(CPACK_PACKAGE_DESCRIPTION + "mscp, copy files over multiple ssh connections") + +execute_process(COMMAND uname -m + OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) + +if(UNIX AND NOT APPLE) # on linux + execute_process(COMMAND + bash "-c" "cat /etc/os-release|grep '^ID='|cut -d '=' -f 2|tr -d '\"'" + OUTPUT_VARIABLE DIST_NAME OUTPUT_STRIP_TRAILING_WHITESPACE) + 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) + 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_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_HOMEPAGE "https://github.com/upa/mscp") + set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION}) +endif() # on linux + +include(CPack) + + + +# Custom targets to build and test mscp in docker containers. +# foreach(IN ZIP_LISTS) (cmake >= 3.17) can shorten the following lists. +# However, ubuntu 20.04 has cmake 3.16.3. +list(APPEND DIST_NAMES ubuntu) +list(APPEND DIST_VERS 20.04) +list(APPEND DIST_PKGS deb) + +list(APPEND DIST_NAMES ubuntu) +list(APPEND DIST_VERS 22.04) +list(APPEND DIST_PKGS deb) + +list(APPEND DIST_NAMES centos) +list(APPEND DIST_VERS 8) +list(APPEND DIST_PKGS rpm) + +list(APPEND DIST_NAMES rocky) +list(APPEND DIST_VERS 8.6) +list(APPEND DIST_PKGS rpm) + +foreach(x RANGE 3) + list(GET DIST_NAMES ${x} DIST_NAME) + list(GET DIST_VERS ${x} DIST_VER) + list(GET DIST_PKGS ${x} DIST_PKG) + set(DOCKER_IMAGE mscp-${DIST_NAME}:${DIST_VER}) + set(DOCKER_INDEX ${DIST_NAME}-${DIST_VER}) + set(PKG_FILE_NAME + mscp_${PROJECT_VERSION}-${DIST_NAME}-${DIST_VER}-${ARCH}.${DIST_PKG}) + + add_custom_target(docker-build-${DOCKER_INDEX} + COMMENT "Build mscp in ${DOCKER_IMAGE} container" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMAND + docker build -t ${DOCKER_IMAGE} -f docker/${DOCKER_INDEX}.Dockerfile .) + + add_custom_target(docker-test-${DOCKER_INDEX} + COMMENT "Test mscp in ${DOCKER_IMAGE} container" + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND + docker run --init --rm ${DOCKER_IMAGE} /mscp/scripts/test-in-container.sh) + + add_custom_target(docker-pkg-${DOCKER_INDEX} + COMMENT "Retrieve mscp package from ${DOCKER_IMAGE} container" + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND + docker run --rm -v ${CMAKE_BINARY_DIR}:/out ${DOCKER_IMAGE} + cp /mscp/build/${PKG_FILE_NAME} /out/) +endforeach() diff --git a/docker/centos-8.Dockerfile b/docker/centos-8.Dockerfile index 3d60c72..a5e1ebe 100644 --- a/docker/centos-8.Dockerfile +++ b/docker/centos-8.Dockerfile @@ -28,7 +28,7 @@ RUN ${mscpdir}/scripts/install-build-deps.sh # build RUN cd ${mscpdir} \ && rm -rf build \ - && cmake -B build -DBUILD_PKG=1 \ + && cmake -B build \ && cd ${mscpdir}/build \ && make \ && cpack -G RPM CPackConfig.cmake diff --git a/docker/rocky-8.6.Dockerfile b/docker/rocky-8.6.Dockerfile index 422261b..90b804c 100644 --- a/docker/rocky-8.6.Dockerfile +++ b/docker/rocky-8.6.Dockerfile @@ -5,7 +5,7 @@ ARG mscpdir="/mscp" COPY . ${mscpdir} # install numpy and pytest, sshd for test, and rpm-build -RUN set -ex && yum -y update && yum -y install \ +RUN set -ex && yum -y install \ python3 python3-pip openssh openssh-server openssh-clients rpm-build RUN python3 -m pip install numpy pytest @@ -23,7 +23,7 @@ RUN ${mscpdir}/scripts/install-build-deps.sh # build RUN cd ${mscpdir} \ && rm -rf build \ - && cmake -B build -DBUILD_PKG=1 \ + && cmake -B build \ && cd ${mscpdir}/build \ && make \ && cpack -G RPM CPackConfig.cmake diff --git a/docker/ubuntu-20.04.Dockerfile b/docker/ubuntu-20.04.Dockerfile index 9fdeea3..bc5fd86 100644 --- a/docker/ubuntu-20.04.Dockerfile +++ b/docker/ubuntu-20.04.Dockerfile @@ -28,7 +28,7 @@ RUN ${mscpdir}/scripts/install-build-deps.sh # build RUN cd ${mscpdir} \ && rm -rf build \ - && cmake -B build -DBUILD_PKG=1 \ + && cmake -B build \ && cd ${mscpdir}/build \ && make \ && cpack -G DEB CPackConfig.cmake diff --git a/docker/ubuntu-22.04.Dockerfile b/docker/ubuntu-22.04.Dockerfile index 0f4ab9c..73f4307 100644 --- a/docker/ubuntu-22.04.Dockerfile +++ b/docker/ubuntu-22.04.Dockerfile @@ -28,7 +28,7 @@ RUN ${mscpdir}/scripts/install-build-deps.sh # build RUN cd ${mscpdir} \ && rm -rf build \ - && cmake -B build -DBUILD_PKG=1 \ + && cmake -B build \ && cd ${mscpdir}/build \ && make \ && cpack -G DEB CPackConfig.cmake |