summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt50
1 files changed, 35 insertions, 15 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 600cfd6..610c2cc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -155,34 +155,39 @@ enable_testing()
# 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. So this is a roundabout trick.
-list(APPEND DIST_NAMES ubuntu ubuntu rocky rocky almalinux alpine)
+list(APPEND DIST_IDS ubuntu ubuntu rocky rocky almalinux alpine)
list(APPEND DIST_VERS 20.04 22.04 8.9 9.3 9.3 3.19)
list(APPEND DIST_PKGS deb deb rpm rpm rpm static)
-list(LENGTH DIST_NAMES _DIST_LISTLEN)
+list(LENGTH DIST_IDS _DIST_LISTLEN)
math(EXPR DIST_LISTLEN "${_DIST_LISTLEN} - 1")
foreach(x RANGE ${DIST_LISTLEN})
- list(GET DIST_NAMES ${x} DIST_NAME)
+ list(GET DIST_IDS ${x} DIST_ID)
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_${DIST_NAME}-${DIST_VER}-${ARCH}.${DIST_PKG})
+ set(DOCKER_IMAGE mscp-${DIST_ID}:${DIST_VER})
+ set(DOCKER_INDEX ${DIST_ID}-${DIST_VER})
+ execute_process(
+ COMMAND ${CMAKE_SOURCE_DIR}/scripts/install-build-deps.sh
+ --dont-install --platform Linux-${DIST_ID}
+ OUTPUT_VARIABLE REQUIREDPKGS
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
add_custom_target(docker-build-${DOCKER_INDEX}
COMMENT "Build mscp in ${DOCKER_IMAGE} container"
WORKING_DIRECTORY ${mscp_SOURCE_DIR}
COMMAND
- docker build -t ${DOCKER_IMAGE} -f Dockerfile/${DOCKER_INDEX}.Dockerfile .)
+ docker build --build-arg REQUIREDPKGS=${REQUIREDPKGS}
+ -t ${DOCKER_IMAGE} -f Dockerfile/${DOCKER_INDEX}.Dockerfile .)
add_custom_target(docker-build-${DOCKER_INDEX}-no-cache
COMMENT "Build mscp in ${DOCKER_IMAGE} container"
WORKING_DIRECTORY ${mscp_SOURCE_DIR}
COMMAND
- docker build --no-cache -t ${DOCKER_IMAGE} -f Dockerfile/${DOCKER_INDEX}.Dockerfile .)
+ docker build --build-arg REQUIREDPKGS=${REQUIREDPKGS} --no-cache
+ -t ${DOCKER_IMAGE} -f Dockerfile/${DOCKER_INDEX}.Dockerfile .)
add_custom_target(docker-test-${DOCKER_INDEX}
COMMENT "Test mscp in ${DOCKER_IMAGE} container"
@@ -204,12 +209,19 @@ add_custom_target(docker-test-all DEPENDS ${DOCKER_TESTS})
### debuild-related definitions
set(DEBBUILDCONTAINER mscp-build-deb)
+execute_process(
+ COMMAND ${CMAKE_SOURCE_DIR}/scripts/install-build-deps.sh
+ --dont-install --platform Linux-ubuntu
+ OUTPUT_VARIABLE REQUIREDPKGS_DEB
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
add_custom_target(build-deb
COMMENT "build mscp deb files inside a container"
WORKING_DIRECTORY ${mscp_SOURCE_DIR}
BYPRODUCTS ${CMAKE_BINARY_DIR}/debbuild
COMMAND
- docker build -t ${DEBBUILDCONTAINER} -f Dockerfile/build-deb.Dockerfile .
+ docker build --build-arg REQUIREDPKGS=${REQUIREDPKGS_DEB}
+ -t ${DEBBUILDCONTAINER} -f Dockerfile/build-deb.Dockerfile .
COMMAND
docker run --rm -v ${CMAKE_BINARY_DIR}:/out ${DEBBUILDCONTAINER}
cp -r /debbuild /out/)
@@ -222,20 +234,28 @@ configure_file(
${mscp_SOURCE_DIR}/rpm/mscp.spec.in
${mscp_SOURCE_DIR}/rpm/mscp.spec
@ONLY)
-configure_file(
- ${mscp_SOURCE_DIR}/Dockerfile/build-srpm.Dockerfile.in
- ${mscp_SOURCE_DIR}/Dockerfile/build-srpm.Dockerfile
- @ONLY)
+#configure_file(
+# ${mscp_SOURCE_DIR}/Dockerfile/build-srpm.Dockerfile.in
+# ${mscp_SOURCE_DIR}/Dockerfile/build-srpm.Dockerfile
+# @ONLY)
# Custom target to build mscp as a src.rpm in docker.
set(RPMBUILDCONTAINER mscp-build-srpm)
set(SRPMFILE mscp-${MSCP_VERSION}-1.el9.src.rpm)
+execute_process(
+ COMMAND ${CMAKE_SOURCE_DIR}/scripts/install-build-deps.sh
+ --dont-install --platform Linux-rocky
+ OUTPUT_VARIABLE REQUIREDPKGS_RPM
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
add_custom_target(build-srpm
COMMENT "Build mscp src.rpm inside a container"
WORKING_DIRECTORY ${mscp_SOURCE_DIR}
BYPRODUCTS ${CMAKE_BINARY_DIR}/${SRPMFILE}
COMMAND
- docker build -t ${RPMBUILDCONTAINER} -f Dockerfile/build-srpm.Dockerfile .
+ docker build --build-arg REQUIREDPKGS=${REQUIREDPKGS_RPM}
+ --build-arg MSCP_VERSION=${MSCP_VERSION}
+ -t ${RPMBUILDCONTAINER} -f Dockerfile/build-srpm.Dockerfile .
COMMAND
docker run --rm -v ${CMAKE_BINARY_DIR}:/out ${RPMBUILDCONTAINER}
cp /root/rpmbuild/SRPMS/${SRPMFILE} /out/)