Skip to content

Commit f6fc0b0

Browse files
libarchive: Add version 3.7.9 (#27057)
* libarchive: Add versions 3.7.8 and 3.7.9 * libarchive: Remove 3.7.8 version * libarchive: Fix a mistake in 3.7.9 patch * libarchive: Specify minimum cmake version to comply with library requirements * Update recipes/libarchive/all/conanfile.py * Remove v.3.7.8 from config yaml * Fix a line in patch file to remove glibc check for memmove --------- Co-authored-by: Luis Caro Campos <[email protected]>
1 parent 4ca689a commit f6fc0b0

File tree

6 files changed

+181
-0
lines changed

6 files changed

+181
-0
lines changed

recipes/libarchive/all/conandata.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
sources:
2+
"3.7.9":
3+
url: "https://github.com/libarchive/libarchive/releases/download/v3.7.9/libarchive-3.7.9.tar.xz"
4+
sha256: "ed8b5732e4cd6e30fae909fb945cad8ff9cb7be5c6cdaa3944ec96e4a200c04c"
25
"3.7.7":
36
url: "https://github.com/libarchive/libarchive/releases/download/v3.7.7/libarchive-3.7.7.tar.xz"
47
sha256: "879acd83c3399c7caaee73fe5f7418e06087ab2aaf40af3e99b9e29beb29faee"
@@ -15,6 +18,16 @@ sources:
1518
url: "https://github.com/libarchive/libarchive/releases/download/v3.7.2/libarchive-3.7.2.tar.xz"
1619
sha256: "04357661e6717b6941682cde02ad741ae4819c67a260593dfb2431861b251acb"
1720
patches:
21+
"3.7.9":
22+
- patch_file: "patches/0003-3.7.9-cmake.patch"
23+
patch_description: "Make CMake build-system compatible with Conan"
24+
patch_type: "conan"
25+
- patch_file: "patches/0005-3.7.9-try-compile-cmakedeps.patch"
26+
patch_description: "Patch try_compile check to work with imported CMake targets from Conan packages"
27+
patch_type: "conan"
28+
- patch_file: "patches/0006-3.7.9-fix-msvc-build.patch"
29+
patch_description: "Fix MSVC build"
30+
patch_type: "conan"
1831
"3.7.7":
1932
- patch_file: "patches/0003-3.7.7-cmake.patch"
2033
patch_description: "Make CMake build-system compatible with Conan"

recipes/libarchive/all/conanfile.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ def requirements(self):
113113
if self.options.get_safe("with_pcre2"):
114114
self.requires("pcre2/10.43")
115115

116+
def build_requirements(self):
117+
if Version(self.version) >= "3.7.9":
118+
self.tool_requires("cmake/[>=3.17 <4]")
119+
116120
def validate(self):
117121
if self.settings.os != "Windows" and self.options.with_cng:
118122
# TODO: add cng when available in CCI
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 2c2f7100..42e4ac1b 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.17 FATAL_ERROR)
6+
7+
PROJECT(libarchive C)
8+
#
9+
-SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake")
10+
+LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake")
11+
if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
12+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${libarchive_BINARY_DIR}/bin)
13+
endif()
14+
@@ -445,7 +445,7 @@ IF(ZLIB_FOUND)
15+
SET(HAVE_LIBZ 1)
16+
SET(HAVE_ZLIB_H 1)
17+
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
18+
- LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES})
19+
+ LIST(APPEND ADDITIONAL_LIBS ZLIB::ZLIB)
20+
IF(WIN32 AND NOT CYGWIN)
21+
#
22+
# Test if ZLIB_WINAPI macro is needed to use.
23+
@@ -535,7 +535,7 @@ ELSE(LIBLZMA_FOUND)
24+
# LZMA not found and will not be used.
25+
SET(HAVE_LZMA_STREAM_ENCODER_MT 0)
26+
ENDIF(LIBLZMA_FOUND)
27+
-MARK_AS_ADVANCED(CLEAR LIBLZMA_INCLUDE_DIR)
28+
+MARK_AS_ADVANCED(CLEAR LIBLZMA_INCLUDE_DIRS)
29+
MARK_AS_ADVANCED(CLEAR LIBLZMA_LIBRARY)
30+
31+
#
32+
@@ -606,7 +606,7 @@ IF(ENABLE_LZ4)
33+
ENDIF (LZ4_INCLUDE_DIR)
34+
35+
FIND_PATH(LZ4_INCLUDE_DIR lz4.h)
36+
- FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4)
37+
+ FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4 lz4_static liblz4_static)
38+
INCLUDE(FindPackageHandleStandardArgs)
39+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR)
40+
ELSE(ENABLE_LZ4)
41+
@@ -829,7 +829,7 @@ ENDIF(ENABLE_NETTLE)
42+
# Find OpenSSL
43+
# (Except on Mac, where OpenSSL is deprecated.)
44+
#
45+
-IF(ENABLE_OPENSSL AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
46+
+IF(ENABLE_OPENSSL)
47+
FIND_PACKAGE(OpenSSL)
48+
IF(OPENSSL_FOUND)
49+
SET(HAVE_LIBCRYPTO 1)
50+
diff --git a/libarchive/CMakeLists.txt b/libarchive/CMakeLists.txt
51+
index dd0b2808..c8c9988b 100644
52+
--- a/libarchive/CMakeLists.txt
53+
+++ b/libarchive/CMakeLists.txt
54+
@@ -247,7 +247,7 @@ IF(BUILD_SHARED_LIBS)
55+
ADD_LIBRARY(archive SHARED ${libarchive_SOURCES} ${include_HEADERS})
56+
TARGET_INCLUDE_DIRECTORIES(archive PUBLIC .)
57+
TARGET_LINK_LIBRARIES(archive ${ADDITIONAL_LIBS})
58+
- SET_TARGET_PROPERTIES(archive PROPERTIES
59+
+ SET_TARGET_PROPERTIES(archive PROPERTIES
60+
VERSION ${SOVERSION_FULL}
61+
SOVERSION ${SOVERSION}
62+
MACHO_COMPATIBILITY_VERSION ${MACHO_COMPATIBILITY_VERSION}
63+
@@ -255,6 +255,7 @@ IF(BUILD_SHARED_LIBS)
64+
ENDIF(BUILD_SHARED_LIBS)
65+
66+
# archive_static is a static library
67+
+IF(NOT BUILD_SHARED_LIBS)
68+
ADD_LIBRARY(archive_static STATIC ${libarchive_SOURCES} ${include_HEADERS})
69+
TARGET_INCLUDE_DIRECTORIES(archive_static PUBLIC .)
70+
TARGET_LINK_LIBRARIES(archive_static ${ADDITIONAL_LIBS})
71+
@@ -264,6 +265,7 @@ SET_TARGET_PROPERTIES(archive_static PROPERTIES COMPILE_DEFINITIONS
72+
IF(NOT WIN32 OR CYGWIN OR NOT BUILD_SHARED_LIBS)
73+
SET_TARGET_PROPERTIES(archive_static PROPERTIES OUTPUT_NAME archive)
74+
ENDIF(NOT WIN32 OR CYGWIN OR NOT BUILD_SHARED_LIBS)
75+
+ENDIF()
76+
77+
IF(ENABLE_INSTALL)
78+
# How to install the libraries
79+
@@ -272,11 +274,12 @@ IF(ENABLE_INSTALL)
80+
RUNTIME DESTINATION bin
81+
LIBRARY DESTINATION lib
82+
ARCHIVE DESTINATION lib)
83+
- ENDIF(BUILD_SHARED_LIBS)
84+
+ ELSE()
85+
INSTALL(TARGETS archive_static
86+
RUNTIME DESTINATION bin
87+
LIBRARY DESTINATION lib
88+
ARCHIVE DESTINATION lib)
89+
+ ENDIF()
90+
INSTALL_MAN(${libarchive_MANS})
91+
INSTALL(FILES ${include_HEADERS} DESTINATION include)
92+
ENDIF()
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 2c2f7100..b2ec9ed3 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -870,8 +870,10 @@ ENDIF("${CMAKE_SYSTEM_NAME}" MATCHES "Haiku")
6+
# required libraries.
7+
#
8+
MACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
9+
+ include(CMakePushCheckState)
10+
FOREACH(ALGORITHM ${ALGORITHMS})
11+
IF(NOT ARCHIVE_CRYPTO_${ALGORITHM})
12+
+ cmake_push_check_state()
13+
STRING(TOLOWER "${ALGORITHM}" lower_algorithm)
14+
STRING(TOUPPER "${ALGORITHM}" algorithm)
15+
IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND NOT OPENSSL_FOUND)
16+
@@ -904,8 +906,7 @@ MACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
17+
SET(TRY_CRYPTO_REQUIRED_LIBS
18+
"-DLINK_LIBRARIES:STRING=${NETTLE_LIBRARY}")
19+
ELSEIF("${IMPLEMENTATION}" MATCHES "^LIBMD$" AND LIBMD_FOUND)
20+
- SET(TRY_CRYPTO_REQUIRED_LIBS
21+
- "-DLINK_LIBRARIES:STRING=${LIBMD_LIBRARY}")
22+
+ SET(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
23+
ENDIF("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
24+
25+
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/config.h.in
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 683b2d75..190c1bf2 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -1474,7 +1474,7 @@ CHECK_FUNCTION_EXISTS_GLIBC(localtime_r HAVE_LOCALTIME_R)
6+
CHECK_FUNCTION_EXISTS_GLIBC(lstat HAVE_LSTAT)
7+
CHECK_FUNCTION_EXISTS_GLIBC(lutimes HAVE_LUTIMES)
8+
CHECK_FUNCTION_EXISTS_GLIBC(mbrtowc HAVE_MBRTOWC)
9+
-CHECK_FUNCTION_EXISTS_GLIBC(memmove HAVE_MEMMOVE)
10+
+SET(HAVE_MEMMOVE 1)
11+
CHECK_FUNCTION_EXISTS_GLIBC(mkdir HAVE_MKDIR)
12+
CHECK_FUNCTION_EXISTS_GLIBC(mkfifo HAVE_MKFIFO)
13+
CHECK_FUNCTION_EXISTS_GLIBC(mknod HAVE_MKNOD)
14+
@@ -1510,11 +1510,11 @@ CHECK_FUNCTION_EXISTS_GLIBC(utime HAVE_UTIME)
15+
CHECK_FUNCTION_EXISTS_GLIBC(utimes HAVE_UTIMES)
16+
CHECK_FUNCTION_EXISTS_GLIBC(utimensat HAVE_UTIMENSAT)
17+
CHECK_FUNCTION_EXISTS_GLIBC(vfork HAVE_VFORK)
18+
-CHECK_FUNCTION_EXISTS_GLIBC(wcrtomb HAVE_WCRTOMB)
19+
-check_symbol_exists(wcscmp wchar.h HAVE_WCSCMP)
20+
-check_symbol_exists(wcscpy wchar.h HAVE_WCSCPY)
21+
-check_symbol_exists(wcslen wchar.h HAVE_WCSLEN)
22+
-CHECK_FUNCTION_EXISTS_GLIBC(wctomb HAVE_WCTOMB)
23+
+SET(HAVE_WCRTOMB 1)
24+
+SET(HAVE_WCSCMP 1)
25+
+SET(HAVE_WCSCPY 1)
26+
+SET(HAVE_WCSLEN 1)
27+
+SET(HAVE_WCTOMB 1)
28+
CHECK_FUNCTION_EXISTS_GLIBC(_fseeki64 HAVE__FSEEKI64)
29+
CHECK_FUNCTION_EXISTS_GLIBC(_get_timezone HAVE__GET_TIMEZONE)
30+
CHECK_SYMBOL_EXISTS(ctime_s "time.h" HAVE_CTIME_S)
31+
@@ -1527,10 +1527,10 @@ CHECK_FUNCTION_EXISTS(cygwin_conv_path HAVE_CYGWIN_CONV_PATH)
32+
CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
33+
CHECK_FUNCTION_EXISTS(strerror_r HAVE_STRERROR_R)
34+
CHECK_FUNCTION_EXISTS(strftime HAVE_STRFTIME)
35+
-CHECK_FUNCTION_EXISTS(vprintf HAVE_VPRINTF)
36+
-CHECK_FUNCTION_EXISTS(wmemcmp HAVE_WMEMCMP)
37+
-CHECK_FUNCTION_EXISTS(wmemcpy HAVE_WMEMCPY)
38+
-CHECK_FUNCTION_EXISTS(wmemmove HAVE_WMEMMOVE)
39+
+SET(HAVE_VPRINTF 1)
40+
+SET(HAVE_WMEMCMP 1)
41+
+SET(HAVE_WMEMCPY 1)
42+
+SET(HAVE_WMEMMOVE 1)
43+
44+
CMAKE_POP_CHECK_STATE() # Restore the state of the variables
45+

recipes/libarchive/config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
versions:
2+
"3.7.9":
3+
folder: all
24
"3.7.7":
35
folder: all
46
"3.7.6":

0 commit comments

Comments
 (0)