From 35a7ed125bf7f051635b78e8e2babe441112cbb1 Mon Sep 17 00:00:00 2001 From: Matthew Woehlke Date: Fri, 31 Jan 2025 14:00:32 -0500 Subject: find_package: Fix reporting of rejected CPS files' version The logic to extract the version of a CPS file into the location used to record files that were considered but rejected was happening too late, resulting in rejected files unnecessarily reporting their version as "unknown". Fix this by filling the variable sooner. --- Source/cmFindPackageCommand.cxx | 9 ++++++--- Tests/RunCMake/find_package-CPS/MissingComponent-stderr.txt | 2 +- .../find_package-CPS/MissingTransitiveComponent-stderr.txt | 2 +- Tests/RunCMake/find_package-CPS/cps/componenttest.cps | 1 + 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index cd1938e..a47e9c3 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -2718,7 +2718,10 @@ bool cmFindPackageCommand::CheckVersion(std::string const& config_file) cmPackageInfoReader::Read(config_file); if (reader && reader->GetName() == this->Name) { cm::optional cpsVersion = reader->GetVersion(); - if (cpsVersion) { + bool const hasVersion = cpsVersion.has_value(); + + if (hasVersion) { + version = std::move(*cpsVersion); // TODO: Implement version check for CPS result = true; } else { @@ -2752,8 +2755,8 @@ bool cmFindPackageCommand::CheckVersion(std::string const& config_file) result = false; } - if (result && cpsVersion) { - this->VersionFound = (version = std::move(*cpsVersion)); + if (result && hasVersion) { + this->VersionFound = version; std::vector const& versionParts = reader->ParseVersion(); this->VersionFoundCount = static_cast(versionParts.size()); diff --git a/Tests/RunCMake/find_package-CPS/MissingComponent-stderr.txt b/Tests/RunCMake/find_package-CPS/MissingComponent-stderr.txt index d617cfd..14f1f0a 100644 --- a/Tests/RunCMake/find_package-CPS/MissingComponent-stderr.txt +++ b/Tests/RunCMake/find_package-CPS/MissingComponent-stderr.txt @@ -5,7 +5,7 @@ CMake Error at MissingComponent.cmake:[0-9]+ \(find_package\): The following configuration files were considered but not accepted: ( [^ -]*/Tests/RunCMake/find_package-CPS/cps/[Cc]omponent[Tt]est\.cps, version: unknown)+ +]*/Tests/RunCMake/find_package-CPS/cps/[Cc]omponent[Tt]est\.cps, version: 1\.0)+ Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) diff --git a/Tests/RunCMake/find_package-CPS/MissingTransitiveComponent-stderr.txt b/Tests/RunCMake/find_package-CPS/MissingTransitiveComponent-stderr.txt index c102911..50c4afe 100644 --- a/Tests/RunCMake/find_package-CPS/MissingTransitiveComponent-stderr.txt +++ b/Tests/RunCMake/find_package-CPS/MissingTransitiveComponent-stderr.txt @@ -5,7 +5,7 @@ CMake Error in cps/[Tt]ransitive[Mm]issing\.cps: The following configuration files were considered but not accepted: ( [^ -]*/Tests/RunCMake/find_package-CPS/cps/[Cc]omponent[Tt]est\.cps, version: unknown)+ +]*/Tests/RunCMake/find_package-CPS/cps/[Cc]omponent[Tt]est\.cps, version: 1\.0)+ Call Stack \(most recent call first\): MissingTransitiveComponent\.cmake:[0-9]+ \(find_package\) diff --git a/Tests/RunCMake/find_package-CPS/cps/componenttest.cps b/Tests/RunCMake/find_package-CPS/cps/componenttest.cps index ef49af4..dbbe095 100644 --- a/Tests/RunCMake/find_package-CPS/cps/componenttest.cps +++ b/Tests/RunCMake/find_package-CPS/cps/componenttest.cps @@ -1,6 +1,7 @@ { "cps_version": "0.13", "name": "ComponentTest", + "version": "1.0", "cps_path": "@prefix@/cps", "components": {} } -- cgit v0.12