Merge lp:~dobey/pay-service/use-cmake-extras into lp:pay-service

Proposed by dobey
Status: Merged
Approved by: dobey
Approved revision: 54
Merged at revision: 54
Proposed branch: lp:~dobey/pay-service/use-cmake-extras
Merge into: lp:pay-service
Diff against target: 377 lines (+17/-279)
7 files modified
CMakeLists.txt (+12/-32)
cmake/EnableCoverageReport.cmake (+0/-158)
cmake/FindLcov.cmake (+0/-35)
cmake/Findgcovr.cmake (+0/-43)
debian/control (+3/-4)
debian/rules (+1/-6)
libpay/CMakeLists.txt (+1/-1)
To merge this branch: bzr merge lp:~dobey/pay-service/use-cmake-extras
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Approve
Charles Kerr (community) Approve
Review via email: mp+259851@code.launchpad.net

Commit message

Remove the explicit gcc 4.9 requirement.
Remove the locally included coverage cmake modules.
Use cmake-extras to enable coverage.
Add dependencies for cmake-extras, gcovr, and lcov.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Charles Kerr (charlesk) wrote :

LGTM.

We should do this with all of our packages.

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2015-05-13 14:17:31 +0000
+++ CMakeLists.txt 2015-06-16 17:54:00 +0000
@@ -7,7 +7,6 @@
7set (PACKAGE ${CMAKE_PROJECT_NAME})7set (PACKAGE ${CMAKE_PROJECT_NAME})
88
9option (enable_tests "Build the package's automatic tests." ON)9option (enable_tests "Build the package's automatic tests." ON)
10option (enable_lcov "Generate lcov code coverage reports." OFF)
1110
12if (${enable_tests})11if (${enable_tests})
13 enable_testing ()12 enable_testing ()
@@ -63,9 +62,6 @@
63 COMMAND bzr export --root=${ARCHIVE_NAME} ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.gz62 COMMAND bzr export --root=${ARCHIVE_NAME} ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.gz
64 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})63 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
6564
66add_custom_target (clean-coverage
67 COMMAND find ${CMAKE_BINARY_DIR} -name '*.gcda' | xargs rm -f)
68
69add_custom_target (cppcheck COMMAND cppcheck --enable=all -q --error-exitcode=2 --inline-suppr65add_custom_target (cppcheck COMMAND cppcheck --enable=all -q --error-exitcode=2 --inline-suppr
70 ${CMAKE_SOURCE_DIR}/src66 ${CMAKE_SOURCE_DIR}/src
71 ${CMAKE_SOURCE_DIR}/tests)67 ${CMAKE_SOURCE_DIR}/tests)
@@ -78,20 +74,6 @@
78set (CXX_WARNING_ARGS " -Wall -Wextra -pedantic -Wno-missing-field-initializers")74set (CXX_WARNING_ARGS " -Wall -Wextra -pedantic -Wno-missing-field-initializers")
7975
80##76##
81## Coverage Flags
82##
83
84if (${enable_tests})
85 if (${enable_lcov})
86 include(EnableCoverageReport) # Using gcov CMake modules from https://code.cor-lab.org/projects/rsc
87 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage" )
88 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage" )
89 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} --coverage" )
90 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage" )
91 endif ()
92endif ()
93
94##
95## Subdirectories77## Subdirectories
96##78##
9779
@@ -108,17 +90,15 @@
108##90##
109## Coverage Reports91## Coverage Reports
110##92##
11193include(EnableCoverageReport)
112if (${enable_tests})94set(filter-list)
113 if (${enable_lcov})95list(APPEND filter-list "/usr/include")
114 set(filter-list)96list(APPEND filter-list "${CMAKE_SOURCE_DIR}/tests/*")
115 list(APPEND filter-list "/usr/include")97if (NOT ${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR})
116 list(APPEND filter-list "${CMAKE_SOURCE_DIR}/tests/*")98 list(APPEND filter-list "${CMAKE_BINARY_DIR}/*")
117 if (NOT ${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR})99endif()
118 list(APPEND filter-list "${CMAKE_BINARY_DIR}/*")100ENABLE_COVERAGE_REPORT(
119 endif()101 TARGETS libpay pay-service-lib pay-service
120 ENABLE_COVERAGE_REPORT(TARGETS pay-service FILTER ${filter-list})102 TESTS dbus-interface-tests item-memory-tests webclient-curl-tests verification-http-tests purchase-ual-tests libpay-tests
121 endif ()103 FILTER ${filter-list}
122endif ()104)
123
124
125105
=== removed file 'cmake/EnableCoverageReport.cmake'
--- cmake/EnableCoverageReport.cmake 2014-05-06 14:22:33 +0000
+++ cmake/EnableCoverageReport.cmake 1970-01-01 00:00:00 +0000
@@ -1,158 +0,0 @@
1# - Creates a special coverage build type and target on GCC.
2#
3# Defines a function ENABLE_COVERAGE_REPORT which generates the coverage target
4# for selected targets. Optional arguments to this function are used to filter
5# unwanted results using globbing expressions. Moreover targets with tests for
6# the source code can be specified to trigger regenerating the report if the
7# test has changed
8#
9# ENABLE_COVERAGE_REPORT(TARGETS target... [FILTER filter...] [TESTS test targets...])
10#
11# To generate a coverage report first build the project with
12# CMAKE_BUILD_TYPE=coverage, then call make test and afterwards make coverage.
13#
14# The coverage report is based on gcov. Depending on the availability of lcov
15# a HTML report will be generated and/or an XML report of gcovr is found.
16# The generated coverage target executes all found solutions. Special targets
17# exist to create e.g. only the xml report: coverage-xml.
18#
19# Copyright (C) 2010 by Johannes Wienke <jwienke at techfak dot uni-bielefeld dot de>
20#
21# This file may be licensed under the terms of the
22# GNU Lesser General Public License Version 3 (the ``LGPL''),
23# or (at your option) any later version.
24#
25# Software distributed under the License is distributed
26# on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
27# express or implied. See the LGPL for the specific language
28# governing rights and limitations.
29#
30# You should have received a copy of the LGPL along with this
31# program. If not, go to http://www.gnu.org/licenses/lgpl.html
32# or write to the Free Software Foundation, Inc.,
33# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
34#
35# The development of this software was supported by:
36# CoR-Lab, Research Institute for Cognition and Robotics
37# Bielefeld University
38
39FIND_PACKAGE(Lcov)
40FIND_PACKAGE(gcovr)
41
42FUNCTION(ENABLE_COVERAGE_REPORT)
43
44 # argument parsing
45 SET(MULTI_VALUE_ARGS FILTER TARGETS TESTS)
46 CMAKE_PARSE_ARGUMENTS(ENABLE_COVERAGE_REPORT "" "" "${MULTI_VALUE_ARGS}" ${ARGN})
47
48 SET(COVERAGE_RAW_FILE "${CMAKE_BINARY_DIR}/coverage.raw.info")
49 SET(COVERAGE_FILTERED_FILE "${CMAKE_BINARY_DIR}/coverage.info")
50 SET(COVERAGE_REPORT_DIR "${CMAKE_BINARY_DIR}/coveragereport")
51 SET(COVERAGE_XML_FILE "${CMAKE_BINARY_DIR}/coverage.xml")
52 SET(COVERAGE_XML_COMMAND_FILE "${CMAKE_BINARY_DIR}/coverage-xml.cmake")
53
54 # decide if there is any tool to create coverage data
55 SET(TOOL_FOUND FALSE)
56 IF(LCOV_FOUND OR GCOVR_FOUND)
57 SET(TOOL_FOUND TRUE)
58 ENDIF()
59 IF(NOT TOOL_FOUND)
60 MESSAGE(STATUS "Cannot enable coverage targets because neither lcov nor gcovr are found.")
61 ENDIF()
62
63 STRING(TOLOWER "${CMAKE_BUILD_TYPE}" COVERAGE_BUILD_TYPE)
64 IF(CMAKE_COMPILER_IS_GNUCXX AND TOOL_FOUND AND "${COVERAGE_BUILD_TYPE}" MATCHES "coverage")
65
66 MESSAGE(STATUS "Coverage support enabled for targets: ${ENABLE_COVERAGE_REPORT_TARGETS}")
67
68 # create coverage build type
69 SET(CMAKE_CXX_FLAGS_COVERAGE ${CMAKE_CXX_FLAGS_DEBUG} PARENT_SCOPE)
70 SET(CMAKE_C_FLAGS_COVERAGE ${CMAKE_C_FLAGS_DEBUG} PARENT_SCOPE)
71 SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES} coverage PARENT_SCOPE)
72
73 # instrument targets
74 SET_TARGET_PROPERTIES(${ENABLE_COVERAGE_REPORT_TARGETS} PROPERTIES COMPILE_FLAGS --coverage
75 LINK_FLAGS --coverage)
76
77 # html report
78 IF (LCOV_FOUND)
79
80 MESSAGE(STATUS "Enabling HTML coverage report")
81
82 # set up coverage target
83
84 ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_RAW_FILE}
85 COMMAND ${LCOV_EXECUTABLE} -c -d ${CMAKE_BINARY_DIR} -o ${COVERAGE_RAW_FILE}
86 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
87 COMMENT "Collecting coverage data"
88 DEPENDS ${ENABLE_COVERAGE_REPORT_TARGETS} ${ENABLE_COVERAGE_REPORT_TESTS}
89 VERBATIM)
90
91 # filter unwanted stuff
92 LIST(LENGTH ENABLE_COVERAGE_REPORT_FILTER FILTER_LENGTH)
93 IF(${FILTER_LENGTH} GREATER 0)
94 SET(FILTER COMMAND ${LCOV_EXECUTABLE})
95 FOREACH(F ${ENABLE_COVERAGE_REPORT_FILTER})
96 SET(FILTER ${FILTER} -r ${COVERAGE_FILTERED_FILE} ${F})
97 ENDFOREACH()
98 SET(FILTER ${FILTER} -o ${COVERAGE_FILTERED_FILE})
99 ELSE()
100 SET(FILTER "")
101 ENDIF()
102
103 ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_FILTERED_FILE}
104 COMMAND ${LCOV_EXECUTABLE} -e ${COVERAGE_RAW_FILE} "${CMAKE_SOURCE_DIR}*" -o ${COVERAGE_FILTERED_FILE}
105 ${FILTER}
106 DEPENDS ${COVERAGE_RAW_FILE}
107 COMMENT "Filtering recorded coverage data for project-relevant entries"
108 VERBATIM)
109 ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_REPORT_DIR}
110 COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_REPORT_DIR}
111 COMMAND ${GENHTML_EXECUTABLE} --legend --show-details -t "${PROJECT_NAME} test coverage" -o ${COVERAGE_REPORT_DIR} ${COVERAGE_FILTERED_FILE}
112 DEPENDS ${COVERAGE_FILTERED_FILE}
113 COMMENT "Generating HTML coverage report in ${COVERAGE_REPORT_DIR}"
114 VERBATIM)
115
116 ADD_CUSTOM_TARGET(coverage-html
117 DEPENDS ${COVERAGE_REPORT_DIR})
118
119 ENDIF()
120
121 # xml coverage report
122 IF(GCOVR_FOUND)
123
124 MESSAGE(STATUS "Enabling XML coverage report")
125
126 # gcovr cannot write directly to a file so the execution needs to
127 # be wrapped in a cmake file that generates the file output
128 FILE(WRITE ${COVERAGE_XML_COMMAND_FILE}
129 "SET(ENV{LANG} en)\n")
130 FILE(APPEND ${COVERAGE_XML_COMMAND_FILE}
131 "EXECUTE_PROCESS(COMMAND \"${GCOVR_EXECUTABLE}\" -x -r \"${CMAKE_SOURCE_DIR}\" OUTPUT_FILE \"${COVERAGE_XML_FILE}\" WORKING_DIRECTORY \"${CMAKE_BINARY_DIR}\")\n")
132
133 ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_XML_FILE}
134 COMMAND ${CMAKE_COMMAND} ARGS -P ${COVERAGE_XML_COMMAND_FILE}
135 COMMENT "Generating coverage XML report"
136 VERBATIM)
137
138 ADD_CUSTOM_TARGET(coverage-xml
139 DEPENDS ${COVERAGE_XML_FILE})
140
141 ENDIF()
142
143 # provide a global coverage target executing both steps if available
144 SET(GLOBAL_DEPENDS "")
145 IF(LCOV_FOUND)
146 LIST(APPEND GLOBAL_DEPENDS ${COVERAGE_REPORT_DIR})
147 ENDIF()
148 IF(GCOVR_FOUND)
149 LIST(APPEND GLOBAL_DEPENDS ${COVERAGE_XML_FILE})
150 ENDIF()
151 IF(LCOV_FOUND OR GCOVR_FOUND)
152 ADD_CUSTOM_TARGET(coverage
153 DEPENDS ${GLOBAL_DEPENDS})
154 ENDIF()
155
156 ENDIF()
157
158ENDFUNCTION()
1590
=== removed file 'cmake/FindLcov.cmake'
--- cmake/FindLcov.cmake 2014-05-06 14:22:33 +0000
+++ cmake/FindLcov.cmake 1970-01-01 00:00:00 +0000
@@ -1,35 +0,0 @@
1# - Find lcov
2# Will define:
3#
4# LCOV_EXECUTABLE - the lcov binary
5# GENHTML_EXECUTABLE - the genhtml executable
6#
7# Copyright (C) 2010 by Johannes Wienke <jwienke at techfak dot uni-bielefeld dot de>
8#
9# This file may be licensed under the terms of the
10# GNU Lesser General Public License Version 3 (the ``LGPL''),
11# or (at your option) any later version.
12#
13# Software distributed under the License is distributed
14# on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
15# express or implied. See the LGPL for the specific language
16# governing rights and limitations.
17#
18# You should have received a copy of the LGPL along with this
19# program. If not, go to http://www.gnu.org/licenses/lgpl.html
20# or write to the Free Software Foundation, Inc.,
21# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22#
23# The development of this software was supported by:
24# CoR-Lab, Research Institute for Cognition and Robotics
25# Bielefeld University
26
27INCLUDE(FindPackageHandleStandardArgs)
28
29FIND_PROGRAM(LCOV_EXECUTABLE lcov)
30FIND_PROGRAM(GENHTML_EXECUTABLE genhtml)
31
32FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lcov DEFAULT_MSG LCOV_EXECUTABLE GENHTML_EXECUTABLE)
33
34# only visible in advanced view
35MARK_AS_ADVANCED(LCOV_EXECUTABLE GENHTML_EXECUTABLE)
360
=== removed file 'cmake/Findgcovr.cmake'
--- cmake/Findgcovr.cmake 2014-05-06 14:22:33 +0000
+++ cmake/Findgcovr.cmake 1970-01-01 00:00:00 +0000
@@ -1,43 +0,0 @@
1# - Find gcovr scrip
2# Will define:
3#
4# GCOVR_EXECUTABLE - the gcovr script
5#
6# Uses:
7#
8# GCOVR_ROOT - root to search for the script
9#
10# Copyright (C) 2011 by Johannes Wienke <jwienke at techfak dot uni-bielefeld dot de>
11#
12# This file may be licensed under the terms of the
13# GNU Lesser General Public License Version 3 (the ``LGPL''),
14# or (at your option) any later version.
15#
16# Software distributed under the License is distributed
17# on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
18# express or implied. See the LGPL for the specific language
19# governing rights and limitations.
20#
21# You should have received a copy of the LGPL along with this
22# program. If not, go to http://www.gnu.org/licenses/lgpl.html
23# or write to the Free Software Foundation, Inc.,
24# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
25#
26# The development of this software was supported by:
27# CoR-Lab, Research Institute for Cognition and Robotics
28# Bielefeld University
29
30INCLUDE(FindPackageHandleStandardArgs)
31
32FIND_PROGRAM(GCOVR_EXECUTABLE gcovr
33 HINTS ${GCOVR_ROOT}
34 "${GCOVR_ROOT}/bin"
35 "${GCOVR_ROOT}/share/python"
36 "/usr/share/python"
37 "/usr/local/share/python"
38 "${CMAKE_INSTALL_PREFIX}/share/python")
39
40FIND_PACKAGE_HANDLE_STANDARD_ARGS(gcovr DEFAULT_MSG GCOVR_EXECUTABLE)
41
42# only visible in advanced view
43MARK_AS_ADVANCED(GCOVR_EXECUTABLE)
440
=== modified file 'debian/control'
--- debian/control 2015-05-13 14:17:31 +0000
+++ debian/control 2015-06-16 17:54:00 +0000
@@ -5,14 +5,13 @@
5Build-Depends: astyle,5Build-Depends: astyle,
6 click-dev,6 click-dev,
7 cmake,7 cmake,
8 cmake-extras,
8 dbus,9 dbus,
9 dbus-test-runner,10 dbus-test-runner,
10 debhelper (>= 9),11 debhelper (>= 9),
12 gcovr,
11 google-mock,13 google-mock,
12# We rely on C++11 features, and to prevent from ABI breaks14 lcov,
13# in libstdc++ causing us issues, we explicitly select a G++
14# version.
15 g++-4.9,
16 libaccounts-qt5-dev,15 libaccounts-qt5-dev,
17 libclick-0.4-dev,16 libclick-0.4-dev,
18 libcurl4-gnutls-dev,17 libcurl4-gnutls-dev,
1918
=== modified file 'debian/rules'
--- debian/rules 2014-07-21 16:23:40 +0000
+++ debian/rules 2015-06-16 17:54:00 +0000
@@ -6,13 +6,8 @@
66
7include /usr/share/dpkg/default.mk7include /usr/share/dpkg/default.mk
88
9# Explicitly selecting a G{CC,++}-version here to avoid accidental
10# ABI breaks introduced by toolchain updates.
11export CC=$(DEB_HOST_GNU_TYPE)-gcc-4.9
12export CXX=$(DEB_HOST_GNU_TYPE)-g++-4.9
13
14override_dh_auto_configure:9override_dh_auto_configure:
15 dh_auto_configure -- -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib/$(DEB_HOST_MULTIARCH)/pay-service -DCMAKE_INSTALL_INCLUDEDIR=/usr/include/$(DEB_HOST_MULTIARCH)/ -DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX)10 dh_auto_configure -- -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib/$(DEB_HOST_MULTIARCH)/pay-service -DCMAKE_INSTALL_INCLUDEDIR=/usr/include/$(DEB_HOST_MULTIARCH)/
1611
17%:12%:
18 dh $@ --fail-missing --with click13 dh $@ --fail-missing --with click
1914
=== modified file 'libpay/CMakeLists.txt'
--- libpay/CMakeLists.txt 2015-03-27 17:06:05 +0000
+++ libpay/CMakeLists.txt 2015-06-16 17:54:00 +0000
@@ -30,7 +30,7 @@
30)30)
3131
32target_link_libraries(libpay ${SERVICE_DEPS_LIBRARIES} common-lib)32target_link_libraries(libpay ${SERVICE_DEPS_LIBRARIES} common-lib)
33set_target_properties(libpay PROPERTIES LINK_FLAGS "${ldflags} -Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/libpay.map")33set_target_properties(libpay PROPERTIES LINK_FLAGS "${ldflags} -Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/libpay.map ")
34set_target_properties(libpay PROPERTIES LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/libpay.map")34set_target_properties(libpay PROPERTIES LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/libpay.map")
3535
36######################36######################

Subscribers

People subscribed via source and target branches

to all changes: