Upgrade to release 8.7:
Breaking changes:
- Jinja2 environment for HTML report is now created with
undefined=StrictUndefined to raise an error if a variable is not
defined in the template.
- Links to lines in HTML reports now use L<line> instead of a
l<line>.
- Rename config key txt-metric (string) to txt-metrics (list of
strings in TOML and multiple entries in gcovr.config). Remove the
deprecated aliases -b, --txt-branches and --branches.
- Adjust column width of total count in text reports.
New features and notable changes:
- Improve HTML report:
- Improve wrapping of the counter in the default theme.
- Replace meter with div elements in the default theme (like in
GitHub themes).
- Add jinja2 rendering for CSS files.
- Add new HTML themes boost.green and boost.blue.
- Show excluded lines, branches, ... in the summary only if there
are any.
- Remove the branches summary and columns if there are no
branches in the report, e.g all branches are excluded by
patterns or comments.
- Replace default theme with github theme which is the new
default one. If the prefix github. isn't used a warning is
printed which will turn into an error in a the next version.
- Add compare mode for JSON, text and HTML reports.
- Stub missing line coverage for branches in LLVM source based code
coverage format.
- Add support for TOML files with --config
- Add --fail-under-condition-or-decision with
--fail-under-condition and --fail-under-decision as synonyms,
change the key for the configuration file.
- Add support for multiple metrics in one text report and add
support for condition coverage.
- Warn if a option is used which has no effect when processing
tracefiles.
- Add options to restrict where GCOV is executed to prevent
generating temporary files in arbitrary directories. Write
protected files are now skipped by default.
Bug fixes and small improvements:
- Fix runtime problem introduced with 8.4.
- Fix boost HTML details and simple output.
- Fix boost HTML support for Conditions, Decisions and Calls
optional stats.
- Add excluded metrics to boost HTML template.
- Fix alignment in summary header of HTML single page report.
- Fix link to lines in HTML single page report.
- Preserve coverage for procedures declared in Fortran modules.
- Fix missing branches and conditions for uncovered lines in HTML
report.
- Fix KeyError when merging tracefiles in which only some report a
function position.
Documentation:
- Add section about gcov options which should not be used to FAQ.
- Add separate option groups for each format.
Internal changes:
- Add CSS and JS files to all folders where a HTML reference file
is present.
- Refactor internal data model from a flat list to a tree which
matches the folder structure of the source files. Also add a
properties element which is cleared after each report format to
store meta data for the report generation and update the dicts in
the HTML report to use it.
- Activate sorting of includes for ruff.
- Add gcc-16, clang-21 and clang-22 to the test suite.
- Use different python versions for testing in docker depending on
Ubuntu version.
- Activate most checks of ruff.
- Update CI runner images.
- Always use GCOVR fixture in tests.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Switch SRC_URI to enable tests and upgrade to release 2026.9.0:
- ia:// filesystem for files in Internet Archive items: an
HTTPFileSystem reading from archive.org/download with credentials
from ia configure's ia.ini
- Allow instance-local memory stores with global_store=False while
preserving normal instance caching and the default shared store
- Add an adaptive readahead cache
- Implement created and modified for SFTPFileSystem
- Allow filesystem implementations to assign protocol per instance
- Delegate sizes and cat_ranges from DirFileSystem to the wrapped
filesystem
- Delegate invalidate_cache, ukey and checksum from DirFileSystem
to the wrapped filesystem
- Support negative offsets in TarFileSystem.cat_file
- Mirror readinto from the PyArrow stream onto ArrowFile
- Allow simplecache files to be removed by age using their
modification times
- HTTP: retry transient failures (408/425/429/5xx, dropped
connections, timeouts, truncated range bodies, a 416 inside the
file) of cat_file, HTTPFile block reads and the size lookup
behind open, controlled by the new retries, retry_wait,
retry_statuses and retry_exceptions options
Fixes:
- Compute HadoopFileSystem.fsid from its configured host and port
instead of accessing attributes no longer exposed by PyArrow
- Normalize dot path components in TarFileSystem listings and
lookups, while preserving original archive names for reading
- Make merge_offset_ranges O(n log n) and keep merged blocks within
max_block, replacing the quadratic nested-range filter
- Fix transactions with compressed files
- Make MemoryFileSystem.rm raise FileNotFoundError for a path that
does not exist, as rm_file and the other filesystems do, so
deleting a missing key from a memory-backed mapper raises
KeyError
- Create missing ZIP archives in append mode without truncating
existing archives
- Close cached readers when exiting an open_files context
- Avoid mutating live BlockCache and BackgroundBlockCache instances
when pickling
- End the transaction even when a commit or discard raises, so the
filesystem is not left in transaction mode and deferred temporary
files are cleaned up
- Honor a caller-owned output file in get_file
- Preserve existing files when checking FSMap write access
- Normalize ZIP paths in pipe_file and find
- Reject get destinations that resolve above the target
- Pass maxdepth through in AsyncFileSystem._rm
- Do not let isfile swallow BaseException
- Keep reference filesystem get destinations inside the target
- Return relative names from DirFileSystem.glob and find
- Raise FileNotFoundError for missing ZIP and TAR members
- Stop collapsing three-character drive-relative paths to the drive
root
- Use / as the only glob separator on every platform
- Distinguish omitted and None defaults in FSMap.pop
- Forward an Arrow file's flush and closed state to its stream
- Keep reference filesystem cat_file offsets inside the referenced
part
- Raise FileNotFoundError from archive ls for a missing path
- Download uncached files in simplecache.cat_ranges
- Fix tail on simplecache and filecache
- Get whole-file reference sizes asynchronously in
ReferenceFileSystem._info
- Report the target size for links in TarFileSystem
- Keep the async generator returned by AsyncFileSystemWrapper._walk
- Join the default output filename with / in _expand_paths
- Make names relative in DirFileSystem.walk(detail=True)
- Ignore a leading slash in TarFileSystem paths
- Fix cat_ranges on whole-file caches
- Normalize paths in AsyncFileSystemWrapper like the wrapped
filesystem
- The SFTP host key policy is configurable with the new
host_key_policy argument of SFTPFileSystem, which accepts
"auto_add" (default, unchanged behaviour), "warning" or "reject",
or any paramiko.MissingHostKeyPolicy
Other:
- Use trusted publishing for releases and trigger the release
workflow on tags
- Remove the stale async wrapper documentation warning
- Add Zarr to the test_downstream extra so the Xarray/Zarr test
runs again
- Clarify that rm handles directories
- Fix grammar in features.rst
- Patch HAS_CPYTHON_API where _fast_slice reads it in tests
- Percent-decode the username and password parsed from URLs in
infer_storage_options so that backends (ftp, sftp, smb, ...)
receive the real credentials rather than their URL-encoded form;
a password whose bare % produces bytes that are not valid UTF-8
(for example pass%ab) is left untouched so that pre-existing URLs
with unescaped % continue to work
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 4.2.4:
- Keep GitHub Release notes free of extra blank lines while
retaining the PyPI and version comparison links.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 40.43.0:
- Add es_CO bank provider
- Add es_CO internet provider
Extend RDEPENDS with the missing runtime dependency python3-stdnum.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add a recipe for python-stdnum, a Python module to handle
standardized numbers and codes. The changelog for release 2.2
includes:
- Add modules for the following number formats:
VÖEN (Vergi ödəyicisinin eyniləşdirmə nömrəsi, Azerbaijan
tax number)
Belgian OGM-VCS
Leitweg-ID, a buyer reference or routing identifier for
electronic invoices
European Excise Number
n° d'accise (French number to identify taxpayers of excise
taxes)
RCS (French trade registration number for commercial companies)
NUIT (Número Único de Identificação Tributaria, Mozambique tax
number)
NINEA (Numéro d'Identification Nationale des Entreprises et
Associations, Senegal tax number)
- Fix handling of decimals in Application Identifiers
- Update list of valid Chinese counties
- Mark more Romanian CNP county codes as valid
- Support Latvian personal codes issued after 2017
- Provide aliases for Estonian numbers
- Add validation of country code in BIC
- Add function to convert a French VAT number into a SIREN
- Add a function to format a French SIREN
- Add extra validation of Belgian VAT numbers
- Add support for nace revision 2.1
- Support the new Romanian ONRC format
- Support new format for Brazilian CNPJ
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add a recipe for zeep, a Python SOAP client. The changelog for
release 4.3.3 includes:
- Wire up the forbid_external setting (previously defined but unused
since the move off defusedxml in 4.0). When enabled it refuses to
transitively fetch http/https resources via xsd:import,
xsd:include, wsdl:import or lxml entity resolution, raising
zeep.exceptions.ExternalReferenceForbidden. The user-supplied
entry-point WSDL/schema URL is still loaded. The default remains
False to preserve existing behaviour; enable when loading WSDLs
from untrusted sources to mitigate SSRF via attacker-controlled
import targets.
- Internal tooling only: migrate dependency/build management to uv
and replace isort/flake8/black with ruff. No runtime changes.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add recipe for isodate, an ISO 8601 date/time/duration parser and
formatter. The changelog for release 0.7.2:
- Drop end of life python versions
- Don't match garbage characters at the end of parsed strings
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 0.4.4:
compat:
- Fixed a missing import.
markers:
- Enforce compatible-release bounds in environment markers.
metadata:
- Add an urls property to expose project and home URLs.
scripts:
- Raise the correct exception when a launcher can't be written.
- Detect shell-script Python executables in ScriptMaker shebangs.
util:
- Improve performance of export entry search to take linear time.
- Use tarfile.data_filter rather than tarfile.tar_filter in
unarchive() when extraction filters are available, matching the
Python 3.14 default. Path and link containment checks now use
os.path.realpath and no longer fail with IndexError for members
such as . or ./.
- unarchive() now resolves member paths through symlinks seen
earlier in the same archive, so a chain of individually
harmless-looking links cannot be used to write outside the
destination on Pythons without extraction filters.
version:
- Improve NormalizedVersion by addressing correctness and
performance gaps found by comparison with packaging.
- Improve SemanticVersion by comparing numeric prerelease
identifiers, including those longer than 8 digits.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 1.6.4:
- Clarify the executable paths accepted by try_first_with in the
standalone usage example.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add a recipe for vermin to concurrently detect the minimum Python
versions needed to run code.
Release notes for version 1.9.2:
- Fix incorrect version requirement of __lazy_modules__
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 0.10.1:
- Fix packaging
From release 0.10.0:
- Support CSS Notes
Extend RDEPENDS with the missing runtime dependency
python3-webencodings.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 3.12.3:
- Fix unaligned buffer handling on sparc64
- Preserve bitarray subtypes in operation return type hints
- Fix Hashable detection on Windows
- Add workflow to build and test on SPARC64, RISC-V and NetBSD 11
(amd64) (all successful)
- Add documentation for [platform support](platforms.rst)
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
bison now carries the fix for CVE-2026-56390, which rejects '/' in
%header/%defines and %output file names, so generating the command
parser fails:
lib/command_parse.y:20.10-30: error: invalid %header file name ignored
lib/command_parse.y:21.10-30: error: invalid %output file name ignored
Backport the upstream fix which drops these directives and passes the
output file name with -o instead.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The script that inserts the FIPS integrity digest into
libleancrypto-fips runs the build host's objcopy, which cannot read the
target ELF file, and it hides the failure because "exit $?" after echo
returns 0. The library is then installed with the placeholder digest,
its integrity self-test fails at load time and all algorithms are put
into the error state.
Make the script use $OBJCOPY, which points to the target objcopy, keep
the exit status of failing commands, and tolerate a missing .init
section which llvm-objcopy otherwise errors out on.
Tested by loading the riscv64 musl library under qemu-riscv64: the
integrity test now passes and FIPS140Mode is reported as true.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The FIPS integrity linker script takes ADDR(.init) for the hashed
regions, but musl provides no .init section on riscv64. GNU ld accepts
the reference to the missing section and yields an empty range, while
lld errors out:
ld.lld: error: internal/src/fips_integrity_check.ld:11: undefined section .init
Use ADDR(.init) only when the section has a size, and otherwise an
empty range at the start of .text, matching GNU ld behaviour.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The riscv64 ADDPTR assembler macro invokes "stride_shift" while the
macro is defined as STRIDE_SHIFT. GNU as matches macro names
case-insensitively, but the LLVM integrated assembler does not, so
building sad-a.S with high bit depth (the default 10bit PACKAGECONFIG)
fails with clang:
error: unrecognized instruction mnemonic
stride_shift a6, a7, t5, t5, 1, 1
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
USE_LARGEFILES requires _LFS64_LARGEFILE, which musl does not define
because its off_t is always 64-bit, so the build fails on musl:
./constants.h:36:2: error: no large file support available, remove -DLARGEFILES from makefile
Add a patch that only requires a 64-bit off_t in that case. It also
replaces the %L length modifier on integer conversions with the standard
%ll, which musl's printf requires.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
dlm_controld's rbtree headers were copied from the kernel and use
__always_inline. glibc defines it in <sys/cdefs.h>, but musl does not,
so the build fails on musl:
./rbtree.h:153:8: error: unknown type name '__always_inline'
Add a patch that provides a fallback definition in linux_helpers.h.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
libxdp turns its BPF programs into linkable objects with a relocatable
link of a raw binary input (cc -r -Wl,--format=binary). Because there is
no real object among the inputs, lld on riscv64 writes an object with
e_flags 0 (soft-float ABI) and a GNU property note with every CFI feature
bit set. Linking it then fails with clang:
ld.lld: error: libxdp.a(xdp-dispatcher.embed.o): file has conflicting
properties: GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED and
GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_FUNC_SIG
ld.lld: error: libxdp.a(xdp-dispatcher.embed.o): cannot link object
files with different floating-point ABI from Scrt1.o
Build the embed objects from a small .incbin assembly stub instead, so the
compiler driver emits them with the correct target ABI.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
rice-c/build.rs runs bindgen without any target flags, so libclang
parsed the build host headers in /usr/include, which fails when cross
compiling, e.g. for riscv64/musl:
/usr/include/bits/floatn.h:97:9: error: __float128 is not supported on this target
Pass the target arch flags, sysroot and triple via
BINDGEN_EXTRA_CLANG_ARGS, as thin-provisioning-tools does.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The clipboard session is always built, as input capture uses it, but
the remote selection source it calls into was only built with
-Dremote_desktop=true, so libmutter failed to link with the default
PACKAGECONFIG:
ld.lld: error: undefined symbol: meta_selection_source_remote_new
Build the remote selection source unconditionally.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 5.1.0:
- Dropped support for Sphinx 6.2, 7.0 & 7.1 and added python 3.14
- Strip leading spaces when making initializer
- Fix duplicate constexpr qualifiers on constructors
- Handle C++11 extended friend declarations
- Keep template arguments in class template specialization names
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>