Move version compatibility to the consumer; name libdpm-core explicitly
dpm_require no longer takes a minimum version and applies no version criterion of its own. A handle now means the module is valid, not that it suits the caller. dpm_module_info_of is added alongside it, reporting the name, version, description, and minimum-libdpm-core version read at load, so a consuming module can judge a dependency's version for itself. The one rule still enforced is the minimum-version handshake, where libdpm-core is the host and refuses a module that demands a newer library than the one running. dpm_module_info_of joins the version script, so the exported surface is now fourteen symbols under DPM_CORE_1.0. Separately, the bare word "core" is gone from prose everywhere. It named both the command-line tool and the library, so every use forced the reader to guess which. Text now says "the dpm binary" or "libdpm-core". Identifiers keep their spelling: libdpm-core, core.h, core.conf, the "core" configuration namespace, dpm_core_version, core_min, DPM_CORE_1.0, the dpmcore namespace, test_core, core_api. Three user-visible strings changed with it: the load-refusal message now reads "requires libdpm-core >= X, running libdpm-core is Y — update libdpm-core", and the info module's description and help text name the library. The test asserting on the refusal text was updated to match. DESIGN.md's terminology line no longer defines "DPM Core" as the CLI, which was the source of the ambiguity. OVERVIEW.md is restructured around the three layers a reader meets DPM at — user, developer, filesystem — so a code-level symbol never appears without saying whose layer it is. MODULES.md describes the bundled info module as testing and demonstrating full DPM system functionality rather than as a reference implementation. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# libdpm-core.so — the core library (C ABI)
|
||||
# libdpm-core.so — the library (C ABI)
|
||||
# ---------------------------------------------------------------------
|
||||
add_library(dpm-core SHARED
|
||||
src/context.cpp
|
||||
@@ -58,7 +58,7 @@ set_target_properties(dpm PROPERTIES
|
||||
)
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# info — the bundled module (tests and reports core functionality)
|
||||
# info — the bundled module (tests and reports libdpm-core functionality)
|
||||
# ---------------------------------------------------------------------
|
||||
add_library(info MODULE
|
||||
src/bundled-modules/info/info.cpp
|
||||
@@ -76,7 +76,7 @@ set_target_properties(info PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/modules
|
||||
)
|
||||
|
||||
# The module bundles with core, so building the CLI builds it too: after a
|
||||
# The module bundles with libdpm-core, so building the CLI builds it too: after a
|
||||
# clean, running dpm from the build tree finds a module directory that is
|
||||
# populated. This orders the build only — the CLI does not link the module.
|
||||
add_dependencies(dpm info)
|
||||
@@ -106,7 +106,7 @@ foreach(fixture good missing_symbols bad_magic lying_manifest core_too_new bad_v
|
||||
endforeach()
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Core API test binary — drives libdpm-core through its public C API
|
||||
# API test binary — drives libdpm-core through its public C API
|
||||
# ---------------------------------------------------------------------
|
||||
add_executable(test_core tests/test_core.cpp)
|
||||
|
||||
@@ -130,7 +130,7 @@ endforeach()
|
||||
add_test(NAME core_api COMMAND test_core)
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# CLI end-to-end tests (the CLI is core's cheapest full-stack client)
|
||||
# CLI end-to-end tests (the dpm binary is the cheapest full-stack client)
|
||||
# ---------------------------------------------------------------------
|
||||
add_test(NAME cli_help COMMAND dpm --help)
|
||||
set_tests_properties(cli_help PROPERTIES PASS_REGULAR_EXPRESSION "Usage: dpm")
|
||||
|
||||
Reference in New Issue
Block a user