This is an automated email from the ASF dual-hosted git repository. fgerlits pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 62567962902d9cf14ec4a24c4164c419715508c7 Author: Gabor Gyimesi <[email protected]> AuthorDate: Wed Jun 18 13:45:11 2025 +0200 MINIFICPP-2579 Upgrade libarchive to v3.8.1 Signed-off-by: Ferenc Gerlits <[email protected]> Closes #1982 --- cmake/BundledLibArchive.cmake | 31 ++++++++-------- thirdparty/libarchive/libarchive.patch | 66 ++++++++-------------------------- 2 files changed, 29 insertions(+), 68 deletions(-) diff --git a/cmake/BundledLibArchive.cmake b/cmake/BundledLibArchive.cmake index 5191dbd92..57a195ac8 100644 --- a/cmake/BundledLibArchive.cmake +++ b/cmake/BundledLibArchive.cmake @@ -16,20 +16,19 @@ # under the License. function(use_bundled_libarchive SOURCE_DIR BINARY_DIR) - # Define patch step set(PC "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/libarchive/libarchive.patch") - # Define byproducts if (WIN32) - set(BYPRODUCT "lib/archive_static.lib") + set(BYPRODUCT "lib/archive.lib") else() set(BYPRODUCT "lib/libarchive.a") endif() - # Set build options set(LIBARCHIVE_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libarchive-install" + -DCMAKE_INSTALL_LIBDIR=lib -DLIBARCHIVE_STATIC=1 + -DBUILD_SHARED_LIBS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_NETTLE=OFF -DENABLE_LIBB2=OFF @@ -48,7 +47,8 @@ function(use_bundled_libarchive SOURCE_DIR BINARY_DIR) -DENABLE_ICONV=OFF -DENABLE_TEST=OFF -DENABLE_WERROR=OFF - -DENABLE_OPENSSL=ON) + -DENABLE_OPENSSL=ON + -DENABLE_UNZIP=OFF) if (NOT ENABLE_LZMA) list(APPEND LIBARCHIVE_CMAKE_ARGS -DENABLE_LZMA=OFF) @@ -64,11 +64,10 @@ function(use_bundled_libarchive SOURCE_DIR BINARY_DIR) append_third_party_passthrough_args(LIBARCHIVE_CMAKE_ARGS "${LIBARCHIVE_CMAKE_ARGS}") - # Build project ExternalProject_Add( libarchive-external - URL "https://github.com/libarchive/libarchive/releases/download/v3.4.2/libarchive-3.4.2.tar.gz" - URL_HASH "SHA256=b60d58d12632ecf1e8fad7316dc82c6b9738a35625746b47ecdcaf4aed176176" + URL "https://github.com/libarchive/libarchive/releases/download/v3.8.1/libarchive-3.8.1.tar.gz" + URL_HASH "SHA256=bde832a5e3344dc723cfe9cc37f8e54bde04565bfe6f136bc1bd31ab352e9fab" SOURCE_DIR "${BINARY_DIR}/thirdparty/libarchive-src" LIST_SEPARATOR % # This is needed for passing semicolon-separated lists CMAKE_ARGS ${LIBARCHIVE_CMAKE_ARGS} @@ -79,7 +78,6 @@ function(use_bundled_libarchive SOURCE_DIR BINARY_DIR) TLS_VERIFY TRUE ) - # Set dependencies add_dependencies(libarchive-external ZLIB::ZLIB OpenSSL::Crypto) if (ENABLE_LZMA) add_dependencies(libarchive-external LibLZMA::LibLZMA) @@ -88,24 +86,25 @@ function(use_bundled_libarchive SOURCE_DIR BINARY_DIR) add_dependencies(libarchive-external BZip2::BZip2) endif() - # Set variables set(LIBARCHIVE_FOUND "YES" CACHE STRING "" FORCE) set(LIBARCHIVE_INCLUDE_DIRS "${BINARY_DIR}/thirdparty/libarchive-install/include" CACHE STRING "" FORCE) set(LIBARCHIVE_LIBRARY "${BINARY_DIR}/thirdparty/libarchive-install/${BYPRODUCT}" CACHE STRING "" FORCE) set(LIBARCHIVE_LIBRARIES ${LIBARCHIVE_LIBRARY} CACHE STRING "" FORCE) - # Create imported targets add_library(LibArchive::LibArchive STATIC IMPORTED) set_target_properties(LibArchive::LibArchive PROPERTIES IMPORTED_LOCATION "${LIBARCHIVE_LIBRARY}") add_dependencies(LibArchive::LibArchive libarchive-external) - set_property(TARGET LibArchive::LibArchive APPEND PROPERTY INTERFACE_LINK_LIBRARIES ZLIB::ZLIB OpenSSL::Crypto) + target_link_libraries(LibArchive::LibArchive INTERFACE ZLIB::ZLIB OpenSSL::Crypto) if (ENABLE_LZMA) - set_property(TARGET LibArchive::LibArchive APPEND PROPERTY INTERFACE_LINK_LIBRARIES LibLZMA::LibLZMA) + target_link_libraries(LibArchive::LibArchive INTERFACE LibLZMA::LibLZMA) endif() if (ENABLE_BZIP2) - set_property(TARGET LibArchive::LibArchive APPEND PROPERTY INTERFACE_LINK_LIBRARIES BZip2::BZip2) + target_link_libraries(LibArchive::LibArchive INTERFACE BZip2::BZip2) endif() file(MAKE_DIRECTORY ${LIBARCHIVE_INCLUDE_DIRS}) - set_property(TARGET LibArchive::LibArchive APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${LIBARCHIVE_INCLUDE_DIRS}) - set_property(TARGET LibArchive::LibArchive APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "LIBARCHIVE_STATIC=1") + target_include_directories(LibArchive::LibArchive INTERFACE ${LIBARCHIVE_INCLUDE_DIRS}) + target_compile_definitions(LibArchive::LibArchive INTERFACE "LIBARCHIVE_STATIC=1") + if (WIN32) + target_link_libraries(LibArchive::LibArchive INTERFACE xmllite) + endif() endfunction(use_bundled_libarchive) diff --git a/thirdparty/libarchive/libarchive.patch b/thirdparty/libarchive/libarchive.patch index 753c74121..ecd50e121 100644 --- a/thirdparty/libarchive/libarchive.patch +++ b/thirdparty/libarchive/libarchive.patch @@ -1,8 +1,9 @@ -diff -rupN orig/CMakeLists.txt patched/CMakeLists.txt ---- orig/CMakeLists.txt 2020-02-11 22:33:47.000000000 +0100 -+++ patched/CMakeLists.txt 2020-03-26 00:12:47.000000000 +0100 -@@ -6,7 +6,7 @@ endif() - # +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4c1f8770..642ac000 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.17 FATAL_ERROR) + PROJECT(libarchive C) # -SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake") @@ -10,10 +11,11 @@ diff -rupN orig/CMakeLists.txt patched/CMakeLists.txt if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${libarchive_BINARY_DIR}/bin) endif() -diff -rupN orig/libarchive/CMakeLists.txt patched/libarchive/CMakeLists.txt ---- orig/libarchive/CMakeLists.txt 2020-01-28 00:19:39.000000000 +0100 -+++ patched/libarchive/CMakeLists.txt 2020-03-26 00:54:15.000000000 +0100 -@@ -166,51 +166,6 @@ SET(libarchive_SOURCES +diff --git a/libarchive/CMakeLists.txt b/libarchive/CMakeLists.txt +index fd997db4..ce1ad6dd 100644 +--- a/libarchive/CMakeLists.txt ++++ b/libarchive/CMakeLists.txt +@@ -174,51 +174,6 @@ SET(libarchive_SOURCES xxhash.c ) @@ -65,52 +67,12 @@ diff -rupN orig/libarchive/CMakeLists.txt patched/libarchive/CMakeLists.txt IF(WIN32 AND NOT CYGWIN) LIST(APPEND libarchive_SOURCES archive_entry_copy_bhfi.c) LIST(APPEND libarchive_SOURCES archive_read_disk_windows.c) -@@ -235,12 +190,6 @@ ELSEIF(ARCHIVE_ACL_SUNOS) - LIST(APPEND libarchive_SOURCES archive_disk_acl_sunos.c) - ENDIF() - --# Libarchive is a shared library --ADD_LIBRARY(archive SHARED ${libarchive_SOURCES} ${include_HEADERS}) --TARGET_INCLUDE_DIRECTORIES(archive PUBLIC .) --TARGET_LINK_LIBRARIES(archive ${ADDITIONAL_LIBS}) --SET_TARGET_PROPERTIES(archive PROPERTIES SOVERSION ${SOVERSION}) -- - # archive_static is a static library - ADD_LIBRARY(archive_static STATIC ${libarchive_SOURCES} ${include_HEADERS}) - TARGET_LINK_LIBRARIES(archive_static ${ADDITIONAL_LIBS}) -@@ -253,12 +202,9 @@ ENDIF(NOT WIN32 OR CYGWIN) - - IF(ENABLE_INSTALL) - # How to install the libraries -- INSTALL(TARGETS archive archive_static -+ INSTALL(TARGETS archive_static +@@ -282,8 +237,5 @@ IF(ENABLE_INSTALL) RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib) + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - INSTALL_MAN(${libarchive_MANS}) INSTALL(FILES ${include_HEADERS} DESTINATION include) ENDIF() - -add_subdirectory(test) -diff -rupN orig/libarchive/archive_read_support_format_rar5.c patched/libarchive/archive_read_support_format_rar5.c ---- orig/libarchive/archive_read_support_format_rar5.c 2020-02-11 00:30:01.000000000 +0100 -+++ patched/libarchive/archive_read_support_format_rar5.c 2020-03-26 17:10:03.000000000 +0100 -@@ -3084,12 +3084,17 @@ static int do_uncompress_block(struct ar - - continue; - } -- -+#ifndef _MSC_VER -+/* -+ * This is unreachable code (seemingly by design), and compilation on MSVC fails because of that, -+ * so we remove it when compiling with MSVC. -+ */ - /* The program counter shouldn't reach here. */ - archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, - "Unsupported block code: 0x%x", num); - - return ARCHIVE_FATAL; -+#endif - } - - return ARCHIVE_OK;
