Skip to content

Update Docker and CMake dependencies#34

Open
msolanik wants to merge 4 commits intomainfrom
renovate/docker-and-cmake-dependencies
Open

Update Docker and CMake dependencies#34
msolanik wants to merge 4 commits intomainfrom
renovate/docker-and-cmake-dependencies

Conversation

@msolanik
Copy link
Owner

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Type Update Change
CLIUtils/CLI11 minor v1.3.0v1.9.1
ToruNiina/toml11 minor v3.7.0v3.8.1
d99kris/rapidcsv minor v8.82v8.90
gabime/spdlog minor v1.13.0v1.17.0
nvidia/cuda final minor 11.6.1-devel-ubuntu20.0411.8.0-devel-ubuntu20.04
ubuntu final patch focal-20220531focal-20250404

Release Notes

CLIUtils/CLI11 (CLIUtils/CLI11)

v1.9.1: Version 1.9.1: Backported patches

Compare Source

This is a patch version that backports fixes from the development of 2.0.

  • Support relative inclusion #​475
  • Fix cases where spaces in paths could break CMake support #​471
  • Fix an issue with string conversion #​421
  • Cross-compiling improvement for Conan.io #​430
  • Fix option group default propagation #​450
  • Fix for C++20 #​459
  • Support compiling with RTTI off #​461

v1.9.0: Version 1.9: TOML

Compare Source

Config file handling was revamped to fix common issues, and now supports reading TOML.

Adding options is significantly more powerful with support for things like
std::tuple and std::array, including with transforms. Several new
configuration options were added to facilitate a wider variety of apps. GCC
4.7 is no longer supported.

  • Config files refactored, supports TOML (may become default output in 2.0) #​362
  • Added two template parameter form of add_option, allowing std::optional to be supported without a special import #​285
  • string_view now supported in reasonable places #​300, #​285
  • immediate_callback, final_callback, and parse_complete_callback added to support controlling the App callback order #​292, #​313
  • Multiple positional arguments maintain order if positionals_at_end is set. #​306
  • Pair/tuple/array now supported, and validators indexed to specific components in the objects #​307, #​310
  • Footer callbacks supported #​309
  • Subcommands now support needs (including nameless subcommands) #​317
  • More flexible type size, more useful add_complex #​325, [#​370][]
  • Added new validators CLI::NonNegativeNumber and CLI::PositiveNumber #​342
  • Transform now supports arrays #​349
  • Option groups can be hidden #​356
  • Add CLI::deprecate_option and CLI::retire_option functions #​358
  • More flexible and safer Option default_val [#​387][]
  • Backend: Cleaner type traits #​286
  • Backend: File checking updates [#​341][]
  • Backend: Using pre-commit to format, checked in GitHub Actions #​336
  • Backend: Clang-tidy checked again, CMake option now CL11_CLANG_TIDY #​390
  • Backend: Warning cleanup, more checks from klocwork #​350, Effective C++ #​354, clang-tidy #​360, CUDA NVCC #​365, cross compile #​373, sign conversion #​382, and cpplint #​400
  • Docs: CLI11 Tutorial now hosted in the same repository #​304, #​318, #​374
  • Bugfix: Fixed undefined behavior in checked_multiply #​290
  • Bugfix: ->check() was adding the name to the wrong validator #​320
  • Bugfix: Resetting config option works properly #​301
  • Bugfix: Hidden flags were showing up in error printout #​333
  • Bugfix: Enum conversion no longer broken if stream operator added #​348
  • Build: The meson build system supported #​299
  • Build: GCC 4.7 is no longer supported, due mostly to GoogleTest. GCC 4.8+ is now required. #​160
  • Build: Restructured significant portions of CMake build system #​394

Converting from CLI11 1.8:

  • Some deprecated methods dropped
    • add_set* should be replaced with ->check/->transform and CLI::IsMember since 1.8
    • get_defaultval was replaced by get_default_str in 1.8
  • The true/false 4th argument to add_option is expected to be removed in 2.0, use ->capture_default_str() since 1.8

v1.8.0: Version 1.8: Transformers, default strings, and flags

Compare Source

Set handling has been completely replaced by a new backend that works as a Validator or Transformer. This provides a single interface instead of the 16 different functions in App. It also allows ordered collections to be used, custom functions for filtering, and better help and error messages. You can also use a collection of pairs (like std::map) to transform the match into an output. Also new are inverted flags, which can cancel or reduce the count of flags, and can also support general flag types. A new add_option_fn lets you more easily program CLI11 options with the types you choose. Vector options now support a custom separator. Apps can now be composed with unnamed subcommand support. The final bool "defaults" flag when creating options has been replaced by ->capture_default_str() (ending an old limitation in construction made this possible); the old method is still available but may be removed in future versions.

  • Replaced default help capture: .add_option("name", value, "", True) becomes .add_option("name", value)->capture_default_str() #​242
  • Added .always_capture_default() #​242
  • New CLI::IsMember validator replaces set validation #​222
  • IsMember also supports container of pairs, transform allows modification of result #​228
  • Added new Transformers, CLI::AsNumberWithUnit and CLI::AsSizeValue #​253
  • Much more powerful flags with different values #​211, general types #​235
  • add_option now supports bool due to unified bool handling #​211
  • Support for composable unnamed subcommands #​216
  • Reparsing is better supported with .remaining_for_passthrough() #​265
  • Custom vector separator using ->delimiter(char) #​209, #​221, #​240
  • Validators added for IP4 addresses and positive numbers #​210 and numbers #​262
  • Minimum required Boost for optional Optionals has been corrected to 1.61 #​226
  • Positionals can stop options from being parsed with app.positionals_at_end() #​223
  • Added validate_positionals #​262
  • Positional parsing is much more powerful #​251, duplicates supported []#​247]
  • Validators can be negated with ! #​230, and now handle tname functions #​228
  • Better enum support and streaming helper #​233 and #​228
  • Cleanup for shadow warnings #​232
  • Better alignment on multiline descriptions #​269
  • Better support for aarch64 #​266
  • Respect BUILD_TESTING only if CLI11 is the main project; otherwise, CLI11_TESTING must be used #​277
  • Drop auto-detection of experimental optional and boost::optional; must be enabled explicitly (too fragile) #​277 #​279

Converting from CLI11 1.7:

  • .add_option(..., true) should be replaced by .add_option(...)->capture_default_str() or app.option_defaults()->always_capture_default() can be used
  • app.add_set("--name", value, {"choice1", "choice2"}) should become app.add_option("--name", value)->check(CLI::IsMember({"choice1", "choice2"}))
  • The _ignore_case version of this can be replaced by adding CLI::ignore_case to the argument list in IsMember
  • The _ignore_underscore version of this can be replaced by adding CLI::ignore_underscore to the argument list in IsMember
  • The _ignore_case_underscore version of this can be replaced by adding both functions listed above to the argument list in IsMember
  • If you want an exact match to the original choice after one of the modifier functions matches, use ->transform instead of ->check
  • The _mutable versions of this can be replaced by passing a pointer or shared pointer into IsMember
  • An error with sets now produces a ValidationError instead of a ConversionError

v1.7.1: Version 1.7.1: Quick patch

Compare Source

This version provides a quick patch for a (correct) warning from GCC 8 for the windows options code.

  • Fix for Windows style option parsing #​201
  • Improve add_subcommand when throwing an exception #​204
  • Better metadata for Conan package #​202

v1.7.0: Version 1.7: Parse breakup

Compare Source

The parsing procedure now maps much more sensibly to complex, nested subcommand structures. Each phase of the parsing happens on all subcommands before moving on with the next phase of the parse. This allows several features, like required environment variables, to work properly even through subcommand boundaries.
Passing the same subcommand multiple times is better supported. Several new features were added as well, including Windows style option support, parsing strings directly, and ignoring underscores in names. Adding a set that you plan to change later must now be done with add_mutable_set.

  • Support Windows style options with ->allow_windows_style_options. #​187 On by default on Windows. #​190
  • Added parse(string) to split up and parse a command-line style string directly. #​186
  • Added ignore_underscore and related functions, to ignore underscores when matching names. #​185
  • The default INI Config will now add quotes to strings with spaces #​195
  • The default message now will mention the help-all flag also if present #​197
  • Added ->description to set Option descriptions #​199
  • Mutating sets (introduced in Version 1.6) now have a clear add method, add_mutable_set*, since the set reference should not expire #​200
  • Subcommands now track how many times they were parsed in a parsing process. count() with no arguments will return the number of times a subcommand was encountered. #​179
  • Parsing is now done in phases: shortcurcuits, ini, env, callbacks, and requirements; all subcommands complete a phase before moving on. #​179
  • Calling parse multiple times is now officially supported without clear (automatic). #​179
  • Dropped the mostly undocumented short_circuit property, as help flag parsing is a bit more complex, and the default callback behavior of options now works properly. #​179
  • Use the standard BUILD_TESTING over CLI11_TESTING if defined (CLI11_TESTING may eventually be removed) #​183
  • Cleanup warnings #​191
  • Remove deprecated names: set_footer, set_name, set_callback, and set_type_name. Use without the set_ instead. #​192

Converting from CLI11 1.6:

  • ->short_circuit() is no longer needed, just remove it if you were using it - raising an exception will happen in the proper place now without it.
  • ->add_set* becomes ->add_mutable_set* if you were using the editable set feature
  • footer, name, callback, and type_name must be used instead of the set_* versions (deprecated previously).

v1.6.2: Version 1.6.2: Help-All

Compare Source

This version fixes some formatting bugs with help-all. It also adds fixes for several warnings, including an experimental optional error on Clang 7. Several smaller fixes.

  • Fixed help-all formatting #​163
    • Printing help-all on nested command now fixed (App)
    • Missing space after help-all restored (Default formatter)
    • More detail printed on help all (Default formatter)
    • Help-all subcommands get indented with inner blank lines removed (Default formatter)
    • detail::find_and_replace added to utilities
  • Fixed CMake install as subproject with CLI11_INSTALL flag. #​156
  • Fixed warning about local variable hiding class member with MSVC #​157
  • Fixed compile error with default settings on Clang 7 and libc++ #​158
  • Fixed special case of --help on subcommands (general fix planned for 1.7) #​168
  • Removing an option with links #​179

v1.6.1: Version 1.6.1: Platform fixes

Compare Source

This version provides a few fixes for special cases, such as mixing with Windows.h and better defaults for systems like Hunter. The one new feature is the ability to produce "branded" single file output for providing custom namespaces or custom macro names.

  • Added fix and test for including Windows.h #​145
  • No longer build single file by default if main project, supports systems stuck on Python 2.6 #​149, #​151
  • Branding support for single file output #​150

v1.6.0: Version 1.6: Formatting help

Compare Source

Added a new formatting system #​109. You can now set the formatter on Apps. This has also simplified the internals of Apps and Options a bit by separating most formatting code.

  • Added CLI::Formatter and formatter slot for apps, inherited.
  • FormatterBase is the minimum required.
  • FormatterLambda provides for the easy addition of an arbitrary function.
  • Added help_all support (not added by default).

Changes to the help system (most normal users will not notice this):

  • Renamed single_name to get_name(false, false) (the default).
  • The old get_name() is now get_name(false, true).
  • The old get_pname() is now get_name(true, false).
  • Removed help_* functions.
  • Protected function _has_help_positional removed.
  • format_help can now be chained.
  • Added getters for the missing parts of options (help no longer uses any private parts).
  • Help flags now use new short_circuit property to simplify parsing. #​121

New for Config file reading and writing #​121:

  • Overridable, bidirectional Config.
  • ConfigINI provided and used by default.
  • Renamed ini to config in many places.
  • Has config_formatter() and get_config_formatter().
  • Dropped prefix argument from config_to_str.
  • Added ConfigItem.
  • Added an example of a custom config format using nlohmann/json. #​138

Validators are now much more powerful #​118, all built in validators upgraded to the new form:

  • A subclass of CLI::Validator is now also accepted.
  • They now can set the type name to things like PATH and INT in [1-4].
  • Validators can be combined with & and |.
  • Old form simple validators are still accepted.

Other changes:

  • Fixing parse(args)'s args setting and ordering after parse. #​141
  • Replaced set_custom_option with type_name and type_size instead of set_custom_option. Methods return this. [#​136]
  • Dropped set_ on Option's type_name, default_str, and default_val. [#​136]
  • Removed set_ from App's failure_message, footer, callback, and name. [#​136]
  • Fixed support N<-1 for type_size. #​140
  • Added ->each() to make adding custom callbacks easier. #​126
  • Allow empty options add_option("-n",{}) to be edited later with each #​142
  • Added filter argument to get_subcommands, get_options; use empty filter {} to avoid filtering.
  • Added get_groups() to get groups.
  • Better support for manual options with get_option, set_results, and empty. #​119
  • lname and sname have getters, added const get_parent. #​120
  • Using add_set will now capture L-values for sets, allowing further modification. #​113
  • Dropped duplicate way to run get_type_name (get_typeval).
  • Removed requires in favor of needs (deprecated in last version). #​112
  • Const added to argv. #​126

Backend and testing changes:

  • Internally, type_name is now a lambda function; for sets, this reads the set live. #​116
  • Cleaner tests without app.reset() (and reset is now clear). #​141
  • Better CMake policy handling. #​110
  • Includes are properly sorted. #​120
  • Testing (only) now uses submodules. #​111

v1.5.4: Version 1.5.4: Optionals fix

Compare Source

This version fixes the optional search in the single file version; some macros were not yet defined when it did the search. You can define the CLI11_*_OPTIONAL macros to 0 if needed to eliminate the search.

v1.5.3: Version 1.5.3: Compiler compatibility

Compare Source

This version fixes older AppleClang compilers by removing the optimization for casting. The minimum version of Boost Optional supported has been clarified to be 1.58. CUDA 7.0 NVCC is now supported.

v1.5.2: Version 1.5.2: LICENSE in single header mode

Compare Source

This is a quick patch release that makes LICENSE part of the single header file, making it easier to include. Minor cleanup from codacy. No significant code changes from 1.5.1.

v1.5.1: Version 1.5.1: Access

Compare Source

This patch release adds better access to the App progromatically, to assist with writing custom converters to other formats. It also improves the help output, and uses a new feature in CLI11 1.5 to fix an old "quirk" in the way unlimited options and positionals interact.

  • Make mixing unlimited positionals and options more intuitive #​102
  • Add missing getters get_options and get_description to App #​105
  • The app name now can be set, and will override the auto name if present #​105
  • Add (REQUIRED) for required options #​104
  • Print simple name for Needs/Excludes #​104
  • Use Needs instead of Requires in help print #​104
  • Groups now are listed in the original definition order #​106

v1.5.0: Version 1.5: Optionals

Compare Source

This version introduced support for optionals, along with clarification and examples of custom conversion overloads. Enums now have been dropped from the automatic conversion system, allowing explicit protection for out-of-range ints (or a completely custom conversion). This version has some internal cleanup and improved support for the newest compilers. Several bugs were fixed, as well.

Note: This is the final release with requires, please switch to needs.

  • Fix unlimited short options eating two values before checking for positionals when no space present #​90
  • Symmetric exclude text when excluding options, exclude can be called multiple times #​64
  • Support for std::optional, std::experimental::optional, and boost::optional added if __has_include is supported #​95
  • All macros/CMake variables now start with CLI11_ instead of just CLI_ #​95
  • The internal stream was not being cleared before use in some cases. Fixed. #​95
  • Using an emum now requires explicit conversion overload #​97
  • The separator -- now is removed when it ends unlimited arguments #​100

Other, non-user facing changes:

  • Added Macros.hpp with better C++ mode discovery #​95
  • Deprecated macros added for all platforms
  • C++17 is now tested on supported platforms #​95
  • Informational printout now added to CTest #​95
  • Better single file generation #​95
  • Added support for GTest on MSVC 2017 (but not in C++17 mode, will need next version of GTest)
  • Types now have a specific size, separate from the expected number - cleaner and more powerful internally #​92
  • Examples now run as part of testing #​99

v1.4.0: Version 1.4: More feedback

Compare Source

This version adds lots of smaller fixes and additions after the refactor in version 1.3. More ways to download and use CLI11 in CMake have been added. INI files have improved support.

  • Lexical cast is now more strict than before #​68 and fails on overflow #​84
  • Added get_parent() to access the parent from a subcommand
  • Added ExistingPath validator #​73
  • app.allow_ini_extras() added to allow extras in INI files #​70
  • Multiline INI comments now supported
  • Descriptions can now be written with config_to_str #​66
  • Double printing of error message fixed #​77
  • Renamed requires to needs to avoid C++20 keyword #​75, #​82
  • MakeSingleHeader now works if outside of git #​78
  • Adding install support for CMake #​79, improved support for find_package #​83, #​84
  • Added support for Conan.io #​83
ToruNiina/toml11 (ToruNiina/toml11)

v3.8.1: version 3.8.1

Compare Source

Fixed
  • stop using strerror_x variants in toml::parse(FILE*) overload (#​235)

v3.8.0: version 3.8.0

Compare Source

Fixed
Added
Changed

v3.7.1: version 3.7.1

Compare Source

Fixed

Fixed many corner-cases.

  • spelling fixes (#​167) (@​karl-nilsson)
  • fix condition of inlining while serialization (#​169) (@​ohdarling)
  • fix warning on MSVC C26478 (#​171) (@​estshorter)
  • replace not in README by ! (#​172) (@​estshorter)
  • fix many warnings around macro (#​176) (@​phlptp)
  • fix g++ free-nonheap-object warning (#​173) (#​178) (@​marascio)
  • make installation optional if embedded (#​185) (@​ax3l)
  • fix out_of_range exception with malformed toml file (#​164)
  • workaround __cplusplus macro on MSVC (#​182)
  • fix SFINAE condition while conversion (#​177)
  • reorder macro to detect MSVC earlier (#​166)
  • fix EOF after comment without line feed (#​180)
  • fix serialization of empty key
  • fix serialization of NaN and Inf; use literal string instead of printf
  • fix serialization of an array containing a table; if an array has a table and other value (e.g. integer), the table must be inlined.
  • fix serialization of control chars in a string
  • disallow non-existing datetime
  • disallow 0x0A-1F in a string
  • disallow invalid UTF-8 sequence in a string
  • disallow subtable key conflict
  • disallow null char at the end of input (#​181)
  • disallow mixing dotted key and inline table
  • disallow mixing dotted key and table (#​183)
  • show better error message for a trailing comma in an inline table
d99kris/rapidcsv (d99kris/rapidcsv)

v8.90

Compare Source

  • fixes #​194 - out-of-range RemoveRow to throw exception instead of segfaulting

v8.89

Compare Source

  • fix character type in trim functions to better handle invalid input data

v8.88

Compare Source

  • fixes #​192 - utf-16 handling for stream-based constructor

v8.87

Compare Source

  • fixes #​187 - out-of-range InsertColumn to throw exception instead of segfaulting
  • fixes #​186 - out-of-range RemoveColumn to throw exception instead of segfaulting

v8.85

Compare Source

  • fixes #​177 - GetColumnCount to respect LabelParams offset when determining first row

v8.84

Compare Source

  • fixes #​168 - handle trailing empty cell without linebreak

v8.83

Compare Source

  • fixes #​161 - writing CSV with autoquote enabled should quote strings containing linebreak
gabime/spdlog (gabime/spdlog)

v1.17.0: Version 1.17.0

Compare Source

  • Bump bundled {fmt} library to 12.1.0
  • Fix the %z formatter (UTC offset):
    • Windows: Replaced implementation for better accuracy and speed (~2.5x) by @​gabime in #​3508
    • FreeBSD: Fixed incorrect implementation (#​3483) by @​gabime in #​3491
    • Fixed issue where the offset was not displaying as +00:00 when the formatter was configured to show UTC time.
    • Removed unreliable fallback for Unix systems lacking tm_gmtoff. If compilation fails on such platforms, use SPDLOG_NO_TZ_OFFSET=ON (%z will display +??:?? instead of compilation error).
  • Set CMAKE_BUILD_TYPE only in top-level project by @​double-fault in #​3480
  • Change access scope for ANSI target_file_ from private to protected by @​fab4100 in #​3486
  • Fix UWP detection by @​jdumas in #​3489
  • Fix include <fcntl.h> in tcp_client.h to avoid compilation failures by @​maordadush in #​3497
  • Tests: Fix unit tests to respect default level names by @​ssam18 in #​3492
  • Docs: Fix misleading comment in blocking_queue header by @​zanewong233 in #​3504
  • Fix sign-compare warning by @​AleksandrSokolkin in #​3479
  • Fix sign conversion warnings in qt_sinks.h by @​ssam18 in #​3487

Full Changelog: gabime/spdlog@v1.16.0...v1.17.0

Special thanks to @​tt4g for assisting with community questions and issues.

v1.16.0: version 1.16.0

Compare Source

Full Changelog: gabime/spdlog@v1.15.3...v1.16.0

Special thanks to @​tt4g for assisting with community questions and issues.

v1.15.3: Version 1.15.3

Compare Source

Full Changelog: gabime/spdlog@v1.15.2...v1.15.3

Special thanks to @​tt4g for assisting with community questions and issues.

v1.15.2: Version 1.15.2

Compare Source

Full Changelog: gabime/spdlog@v1.15.1...v1.15.2

Special thanks to @​tt4g for assisting with community questions and issues.

v1.15.1: Version 1.15.1

Compare Source

Full Changelog: gabime/spdlog@v1.15.0...v1.15.1

Special thanks to @​tt4g for helping with community questions and issues

v1.15.0: Version 1.15.0

Compare Source

What's Changed

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Copilot AI review requested due to automatic review settings January 31, 2026 13:06
@msolanik msolanik self-assigned this Jan 31, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates Docker base images and CMake-managed C++ dependencies to newer versions. The update includes Ubuntu base image from focal-20220531 to focal-20250404, NVIDIA CUDA from 11.6.1 to 11.8.0, and several C++ libraries: CLI11 (v1.3.0 → v1.9.1), toml11 (v3.7.0 → v3.8.1), rapidcsv (v8.82 → v8.90), and spdlog (v1.13.0 → v1.17.0).

Changes:

  • Updated Ubuntu base image and NVIDIA CUDA Docker images to newer versions
  • Upgraded four C++ dependencies (CLI11, toml11, rapidcsv, spdlog) across all CMakeLists.txt files
  • Ensured consistent dependency versions across multiple build configurations

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
Input/CMakeLists.txt Updated all four dependencies: rapidcsv, spdlog, toml11, and CLI11
Dockerfile.CPU Updated Ubuntu base image to focal-20250404
Dockerfile Updated NVIDIA CUDA base image to 11.8.0-devel-ubuntu20.04
CpuImplementations/CMakeLists.txt Updated spdlog dependency
CMakeLists.txt Updated spdlog dependency
Algorithm/CMakeLists.txt Updated spdlog and toml11 dependencies
.devcontainer/CPU/Dockerfile Updated Ubuntu base image to focal-20250404

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

CLI11
GIT_REPOSITORY https://github.com/CLIUtils/CLI11
GIT_TAG v1.3.0
GIT_TAG v1.9.1
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Upgrading CLI11 from v1.3.0 to v1.9.1 introduces a breaking change. The codebase uses the deprecated ->requires() method (see Input/src/ParseParams.cpp:62), which was deprecated in v1.4 and replaced by ->needs(). This will likely cause compilation failures. All usages of ->requires() must be updated to ->needs() before this upgrade can be applied.

Suggested change
GIT_TAG v1.9.1
GIT_TAG v1.3.0

Copilot uses AI. Check for mistakes.
spdlog
GIT_REPOSITORY https://github.com/gabime/spdlog.git
GIT_TAG v1.13.0
GIT_TAG v1.17.0
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The spdlog dependency fetched via FetchContent_Declare is pinned only by the Git tag v1.17.0, meaning a compromise or force-push of that tag in the upstream repository could inject malicious code into your build without any manifest change here. Prefer pinning to a specific commit SHA (or vendoring the code) to ensure that future builds use exactly the audited version of spdlog.

Copilot uses AI. Check for mistakes.
spdlog
GIT_REPOSITORY https://github.com/gabime/spdlog.git
GIT_TAG v1.13.0
GIT_TAG v1.17.0
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The top-level spdlog dependency is fetched via FetchContent_Declare using only the Git tag v1.17.0, so an attacker who can move or replace that tag upstream could cause subsequent builds to compile unreviewed code. To harden your supply chain, pin this dependency to an immutable commit SHA or vendor it instead of relying solely on a mutable tag.

Copilot uses AI. Check for mistakes.
Comment on lines +10 to +17
GIT_TAG v1.17.0
)
FetchContent_MakeAvailable(spdlog)

FetchContent_Declare(
toml11
GIT_REPOSITORY https://github.com/ToruNiina/toml11
GIT_TAG v3.7.0
GIT_TAG v3.8.1
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this CMake list, both spdlog and toml11 are fetched from GitHub using only version tags (v1.17.0, v3.8.1), which can be moved or replaced upstream, enabling a potential supply-chain attack where your build consumes malicious code without local changes. Pin these dependencies to specific commit SHAs (or vendor them) so that builds are reproducible and cannot be silently altered by upstream tag changes.

Copilot uses AI. Check for mistakes.
Comment on lines +17 to +38
GIT_TAG v8.90
)
FetchContent_MakeAvailable(rapidcsv)

FetchContent_Declare(
spdlog
GIT_REPOSITORY https://github.com/gabime/spdlog.git
GIT_TAG v1.13.0
GIT_TAG v1.17.0
)
FetchContent_MakeAvailable(spdlog)

FetchContent_Declare(
toml11
GIT_REPOSITORY https://github.com/ToruNiina/toml11
GIT_TAG v3.7.0
GIT_TAG v3.8.1
)
FetchContent_MakeAvailable(toml11)

FetchContent_Declare(
CLI11
GIT_REPOSITORY https://github.com/CLIUtils/CLI11
GIT_TAG v1.3.0
GIT_TAG v1.9.1
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These FetchContent_Declare dependencies (rapidcsv, spdlog, toml11, CLI11) are pinned only to Git tags (v8.90, v1.17.0, v3.8.1, v1.9.1), so if any upstream repository or tag is compromised or force-moved, your build could transparently pull and compile attacker-controlled code. To reduce this supply-chain risk, pin these dependencies to immutable commit SHAs (or vendor them locally) instead of relying on mutable tags.

Copilot uses AI. Check for mistakes.
@msolanik
Copy link
Owner Author

msolanik commented Feb 2, 2026

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants