This is an automated email from the ASF dual-hosted git repository. asekretenko pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mesos.git
commit b2e12fc423a5c1fcb786e2fce01193ef7207006e Author: Andrei Sekretenko <asekrete...@apache.org> AuthorDate: Wed Jul 15 20:01:25 2020 +0200 Added RE2 to the CMake build. This is a prerequisite for implementing regex-based offer constraints. Review: https://reviews.apache.org/r/72782 --- 3rdparty/CMakeLists.txt | 82 +++++++++++++++++++++++++++++++++++++++++ 3rdparty/cmake/Versions.cmake | 2 + 3rdparty/re2-2020-07-06.tar.gz | Bin 0 -> 404055 bytes LICENSE | 32 ++++++++++++++++ src/CMakeLists.txt | 1 + 5 files changed, 117 insertions(+) diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index af9a071..59c931c 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -42,6 +42,7 @@ set(NVML_URL ${FETCH_URL}/nvml-${NVML_VERSION}.tar.gz) set(PICOJSON_URL ${FETCH_URL}/picojson-${PICOJSON_VERSION}.tar.gz) set(PROTOBUF_URL ${FETCH_URL}/protobuf-${PROTOBUF_VERSION}.tar.gz) set(RAPIDJSON_URL ${FETCH_URL}/rapidjson-${RAPIDJSON_VERSION}.tar.gz) +set(RE2_URL ${FETCH_URL}/re2-${RE2_VERSION}.tar.gz) set(XZ_URL ${FETCH_URL}/xz-${XZ_VERSION}-modified.tar.gz) set(ZOOKEEPER_URL ${FETCH_URL}/zookeeper-${ZOOKEEPER_VERSION}.tar.gz) @@ -477,6 +478,87 @@ if (ENABLE_INSTALL_MODULE_DEPENDENCIES) DESTINATION ${MESOS_INSTALL_HEADERS}) endif () +# re2: non-backtracking regular expression library by Google +# https://github.com/google/re2 +################################ +EXTERNAL(re2 ${RE2_VERSION} ${CMAKE_CURRENT_BINARY_DIR}) +add_library(re2 ${LIBRARY_LINKAGE} IMPORTED GLOBAL) +add_dependencies(re2 ${RE2_TARGET}) + +# NOTE: Mesos build uses re2 installed into a prefix (similarly to glog). +set(RE2_INSTALL_DIR ${RE2_ROOT}-install) + +set( + RE2_CMAKE_ARGS + ${CMAKE_CXX_FORWARD_ARGS} + -DBUILD_TESTING=OFF + -DCMAKE_INSTALL_BINDIR=${RE2_INSTALL_DIR}/bin + -DCMAKE_INSTALL_INCLUDEDIR=${RE2_INSTALL_DIR}/include + -DCMAKE_INSTALL_LIBDIR=${RE2_INSTALL_DIR}/lib +) + +if (WIN32) + if (BUILD_SHARED_LIBS) + set(RE2_IMPORTED_LOCATION_DIR ${RE2_INSTALL_DIR}/bin) + else() + set(RE2_IMPORTED_LOCATION_DIR ${RE2_INSTALL_DIR}/lib) + endif() + + if (CMAKE_GENERATOR MATCHES "Visual Studio") + # TODO(asekretenko): Make sure that these locations are correct on + # MSVC Windows both in debug and release modes; adjust if necessary. + set_target_properties( + re2 PROPERTIES + IMPORTED_LOCATION_DEBUG ${RE2_IMPORTED_LOCATION_DIR}/re2${LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELEASE ${RE2_IMPORTED_LOCATION_DIR}/re2${LIBRARY_SUFFIX} + IMPORTED_IMPLIB_DEBUG ${RE2_INSTALL_DIR}/lib/re2${CMAKE_IMPORT_LIBRARY_SUFFIX} + IMPORTED_IMPLIB_RELEASE ${RE2_INSTALL_DIR}/lib/re2${CMAKE_IMPORT_LIBRARY_SUFFIX} + ) + else () + # TODO(asekretenko): Make sure that these locations are correct on + # non-MSVC Windows; adjust if necessary. + set_target_properties( + re2 PROPERTIES + IMPORTED_LOCATION ${RE2_IMPORTED_LOCATION_DIR}/libre2${LIBRARY_SUFFIX} + IMPORTED_IMPLIB ${RE2_INSTALL_DIR}/lib/libre2${CMAKE_IMPORT_LIBRARY_SUFFIX} + ) + endif() +else() + set_target_properties( + re2 PROPERTIES + IMPORTED_LOCATION ${RE2_INSTALL_DIR}/lib/libre2${LIBRARY_SUFFIX} + ) +endif () + +set_target_properties( + re2 PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${RE2_INSTALL_DIR}/include +) + +MAKE_INCLUDE_DIR(re2) +GET_BYPRODUCTS(re2) + +ExternalProject_Add( + ${RE2_TARGET} + PREFIX ${RE2_CMAKE_ROOT} + BUILD_BYPRODUCTS ${RE2_BYPRODUCTS} + CMAKE_ARGS ${RE2_CMAKE_ARGS} + INSTALL_DIR ${RE2_INSTALL_DIR} + URL ${RE2_URL} + URL_HASH ${RE2_HASH}) + +if (WIN32 AND BUILD_SHARED_LIBS) + # TODO(asekretenko): Make sure that this location is correct on + # Windows; adjust if necessary. + install( + DIRECTORY ${RE2_INSTALL_DIR}/bin/ + DESTINATION ${MESOS_INSTALL_RUNTIME}) +endif() + +install( + DIRECTORY ${RE2_INSTALL_DIR}/lib/ + DESTINATION ${MESOS_INSTALL_LIBRARIES}) + # PicoJSON: JSON parser / serializer. # https://github.com/kazuho/picojson ##################################### diff --git a/3rdparty/cmake/Versions.cmake b/3rdparty/cmake/Versions.cmake index 9376616..eafe255 100644 --- a/3rdparty/cmake/Versions.cmake +++ b/3rdparty/cmake/Versions.cmake @@ -49,6 +49,8 @@ set(ZOOKEEPER_VERSION "3.4.8") set(ZOOKEEPER_HASH "SHA256=F10A0B51F45C4F64C1FE69EF713ABF9EB9571BC7385A82DA892E83BB6C965E90") set(GLOG_VERSION "0.4.0") set(GLOG_HASH "SHA256=F28359AEBA12F30D73D9E4711EF356DC842886968112162BC73002645139C39C") +set(RE2_VERSION "2020-07-06") +set(RE2_HASH "SHA256=2E9489A31AE007C81E90E8EC8A15D62D58A9C18D4FD1603F6441EF248556B41F") # Platform-dependent versions. if (WIN32) diff --git a/3rdparty/re2-2020-07-06.tar.gz b/3rdparty/re2-2020-07-06.tar.gz new file mode 100644 index 0000000..a7d6c9f Binary files /dev/null and b/3rdparty/re2-2020-07-06.tar.gz differ diff --git a/LICENSE b/LICENSE index 2c5919d..6ef484e 100644 --- a/LICENSE +++ b/LICENSE @@ -1295,3 +1295,35 @@ RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +====================================================================== +For re2-2020-07-06 (3rdparty/re2-2020-07-06.tar.gz): +====================================================================== +// Copyright (c) 2009 The RE2 Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 668a506..f5105c7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -634,6 +634,7 @@ target_link_libraries( if (NOT WIN32) target_link_libraries(mesos PUBLIC leveldb) + target_link_libraries(mesos PUBLIC re2) endif () if (ENABLE_SECCOMP_ISOLATOR)