Skip to content

Commit

Permalink
libarchive: add version 3.7.5
Browse files Browse the repository at this point in the history
  • Loading branch information
toge committed Sep 19, 2024
1 parent 17f3c60 commit 001b771
Show file tree
Hide file tree
Showing 7 changed files with 209 additions and 2 deletions.
16 changes: 16 additions & 0 deletions recipes/libarchive/all/conandata.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
sources:
"3.7.5":
url: "https://github.com/libarchive/libarchive/releases/download/v3.7.5/libarchive-3.7.5.tar.xz"
sha256: "ca74ff8f99dd40ab8a8274424d10a12a7ec3f4428dd35aee9fdda8bdb861b570"
"3.7.4":
url: "https://github.com/libarchive/libarchive/releases/download/v3.7.4/libarchive-3.7.4.tar.xz"
sha256: "f887755c434a736a609cbd28d87ddbfbe9d6a3bb5b703c22c02f6af80a802735"
Expand All @@ -12,6 +15,19 @@ sources:
url: "https://github.com/libarchive/libarchive/releases/download/v3.7.1/libarchive-3.7.1.tar.xz"
sha256: "b17403ce670ff18d8e06fea05a9ea9accf70678c88f1b9392a2e29b51127895f"
patches:
"3.7.5":
- patch_file: "patches/0001-3.7.5-zlib-winapi.patch"
patch_description: "Remove broken ZLIB WINAPI check"
patch_type: "portability"
- patch_file: "patches/0003-3.7.5-cmake.patch"
patch_description: "Make CMake build-system compatible with Conan"
patch_type: "conan"
- patch_file: "patches/0005-3.7.5-try-compile-cmakedeps.patch"
patch_description: "Patch try_compile check to work with imported CMake targets from Conan packages"
patch_type: "conan"
- patch_file: "patches/0006-3.7.5-fix-msvc-build.patch"
patch_description: "Fix MSVC build"
patch_type: "conan"
"3.7.4":
- patch_file: "patches/0001-3.7.4-zlib-winapi.patch"
patch_description: "Remove broken ZLIB WINAPI check"
Expand Down
4 changes: 2 additions & 2 deletions recipes/libarchive/all/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
class LibarchiveConan(ConanFile):
name = "libarchive"
description = "Multi-format archive and compression library"
topics = "archive", "compression", "tar", "data-compressor", "file-compression"
license = "BSD-2-Clause"
url = "https://github.com/conan-io/conan-center-index"
homepage = "https://libarchive.org"
license = "BSD-2-Clause"
topics = ("archive", "compression", "tar", "data-compressor", "file-compression")
package_type = "library"
settings = "os", "arch", "compiler", "build_type"
options = {
Expand Down
35 changes: 35 additions & 0 deletions recipes/libarchive/all/patches/0001-3.7.5-zlib-winapi.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e23338e..582258c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -475,14 +475,14 @@ IF(ZLIB_FOUND)
#
# Test if ZLIB_WINAPI macro is needed to use.
#
- TRY_MACRO_FOR_LIBRARY(
- "${ZLIB_INCLUDE_DIR}" "${ZLIB_LIBRARIES}"
- RUNS
- "#include <zlib.h>\nint main() {uLong f = zlibCompileFlags(); return (f&(1U<<10))?0:-1; }"
- ZLIB_WINAPI)
- IF(ZLIB_WINAPI)
+ # TRY_MACRO_FOR_LIBRARY(
+ # "${ZLIB_INCLUDE_DIR}" "${ZLIB_LIBRARIES}"
+ # RUNS
+ # "#include <zlib.h>\nint main() {uLong f = zlibCompileFlags(); return (f&(1U<<10))?0:-1; }"
+ # ZLIB_WINAPI)
+ IF(TRUE)
ADD_DEFINITIONS(-DZLIB_WINAPI)
- ELSE(ZLIB_WINAPI)
+ ELSE()
# Test if a macro is needed for the library.
TRY_MACRO_FOR_LIBRARY(
"${ZLIB_INCLUDE_DIR}" "${ZLIB_LIBRARIES}"
@@ -492,7 +492,7 @@ IF(ZLIB_FOUND)
IF(ZLIB_DLL)
ADD_DEFINITIONS(-DZLIB_DLL)
ENDIF(ZLIB_DLL)
- ENDIF(ZLIB_WINAPI)
+ ENDIF()
ENDIF(WIN32 AND NOT CYGWIN)
ENDIF(ZLIB_FOUND)
MARK_AS_ADVANCED(CLEAR ZLIB_INCLUDE_DIR)
84 changes: 84 additions & 0 deletions recipes/libarchive/all/patches/0003-3.7.5-cmake.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 582258c..b59a7e2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,7 +16,7 @@ endif()
#
PROJECT(libarchive C)
#
-SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake")
+LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake")
if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${libarchive_BINARY_DIR}/bin)
endif()
@@ -469,7 +469,7 @@ ENDIF()
IF(ZLIB_FOUND)
SET(HAVE_LIBZ 1)
SET(HAVE_ZLIB_H 1)
- INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
+ LIST(APPEND ADDITIONAL_LIBS ZLIB::ZLIB)
LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES})
IF(WIN32 AND NOT CYGWIN)
#
@@ -560,7 +560,7 @@ ELSE(LIBLZMA_FOUND)
# LZMA not found and will not be used.
SET(HAVE_LZMA_STREAM_ENCODER_MT 0)
ENDIF(LIBLZMA_FOUND)
-MARK_AS_ADVANCED(CLEAR LIBLZMA_INCLUDE_DIR)
+MARK_AS_ADVANCED(CLEAR LIBLZMA_INCLUDE_DIRS)
MARK_AS_ADVANCED(CLEAR LIBLZMA_LIBRARY)

#
@@ -631,7 +631,7 @@ IF(ENABLE_LZ4)
ENDIF (LZ4_INCLUDE_DIR)

FIND_PATH(LZ4_INCLUDE_DIR lz4.h)
- FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4)
+ FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4 lz4_static liblz4_static)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR)
ELSE(ENABLE_LZ4)
@@ -854,7 +854,7 @@ ENDIF(ENABLE_NETTLE)
# Find OpenSSL
# (Except on Mac, where OpenSSL is deprecated.)
#
-IF(ENABLE_OPENSSL AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
+IF(ENABLE_OPENSSL)
FIND_PACKAGE(OpenSSL)
IF(OPENSSL_FOUND)
SET(HAVE_LIBCRYPTO 1)
diff --git a/libarchive/CMakeLists.txt b/libarchive/CMakeLists.txt
index dd0b280..2a31de6 100644
--- a/libarchive/CMakeLists.txt
+++ b/libarchive/CMakeLists.txt
@@ -255,6 +255,7 @@ IF(BUILD_SHARED_LIBS)
ENDIF(BUILD_SHARED_LIBS)

# archive_static is a static library
+IF(NOT BUILD_SHARED_LIBS)
ADD_LIBRARY(archive_static STATIC ${libarchive_SOURCES} ${include_HEADERS})
TARGET_INCLUDE_DIRECTORIES(archive_static PUBLIC .)
TARGET_LINK_LIBRARIES(archive_static ${ADDITIONAL_LIBS})
@@ -264,7 +265,7 @@ SET_TARGET_PROPERTIES(archive_static PROPERTIES COMPILE_DEFINITIONS
IF(NOT WIN32 OR CYGWIN OR NOT BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(archive_static PROPERTIES OUTPUT_NAME archive)
ENDIF(NOT WIN32 OR CYGWIN OR NOT BUILD_SHARED_LIBS)
-
+ENDIF()
IF(ENABLE_INSTALL)
# How to install the libraries
IF(BUILD_SHARED_LIBS)
@@ -272,11 +273,12 @@ IF(ENABLE_INSTALL)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
- ENDIF(BUILD_SHARED_LIBS)
+ ELSE()
INSTALL(TARGETS archive_static
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
+ ENDIF()
INSTALL_MAN(${libarchive_MANS})
INSTALL(FILES ${include_HEADERS} DESTINATION include)
ENDIF()
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b59a7e2..dfa6af0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -887,8 +887,10 @@ ENDIF(NOT OPENSSL_FOUND)
# required libraries.
#
MACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
+ include(CMakePushCheckState)
FOREACH(ALGORITHM ${ALGORITHMS})
IF(NOT ARCHIVE_CRYPTO_${ALGORITHM})
+ cmake_push_check_state()
STRING(TOLOWER "${ALGORITHM}" lower_algorithm)
STRING(TOUPPER "${ALGORITHM}" algorithm)
IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND NOT OPENSSL_FOUND)
@@ -921,8 +923,7 @@ MACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
SET(TRY_CRYPTO_REQUIRED_LIBS
"-DLINK_LIBRARIES:STRING=${NETTLE_LIBRARY}")
ELSEIF("${IMPLEMENTATION}" MATCHES "^LIBMD$" AND LIBMD_FOUND)
- SET(TRY_CRYPTO_REQUIRED_LIBS
- "-DLINK_LIBRARIES:STRING=${LIBMD_LIBRARY}")
+ SET(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
ENDIF("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)

CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/config.h.in
45 changes: 45 additions & 0 deletions recipes/libarchive/all/patches/0006-3.7.5-fix-msvc-build.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dfa6af0..b2cac97 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1491,7 +1491,7 @@ CHECK_FUNCTION_EXISTS_GLIBC(localtime_r HAVE_LOCALTIME_R)
CHECK_FUNCTION_EXISTS_GLIBC(lstat HAVE_LSTAT)
CHECK_FUNCTION_EXISTS_GLIBC(lutimes HAVE_LUTIMES)
CHECK_FUNCTION_EXISTS_GLIBC(mbrtowc HAVE_MBRTOWC)
-CHECK_FUNCTION_EXISTS_GLIBC(memmove HAVE_MEMMOVE)
+SET(HAVE_MEMMOVE 1)
CHECK_FUNCTION_EXISTS_GLIBC(mkdir HAVE_MKDIR)
CHECK_FUNCTION_EXISTS_GLIBC(mkfifo HAVE_MKFIFO)
CHECK_FUNCTION_EXISTS_GLIBC(mknod HAVE_MKNOD)
@@ -1525,11 +1525,11 @@ CHECK_FUNCTION_EXISTS_GLIBC(utime HAVE_UTIME)
CHECK_FUNCTION_EXISTS_GLIBC(utimes HAVE_UTIMES)
CHECK_FUNCTION_EXISTS_GLIBC(utimensat HAVE_UTIMENSAT)
CHECK_FUNCTION_EXISTS_GLIBC(vfork HAVE_VFORK)
-CHECK_FUNCTION_EXISTS_GLIBC(wcrtomb HAVE_WCRTOMB)
-CHECK_FUNCTION_EXISTS_GLIBC(wcscmp HAVE_WCSCMP)
-CHECK_FUNCTION_EXISTS_GLIBC(wcscpy HAVE_WCSCPY)
-CHECK_FUNCTION_EXISTS_GLIBC(wcslen HAVE_WCSLEN)
-CHECK_FUNCTION_EXISTS_GLIBC(wctomb HAVE_WCTOMB)
+SET(HAVE_WCRTOMB 1)
+SET(HAVE_WCSCMP 1)
+SET(HAVE_WCSCPY 1)
+SET(HAVE_WCSLEN 1)
+SET(HAVE_WCTOMB 1)
CHECK_FUNCTION_EXISTS_GLIBC(_fseeki64 HAVE__FSEEKI64)
CHECK_FUNCTION_EXISTS_GLIBC(_get_timezone HAVE__GET_TIMEZONE)
CHECK_SYMBOL_EXISTS(ctime_s "time.h" HAVE_CTIME_S)
@@ -1542,10 +1542,10 @@ CHECK_FUNCTION_EXISTS(cygwin_conv_path HAVE_CYGWIN_CONV_PATH)
CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
CHECK_FUNCTION_EXISTS(strerror_r HAVE_STRERROR_R)
CHECK_FUNCTION_EXISTS(strftime HAVE_STRFTIME)
-CHECK_FUNCTION_EXISTS(vprintf HAVE_VPRINTF)
-CHECK_FUNCTION_EXISTS(wmemcmp HAVE_WMEMCMP)
-CHECK_FUNCTION_EXISTS(wmemcpy HAVE_WMEMCPY)
-CHECK_FUNCTION_EXISTS(wmemmove HAVE_WMEMMOVE)
+SET(HAVE_VPRINTF 1)
+SET(HAVE_WMEMCMP 1)
+SET(HAVE_WMEMCPY 1)
+SET(HAVE_WMEMMOVE 1)

CMAKE_POP_CHECK_STATE() # Restore the state of the variables

2 changes: 2 additions & 0 deletions recipes/libarchive/config.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
versions:
"3.7.5":
folder: all
"3.7.4":
folder: all
"3.7.3":
Expand Down

0 comments on commit 001b771

Please sign in to comment.