Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libarchive: add version 3.7.6 #25333

Merged
merged 2 commits into from
Sep 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.6":
url: "https://github.com/libarchive/libarchive/releases/download/v3.7.6/libarchive-3.7.6.tar.xz"
sha256: "0a2efdcb185da2eb1e7cd8421434cb9a6119f72417a13335cca378d476fd3ba0"
"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.6":
- patch_file: "patches/0001-3.7.6-zlib-winapi.patch"
patch_description: "Remove broken ZLIB WINAPI check"
patch_type: "portability"
- patch_file: "patches/0003-3.7.6-cmake.patch"
patch_description: "Make CMake build-system compatible with Conan"
patch_type: "conan"
- patch_file: "patches/0005-3.7.6-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.6-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.6-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.6-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_LIBRARIES})
+ LIST(APPEND ADDITIONAL_LIBS ZLIB::ZLIB)
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.6-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.6":
folder: all
"3.7.4":
folder: all
"3.7.3":
Expand Down
Loading