diff options
Diffstat (limited to 'recipes-test/gcovr')
-rw-r--r-- | recipes-test/gcovr/gcovr/0001-add-gcov-filter-source-errors-option.patch | 68 | ||||
-rw-r--r-- | recipes-test/gcovr/gcovr_%.bbappend | 2 | ||||
-rw-r--r-- | recipes-test/gcovr/gcovr_git.bb | 32 |
3 files changed, 102 insertions, 0 deletions
diff --git a/recipes-test/gcovr/gcovr/0001-add-gcov-filter-source-errors-option.patch b/recipes-test/gcovr/gcovr/0001-add-gcov-filter-source-errors-option.patch new file mode 100644 index 000000000..be1dcf829 --- /dev/null +++ b/recipes-test/gcovr/gcovr/0001-add-gcov-filter-source-errors-option.patch @@ -0,0 +1,68 @@ +Add option to filter gcov source errors + +Add "--gcov-filter-source-errors" to apply filters to the source +files in the errors from gcov. If all source files in the errors +are filtered, then the error is ignored so that the file will be +processed. This enables the usecase of running on a target where +only the source tree for a binary is available, but not all of the +external source headers are. + +Upstream-Status: pending + +Signed-off-by: Scott Murray <scott.murray@konsulko.com> + +diff --git a/gcovr/configuration.py b/gcovr/configuration.py +index 1356097..083532c 100644 +--- a/gcovr/configuration.py ++++ b/gcovr/configuration.py +@@ -915,6 +915,14 @@ GCOVR_CONFIG_OPTIONS = [ + "Default: {default!s}.", + action="store_true", + ), ++ GcovrConfigOption( ++ "gcov_filter_source_errors", ['--gcov-filter-source-errors'], ++ group="gcov_options", ++ help="Apply filters to missing source file errors in GCOV files " ++ "instead of exiting with an error. " ++ "Default: {default!s}.", ++ action="store_true", ++ ), + GcovrConfigOption( + "objdir", ['--object-directory'], + group="gcov_options", +diff --git a/gcovr/gcov.py b/gcovr/gcov.py +index de79215..171d68d 100644 +--- a/gcovr/gcov.py ++++ b/gcovr/gcov.py +@@ -667,11 +667,27 @@ def run_gcov_and_process_files( + chdir=chdir, + tempdir=tempdir) + ++ skip = False + if source_re.search(err): +- # gcov tossed errors: try the next potential_wd +- error(err) +- done = False +- else: ++ ignore = False ++ if options.gcov_filter_source_errors: ++ # Check if errors are all from source that is filtered ++ ignore = True ++ for line in err.splitlines(): ++ src_fname = line.split()[-1] ++ filtered, excluded = apply_filter_include_exclude( ++ src_fname, options.filter, options.exclude) ++ if not (filtered or excluded): ++ ignore = False ++ break ++ ++ if not ignore: ++ # gcov tossed errors: try the next potential_wd ++ error(err) ++ skip = True ++ ++ done = False ++ if not skip: + # Process *.gcov files + for fname in active_gcov_files: + process_gcov_data(fname, covdata, abs_filename, options) diff --git a/recipes-test/gcovr/gcovr_%.bbappend b/recipes-test/gcovr/gcovr_%.bbappend new file mode 100644 index 000000000..699aea214 --- /dev/null +++ b/recipes-test/gcovr/gcovr_%.bbappend @@ -0,0 +1,2 @@ +# Add not yet upstreamed patch that enables on target gcov usage +SRC_URI += "file://0001-add-gcov-filter-source-errors-option.patch" diff --git a/recipes-test/gcovr/gcovr_git.bb b/recipes-test/gcovr/gcovr_git.bb new file mode 100644 index 000000000..6da04cc53 --- /dev/null +++ b/recipes-test/gcovr/gcovr_git.bb @@ -0,0 +1,32 @@ +SUMMARY = "Generate GCC code coverage reports" +DESCRIPTION = "Gcovr provides a utility for managing the use of the GNU gcov \ +utility and generating summarized code coverage results." +HOMEPAGE = "https://gcovr.com" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=221e634a1ceafe02ef74462cbff2fb16" + +PV = "4.2+git${SRCPV}" +SRC_URI = "git://github.com/gcovr/gcovr.git;protocol=https" +SRCREV = "1bc72e3bb59b9296e962b350691732ddafbd3195" + +S = "${WORKDIR}/git" + +inherit setuptools3 + +RDEPENDS_${PN} += " \ + python3-compression \ + python3-core \ + python3-crypt \ + python3-datetime \ + python3-difflib \ + python3-io \ + python3-jinja2 \ + python3-json \ + python3-lxml \ + python3-multiprocessing \ + python3-pygments \ + python3-pytest \ + python3-shell \ + python3-threading \ + python3-typing \ +" |