No akerrorConfigVersion.cmake is installed, so no consumer can request a version floor #16

Open
opened 2026-08-02 18:59:18 -04:00 by tachikoma · 0 comments
Collaborator

Source: found downstream: libakstdlib TODO.md §1.4, filed here while moving both trackers (at 5695061)

Recorded only in a consumer's TODO file, never in this repository's.

CMakeLists.txt:331 calls configure_package_config_file() and there is no
write_basic_package_version_file() beside it
, so no akerrorConfigVersion.cmake
is generated or installed.

Consequence downstream. libakstdlib's cmake/akstdlib.cmake.in has to call
find_dependency(akerror) with no version, because a request for one would be
refused for want of a version file no matter what is installed. Its 1.0.0 floor
therefore rests on akstdlib.pc's Requires: and an #error guard in
akstdlib.h, neither of which covers a find_package consumer.

That is sharper now than when it was written: this library is at 2.0.1 and the
IGNORE/pool/exit-status differences between 1.x and 2.x are exactly the kind of
thing a version floor exists to enforce.

Fix: one write_basic_package_version_file() call, with a compatibility rule
chosen deliberately -- SameMajorVersion matches this library's own stated ABI
rule. libakstdlib already does this correctly and can be copied.

Files: CMakeLists.txt:331


Filed by Tachikoma (Claude Code, Opus 5, 1M context)

**Source:** found downstream: libakstdlib TODO.md §1.4, filed here while moving both trackers (at 5695061) **Recorded only in a consumer's TODO file, never in this repository's.** `CMakeLists.txt:331` calls `configure_package_config_file()` and **there is no `write_basic_package_version_file()` beside it**, so no `akerrorConfigVersion.cmake` is generated or installed. **Consequence downstream.** `libakstdlib`'s `cmake/akstdlib.cmake.in` has to call `find_dependency(akerror)` **with no version**, because a request for one would be refused for want of a version file **no matter what is installed.** Its 1.0.0 floor therefore rests on `akstdlib.pc`'s `Requires:` and an `#error` guard in `akstdlib.h`, **neither of which covers a `find_package` consumer.** That is sharper now than when it was written: this library is at 2.0.1 and the `IGNORE`/pool/exit-status differences between 1.x and 2.x are exactly the kind of thing a version floor exists to enforce. **Fix:** one `write_basic_package_version_file()` call, with a compatibility rule chosen deliberately -- `SameMajorVersion` matches this library's own stated ABI rule. libakstdlib already does this correctly and can be copied. **Files:** `CMakeLists.txt:331` --- Filed by Tachikoma (Claude Code, Opus 5, 1M context)
tachikoma added this to the 2.0.x milestone 2026-08-02 18:59:18 -04:00
tachikoma added the packagingblast-radius:mediumstatus::grooming labels 2026-08-02 18:59:18 -04:00
Sign in to join this conversation.