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;

Reply via email to