mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-04-20 23:48:20 +00:00
python3-gcovr: Fix parsing of gcc-11 gcov metadata
gcc-11 has metadata line "-: 0:Source is newer than graph" which throws an error. Backported from gcovr 5.2, as kirkstone release uses gcc-11. Signed-off-by: Jasper Orschulko <jasper@fancydomain.eu> Signed-off-by: Armin Kuster <akuster808@gmail.com>
This commit is contained in:
committed by
Armin Kuster
parent
41873c082d
commit
4da92ed9be
@@ -0,0 +1,84 @@
|
|||||||
|
From c4f53f28c4c537b75b5912a44083c41262807504 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Michael=20F=C3=B6rderer?= <michael.foerderer@gmx.de>
|
||||||
|
Date: Sun, 3 Apr 2022 22:58:33 +0200
|
||||||
|
Subject: [PATCH] Fix parsing of gcov metadata (#601)
|
||||||
|
|
||||||
|
gcc-11 has metadata line "-: 0:Source is newer than graph" which throws an error.
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/gcovr/gcovr/commit/7b6947bd4b6fd28a477606313fff3c13fcea8d3d]
|
||||||
|
|
||||||
|
Signed-off-by: Jasper Orschulko <jasper@fancydomain.eu>
|
||||||
|
---
|
||||||
|
gcovr/gcov.py | 5 ++++-
|
||||||
|
gcovr/gcov_parser.py | 24 ++++++++++++++++++++----
|
||||||
|
2 files changed, 24 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/gcovr/gcov.py b/gcovr/gcov.py
|
||||||
|
index cc7a9af4..ff4cdb0b 100644
|
||||||
|
--- a/gcovr/gcov.py
|
||||||
|
+++ b/gcovr/gcov.py
|
||||||
|
@@ -98,8 +98,11 @@ def process_gcov_data(data_fname, covdata, source_fname, options, currdir=None):
|
||||||
|
# Find the source file
|
||||||
|
# TODO: instead of heuristics, use "working directory" if available
|
||||||
|
metadata = parse_metadata(lines)
|
||||||
|
+ source = metadata.get("Source")
|
||||||
|
+ if source is None:
|
||||||
|
+ raise RuntimeError("Unexpected value 'None' for metadata 'Source'.")
|
||||||
|
fname = guess_source_file_name(
|
||||||
|
- metadata["Source"].strip(),
|
||||||
|
+ source,
|
||||||
|
data_fname,
|
||||||
|
source_fname,
|
||||||
|
root_dir=options.root_dir,
|
||||||
|
diff --git a/gcovr/gcov_parser.py b/gcovr/gcov_parser.py
|
||||||
|
index 391ecd78..523ea406 100644
|
||||||
|
--- a/gcovr/gcov_parser.py
|
||||||
|
+++ b/gcovr/gcov_parser.py
|
||||||
|
@@ -121,7 +121,7 @@ class _MetadataLine(NamedTuple):
|
||||||
|
"""A gcov line with metadata: ``-: 0:KEY:VALUE``"""
|
||||||
|
|
||||||
|
key: str
|
||||||
|
- value: str
|
||||||
|
+ value: Optional[str]
|
||||||
|
|
||||||
|
|
||||||
|
class _BlockLine(NamedTuple):
|
||||||
|
@@ -214,7 +214,19 @@ def parse_metadata(lines: List[str]) -> Dict[str, str]:
|
||||||
|
... -: 0:Foo:bar
|
||||||
|
... -: 0:Key:123
|
||||||
|
... '''.splitlines())
|
||||||
|
- {'Foo': 'bar', 'Key': '123'}
|
||||||
|
+ Traceback (most recent call last):
|
||||||
|
+ ...
|
||||||
|
+ RuntimeError: Missing key 'Source' in metadata. GCOV data was >>
|
||||||
|
+ -: 0:Foo:bar
|
||||||
|
+ -: 0:Key:123<< End of GCOV data
|
||||||
|
+ >>> parse_metadata('-: 0:Source: file \n -: 0:Foo: bar \n -: 0:Key: 123 '.splitlines())
|
||||||
|
+ {'Source': 'file', 'Foo': 'bar', 'Key': '123'}
|
||||||
|
+ >>> parse_metadata('''
|
||||||
|
+ ... -: 0:Source:file
|
||||||
|
+ ... -: 0:Foo:bar
|
||||||
|
+ ... -: 0:Key
|
||||||
|
+ ... '''.splitlines())
|
||||||
|
+ {'Source': 'file', 'Foo': 'bar', 'Key': None}
|
||||||
|
"""
|
||||||
|
collected = {}
|
||||||
|
for line in lines:
|
||||||
|
@@ -721,8 +733,12 @@ def _parse_line(line: str) -> _Line:
|
||||||
|
|
||||||
|
# METADATA (key, value)
|
||||||
|
if count_str == "-" and lineno == "0":
|
||||||
|
- key, value = source_code.split(":", 1)
|
||||||
|
- return _MetadataLine(key, value)
|
||||||
|
+ if ":" in source_code:
|
||||||
|
+ key, value = source_code.split(":", 1)
|
||||||
|
+ return _MetadataLine(key, value.strip())
|
||||||
|
+ else:
|
||||||
|
+ # Add a syntethic metadata with no value
|
||||||
|
+ return _MetadataLine(source_code, None)
|
||||||
|
|
||||||
|
if count_str == "-":
|
||||||
|
count = 0
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
||||||
@@ -5,6 +5,7 @@ LICENSE = "BSD-3-Clause"
|
|||||||
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=08208c66520e8d69d5367483186d94ed"
|
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=08208c66520e8d69d5367483186d94ed"
|
||||||
|
|
||||||
SRC_URI = "git://github.com/gcovr/gcovr.git;branch=master;protocol=https"
|
SRC_URI = "git://github.com/gcovr/gcovr.git;branch=master;protocol=https"
|
||||||
|
SRC_URI += "file://0001-Fix-parsing-of-gcov-metadata-601.patch"
|
||||||
SRCREV = "e71e883521b78122c49016eb4e510e6da06c6916"
|
SRCREV = "e71e883521b78122c49016eb4e510e6da06c6916"
|
||||||
|
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
|
|||||||
Reference in New Issue
Block a user