diff mbox series

[3/4] libcomps: Backport patch to support builds with CMake 4+

Message ID 20250627120633.4084140-4-Moritz.Haase@bmw.de
State Accepted, archived
Commit 42e8b8085abcbdacb664645fd7c2d61511ee95f7
Headers show
Series cmake: Major version bump to 4.0.3 | expand

Commit Message

Haase Moritz, JD-62 June 27, 2025, 12:06 p.m. UTC
PR [0] has been merged upstream, but there hasn't been a release containing it
yet.

[0]: https://github.com/rpm-software-management/libcomps/pull/119

Signed-off-by: Moritz Haase <Moritz.Haase@bmw.de>
---
 ...libcomps-Support-builds-with-CMake-4.patch | 131 ++++++++++++++++++
 .../libcomps/libcomps_0.1.21.bb               |   1 +
 2 files changed, 132 insertions(+)
 create mode 100644 meta/recipes-devtools/libcomps/libcomps/0001-libcomps-Support-builds-with-CMake-4.patch

Comments

patchtest@automation.yoctoproject.org June 27, 2025, 12:17 p.m. UTC | #1
Thank you for your submission. Patchtest identified one
or more issues with the patch. Please see the log below for
more information:

---
Testing patch /home/patchtest/share/mboxes/3-4-libcomps-Backport-patch-to-support-builds-with-CMake-4.patch

FAIL: test Signed-off-by presence: A patch file has been added without a Signed-off-by tag: '0001-libcomps-Support-builds-with-CMake-4.patch' (test_patch.TestPatch.test_signed_off_by_presence)

PASS: pretest src uri left files (test_metadata.TestMetadata.pretest_src_uri_left_files)
PASS: test CVE check ignore (test_metadata.TestMetadata.test_cve_check_ignore)
PASS: test CVE tag format (test_patch.TestPatch.test_cve_tag_format)
PASS: test Signed-off-by presence (test_mbox.TestMbox.test_signed_off_by_presence)
PASS: test Upstream-Status presence (test_patch.TestPatch.test_upstream_status_presence_format)
PASS: test author valid (test_mbox.TestMbox.test_author_valid)
PASS: test commit message presence (test_mbox.TestMbox.test_commit_message_presence)
PASS: test commit message user tags (test_mbox.TestMbox.test_commit_message_user_tags)
PASS: test lic files chksum modified not mentioned (test_metadata.TestMetadata.test_lic_files_chksum_modified_not_mentioned)
PASS: test max line length (test_metadata.TestMetadata.test_max_line_length)
PASS: test mbox format (test_mbox.TestMbox.test_mbox_format)
PASS: test non-AUH upgrade (test_mbox.TestMbox.test_non_auh_upgrade)
PASS: test shortlog format (test_mbox.TestMbox.test_shortlog_format)
PASS: test shortlog length (test_mbox.TestMbox.test_shortlog_length)
PASS: test src uri left files (test_metadata.TestMetadata.test_src_uri_left_files)
PASS: test target mailing list (test_mbox.TestMbox.test_target_mailing_list)

SKIP: pretest pylint: No python related patches, skipping test (test_python_pylint.PyLint.pretest_pylint)
SKIP: test bugzilla entry format: No bug ID found (test_mbox.TestMbox.test_bugzilla_entry_format)
SKIP: test lic files chksum presence: No added recipes, skipping test (test_metadata.TestMetadata.test_lic_files_chksum_presence)
SKIP: test license presence: No added recipes, skipping test (test_metadata.TestMetadata.test_license_presence)
SKIP: test pylint: No python related patches, skipping test (test_python_pylint.PyLint.test_pylint)
SKIP: test series merge on head: Merge test is disabled for now (test_mbox.TestMbox.test_series_merge_on_head)
SKIP: test summary presence: No added recipes, skipping test (test_metadata.TestMetadata.test_summary_presence)

---

Please address the issues identified and
submit a new revision of the patch, or alternatively, reply to this
email with an explanation of why the patch should be accepted. If you
believe these results are due to an error in patchtest, please submit a
bug at https://bugzilla.yoctoproject.org/ (use the 'Patchtest' category
under 'Yocto Project Subprojects'). For more information on specific
failures, see: https://wiki.yoctoproject.org/wiki/Patchtest. Thank
you!
Quentin Schulz June 27, 2025, 3:03 p.m. UTC | #2
Hi Moritz,

For this patch and the next one, I believe we should be able to put them 
in git history BEFORE the cmake update to 4.0?

My understanding from reading the patch logs is that CMake 4 won't build 
if advertised minimum Cmake version for a project is below 3.5?

Considering we are at Cmake 3.31.x already, porting this patch first 
shouldn't change anything in current behavior?

Otherwise, the issue is that we update Cmake to 4.0 in commit A but 
break libcomps (and createrepo-c) until commit A+1. Reordering the 
commits should allow to keep bisectability intact?

What do you think?

Cheers,
Quentin
diff mbox series

Patch

diff --git a/meta/recipes-devtools/libcomps/libcomps/0001-libcomps-Support-builds-with-CMake-4.patch b/meta/recipes-devtools/libcomps/libcomps/0001-libcomps-Support-builds-with-CMake-4.patch
new file mode 100644
index 0000000000..d415e9c885
--- /dev/null
+++ b/meta/recipes-devtools/libcomps/libcomps/0001-libcomps-Support-builds-with-CMake-4.patch
@@ -0,0 +1,131 @@ 
+From 702ec1423fb9b53244b902923fd87ef19b63a7f5 Mon Sep 17 00:00:00 2001
+From: Moritz Haase <Moritz.Haase@bmw.de>
+Date: Mon, 23 Jun 2025 08:32:18 +0200
+Subject: [PATCH] libcomps: Support builds with CMake 4+
+
+- Bump minimum required version to 3.10, the lowest one CMake 4+ don't complain
+  about. It's also possible to use 3.5, but that results in a deprecation
+  warning. The 'cmake_minimum_required()' invocation has been moved before the
+  initial 'project()' call as CMake complained about the wrong order.
+
+- Set policy CMP0148 [0] to OLD to unblock build without additional changes.
+  Eventually, the usage of the 'PythonInterp' and 'PythonLibs' find modules will
+  be need to be updated to use 'Python3' instead.
+
+- Set policy CMP0175 [1] to NEW and fix warnings.
+
+- Fix the 'No TARGET ... has been created in this directory' error in
+  'src/python'.
+
+- Fix 'Utility target <foo> must not be used as the target of a
+  target_link_libraries call' errors (see [2]).
+
+- Mark the 'check' library as required when tests are enabled to prevent test
+  targets from linking a non-existing library in case it's not installed.
+
+[0]: https://cmake.org/cmake/help/latest/policy/CMP0148.html
+[1]: https://cmake.org/cmake/help/latest/policy/CMP0175.html
+[2]: https://cmake.org/cmake/help/latest/policy/CMP0039.html
+
+Upstream-Status: Backport [702ec1423fb9b53244b902923fd87ef19b63a7f5]
+---
+ README.md                               | 3 +--
+ libcomps/CMakeLists.txt                 | 7 +++++--
+ libcomps/src/python/docs/CMakeLists.txt | 3 ++-
+ libcomps/src/python/pycopy.cmake        | 7 ++++---
+ libcomps/tests/CMakeLists.txt           | 2 --
+ 5 files changed, 12 insertions(+), 10 deletions(-)
+
+diff --git a/README.md b/README.md
+index 7f8314dd3f70d131c4d399f069d3d7bb77dcff02..24bf8a226d50b7b9b5372f98b52650ff4467c3d6 100644
+--- a/README.md
++++ b/README.md
+@@ -27,7 +27,7 @@ for python bindings:
+
+ for C library tests:
+
+-*   check http://check.sourceforge.net/
++*   check https://github.com/libcheck/check
+
+ for documentation build:
+
+@@ -128,4 +128,3 @@ Here's the most direct way to get your work merged into the project.
+
+ 1. Push the branch to your fork
+ 1. Send a pull request for your branch
+-
+diff --git a/libcomps/CMakeLists.txt b/libcomps/CMakeLists.txt
+index d8d628af1a8b863b6173ff11615a59aa58d8235e..3957e63a311fc42c85516c0e66fc6f598194cb8f 100644
+--- a/libcomps/CMakeLists.txt
++++ b/libcomps/CMakeLists.txt
+@@ -1,5 +1,8 @@
++cmake_minimum_required (VERSION 3.10)
+ project(libcomps C)
+-cmake_minimum_required (VERSION 2.8.10)
++
++cmake_policy(SET CMP0148 OLD)
++cmake_policy(SET CMP0175 NEW)
+
+ include (GNUInstallDirs)
+ include (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
+@@ -32,7 +35,7 @@ include_directories("${PROJECT_SOURCE_DIR}/src")
+ #include_directories("${PROJECT_SOURCE_DIR}/src/libcomps")
+
+ if (ENABLE_TESTS)
+-  find_library(CHECK_LIBRARY NAMES check)
++  find_library(CHECK_LIBRARY REQUIRED NAMES check)
+ endif()
+ find_library(EXPAT_LIBRARY NAMES expat)
+
+diff --git a/libcomps/src/python/docs/CMakeLists.txt b/libcomps/src/python/docs/CMakeLists.txt
+index c4b388cb4a4bb2d962a625a448efcfee14ef71b3..9c92b2dacf4a2cb76f461b8038217cc8e895a369 100644
+--- a/libcomps/src/python/docs/CMakeLists.txt
++++ b/libcomps/src/python/docs/CMakeLists.txt
+@@ -26,7 +26,8 @@ add_dependencies(pydocs pycomps)
+ include(../pycopy.cmake)
+ add_custom_command(TARGET pydocs PRE_BUILD COMMAND set -E $ENV{LD_LIBRARY_PATH} "${LIBCOMPS_OUT}:$ENV{LD_LIBRARY_PATH}")
+
+-add_custom_command(TARGET pydocs COMMAND ${PYTHON_EXECUTABLE} ${SPHINX_EXECUTABLE} -E -b html
++add_custom_command(TARGET pydocs POST_BUILD
++                                 COMMAND ${PYTHON_EXECUTABLE} ${SPHINX_EXECUTABLE} -E -b html
+                                   "${CMAKE_CURRENT_SOURCE_DIR}/doc-sources/"
+                                   "${CMAKE_CURRENT_BINARY_DIR}/html/"
+                                  COMMENT "LDLP $ENV{LD_LIBRARY_PATH}")
+diff --git a/libcomps/src/python/pycopy.cmake b/libcomps/src/python/pycopy.cmake
+index b22f83595c09b4af8f1c2e49ddbd7755f4c97f0b..0e99e38d791ffd13496bd8fbbf61cd7701e543b7 100644
+--- a/libcomps/src/python/pycopy.cmake
++++ b/libcomps/src/python/pycopy.cmake
+@@ -6,9 +6,10 @@ math (EXPR len "${len} - 1")
+
+ #set(pycopy "py${pversion}-copy")
+
+-#if (NOT TARGET ${pycopy})
++if (NOT TARGET ${pycopy})
++    add_custom_target(${pycopy} DEPENDS pycomps)
++endif()
+
+-#add_custom_target(${pycopy} DEPENDS pycomps)
+ set (pycomps_SRCDIR "${PROJECT_SOURCE_DIR}/src/python/src/")
+ set (pycomps_TESTDIR "${PROJECT_SOURCE_DIR}/src/python/tests/")
+ set (pycomps_LIBPATH ${PYCOMPS_LIB_PATH})#"${PROJECT_BINARY_DIR}/src/python/src/python${pversion}")
+@@ -16,7 +17,7 @@ set (pycomps_LIBPATH ${PYCOMPS_LIB_PATH})#"${PROJECT_BINARY_DIR}/src/python/src/
+ #add_custom_command(TARGET pycopy PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
+ #                    make_directory "${CP_DST}")
+
+-add_custom_command(TARGET ${pycopy} COMMAND ${CMAKE_COMMAND} -E
++add_custom_command(TARGET ${pycopy} POST_BUILD COMMAND ${CMAKE_COMMAND} -E
+                     make_directory ${pycomps_LIBPATH}/libcomps/comps/)
+
+ foreach(x RANGE 0 ${len})
+diff --git a/libcomps/tests/CMakeLists.txt b/libcomps/tests/CMakeLists.txt
+index 23ced7450afa02977c63f9374a4fee33ae596d98..9d6e428e18d5a234c7be74d957c25961dea30050 100644
+--- a/libcomps/tests/CMakeLists.txt
++++ b/libcomps/tests/CMakeLists.txt
+@@ -87,7 +87,5 @@ add_custom_target(test_parse_run
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+                    DEPENDS test_parse
+                    COMMENT "Running comps_parse test")
+-target_link_libraries(test_parse_run libcomps)
+-target_link_libraries(test_comps_run libcomps)
+
+ add_dependencies(ctest test_comps_run test_parse_run)
diff --git a/meta/recipes-devtools/libcomps/libcomps_0.1.21.bb b/meta/recipes-devtools/libcomps/libcomps_0.1.21.bb
index 5709f3e69f..9429c703e1 100644
--- a/meta/recipes-devtools/libcomps/libcomps_0.1.21.bb
+++ b/meta/recipes-devtools/libcomps/libcomps_0.1.21.bb
@@ -5,6 +5,7 @@  LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "git://github.com/rpm-software-management/libcomps.git;branch=master;protocol=https \
+           file://0001-libcomps-Support-builds-with-CMake-4.patch \
            file://0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
            "