Added libarchive, bzip2, and xz to the build. These libraries will allow stout to invoke libarchive instead of shelling out to system binaries when extracting archives. On Windows, because archive-extracting binaries typically do not exist, we build libarchive to support each of those compression formats. We also build bzip2 and xz (on Windows only) to enable support for more compression formats.
Review: https://reviews.apache.org/r/67064/ Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/106d6e86 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/106d6e86 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/106d6e86 Branch: refs/heads/master Commit: 106d6e862686fba0c3897bcde617c6c7c02b5f6a Parents: 1eea7b5 Author: John Kordich <[email protected]> Authored: Wed May 30 13:46:49 2018 -0700 Committer: Joseph Wu <[email protected]> Committed: Mon Jun 4 15:50:56 2018 -0700 ---------------------------------------------------------------------- 3rdparty/CMakeLists.txt | 167 +++++++++++++++++++++++++++++++ 3rdparty/Makefile.am | 27 +++++ 3rdparty/bzip2-1.0.6.patch | 30 ++++++ 3rdparty/cmake/Versions.cmake | 10 +- 3rdparty/libarchive-3.3.2.patch | 58 +++++++++++ 3rdparty/versions.am | 1 + 3rdparty/xz-5.2.3.patch | 187 +++++++++++++++++++++++++++++++++++ configure.ac | 41 ++++++++ src/Makefile.am | 11 +++ 9 files changed, 530 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/106d6e86/3rdparty/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index ecb6946..8577da6 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -24,6 +24,7 @@ endif () # TODO(andschwa): Move each URL to the dependency itself. set(BOOST_URL ${FETCH_URL}/boost-${BOOST_VERSION}.tar.gz) +set(BZIP2_URL ${FETCH_URL}/bzip2-${BZIP2_VERSION}.tar.gz) set(CONCURRENTQUEUE_URL ${FETCH_URL}/concurrentqueue-${CONCURRENTQUEUE_VERSION}.tar.gz) set(CSI_URL ${FETCH_URL}/csi-${CSI_VERSION}.tar.gz) set(ELFIO_URL ${FETCH_URL}/elfio-${ELFIO_VERSION}.tar.gz) @@ -35,8 +36,10 @@ set(JEMALLOC_URL ${FETCH_URL}/jemalloc-${JEMALLOC_VERSION}.tar.gz) set(PICOJSON_URL ${FETCH_URL}/picojson-${PICOJSON_VERSION}.tar.gz) set(PROTOBUF_URL ${FETCH_URL}/protobuf-${PROTOBUF_VERSION}.tar.gz) set(LEVELDB_URL ${FETCH_URL}/leveldb-${LEVELDB_VERSION}.tar.gz) +set(LIBARCHIVE_URL ${FETCH_URL}/libarchive-${LIBARCHIVE_VERSION}.tar.gz) set(LIBEV_URL ${FETCH_URL}/libev-${LIBEV_VERSION}.tar.gz) set(NVML_URL ${FETCH_URL}/nvml-${NVML_VERSION}.tar.gz) +set(XZ_URL ${FETCH_URL}/xz-${XZ_VERSION}-modified.tar.gz) set(ZOOKEEPER_URL ${FETCH_URL}/zookeeper-${ZOOKEEPER_VERSION}.tar.gz) # NOTE: libevent doesn't come rebundled, so this URL is always the same. But, @@ -755,6 +758,99 @@ else () endif () +# bzip2: A high-quality data compressor. +# http://www.bzip.org +######################################## +if (WIN32) + EXTERNAL(bzip2 ${BZIP2_VERSION} ${CMAKE_CURRENT_BINARY_DIR}) + add_library(bzip2 STATIC IMPORTED) + add_dependencies(bzip2 ${BZIP2_TARGET}) + + set_target_properties( + bzip2 PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${BZIP2_ROOT};${BZIP2_ROOT}-build") + + if (CMAKE_GENERATOR MATCHES "Visual Studio") + set_target_properties( + bzip2 PROPERTIES + IMPORTED_LOCATION_DEBUG ${BZIP2_ROOT}-build/Debug/bzip2${BZIP2_SHARED}${LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELEASE ${BZIP2_ROOT}-build/Release/bzip2${BZIP2_SHARED}${LIBRARY_SUFFIX} + IMPORTED_IMPLIB_DEBUG ${BZIP2_ROOT}-build/Debug/bzip2${CMAKE_IMPORT_LIBRARY_SUFFIX} + IMPORTED_IMPLIB_RELEASE ${BZIP2_ROOT}-build/Release/bzip2${CMAKE_IMPORT_LIBRARY_SUFFIX}) + else () + set_target_properties( + bzip2 PROPERTIES + IMPORTED_LOCATION ${BZIP2_ROOT}-build/bzip2${BZIP2_SHARED}${LIBRARY_SUFFIX}) + endif () + + PATCH_CMD(BZIP2_PATCH_CMD bzip2-${BZIP2_VERSION}.patch) + + MAKE_INCLUDE_DIR(bzip2) + GET_BYPRODUCTS(bzip2) + + set(BZIP2_CMAKE_ARGS + ${CMAKE_FORWARD_ARGS} + ${CMAKE_C_FORWARD_ARGS} + -DBZIP2_INSTALL_DIR=${BZIP2_ROOT}-lib) + + ExternalProject_Add( + ${BZIP2_TARGET} + PREFIX ${BZIP2_CMAKE_ROOT} + BUILD_BYPRODUCTS ${BZIP2_BYPRODUCTS} + PATCH_COMMAND ${BZIP2_PATCH_CMD} + CMAKE_ARGS ${BZIP2_CMAKE_ARGS} + INSTALL_DIR ${BZIP2_ROOT}-lib + URL ${BZIP2_URL} + URL_HASH ${BZIP2_HASH}) +endif () + +# xz: A Massively Spiffy Yet Delicately Unobtrusive Compression Library. +# https://tukaani.org/xz/ +######################################################################## +if (WIN32) + EXTERNAL(xz ${XZ_VERSION} ${CMAKE_CURRENT_BINARY_DIR}) + add_library(xz STATIC IMPORTED) + add_dependencies(xz ${XZ_TARGET}) + + set_target_properties( + xz PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${XZ_ROOT};${XZ_ROOT}-build") + + + if (CMAKE_GENERATOR MATCHES "Visual Studio") + set_target_properties( + xz PROPERTIES + IMPORTED_LOCATION_DEBUG ${XZ_ROOT}-build/Debug/lzma${XZ_SHARED}${LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELEASE ${XZ_ROOT}-build/Release/lzma${XZ_SHARED}${LIBRARY_SUFFIX} + IMPORTED_IMPLIB_DEBUG ${XZ_ROOT}-build/Debug/lzma${CMAKE_IMPORT_LIBRARY_SUFFIX} + IMPORTED_IMPLIB_RELEASE ${XZ_ROOT}-build/Release/lzma${CMAKE_IMPORT_LIBRARY_SUFFIX}) + else () + set_target_properties( + xz PROPERTIES + IMPORTED_LOCATION ${XZ_ROOT}-build/lzma${CMAKE_IMPORT_LIBRARY_SUFFIX}) + endif () + + PATCH_CMD(XZ_PATCH_CMD xz-${XZ_VERSION}.patch) + + MAKE_INCLUDE_DIR(xz) + GET_BYPRODUCTS(xz) + + set(XZ_CMAKE_ARGS + ${CMAKE_FORWARD_ARGS} + ${CMAKE_C_FORWARD_ARGS} + -DXZ_INSTALL_DIR=${XZ_ROOT}-lib) + + ExternalProject_Add( + ${XZ_TARGET} + PREFIX ${XZ_CMAKE_ROOT} + BUILD_BYPRODUCTS ${XZ_BYPRODUCTS} + PATCH_COMMAND ${XZ_PATCH_CMD} + CMAKE_ARGS ${XZ_CMAKE_ARGS} + INSTALL_DIR ${XZ_ROOT}-lib + URL ${XZ_URL} + URL_HASH ${XZ_HASH}) +endif () + # zlib: A Massively Spiffy Yet Delicately Unobtrusive Compression Library. # https://zlib.net ########################################################################## @@ -827,6 +923,77 @@ set_target_properties( zlib PROPERTIES INTERFACE_COMPILE_DEFINITIONS HAVE_LIBZ) +# libarchive: Multi-format archive and compression library. +# https://github.com/libarchive/libarchive +########################################################### +if (WIN32 OR REBUNDLED) + EXTERNAL(libarchive ${LIBARCHIVE_VERSION} ${CMAKE_CURRENT_BINARY_DIR}) + + add_library(libarchive STATIC IMPORTED GLOBAL) + add_dependencies(libarchive ${LIBARCHIVE_TARGET}) + + set(LIBARCHIVE_CMAKE_ARGS + ${CMAKE_FORWARD_ARGS} + -DENABLE_ACL=OFF + -DENABLE_BZip2=OFF + -DENABLE_CNG=OFF + -DENABLE_CPIO=OFF + -DENABLE_EXPAT=OFF + -DENABLE_ICONV=OFF + -DENABLE_LibGCC=OFF + -DENABLE_LIBXML2=OFF + -DENABLE_LZMA=OFF + -DENABLE_LZO=OFF + -DENABLE_NETTLE=OFF + -DENABLE_OPENSSL=OFF + -DENABLE_PCREPOSIX=OFF + -DENABLE_TEST=OFF + -DCMAKE_PREFIX_PATH=${ZLIB_ROOT}-lib@@${BZIP2_ROOT}-lib@@${XZ_ROOT}-lib + -DCMAKE_INSTALL_PREFIX=${LIBARCHIVE_ROOT}-build) + + PATCH_CMD(LIBARCHIVE_PATCH_CMD libarchive-${LIBARCHIVE_VERSION}.patch) + + # NOTE: On Windows, libarchive is linked against several compression + # libraries included in the build chain, such as bzip2, xz, and zlib. + # On other platforms, libarchive links to zlib only, as bzip2 and xz + # are not in the build chain. + if (WIN32) + set_target_properties( + libarchive PROPERTIES + INTERFACE_COMPILE_DEFINITIONS LIBARCHIVE_STATIC + IMPORTED_LOCATION ${LIBARCHIVE_ROOT}-build/lib/archive_static${LIBRARY_SUFFIX} + INTERFACE_INCLUDE_DIRECTORIES ${LIBARCHIVE_ROOT}-build/include + INTERFACE_LINK_LIBRARIES "bzip2;xz;zlib") + set(LIBARCHIVE_DEPENDS bzip2 xz zlib) + else () + set_target_properties( + libarchive PROPERTIES + IMPORTED_LOCATION ${LIBARCHIVE_ROOT}-build/lib/libarchive${CMAKE_STATIC_LIBRARY_SUFFIX} + INTERFACE_INCLUDE_DIRECTORIES ${LIBARCHIVE_ROOT}-build/include + INTERFACE_LINK_LIBRARIES "zlib") + set(LIBARCHIVE_DEPENDS zlib) + endif () + + MAKE_INCLUDE_DIR(libarchive) + GET_BYPRODUCTS(libarchive) + + ExternalProject_Add( + ${LIBARCHIVE_TARGET} + DEPENDS ${LIBARCHIVE_DEPENDS} + PREFIX ${LIBARCHIVE_CMAKE_ROOT} + BUILD_BYPRODUCTS ${LIBARCHIVE_BYPRODUCTS} + PATCH_COMMAND ${LIBARCHIVE_PATCH_CMD} + LIST_SEPARATOR @@ + CMAKE_ARGS ${LIBARCHIVE_CMAKE_ARGS} + URL ${LIBARCHIVE_URL} + URL_HASH ${LIBARCHIVE_HASH}) +else () + find_package(LibArchive REQUIRED) + add_library(libarchive SHARED IMPORTED GLOBAL) + set_target_properties(libarchive PROPERTIES + IMPORTED_LOCATION ${LibArchive_LIBRARIES} + INTERFACE_INCLUDE_DIRECTORIES ${LibArchive_INCLUDE_DIRS}) +endif () # Google Test: Google's C++ test framework (GoogleTest and GoogleMock). # https://github.com/google/googletest http://git-wip-us.apache.org/repos/asf/mesos/blob/106d6e86/3rdparty/Makefile.am ---------------------------------------------------------------------- diff --git a/3rdparty/Makefile.am b/3rdparty/Makefile.am index 062df18..6123b8a 100644 --- a/3rdparty/Makefile.am +++ b/3rdparty/Makefile.am @@ -61,6 +61,7 @@ GTEST = $(GOOGLETEST)/googletest HTTP_PARSER = http-parser-$(HTTP_PARSER_VERSION) JEMALLOC = jemalloc-$(JEMALLOC_VERSION) LEVELDB = leveldb-$(LEVELDB_VERSION) +LIBARCHIVE = libarchive-$(LIBARCHIVE_VERSION) LIBEV = libev-$(LIBEV_VERSION) NVML = nvml-$(NVML_VERSION) PIP = pip-$(PIP_VERSION) @@ -82,6 +83,7 @@ EXTRA_DIST = \ $(HTTP_PARSER).tar.gz \ $(JEMALLOC).tar.gz \ $(LEVELDB).tar.gz \ + $(LIBARCHIVE).tar.gz \ $(LIBEV).tar.gz \ $(NVML).tar.gz \ $(PIP).tar.gz \ @@ -121,6 +123,7 @@ CLEAN_EXTRACTED = \ $(HTTP_PARSER) \ $(JEMALLOC) \ $(LEVELDB) \ + $(LIBARCHIVE) \ $(LIBEV) \ $(NVML) \ $(PIP) \ @@ -269,6 +272,30 @@ $(JEMALLOC)-build-stamp: $(JEMALLOC)-stamp ALL_LOCAL += $(LIB_JEMALLOC) endif +if WITH_BUNDLED_LIBARCHIVE +LIB_LIBARCHIVE = $(LIBARCHIVE)/.libs/libarchive.la + +$(LIB_LIBARCHIVE): $(LIBARCHIVE)-build-stamp + +$(LIBARCHIVE)-build-stamp: $(LIBARCHIVE)-stamp + cd $(LIBARCHIVE) && \ + ./configure $(CONFIGURE_ARGS) \ + --without-bz2lib \ + --without-cng \ + --without-expat \ + --without-iconv \ + --without-libiconv-prefix \ + --without-lz4 \ + --without-lzma \ + --without-nettle \ + --without-openssl \ + --without-xml2 + cd $(LIBARCHIVE) && $(MAKE) $(AM_MAKEFLAGS) + touch $@ + +ALL_LOCAL += $(LIB_LIBARCHIVE) +endif + if WITH_BUNDLED_LIBEV $(LIBEV)/libev.la: $(LIBEV)-build-stamp $(LIBEV)-build-stamp: $(LIBEV)-stamp http://git-wip-us.apache.org/repos/asf/mesos/blob/106d6e86/3rdparty/bzip2-1.0.6.patch ---------------------------------------------------------------------- diff --git a/3rdparty/bzip2-1.0.6.patch b/3rdparty/bzip2-1.0.6.patch new file mode 100644 index 0000000..a173c41 --- /dev/null +++ b/3rdparty/bzip2-1.0.6.patch @@ -0,0 +1,30 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 0000000..412f741 +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,24 @@ ++project(bzip2 C) ++cmake_minimum_required(VERSION 3.8) ++ ++add_definitions(-D_FILE_OFFSET_BITS=64) ++ ++# bzip2.c and bzip2recover.c are not built because we are only ++# interested in building the library (not executables). ++set(BZIP2_SRCS ++ blocksort.c ++ huffman.c ++ crctable.c ++ randtable.c ++ compress.c ++ decompress.c ++ bzlib.c ++ libbz2.def) ++ ++add_library(bzip2 STATIC ${BZIP2_SRCS}) ++ ++install(TARGETS bzip2 ++ DESTINATION ${BZIP2_INSTALL_DIR}) ++ ++install(FILES bzlib.h ++ DESTINATION ${BZIP2_INSTALL_DIR}) http://git-wip-us.apache.org/repos/asf/mesos/blob/106d6e86/3rdparty/cmake/Versions.cmake ---------------------------------------------------------------------- diff --git a/3rdparty/cmake/Versions.cmake b/3rdparty/cmake/Versions.cmake index 2828acd..0a897d8 100644 --- a/3rdparty/cmake/Versions.cmake +++ b/3rdparty/cmake/Versions.cmake @@ -31,10 +31,16 @@ set(PICOJSON_VERSION "1.3.0") set(PICOJSON_HASH "SHA256=056805CA2691798F5545935A14BB477F2E1D827C9FB862E6E449DBEA22801C7D") set(PROTOBUF_VERSION "3.5.0") set(PROTOBUF_HASH "SHA256=F046682F05C39605E1687DC37E2E0EEBCEB8298CA1B046D64EE00AE124924EBC") +set(LIBARCHIVE_VERSION "3.3.2") +set(LIBARCHIVE_HASH "SHA256=ed2dbd6954792b2c054ccf8ec4b330a54b85904a80cef477a1c74643ddafa0ce") +set(BZIP2_VERSION "1.0.6") +set(BZIP2_HASH "SHA256=A2848F34FCD5D6CF47DEF00461FCB528A0484D8EDEF8208D6D2E2909DC61D9CD") +set(XZ_VERSION "5.2.3") +set(XZ_HASH "SHA256=22251D07AD9F25866F5FD785EE2A91DC9863A5BD47EAD4FD717A242612C8A13C") set(ZLIB_VERSION "1.2.8") set(ZLIB_HASH "SHA256=36658CB768A54C1D4DEC43C3116C27ED893E88B02ECFCB44F2166F9C0B7F2A0D") -set(ZOOKEEPER_VERSION "3.4.8") -set(ZOOKEEPER_HASH "SHA256=F10A0B51F45C4F64C1FE69EF713ABF9EB9571BC7385A82DA892E83BB6C965E90") +set(ZOOKEEPER_VERSION "3.4.8") +set(ZOOKEEPER_HASH "SHA256=F10A0B51F45C4F64C1FE69EF713ABF9EB9571BC7385A82DA892E83BB6C965E90") # Platform-dependent versions. if (NOT WIN32) http://git-wip-us.apache.org/repos/asf/mesos/blob/106d6e86/3rdparty/libarchive-3.3.2.patch ---------------------------------------------------------------------- diff --git a/3rdparty/libarchive-3.3.2.patch b/3rdparty/libarchive-3.3.2.patch new file mode 100644 index 0000000..3cb322e --- /dev/null +++ b/3rdparty/libarchive-3.3.2.patch @@ -0,0 +1,58 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 73bf07b3..2a58a3a7 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -166,7 +166,7 @@ IF (MSVC) + # result of an assignment. + SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /we4706") + # /WX option is the same as gcc's -Werror option. +- SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /WX") ++ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /w44267 /w44244") + # /Oi option enables built-in functions. + SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /Oi") + ################################################################# +@@ -180,6 +180,7 @@ include(CTest) + OPTION(ENABLE_NETTLE "Enable use of Nettle" ON) + OPTION(ENABLE_OPENSSL "Enable use of OpenSSL" ON) + OPTION(ENABLE_LZO "Enable the use of the system LZO library if found" OFF) ++OPTION(ENABLE_LZ4 "Enable the use of the system LZ4 library if found" OFF) + OPTION(ENABLE_LZMA "Enable the use of the system LZMA library if found" ON) + + OPTION(ENABLE_ZLIB "Enable the use of the system ZLIB library if found" ON) +@@ -509,15 +510,19 @@ MARK_AS_ADVANCED(CLEAR LZO2_LIBRARY) + # + # Find LZ4 + # +-IF (LZ4_INCLUDE_DIR) +- # Already in cache, be silent +- SET(LZ4_FIND_QUIETLY TRUE) +-ENDIF (LZ4_INCLUDE_DIR) ++IF (ENABLE_LZ4) ++ IF (LZ4_INCLUDE_DIR) ++ # Already in cache, be silent ++ SET(LZ4_FIND_QUIETLY TRUE) ++ ENDIF (LZ4_INCLUDE_DIR) + +-FIND_PATH(LZ4_INCLUDE_DIR lz4.h) +-FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4) +-INCLUDE(FindPackageHandleStandardArgs) +-FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR) ++ FIND_PATH(LZ4_INCLUDE_DIR lz4.h) ++ FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4) ++ INCLUDE(FindPackageHandleStandardArgs) ++ FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR) ++ELSE (ENABLE_LZ4) ++ SET(LZ4_FOUND FALSE) ++ENDIF (ENABLE_LZ4) + IF(LZ4_FOUND) + SET(HAVE_LIBLZ4 1) + SET(HAVE_LZ4_H 1) +@@ -904,7 +909,7 @@ MACRO(CHECK_ICONV LIB TRY_ICONV_CONST) + ENDIF (CMAKE_C_COMPILER_ID MATCHES "^XL$") + IF (MSVC) + # NOTE: /WX option is the same as gcc's -Werror option. +- SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} /WX") ++ SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} /w44267 /w44244") + ENDIF (MSVC) + # + CHECK_C_SOURCE_COMPILES( http://git-wip-us.apache.org/repos/asf/mesos/blob/106d6e86/3rdparty/versions.am ---------------------------------------------------------------------- diff --git a/3rdparty/versions.am b/3rdparty/versions.am index ada998d..5779280 100644 --- a/3rdparty/versions.am +++ b/3rdparty/versions.am @@ -30,6 +30,7 @@ GRPC_VERSION = 1.10.0 HTTP_PARSER_VERSION = 2.6.2 JEMALLOC_VERSION = 5.0.1 LEVELDB_VERSION = 1.19 +LIBARCHIVE_VERSION = 3.3.2 LIBEV_VERSION = 4.22 NVML_VERSION = 352.79 PICOJSON_VERSION = 1.3.0 http://git-wip-us.apache.org/repos/asf/mesos/blob/106d6e86/3rdparty/xz-5.2.3.patch ---------------------------------------------------------------------- diff --git a/3rdparty/xz-5.2.3.patch b/3rdparty/xz-5.2.3.patch new file mode 100644 index 0000000..70f1cb9 --- /dev/null +++ b/3rdparty/xz-5.2.3.patch @@ -0,0 +1,187 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 0000000..fbf90f0 +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,181 @@ ++project(xz C) ++ ++add_library(lzma ++ src/common/tuklib_cpucores.c ++ src/common/tuklib_physmem.c ++ src/liblzma/check/check.c ++ src/liblzma/check/crc32_fast.c ++ src/liblzma/check/crc32_table.c ++ src/liblzma/check/crc64_fast.c ++ src/liblzma/check/crc64_table.c ++ src/liblzma/check/sha256.c ++ src/liblzma/common/alone_decoder.c ++ src/liblzma/common/alone_encoder.c ++ src/liblzma/common/auto_decoder.c ++ src/liblzma/common/block_buffer_decoder.c ++ src/liblzma/common/block_buffer_encoder.c ++ src/liblzma/common/block_decoder.c ++ src/liblzma/common/block_encoder.c ++ src/liblzma/common/block_header_decoder.c ++ src/liblzma/common/block_header_encoder.c ++ src/liblzma/common/block_util.c ++ src/liblzma/common/common.c ++ src/liblzma/common/easy_buffer_encoder.c ++ src/liblzma/common/easy_decoder_memusage.c ++ src/liblzma/common/easy_encoder.c ++ src/liblzma/common/easy_encoder_memusage.c ++ src/liblzma/common/easy_preset.c ++ src/liblzma/common/filter_buffer_decoder.c ++ src/liblzma/common/filter_buffer_encoder.c ++ src/liblzma/common/filter_common.c ++ src/liblzma/common/filter_decoder.c ++ src/liblzma/common/filter_encoder.c ++ src/liblzma/common/filter_flags_decoder.c ++ src/liblzma/common/filter_flags_encoder.c ++ src/liblzma/common/hardware_cputhreads.c ++ src/liblzma/common/hardware_physmem.c ++ src/liblzma/common/index.c ++ src/liblzma/common/index_decoder.c ++ src/liblzma/common/index_encoder.c ++ src/liblzma/common/index_hash.c ++ src/liblzma/common/outqueue.c ++ src/liblzma/common/stream_buffer_decoder.c ++ src/liblzma/common/stream_buffer_encoder.c ++ src/liblzma/common/stream_decoder.c ++ src/liblzma/common/stream_encoder.c ++ src/liblzma/common/stream_encoder_mt.c ++ src/liblzma/common/stream_flags_common.c ++ src/liblzma/common/stream_flags_decoder.c ++ src/liblzma/common/stream_flags_encoder.c ++ src/liblzma/common/vli_decoder.c ++ src/liblzma/common/vli_encoder.c ++ src/liblzma/common/vli_size.c ++ src/liblzma/delta/delta_common.c ++ src/liblzma/delta/delta_decoder.c ++ src/liblzma/delta/delta_encoder.c ++ src/liblzma/lzma/fastpos_table.c ++ src/liblzma/lzma/lzma2_decoder.c ++ src/liblzma/lzma/lzma2_encoder.c ++ src/liblzma/lzma/lzma_decoder.c ++ src/liblzma/lzma/lzma_encoder.c ++ src/liblzma/lzma/lzma_encoder_optimum_fast.c ++ src/liblzma/lzma/lzma_encoder_optimum_normal.c ++ src/liblzma/lzma/lzma_encoder_presets.c ++ src/liblzma/lz/lz_decoder.c ++ src/liblzma/lz/lz_encoder.c ++ src/liblzma/lz/lz_encoder_mf.c ++ src/liblzma/rangecoder/price_table.c ++ src/liblzma/simple/arm.c ++ src/liblzma/simple/armthumb.c ++ src/liblzma/simple/ia64.c ++ src/liblzma/simple/powerpc.c ++ src/liblzma/simple/simple_coder.c ++ src/liblzma/simple/simple_decoder.c ++ src/liblzma/simple/simple_encoder.c ++ src/liblzma/simple/sparc.c ++ src/liblzma/simple/x86.c ++ src/common/mythread.h ++ src/common/sysdefs.h ++ src/common/tuklib_common.h ++ src/common/tuklib_config.h ++ src/common/tuklib_cpucores.h ++ src/common/tuklib_integer.h ++ src/common/tuklib_physmem.h ++ src/liblzma/api/lzma.h ++ src/liblzma/api/lzma/base.h ++ src/liblzma/api/lzma/bcj.h ++ src/liblzma/api/lzma/block.h ++ src/liblzma/api/lzma/check.h ++ src/liblzma/api/lzma/container.h ++ src/liblzma/api/lzma/delta.h ++ src/liblzma/api/lzma/filter.h ++ src/liblzma/api/lzma/hardware.h ++ src/liblzma/api/lzma/index.h ++ src/liblzma/api/lzma/index_hash.h ++ src/liblzma/api/lzma/lzma12.h ++ src/liblzma/api/lzma/stream_flags.h ++ src/liblzma/api/lzma/version.h ++ src/liblzma/api/lzma/vli.h ++ src/liblzma/check/check.h ++ src/liblzma/check/crc32_table_be.h ++ src/liblzma/check/crc32_table_le.h ++ src/liblzma/check/crc64_table_be.h ++ src/liblzma/check/crc64_table_le.h ++ src/liblzma/check/crc_macros.h ++ src/liblzma/common/alone_decoder.h ++ src/liblzma/common/block_buffer_encoder.h ++ src/liblzma/common/block_decoder.h ++ src/liblzma/common/block_encoder.h ++ src/liblzma/common/common.h ++ src/liblzma/common/easy_preset.h ++ src/liblzma/common/filter_common.h ++ src/liblzma/common/filter_decoder.h ++ src/liblzma/common/filter_encoder.h ++ src/liblzma/common/index.h ++ src/liblzma/common/index_encoder.h ++ src/liblzma/common/memcmplen.h ++ src/liblzma/common/outqueue.h ++ src/liblzma/common/stream_decoder.h ++ src/liblzma/common/stream_flags_common.h ++ src/liblzma/delta/delta_common.h ++ src/liblzma/delta/delta_decoder.h ++ src/liblzma/delta/delta_encoder.h ++ src/liblzma/delta/delta_private.h ++ src/liblzma/lzma/fastpos.h ++ src/liblzma/lzma/lzma2_decoder.h ++ src/liblzma/lzma/lzma2_encoder.h ++ src/liblzma/lzma/lzma_common.h ++ src/liblzma/lzma/lzma_decoder.h ++ src/liblzma/lzma/lzma_encoder.h ++ src/liblzma/lzma/lzma_encoder_private.h ++ src/liblzma/lz/lz_decoder.h ++ src/liblzma/lz/lz_encoder.h ++ src/liblzma/lz/lz_encoder_hash.h ++ src/liblzma/lz/lz_encoder_hash_table.h ++ src/liblzma/rangecoder/price.h ++ src/liblzma/rangecoder/range_common.h ++ src/liblzma/rangecoder/range_decoder.h ++ src/liblzma/rangecoder/range_encoder.h ++ src/liblzma/simple/simple_coder.h ++ src/liblzma/simple/simple_decoder.h ++ src/liblzma/simple/simple_encoder.h ++ src/liblzma/simple/simple_private.h ++ windows/config.h ++) ++ ++target_include_directories(lzma ++ PRIVATE ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/api> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/check> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/common> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/lzma> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/lz> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/simple> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/delta> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/rangecoder> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/common> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/common> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/windows> ++ INTERFACE ++ $<INSTALL_INTERFACE:include> ++ PUBLIC ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/api> ++) ++ ++target_compile_definitions(lzma ++ PRIVATE ++ _CRT_SECURE_NO_WARNINGS ++ _CRT_STDC_NO_DEPRECATE ++ HAVE_CONFIG_H ++) ++ ++install(TARGETS lzma ++ DESTINATION ${XZ_INSTALL_DIR}) ++ ++install(FILES src/liblzma/api/lzma.h ++ DESTINATION ${XZ_INSTALL_DIR}) ++ ++install(DIRECTORY src/liblzma/api/lzma ++ DESTINATION ${XZ_INSTALL_DIR}) http://git-wip-us.apache.org/repos/asf/mesos/blob/106d6e86/configure.ac ---------------------------------------------------------------------- diff --git a/configure.ac b/configure.ac index 03d333d..f5a9d5b 100644 --- a/configure.ac +++ b/configure.ac @@ -408,6 +408,11 @@ AC_ARG_WITH([libevent], [specify where to locate the libevent library]), [], []) +AC_ARG_WITH([libarchive], + AS_HELP_STRING([--with-libarchive=@<:@=DIR@:>@], + [specify where to locate the libarchive library]), + [without_bundled_libarchive=yes], []) + AC_ARG_WITH([libprocess], AS_HELP_STRING([--with-libprocess=@<:@=DIR@:>@], [specify where to locate the libprocess library]), @@ -1453,6 +1458,42 @@ fi AM_CONDITIONAL([ENABLE_LIBEVENT], [test x"$enable_libevent" = "xyes"]) +# Check if user has asked us to use a preinstalled libarchive, or if +# they asked us to ignore all bundled libraries while compiling and +# linking. +if test -n "`echo $with_libarchive`"; then + CPPFLAGS="$CPPFLAGS -I${with_libarchive}/include" + LDFLAGS="$LDFLAGS -L${with_libarchive}/lib" +fi + +if test "x$without_bundled_libarchive" = "xyes" || \ + test "x$enable_bundled" != "xyes"; then + # Check if headers and library were located. + AC_CHECK_HEADERS([archive.h], [found_libarchive=yes]) + + if test "x$found_libarchive" = "xyes"; then + with_bundled_libarchive=no + else + AC_MSG_ERROR([cannot find libarchive +------------------------------------------------------------------- +You have requested the use of a non-bundled libarchive but no suitable +libarchive could be found. + +You may want specify the location of libarchive by providing a prefix +path via --with-libarchive=DIR, or check that the path you provided is +correct if you're already doing this. +------------------------------------------------------------------- +]) + fi + +else + with_bundled_libarchive=yes +fi + +AM_CONDITIONAL([WITH_BUNDLED_LIBARCHIVE], [test "x$with_bundled_libarchive" = "xyes"]) + + + # Check if user has asked us to use a preinstalled libprocess, or if # they asked us to ignore all bundled libraries while compiling and # linking. http://git-wip-us.apache.org/repos/asf/mesos/blob/106d6e86/src/Makefile.am ---------------------------------------------------------------------- diff --git a/src/Makefile.am b/src/Makefile.am index aaa7750..9032453 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -35,6 +35,7 @@ GRPC = 3rdparty/grpc-$(GRPC_VERSION) GTEST = $(GOOGLETEST)/googletest JEMALLOC = 3rdparty/jemalloc-$(JEMALLOC_VERSION) LEVELDB = 3rdparty/leveldb-$(LEVELDB_VERSION) +LIBARCHIVE = 3rdparty/libarchive-$(LIBARCHIVE_VERSION) LIBPROCESS = 3rdparty/libprocess NVML = 3rdparty/nvml-$(NVML_VERSION) PICOJSON = 3rdparty/picojson-$(PICOJSON_VERSION) @@ -211,6 +212,15 @@ LIB_LEVELDB = -lleveldb LDADD += -lleveldb endif +if WITH_BUNDLED_LIBARCHIVE +MESOS_CPPFLAGS += -I../$(LIBARCHIVE)/libarchive/ +LIB_LIBARCHIVE = ../$(LIBARCHIVE)/.libs/libarchive.la +LDADD += $(LIB_LIBARCHIVE) +else +LIB_LIBARCHIVE = -larchive +LDADD += -larchive +endif + if WITH_BUNDLED_LIBPROCESS MESOS_CPPFLAGS += -I$(top_srcdir)/$(LIBPROCESS)/include LIB_PROCESS = ../$(LIBPROCESS)/libprocess.la @@ -1670,6 +1680,7 @@ libmesos_la_LIBADD = \ $(LIB_GLOG) \ $(LIB_GRPC) \ $(LIB_LEVELDB) \ + $(LIB_LIBARCHIVE) \ $(LIB_PROCESS) \ $(LIB_PROTOBUF) \ $(LIB_ZOOKEEPER) \
