mirror of
https://github.com/upa/mscp.git
synced 2026-02-21 14:44:48 +08:00
cleanup docker-related commands in cmake
TODO: add bruild procedure for async_write
This commit is contained in:
149
CMakeLists.txt
149
CMakeLists.txt
@@ -68,93 +68,86 @@ add_test(NAME pytest
|
|||||||
enable_testing()
|
enable_testing()
|
||||||
|
|
||||||
|
|
||||||
# Build Packages
|
|
||||||
if(BUILD_PKG)
|
|
||||||
|
|
||||||
# CPACK Rules
|
# CPACK Rules
|
||||||
set(CPACK_SET_DESTDIR true)
|
set(CPACK_SET_DESTDIR true)
|
||||||
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
|
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
|
||||||
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
|
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
|
||||||
set(CPACK_PACKAGE_CONTACT "Ryo Nakamura <upa@haeena.net>")
|
set(CPACK_PACKAGE_CONTACT "Ryo Nakamura <upa@haeena.net>")
|
||||||
set(CPACK_PACKAGE_DESCRIPTION
|
set(CPACK_PACKAGE_DESCRIPTION
|
||||||
"mscp, copy files over multiple ssh connections")
|
"mscp, copy files over multiple ssh connections")
|
||||||
|
|
||||||
# on linux
|
execute_process(COMMAND uname -m
|
||||||
if(UNIX AND NOT APPLE)
|
OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
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)
|
if(UNIX AND NOT APPLE) # on linux
|
||||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libssh-4")
|
execute_process(COMMAND
|
||||||
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/upa/mscp")
|
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_RPM_FILE_NAME ${PACKAGE_FILE_NAME}.rpm)
|
set(CPACK_DEBIAN_FILE_NAME ${PACKAGE_FILE_NAME}.deb)
|
||||||
set(CPACK_RPM_PACKAGE_REQUIRES "libssh")
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libssh-4")
|
||||||
set(CPACK_RPM_PACKAGE_HOMEPAGE "https://github.com/upa/mscp")
|
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/upa/mscp")
|
||||||
set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
|
|
||||||
|
|
||||||
endif() # on linux
|
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)
|
include(CPack)
|
||||||
|
|
||||||
|
|
||||||
# Custom commands to build mscp in docker containers
|
|
||||||
|
|
||||||
# Ubuntu 20.04
|
# Custom targets to build and test mscp in docker containers.
|
||||||
add_custom_target(package-ubuntu-20.04-in-docker
|
# foreach(IN ZIP_LISTS) (cmake >= 3.17) can shorten the following lists.
|
||||||
COMMENT "Build mscp in ubuntu 20.04 docker container"
|
# 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}
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
COMMAND docker build -t mscp-ubuntu:20.04 -f docker/ubuntu-20.04.Dockerfile .
|
COMMAND
|
||||||
COMMAND docker run --init --rm mscp-ubuntu:20.04
|
docker build -t ${DOCKER_IMAGE} -f docker/${DOCKER_INDEX}.Dockerfile .)
|
||||||
/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(docker-test-${DOCKER_INDEX}
|
||||||
add_custom_target(package-ubuntu-22.04-in-docker
|
COMMENT "Test mscp in ${DOCKER_IMAGE} container"
|
||||||
COMMENT "Build mscp in ubuntu 22.04 docker container"
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
COMMAND
|
||||||
COMMAND docker build -t mscp-ubuntu:22.04 -f docker/ubuntu-22.04.Dockerfile .
|
docker run --init --rm ${DOCKER_IMAGE} /mscp/scripts/test-in-container.sh)
|
||||||
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
|
|
||||||
|
|
||||||
|
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()
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ RUN ${mscpdir}/scripts/install-build-deps.sh
|
|||||||
# build
|
# build
|
||||||
RUN cd ${mscpdir} \
|
RUN cd ${mscpdir} \
|
||||||
&& rm -rf build \
|
&& rm -rf build \
|
||||||
&& cmake -B build -DBUILD_PKG=1 \
|
&& cmake -B build \
|
||||||
&& cd ${mscpdir}/build \
|
&& cd ${mscpdir}/build \
|
||||||
&& make \
|
&& make \
|
||||||
&& cpack -G RPM CPackConfig.cmake
|
&& cpack -G RPM CPackConfig.cmake
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ ARG mscpdir="/mscp"
|
|||||||
COPY . ${mscpdir}
|
COPY . ${mscpdir}
|
||||||
|
|
||||||
# install numpy and pytest, sshd for test, and rpm-build
|
# 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
|
python3 python3-pip openssh openssh-server openssh-clients rpm-build
|
||||||
|
|
||||||
RUN python3 -m pip install numpy pytest
|
RUN python3 -m pip install numpy pytest
|
||||||
@@ -23,7 +23,7 @@ RUN ${mscpdir}/scripts/install-build-deps.sh
|
|||||||
# build
|
# build
|
||||||
RUN cd ${mscpdir} \
|
RUN cd ${mscpdir} \
|
||||||
&& rm -rf build \
|
&& rm -rf build \
|
||||||
&& cmake -B build -DBUILD_PKG=1 \
|
&& cmake -B build \
|
||||||
&& cd ${mscpdir}/build \
|
&& cd ${mscpdir}/build \
|
||||||
&& make \
|
&& make \
|
||||||
&& cpack -G RPM CPackConfig.cmake
|
&& cpack -G RPM CPackConfig.cmake
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ RUN ${mscpdir}/scripts/install-build-deps.sh
|
|||||||
# build
|
# build
|
||||||
RUN cd ${mscpdir} \
|
RUN cd ${mscpdir} \
|
||||||
&& rm -rf build \
|
&& rm -rf build \
|
||||||
&& cmake -B build -DBUILD_PKG=1 \
|
&& cmake -B build \
|
||||||
&& cd ${mscpdir}/build \
|
&& cd ${mscpdir}/build \
|
||||||
&& make \
|
&& make \
|
||||||
&& cpack -G DEB CPackConfig.cmake
|
&& cpack -G DEB CPackConfig.cmake
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ RUN ${mscpdir}/scripts/install-build-deps.sh
|
|||||||
# build
|
# build
|
||||||
RUN cd ${mscpdir} \
|
RUN cd ${mscpdir} \
|
||||||
&& rm -rf build \
|
&& rm -rf build \
|
||||||
&& cmake -B build -DBUILD_PKG=1 \
|
&& cmake -B build \
|
||||||
&& cd ${mscpdir}/build \
|
&& cd ${mscpdir}/build \
|
||||||
&& make \
|
&& make \
|
||||||
&& cpack -G DEB CPackConfig.cmake
|
&& cpack -G DEB CPackConfig.cmake
|
||||||
|
|||||||
Reference in New Issue
Block a user