Explorar o código

CPack/Deb: handle shlibs file generation when SOVERSION set to 0

Setting CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS did not
auto generate shlibs control file when .so version
of the library was set to 0.

Fixes #17318
Domen Vrankar %!s(int64=8) %!d(string=hai) anos
pai
achega
5784ab8fca

+ 1 - 1
Modules/CPackDeb.cmake

@@ -987,7 +987,7 @@ function(cpack_deb_prepare_package_vars)
     if(READELF_EXECUTABLE)
       foreach(_FILE IN LISTS CPACK_DEB_SHARED_OBJECT_FILES)
         extract_so_info("${_FILE}" libname soversion)
-        if(libname AND soversion)
+        if(libname AND DEFINED soversion)
           list(APPEND CPACK_DEBIAN_PACKAGE_SHLIBS_LIST
                "${libname} ${soversion} ${CPACK_DEBIAN_PACKAGE_NAME} (${CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY} ${CPACK_DEBIAN_PACKAGE_VERSION})")
         else()

+ 1 - 1
Tests/RunCMake/CPack/RunCMakeTest.cmake

@@ -12,7 +12,7 @@ run_cpack_test(DIST "RPM" false "MONOLITHIC")
 run_cpack_test(EMPTY_DIR "RPM;DEB;TGZ" true "MONOLITHIC;COMPONENT")
 run_cpack_test(VERSION "RPM;DEB" false "MONOLITHIC;COMPONENT")
 run_cpack_test(EXTRA "DEB" false "COMPONENT")
-run_cpack_test(GENERATE_SHLIBS "DEB" true "COMPONENT")
+run_cpack_test_subtests(GENERATE_SHLIBS "soversion_not_zero;soversion_zero" "DEB" true "COMPONENT")
 run_cpack_test(GENERATE_SHLIBS_LDCONFIG "DEB" true "COMPONENT")
 run_cpack_test(INSTALL_SCRIPTS "RPM" false "COMPONENT")
 run_cpack_test(LONG_FILENAMES "DEB" false "MONOLITHIC")

+ 6 - 1
Tests/RunCMake/CPack/tests/GENERATE_SHLIBS/VerifyResult.cmake

@@ -1,4 +1,9 @@
-set(shlibs_shlibs "^libtest_lib 0\\.8 generate_shlibs \\(\\= 0\\.1\\.1\\)\n$")
+if(RunCMake_SUBTEST_SUFFIX STREQUAL "soversion_not_zero")
+  set(shlibs_shlibs "^libtest_lib 0\\.8 generate_shlibs \\(\\= 0\\.1\\.1\\)\n$")
+else() # soversion_zero
+  set(shlibs_shlibs "^libtest_lib 0 generate_shlibs \\(\\= 0\\.1\\.1\\)\n$")
+endif()
+
 # optional dot at the end of permissions regex is for SELinux enabled systems
 set(shlibs_shlibs_permissions_regex "-rw-r--r--\.? .*")
 verifyDebControl("${FOUND_FILE_1}" "shlibs" "shlibs")

+ 6 - 1
Tests/RunCMake/CPack/tests/GENERATE_SHLIBS/test.cmake

@@ -9,6 +9,11 @@ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_lib.hpp"
 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_lib.cpp"
     "#include \"test_lib.hpp\"\nint test_lib() {return 0;}\n")
 add_library(test_lib SHARED "${CMAKE_CURRENT_BINARY_DIR}/test_lib.cpp")
-set_target_properties(test_lib PROPERTIES SOVERSION "0.8")
+
+if(RunCMake_SUBTEST_SUFFIX STREQUAL "soversion_not_zero")
+  set_target_properties(test_lib PROPERTIES SOVERSION "0.8")
+else() # soversion_zero
+  set_target_properties(test_lib PROPERTIES SOVERSION "0")
+endif()
 
 install(TARGETS test_lib DESTINATION foo COMPONENT libs)