>> Would you please add
>> set( CPACK_DEBIAN_PACKAGE_DEBUG ON)
>>
>> to the file
>> MyLibCPackConfig-splitted-components-depend2.cmake.in
>>
>> so that we also have the debug logs?
>
> I currently don't have access to my computer so I'll send you that in
> about a week.
Sorry I forgot about this...
Attached is verbose output and patch that I was using (slightly
modified patch that you provided rebased to current master).
Regards,
Domen
UpdateCTestConfiguration from
:/home/domen/Dev/build/cmake/DartConfiguration.tcl
Parse Config file:/home/domen/Dev/build/cmake/DartConfiguration.tcl
Add coverage exclude regular expressions.
Add coverage exclude: XCode
Add coverage exclude: Kdevelop
Add coverage exclude: /Source/(cm|kw)sys/
Add coverage exclude: /CMakeFiles/CMakeTmp/
Add coverage exclude: [A-Za-z]./[Qq]t/qt-.+-opensource-src
UpdateCTestConfiguration from
:/home/domen/Dev/build/cmake/DartConfiguration.tcl
Parse Config file:/home/domen/Dev/build/cmake/DartConfiguration.tcl
Test project /home/domen/Dev/build/cmake
Constructing a list of tests
Guessing configuration NoConfig
Done constructing a list of tests
Checking test dependency graph...
Checking test dependency graph end
test 131
Start 131: CPackComponentsDEB-components-depend2
131: Test command: /home/domen/Dev/build/cmake/bin/ctest "-C" "NoConfig"
"--build-and-test" "/media/sf_Dev/projects/cmake/Tests/CPackComponentsDEB"
"/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2"
"--build-generator" "Unix Makefiles" "--build-project" "CPackComponentsDEB"
"--build-options" "-DCMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make"
"-DCPACK_GENERATOR:STRING=DEB" "-DCPACK_BINARY_DEB:BOOL=ON"
"-DCPackDEBConfiguration=components-depend2"
"--graphviz=CPackComponentsDEB.dot" "--test-command"
"/home/domen/Dev/build/cmake/bin/cmake"
"-DCPackComponentsDEB_SOURCE_DIR:PATH=/media/sf_Dev/projects/cmake/Tests/CPackComponentsDEB"
"-DCPackComponentsDEB_BINARY_DIR:PATH=/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2"
"-DCPackGen=DEB" "-DCPackDEBConfiguration=components-depend2" "-P"
"/media/sf_Dev/projects/cmake/Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend2.cmake"
131: Test timeout computed to be: 1500
131: Generate graphviz:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/CPackComponentsDEB.dot
131: Writing
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/CPackComponentsDEB.dot.mylib...
131: Writing
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/CPackComponentsDEB.dot.mylibapp...
131: Writing
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/CPackComponentsDEB.dot.mylibapp2...
131: Writing
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/CPackComponentsDEB.dot.mylib.dependers...
131: Writing
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/CPackComponentsDEB.dot.mylibapp.dependers...
131: Writing
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/CPackComponentsDEB.dot.mylibapp2.dependers...
131: Writing
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/CPackComponentsDEB.dot...
131: Internal cmake changing into directory:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2
131: ======== CMake output ======
131: Configuring
131: Configuring done
131: Generating
131: Generating done
131: Build files have been written to:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2
131: ======== End CMake output ======
131: Change Dir:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2
131:
131: Run Clean Command:"/usr/bin/make" "clean"
131:
131: Run Build Command:"/usr/bin/make"
131: [ 16%] Building CXX object CMakeFiles/mylib.dir/mylib.cpp.o
131: [ 33%] Linking CXX static library libmylib.a
131: [ 33%] Built target mylib
131: [ 50%] Building CXX object CMakeFiles/mylibapp.dir/mylibapp.cpp.o
131: [ 66%] Linking CXX executable mylibapp
131: [ 66%] Built target mylibapp
131: [ 83%] Building CXX object CMakeFiles/mylibapp2.dir/mylibapp.cpp.o
131: [100%] Linking CXX executable mylibapp2
131: [100%] Built target mylibapp2
131: Running test command: "/home/domen/Dev/build/cmake/bin/cmake"
"-DCPackComponentsDEB_SOURCE_DIR:PATH=/media/sf_Dev/projects/cmake/Tests/CPackComponentsDEB"
"-DCPackComponentsDEB_BINARY_DIR:PATH=/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2"
"-DCPackGen=DEB" "-DCPackDEBConfiguration=components-depend2" "-P"
"/media/sf_Dev/projects/cmake/Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend2.cmake"
131: Test command failed: /home/domen/Dev/build/cmake/bin/cmake
131: --
=============================================================================
131: -- CTEST_FULL_OUTPUT (Avoid ctest truncation of output)
131: --
131: CMAKE_CPACK_COMMAND = /home/domen/Dev/build/cmake/bin/cpack
131: config_args =
131: config_verbose = -V
131: -- CPack_output=CPack: Enable Verbose
131: CPack Verbose: Read CPack config file:
131: CPack Verbose: Read CPack configuration file:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/CPackConfig.cmake
131: CPack Verbose: Specified generator: DEB
131: CPack Verbose: Use generator: cmCPackDebGenerator
131: CPack Verbose: For project: MyLib
131: CPack: Create package using DEB
131: CPack Verbose: Read description file:
/media/sf_Dev/projects/cmake/Templates/CPack.GenericDescription.txt
131: CPack Verbose: [DEB] requested component grouping = IGNORE_GROUPS
131: CPack Verbose: Remove toplevel directory:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/_CPack_Packages/Linux/DEB
131: CPack: Install projects
131: CPack: - Run preinstall target for: CPackComponentsDEB
131: CPack: - Install project: CPackComponentsDEB
131: CPack: - Install component: applications
131: CPack Verbose: Install configuration: "NoConfig"
131: CPack Verbose: Installing:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/_CPack_Packages/Linux/DEB/MyLib-1.0.2-Linux/applications/usr/bin/mylibapp
131: CPack: - Install component: libraries
131: CPack Verbose: Install configuration: "NoConfig"
131: CPack Verbose: Installing:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/_CPack_Packages/Linux/DEB/MyLib-1.0.2-Linux/libraries/usr/lib/libmylib.a
131: CPack: - Install component: headers
131: CPack Verbose: Install configuration: "NoConfig"
131: CPack Verbose: Installing:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/_CPack_Packages/Linux/DEB/MyLib-1.0.2-Linux/headers/usr/include/mylib.h
131: CPack: Create package
131: CPack Verbose: Package files to:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/_CPack_Packages/Linux/DEB/MyLib-1.0.2-Linux.deb
131: CPack Verbose: Copying final package(s) [3]:
131: CPack: - package:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/MyLib-1.0.2-Linux-applications.deb
generated.
131: CPack: - package:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/MyLib-1.0.2-Linux-headers.deb
generated.
131: CPack: - package:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/MyLib-1.0.2-Linux-libraries.deb
generated.
131:
131: -- expected_count='3'
131: --
expected_file_mask='/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/MyLib-*.deb'
131: --
actual_output_files='/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/MyLib-1.0.2-Linux-headers.deb;/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/MyLib-1.0.2-Linux-libraries.deb;/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/MyLib-1.0.2-Linux-applications.deb'
131: -- actual_count='3'
131: -- package='mylib-headers', dependencies='depend-headers'
131: -- package='mylib-libraries', dependencies='depend-default'
131: -- package='mylib-applications', dependencies=''
131: CMake Error at
/media/sf_Dev/projects/cmake/Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend2.cmake:85
(message):
131: dpkg-deb checks failed:
131:
131: ;dpkg-deb:
131:
/home/domen/Dev/build/cmake/Tests/CPackComponentsDEB/buildDEB-components-depend2/MyLib-1.0.2-Linux-applications.deb:
131: Incorrect dependencies for package mylib-applications: '' does not
contain
131: any 'lib'
131:
131:
131:
131:
1/1 Test #131: CPackComponentsDEB-components-depend2 ...***Failed 0.39 sec
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.40 sec
The following tests FAILED:
131 - CPackComponentsDEB-components-depend2 (Failed)
Errors while running CTest
From b2ce1fcdd4c003f938dd85491a6d181cb24fc00f Mon Sep 17 00:00:00 2001
From: Domen Vrankar <[email protected]>
Date: Fri, 8 May 2015 07:51:30 +0200
Subject: [PATCH] CPackDEB: Enabling the settings of the dependencies per
component.
---
Modules/CPackDeb.cmake | 48 ++++++++++--
Tests/CMakeLists.txt | 4 +-
.../MyLibCPackConfig-components-depend1.cmake.in | 20 +++++
.../MyLibCPackConfig-components-depend2.cmake.in | 31 ++++++++
.../RunCPackVerifyResult-components-depend1.cmake | 83 +++++++++++++++++++++
.../RunCPackVerifyResult-components-depend2.cmake | 86 ++++++++++++++++++++++
6 files changed, 264 insertions(+), 8 deletions(-)
create mode 100644 Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend1.cmake.in
create mode 100644 Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend2.cmake.in
create mode 100644 Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend1.cmake
create mode 100644 Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend2.cmake
diff --git a/Modules/CPackDeb.cmake b/Modules/CPackDeb.cmake
index d1d5d09..a2e37c0 100644
--- a/Modules/CPackDeb.cmake
+++ b/Modules/CPackDeb.cmake
@@ -54,6 +54,20 @@
#
# May be used to set deb dependencies.
#
+# .. variable:: CPACK_DEBIAN_<COMP>_PACKAGE_DEPENDS
+#
+# * Mandatory : NO
+# * Default : :variable:`CPACK_DEBIAN_PACKAGE_DEPENDS`
+#
+# Indicates the debian package dependencies for a specific component 'COMP'.
+# This value has priority over :variable:`CPACK_DEBIAN_PACKAGE_DEPENDS`. If
+# :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS` is set, then the discovered
+# dependencies will be appended to `CPACK_DEBIAN_<COMP>_PACKAGE_DEPENDS` if set
+# (intead of `CPACK_DEBIAN_PACKAGE_DEPENDS`).
+# The value of `CPACK_DEBIAN_<COMP>_PACKAGE_DEPENDS` can be set to an empty string
+# to enable the automatic discovery of dependencies without inheriting from
+# the default value of :variable:`CPACK_DEBIAN_PACKAGE_DEPENDS`.
+#
# .. variable:: CPACK_DEBIAN_PACKAGE_MAINTAINER
#
# * Mandatory : YES
@@ -362,13 +376,6 @@ function(cpack_deb_prepare_package_vars)
# Remove blank control file
# Might not be safe if package actual contain file or directory named debian
file(REMOVE_RECURSE "${CPACK_TEMPORARY_DIRECTORY}/debian")
-
- # Append user depend if set
- if(CPACK_DEBIAN_PACKAGE_DEPENDS)
- set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}, ${CPACK_DEBIAN_PACKAGE_DEPENDS}")
- else()
- set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}")
- endif()
else()
if(CPACK_DEBIAN_PACKAGE_DEBUG)
message( "CPackDeb Debug: Using only user-provided depends because package does not contain executable files that contain dynamically linked libraries.")
@@ -426,6 +433,33 @@ function(cpack_deb_prepare_package_vars)
# Depends:
# You should set: DEBIAN_PACKAGE_DEPENDS
# TODO: automate 'objdump -p | grep NEEDED'
+
+ # if per-component dependency, overrides the global CPACK_DEBIAN_PACKAGE_DEPENDS
+ # automatic dependency discovery will be performed afterwards.
+ if(CPACK_DEB_PACKAGE_COMPONENT)
+ string(TOUPPER "${CPACK_DEB_PACKAGE_COMPONENT}" _local_component_name)
+ set(_component_depends_var "CPACK_DEBIAN_${_local_component_name}_PACKAGE_DEPENDS")
+
+ # if set, overrides the global dependency
+ if(DEFINED "${_component_depends_var}")
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS "${${_component_depends_var}}")
+ if(CPACK_DEBIAN_PACKAGE_DEBUG)
+ message("CPackDeb Debug: component '${_local_component_name}' dependencies set to '${CPACK_DEBIAN_PACKAGE_DEPENDS}'")
+ endif()
+ endif()
+ endif()
+
+ # at this point, the CPACK_DEBIAN_PACKAGE_DEPENDS is properly set
+ # to the minimal dependency of the package
+ # Append automatic dependance discovery.
+ if(CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS AND NOT CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS STREQUAL "")
+ if (CPACK_DEBIAN_PACKAGE_DEPENDS)
+ set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}, ${CPACK_DEBIAN_PACKAGE_DEPENDS}")
+ else ()
+ set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}")
+ endif ()
+ endif()
+
if(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
message(STATUS "CPACK_DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies.")
endif()
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 58feefd..9657ada 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1013,7 +1013,9 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
set(DEB_CONFIGURATIONS_TO_TEST "components-lintian-dpkgdeb-checks"
"components-description1"
"components-description2"
- "components-shlibdeps1")
+ "components-shlibdeps1"
+ "components-depend1"
+ "components-depend2")
set(CPackGen "DEB")
set(CPackRun_CPackGen "-DCPackGen=${CPackGen}")
diff --git a/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend1.cmake.in b/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend1.cmake.in
new file mode 100644
index 0000000..d207bcc
--- /dev/null
+++ b/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend1.cmake.in
@@ -0,0 +1,20 @@
+#
+# Activate component packaging
+#
+
+if(CPACK_GENERATOR MATCHES "DEB")
+ set(CPACK_DEB_COMPONENT_INSTALL "ON")
+endif()
+
+#
+# Choose grouping way
+#
+#set(CPACK_COMPONENTS_ALL_GROUPS_IN_ONE_PACKAGE)
+#set(CPACK_COMPONENTS_GROUPING)
+set(CPACK_COMPONENTS_IGNORE_GROUPS 1)
+#set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
+
+# setting dependencies
+set(CPACK_DEBIAN_PACKAGE_DEPENDS "depend-default")
+set(CPACK_DEBIAN_APPLICATIONS_PACKAGE_DEPENDS "depend-application")
+set(CPACK_DEBIAN_HEADERS_PACKAGE_DEPENDS "depend-headers")
diff --git a/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend2.cmake.in b/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend2.cmake.in
new file mode 100644
index 0000000..b55f5ec
--- /dev/null
+++ b/Tests/CPackComponentsDEB/MyLibCPackConfig-components-depend2.cmake.in
@@ -0,0 +1,31 @@
+#
+# Activate component packaging
+#
+
+if(CPACK_GENERATOR MATCHES "DEB")
+ set(CPACK_DEB_COMPONENT_INSTALL "ON")
+endif()
+
+#
+# Choose grouping way
+#
+#set(CPACK_COMPONENTS_ALL_GROUPS_IN_ONE_PACKAGE)
+#set(CPACK_COMPONENTS_GROUPING)
+set(CPACK_COMPONENTS_IGNORE_GROUPS 1)
+#set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
+
+# setting dependencies
+set(CPACK_DEBIAN_PACKAGE_DEPENDS "depend-default")
+set(CPACK_DEBIAN_HEADERS_PACKAGE_DEPENDS "depend-headers")
+
+# this time we set shlibdeps to on
+set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
+set(CPACK_DEBIAN_HEADERS_PACKAGE_SHLIBDEPS OFF)
+set(CPACK_DEBIAN_LIBRARIES_PACKAGE_SHLIBDEPS OFF)
+
+# we also set the dependencies of APPLICATION component to empty, and let
+# shlibdeps do the job for this component. Otherwise the default will
+# override
+set(CPACK_DEBIAN_APPLICATIONS_PACKAGE_DEPENDS "")
+
+set(CPACK_DEBIAN_PACKAGE_DEBUG ON)
diff --git a/Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend1.cmake b/Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend1.cmake
new file mode 100644
index 0000000..1b37376
--- /dev/null
+++ b/Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend1.cmake
@@ -0,0 +1,83 @@
+if(NOT CPackComponentsDEB_SOURCE_DIR)
+ message(FATAL_ERROR "CPackComponentsDEB_SOURCE_DIR not set")
+endif()
+
+include(${CPackComponentsDEB_SOURCE_DIR}/RunCPackVerifyResult.cmake)
+
+
+
+# requirements
+
+# debian now produces lower case names
+set(expected_file_mask "${CPackComponentsDEB_BINARY_DIR}/MyLib-*.deb")
+set(expected_count 3)
+
+
+set(actual_output)
+run_cpack(actual_output
+ CPack_output
+ CPack_error
+ EXPECTED_FILE_MASK "${expected_file_mask}"
+ CONFIG_ARGS ${config_args}
+ CONFIG_VERBOSE ${config_verbose})
+
+message(STATUS "expected_count='${expected_count}'")
+message(STATUS "expected_file_mask='${expected_file_mask}'")
+message(STATUS "actual_output_files='${actual_output}'")
+
+if(NOT actual_output)
+ message(FATAL_ERROR "error: expected_files do not exist: CPackComponentsDEB test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error}")
+endif()
+
+list(LENGTH actual_output actual_count)
+message(STATUS "actual_count='${actual_count}'")
+if(NOT actual_count EQUAL expected_count)
+ message(FATAL_ERROR "error: expected_count=${expected_count} does not match actual_count=${actual_count}: CPackComponents test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error})")
+endif()
+
+
+# dpkg-deb checks for the summary of the packages
+set(dpkgdeb_output_errors_all)
+foreach(_f IN LISTS actual_output)
+
+ # extracts the metadata from the package
+ run_dpkgdeb(dpkg_output
+ FILENAME ${_f}
+ )
+
+ dpkgdeb_return_specific_metaentry(dpkg_package_name
+ DPKGDEB_OUTPUT "${dpkg_output}"
+ METAENTRY "Package:")
+
+ dpkgdeb_return_specific_metaentry(dpkg_depends
+ DPKGDEB_OUTPUT "${dpkg_output}"
+ METAENTRY "Depends:")
+
+ message(STATUS "package='${dpkg_package_name}', dependencies='${dpkg_depends}'")
+
+ if(${dpkg_package_name} STREQUAL "mylib-applications")
+ if(NOT ${dpkg_depends} STREQUAL "depend-application")
+ set(dpkgdeb_output_errors_all ${dpkgdeb_output_errors_all}
+ "dpkg-deb: ${_f}: Incorrect dependencies for package ${dpkg_package_name}: '${dpkg_depends}' != 'depend-application'\n")
+ endif()
+ elseif(${dpkg_package_name} STREQUAL "mylib-headers")
+ if(NOT ${dpkg_depends} STREQUAL "depend-headers")
+ set(dpkgdeb_output_errors_all ${dpkgdeb_output_errors_all}
+ "dpkg-deb: ${_f}: Incorrect dependencies for package ${dpkg_package_name}: '${dpkg_depends}' != 'depend-headers'\n")
+ endif()
+ elseif(${dpkg_package_name} STREQUAL "mylib-libraries")
+ if(NOT ${dpkg_depends} STREQUAL "depend-default")
+ set(dpkgdeb_output_errors_all ${dpkgdeb_output_errors_all}
+ "dpkg-deb: ${_f}: Incorrect dependencies for package ${dpkg_package_name}: '${dpkg_depends}' != 'depend-default'\n")
+ endif()
+ else()
+ set(dpkgdeb_output_errors_all ${dpkgdeb_output_errors_all}
+ "dpkg-deb: ${_f}: component name not found: ${dpkg_package_name}\n")
+ endif()
+
+endforeach()
+
+
+if(NOT "${dpkgdeb_output_errors_all}" STREQUAL "")
+ message(FATAL_ERROR "dpkg-deb checks failed:\n${dpkgdeb_output_errors_all}")
+endif()
diff --git a/Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend2.cmake b/Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend2.cmake
new file mode 100644
index 0000000..387a4a0
--- /dev/null
+++ b/Tests/CPackComponentsDEB/RunCPackVerifyResult-components-depend2.cmake
@@ -0,0 +1,86 @@
+if(NOT CPackComponentsDEB_SOURCE_DIR)
+ message(FATAL_ERROR "CPackComponentsDEB_SOURCE_DIR not set")
+endif()
+
+include("${CPackComponentsDEB_SOURCE_DIR}/RunCPackVerifyResult.cmake")
+
+# requirements
+
+# debian now produces lower case names
+set(expected_file_mask "${CPackComponentsDEB_BINARY_DIR}/MyLib-*.deb")
+set(expected_count 3)
+
+set(config_verbose -V)
+set(actual_output)
+run_cpack(actual_output
+ CPack_output
+ CPack_error
+ EXPECTED_FILE_MASK "${expected_file_mask}"
+ CONFIG_ARGS ${config_args}
+ CONFIG_VERBOSE ${config_verbose})
+
+message(STATUS "expected_count='${expected_count}'")
+message(STATUS "expected_file_mask='${expected_file_mask}'")
+message(STATUS "actual_output_files='${actual_output}'")
+
+if(NOT actual_output)
+ message(FATAL_ERROR "error: expected_files do not exist: CPackComponentsDEB test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error}")
+endif()
+
+list(LENGTH actual_output actual_count)
+message(STATUS "actual_count='${actual_count}'")
+if(NOT actual_count EQUAL expected_count)
+ message(FATAL_ERROR "error: expected_count=${expected_count} does not match actual_count=${actual_count}: CPackComponents test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error})")
+endif()
+
+# dpkg-deb checks for the summary of the packages
+foreach(_f IN LISTS actual_output)
+
+ # extracts the metadata from the package
+ run_dpkgdeb(dpkg_output
+ FILENAME "${_f}"
+ )
+
+ dpkgdeb_return_specific_metaentry(dpkg_package_name
+ DPKGDEB_OUTPUT "${dpkg_output}"
+ METAENTRY "Package:")
+
+ dpkgdeb_return_specific_metaentry(dpkg_depends
+ DPKGDEB_OUTPUT "${dpkg_output}"
+ METAENTRY "Depends:")
+
+ message(STATUS "package='${dpkg_package_name}', dependencies='${dpkg_depends}'")
+
+ if("${dpkg_package_name}" STREQUAL "mylib-applications")
+ string(FIND "${dpkg_depends}" "lib" index_libwhatever)
+ if(NOT index_libwhatever GREATER "-1")
+ set(dpkgdeb_output_errors_all "${dpkgdeb_output_errors_all}"
+ "dpkg-deb: ${_f}: Incorrect dependencies for package ${dpkg_package_name}: '${dpkg_depends}' does not contain any 'lib'\n")
+ endif()
+
+ # should not contain the default
+ string(FIND "${dpkg_depends}" "depend-default" index_default)
+ if(index_default GREATER "0")
+ set(dpkgdeb_output_errors_all "${dpkgdeb_output_errors_all}"
+ "dpkg-deb: ${_f}: Incorrect dependencies for package ${dpkg_package_name}: '${dpkg_depends}' does contains 'depend-default'\n")
+ endif()
+ elseif("${dpkg_package_name}" STREQUAL "mylib-headers")
+ if(NOT "${dpkg_depends}" STREQUAL "depend-headers")
+ set(dpkgdeb_output_errors_all "${dpkgdeb_output_errors_all}"
+ "dpkg-deb: ${_f}: Incorrect dependencies for package ${dpkg_package_name}: '${dpkg_depends}' != 'depend-headers'\n")
+ endif()
+ elseif("${dpkg_package_name}" STREQUAL "mylib-libraries")
+ if(NOT "${dpkg_depends}" STREQUAL "depend-default")
+ set(dpkgdeb_output_errors_all "${dpkgdeb_output_errors_all}"
+ "dpkg-deb: ${_f}: Incorrect dependencies for package ${dpkg_package_name}: '${dpkg_depends}' != 'depend-default'\n")
+ endif()
+ else()
+ set(dpkgdeb_output_errors_all "${dpkgdeb_output_errors_all}"
+ "dpkg-deb: ${_f}: component name not found: ${dpkg_package_name}\n")
+ endif()
+
+endforeach()
+
+if(NOT "${dpkgdeb_output_errors_all}" STREQUAL "")
+ message(FATAL_ERROR "dpkg-deb checks failed:\n${dpkgdeb_output_errors_all}")
+endif()
--
2.1.4
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers