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 1 commit
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.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 Expand Up @@ -67,7 +67,7 @@
export_conandata_patches(self)

def config_options(self):
if self.settings.os == "Windows":

Check failure on line 70 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'os' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md

Check failure on line 70 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'os' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md
del self.options.fPIC
if Version(self.version) < "3.7.3":
del self.options.with_pcre2
Expand All @@ -75,8 +75,8 @@
def configure(self):
if self.options.shared:
self.options.rm_safe("fPIC")
self.settings.rm_safe("compiler.cppstd")

Check failure on line 78 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'rm_safe' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md

Check failure on line 78 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'rm_safe' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md
self.settings.rm_safe("compiler.libcxx")

Check failure on line 79 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'rm_safe' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md

Check failure on line 79 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'rm_safe' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md

def layout(self):
cmake_layout(self, src_folder="src")
Expand Down Expand Up @@ -114,14 +114,14 @@
self.requires("pcre2/10.43")

def validate(self):
if self.settings.os != "Windows" and self.options.with_cng:

Check failure on line 117 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'os' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md

Check failure on line 117 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'os' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md
# TODO: add cng when available in CCI
raise ConanInvalidConfiguration("cng recipe not yet available in CCI.")
if self.options.with_expat and self.options.with_libxml2:
raise ConanInvalidConfiguration("libxml2 and expat options are exclusive. They cannot be used together as XML engine")

def source(self):
get(self, **self.conan_data["sources"][self.version], strip_root=True)

Check failure on line 124 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'LibarchiveConan' has no 'conan_data' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md

Check failure on line 124 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'LibarchiveConan' has no 'conan_data' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md

def generate(self):
cmake_deps = CMakeDeps(self)
Expand Down Expand Up @@ -162,7 +162,7 @@
tc.variables["ENABLE_XATTR"] = self.options.with_xattr
# TODO: Remove after fixing https://github.com/conan-io/conan/issues/12012
if is_msvc(self):
tc.cache_variables["CMAKE_TRY_COMPILE_CONFIGURATION"] = str(self.settings.build_type)

Check failure on line 165 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'build_type' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md

Check failure on line 165 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'build_type' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md
tc.generate()

def build(self):
Expand All @@ -188,7 +188,7 @@
self.cpp_info.names["cmake_find_package_multi"] = "LibArchive"

self.cpp_info.libs = collect_libs(self)
if self.settings.os == "Windows" and self.options.with_cng:

Check failure on line 191 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'os' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md

Check failure on line 191 in recipes/libarchive/all/conanfile.py

View workflow job for this annotation

GitHub Actions / Lint changed conanfile.py (v2 migration)

Instance of 'list' has no 'os' member. Please, check https://github.com/conan-io/conan-center-index/blob/master/docs/v2_linter.md
self.cpp_info.system_libs.append("bcrypt")
if is_msvc(self) and not self.options.shared:
self.cpp_info.defines = ["LIBARCHIVE_STATIC"]
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})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The previous patch was like

Suggested change
- INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
+ LIST(APPEND ADDITIONAL_LIBS ZLIB::ZLIB)
LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES})
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
- LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES})
+ LIST(APPEND ADDITIONAL_LIBS ZLIB::ZLIB)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ErniGH
Thank you for your pointing out!
I fixed this.

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
Loading