Accepting request 856046 from home:dimstar:Factory
Add patch to fix things like gdcm, that newly have a broken dep chain (poppler update) but can't rebuild due to the cmake regression OBS-URL: https://build.opensuse.org/request/show/856046 OBS-URL: https://build.opensuse.org/package/show/devel:tools:building/cmake?expand=0&rev=437
This commit is contained in:
parent
dd992662e6
commit
38e4944110
198
5556.patch
Normal file
198
5556.patch
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
From 38bcb5c0a3accd2dd29fb7632c6b3bf31b990d82 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Deniz Bahadir <dbahadir@benocs.com>
|
||||||
|
Date: Tue, 1 Dec 2020 00:25:39 +0100
|
||||||
|
Subject: [PATCH] export: Do not fail generation for separate namelink only
|
||||||
|
case
|
||||||
|
|
||||||
|
Update the change from commit 64690f6df0 (export: Do not fail generation
|
||||||
|
for namelink-only case, 2020-10-09, v3.19.0-rc1~7^2) to also handle
|
||||||
|
separate namelink-only and namelink-skip calls.
|
||||||
|
|
||||||
|
Fixes: #21529
|
||||||
|
---
|
||||||
|
Source/cmExportBuildFileGenerator.cxx | 3 +++
|
||||||
|
Source/cmExportInstallFileGenerator.cxx | 3 +++
|
||||||
|
Source/cmInstallCommand.cxx | 19 +++++++++++--------
|
||||||
|
Source/cmTargetExport.h | 2 ++
|
||||||
|
Tests/RunCMake/export/RunCMakeTest.cmake | 1 +
|
||||||
|
.../export/SeparateNamelinkExport.cmake | 16 ++++++++++++++++
|
||||||
|
.../install/EXPORT-SeparateNamelink.cmake | 19 +++++++++++++++++++
|
||||||
|
Tests/RunCMake/install/RunCMakeTest.cmake | 1 +
|
||||||
|
8 files changed, 56 insertions(+), 8 deletions(-)
|
||||||
|
create mode 100644 Tests/RunCMake/export/SeparateNamelinkExport.cmake
|
||||||
|
create mode 100644 Tests/RunCMake/install/EXPORT-SeparateNamelink.cmake
|
||||||
|
|
||||||
|
diff --git a/Source/cmExportBuildFileGenerator.cxx b/Source/cmExportBuildFileGenerator.cxx
|
||||||
|
index dd700c5edf..1a31ae4afd 100644
|
||||||
|
--- a/Source/cmExportBuildFileGenerator.cxx
|
||||||
|
+++ b/Source/cmExportBuildFileGenerator.cxx
|
||||||
|
@@ -288,6 +288,9 @@ void cmExportBuildFileGenerator::GetTargets(
|
||||||
|
if (this->ExportSet) {
|
||||||
|
for (std::unique_ptr<cmTargetExport> const& te :
|
||||||
|
this->ExportSet->GetTargetExports()) {
|
||||||
|
+ if (te->NamelinkOnly) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
targets.push_back(te->TargetName);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx
|
||||||
|
index 987ec9ea7b..0b9b183d54 100644
|
||||||
|
--- a/Source/cmExportInstallFileGenerator.cxx
|
||||||
|
+++ b/Source/cmExportInstallFileGenerator.cxx
|
||||||
|
@@ -42,6 +42,9 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
|
||||||
|
std::string sep;
|
||||||
|
for (std::unique_ptr<cmTargetExport> const& te :
|
||||||
|
this->IEGen->GetExportSet()->GetTargetExports()) {
|
||||||
|
+ if (te->NamelinkOnly) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
expectedTargets += sep + this->Namespace + te->Target->GetExportName();
|
||||||
|
sep = " ";
|
||||||
|
if (this->ExportedTargets.insert(te->Target).second) {
|
||||||
|
diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx
|
||||||
|
index b99e6a3c6c..ff08ee41ef 100644
|
||||||
|
--- a/Source/cmInstallCommand.cxx
|
||||||
|
+++ b/Source/cmInstallCommand.cxx
|
||||||
|
@@ -461,6 +461,13 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
|
||||||
|
std::unique_ptr<cmInstallFilesGenerator> publicHeaderGenerator;
|
||||||
|
std::unique_ptr<cmInstallFilesGenerator> resourceGenerator;
|
||||||
|
|
||||||
|
+ // Avoid selecting default destinations for PUBLIC_HEADER and
|
||||||
|
+ // PRIVATE_HEADER if any artifacts are specified.
|
||||||
|
+ bool artifactsSpecified = false;
|
||||||
|
+
|
||||||
|
+ // Track whether this is a namelink-only rule.
|
||||||
|
+ bool namelinkOnly = false;
|
||||||
|
+
|
||||||
|
auto addTargetExport = [&]() {
|
||||||
|
// Add this install rule to an export if one was specified.
|
||||||
|
if (!exports.empty()) {
|
||||||
|
@@ -475,20 +482,13 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
|
||||||
|
te->ObjectsGenerator = objectGenerator.get();
|
||||||
|
te->InterfaceIncludeDirectories =
|
||||||
|
cmJoin(includesArgs.GetIncludeDirs(), ";");
|
||||||
|
-
|
||||||
|
+ te->NamelinkOnly = namelinkOnly;
|
||||||
|
helper.Makefile->GetGlobalGenerator()
|
||||||
|
->GetExportSets()[exports]
|
||||||
|
.AddTargetExport(std::move(te));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
- // Avoid selecting default destinations for PUBLIC_HEADER and
|
||||||
|
- // PRIVATE_HEADER if any artifacts are specified.
|
||||||
|
- bool artifactsSpecified = false;
|
||||||
|
-
|
||||||
|
- // Track whether this is a namelink-only rule.
|
||||||
|
- bool namelinkOnly = false;
|
||||||
|
-
|
||||||
|
switch (target.GetType()) {
|
||||||
|
case cmStateEnums::SHARED_LIBRARY: {
|
||||||
|
// Shared libraries are handled differently on DLL and non-DLL
|
||||||
|
@@ -497,6 +497,7 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
|
||||||
|
if (target.IsDLLPlatform()) {
|
||||||
|
// When in namelink only mode skip all libraries on Windows.
|
||||||
|
if (namelinkMode == cmInstallTargetGenerator::NamelinkModeOnly) {
|
||||||
|
+ namelinkOnly = true;
|
||||||
|
addTargetExport();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
@@ -529,6 +530,7 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
|
||||||
|
if (target.IsFrameworkOnApple()) {
|
||||||
|
// When in namelink only mode skip frameworks.
|
||||||
|
if (namelinkMode == cmInstallTargetGenerator::NamelinkModeOnly) {
|
||||||
|
+ namelinkOnly = true;
|
||||||
|
addTargetExport();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
@@ -574,6 +576,7 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
|
||||||
|
if (target.IsFrameworkOnApple()) {
|
||||||
|
// When in namelink only mode skip frameworks.
|
||||||
|
if (namelinkMode == cmInstallTargetGenerator::NamelinkModeOnly) {
|
||||||
|
+ namelinkOnly = true;
|
||||||
|
addTargetExport();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
diff --git a/Source/cmTargetExport.h b/Source/cmTargetExport.h
|
||||||
|
index cb4d8dae44..1e38d84923 100644
|
||||||
|
--- a/Source/cmTargetExport.h
|
||||||
|
+++ b/Source/cmTargetExport.h
|
||||||
|
@@ -31,4 +31,6 @@ public:
|
||||||
|
cmInstallFilesGenerator* HeaderGenerator;
|
||||||
|
std::string InterfaceIncludeDirectories;
|
||||||
|
///@}
|
||||||
|
+
|
||||||
|
+ bool NamelinkOnly = false;
|
||||||
|
};
|
||||||
|
diff --git a/Tests/RunCMake/export/RunCMakeTest.cmake b/Tests/RunCMake/export/RunCMakeTest.cmake
|
||||||
|
index 95c8d5cf45..0e6020f0f4 100644
|
||||||
|
--- a/Tests/RunCMake/export/RunCMakeTest.cmake
|
||||||
|
+++ b/Tests/RunCMake/export/RunCMakeTest.cmake
|
||||||
|
@@ -17,3 +17,4 @@ run_cmake(DependOnNotExport)
|
||||||
|
run_cmake(DependOnDoubleExport)
|
||||||
|
run_cmake(UnknownExport)
|
||||||
|
run_cmake(NamelinkOnlyExport)
|
||||||
|
+run_cmake(SeparateNamelinkExport)
|
||||||
|
diff --git a/Tests/RunCMake/export/SeparateNamelinkExport.cmake b/Tests/RunCMake/export/SeparateNamelinkExport.cmake
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..b006aea128
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Tests/RunCMake/export/SeparateNamelinkExport.cmake
|
||||||
|
@@ -0,0 +1,16 @@
|
||||||
|
+enable_language(CXX)
|
||||||
|
+add_library(foo SHARED empty.cpp)
|
||||||
|
+install(TARGETS foo EXPORT fooExport
|
||||||
|
+ RUNTIME DESTINATION bin
|
||||||
|
+ LIBRARY
|
||||||
|
+ DESTINATION lib
|
||||||
|
+ COMPONENT runtime
|
||||||
|
+ NAMELINK_SKIP
|
||||||
|
+)
|
||||||
|
+install(TARGETS foo EXPORT fooExport
|
||||||
|
+ LIBRARY
|
||||||
|
+ DESTINATION lib
|
||||||
|
+ COMPONENT development
|
||||||
|
+ NAMELINK_ONLY
|
||||||
|
+)
|
||||||
|
+export(EXPORT fooExport FILE "${CMAKE_CURRENT_BINARY_DIR}/foo.cmake")
|
||||||
|
diff --git a/Tests/RunCMake/install/EXPORT-SeparateNamelink.cmake b/Tests/RunCMake/install/EXPORT-SeparateNamelink.cmake
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..5c6fa10d18
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Tests/RunCMake/install/EXPORT-SeparateNamelink.cmake
|
||||||
|
@@ -0,0 +1,19 @@
|
||||||
|
+enable_language(C)
|
||||||
|
+add_library(foo SHARED empty.c)
|
||||||
|
+install(TARGETS foo EXPORT fooExport
|
||||||
|
+ RUNTIME DESTINATION bin
|
||||||
|
+ LIBRARY
|
||||||
|
+ DESTINATION lib
|
||||||
|
+ COMPONENT runtime
|
||||||
|
+ NAMELINK_SKIP
|
||||||
|
+)
|
||||||
|
+install(TARGETS foo EXPORT fooExport
|
||||||
|
+ LIBRARY
|
||||||
|
+ DESTINATION lib
|
||||||
|
+ COMPONENT development
|
||||||
|
+ NAMELINK_ONLY
|
||||||
|
+)
|
||||||
|
+install(EXPORT fooExport
|
||||||
|
+ DESTINATION "lib/cmake/"
|
||||||
|
+ FILE "foo.cmake"
|
||||||
|
+)
|
||||||
|
diff --git a/Tests/RunCMake/install/RunCMakeTest.cmake b/Tests/RunCMake/install/RunCMakeTest.cmake
|
||||||
|
index 5aab88ca80..d64d88b770 100644
|
||||||
|
--- a/Tests/RunCMake/install/RunCMakeTest.cmake
|
||||||
|
+++ b/Tests/RunCMake/install/RunCMakeTest.cmake
|
||||||
|
@@ -78,6 +78,7 @@ run_cmake(TARGETS-DESTINATION-bad)
|
||||||
|
run_cmake(EXPORT-OldIFace)
|
||||||
|
run_cmake(EXPORT-UnknownExport)
|
||||||
|
run_cmake(EXPORT-NamelinkOnly)
|
||||||
|
+run_cmake(EXPORT-SeparateNamelink)
|
||||||
|
run_cmake(CMP0062-OLD)
|
||||||
|
run_cmake(CMP0062-NEW)
|
||||||
|
run_cmake(CMP0062-WARN)
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
@ -1,3 +1,10 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Dec 15 15:58:39 UTC 2020 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||||
|
|
||||||
|
- Add 5556.patch: export: Do not fail generation for separate
|
||||||
|
namelink only case. Fixes regression, blocking other packages
|
||||||
|
from build,
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Nov 24 23:13:21 UTC 2020 - Andreas Stieger <andreas.stieger@gmx.de>
|
Tue Nov 24 23:13:21 UTC 2020 - Andreas Stieger <andreas.stieger@gmx.de>
|
||||||
|
|
||||||
|
@ -55,6 +55,8 @@ Patch0: cmake-fix-ruby-test.patch
|
|||||||
# Search for python interpreters from newest to oldest rather then picking up /usr/bin/python as first choice
|
# Search for python interpreters from newest to oldest rather then picking up /usr/bin/python as first choice
|
||||||
Patch1: feature-suse-python-interp-search-order.patch
|
Patch1: feature-suse-python-interp-search-order.patch
|
||||||
Patch2: cmake-fix-png-include-dir.patch
|
Patch2: cmake-fix-png-include-dir.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 5556.patch dimstar@opensuse.org -- export: Do not fail generation for separate namelink only case
|
||||||
|
Patch3: https://gitlab.kitware.com/cmake/cmake/-/merge_requests/5556.patch
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
|
Loading…
Reference in New Issue
Block a user