From eb317a701b83bf9a4f2a035d75747a3d76a48324 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Wed, 21 Oct 2020 00:01:29 -0700 Subject: Export of internal Abseil changes -- d09230db053c544c2dc7fd7d95d1ebe4302071e9 by Abseil Team : Move testonly_uses_linear_node_search to BtreeNodePeer PiperOrigin-RevId: 338210523 -- 7b11c945dbba7a354103c194877eba240f7f0cbc by Derek Mauro : Allow pinning to a GoogleTest commit to make the build reproducible Allow using a cached copy of the commit to avoid depending on GitHub PiperOrigin-RevId: 338115715 -- 8414f496c570a6398744da8324e158b39a2e3d92 by Andy Getzendanner : Generate a pkg-config file per absl_cc_library. PiperOrigin-RevId: 337986219 GitOrigin-RevId: d09230db053c544c2dc7fd7d95d1ebe4302071e9 Change-Id: Iae398ab8ad5c0c6833abd01aa5198315f5b6fa99 --- ci/cmake_common.sh | 25 +++++++++++++++++++++++++ ci/cmake_install_test.sh | 2 ++ ci/linux_gcc-latest_libstdcxx_cmake.sh | 16 ++++++---------- ci/linux_gcc_alpine_cmake.sh | 14 +++++--------- ci/macos_xcode_cmake.sh | 12 ++++++++---- 5 files changed, 46 insertions(+), 23 deletions(-) create mode 100755 ci/cmake_common.sh (limited to 'ci') diff --git a/ci/cmake_common.sh b/ci/cmake_common.sh new file mode 100755 index 00000000..15ffde2e --- /dev/null +++ b/ci/cmake_common.sh @@ -0,0 +1,25 @@ +# Copyright 2020 The Abseil Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# The commit of GoogleTest to be used in the CMake tests in this directory. +# Keep this in sync with the commit in the WORKSPACE file. +readonly ABSL_GOOGLETEST_COMMIT="8567b09290fe402cf01923e2131c5635b8ed851b" + +# Avoid depending on GitHub by looking for a cached copy of the commit first. +if [[ -r "${KOKORO_GFILE_DIR}/distdir/${ABSL_GOOGLETEST_COMMIT}.zip" ]]; then + DOCKER_EXTRA_ARGS="--mount type=bind,source=${KOKORO_GFILE_DIR}/distdir,target=/distdir,readonly ${DOCKER_EXTRA_ARGS:-}" + ABSL_GOOGLETEST_DOWNLOAD_URL="file:///distdir/${ABSL_GOOGLETEST_COMMIT}.zip" +else + ABSL_GOOGLETEST_DOWNLOAD_URL="https://github.com/google/googletest/archive/${ABSL_GOOGLETEST_COMMIT}.zip" +fi diff --git a/ci/cmake_install_test.sh b/ci/cmake_install_test.sh index 78eb41d9..5bf540c5 100755 --- a/ci/cmake_install_test.sh +++ b/ci/cmake_install_test.sh @@ -20,6 +20,8 @@ if [[ -z ${ABSEIL_ROOT:-} ]]; then ABSEIL_ROOT="$(realpath $(dirname ${0})/..)" fi +source "${ABSEIL_ROOT}/ci/cmake_common.sh" + source "${ABSEIL_ROOT}/ci/linux_docker_containers.sh" readonly DOCKER_CONTAINER=${LINUX_GCC_LATEST_CONTAINER} diff --git a/ci/linux_gcc-latest_libstdcxx_cmake.sh b/ci/linux_gcc-latest_libstdcxx_cmake.sh index 1bf5fdab..ed9cfa38 100755 --- a/ci/linux_gcc-latest_libstdcxx_cmake.sh +++ b/ci/linux_gcc-latest_libstdcxx_cmake.sh @@ -14,18 +14,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -# TODO(absl-team): This script isn't fully hermetic because -# -DABSL_USE_GOOGLETEST_HEAD=ON means that this script isn't pinned to a fixed -# version of GoogleTest. This means that an upstream change to GoogleTest could -# break this test. Fix this by allowing this script to pin to a known-good -# version of GoogleTest. - set -euox pipefail if [[ -z ${ABSEIL_ROOT:-} ]]; then ABSEIL_ROOT="$(realpath $(dirname ${0})/..)" fi +source "${ABSEIL_ROOT}/ci/cmake_common.sh" + if [[ -z ${ABSL_CMAKE_CXX_STANDARDS:-} ]]; then ABSL_CMAKE_CXX_STANDARDS="11 14 17 20" fi @@ -46,17 +42,17 @@ for std in ${ABSL_CMAKE_CXX_STANDARDS}; do for build_shared in ${ABSL_CMAKE_BUILD_SHARED}; do time docker run \ --mount type=bind,source="${ABSEIL_ROOT}",target=/abseil-cpp,readonly \ - --workdir=/abseil-cpp \ --tmpfs=/buildfs:exec \ + --workdir=/buildfs \ --cap-add=SYS_PTRACE \ --rm \ -e CFLAGS="-Werror" \ -e CXXFLAGS="-Werror" \ - ${DOCKER_CONTAINER} \ + ${DOCKER_EXTRA_ARGS:-} \ + "${DOCKER_CONTAINER}" \ /bin/bash -c " - cd /buildfs && \ cmake /abseil-cpp \ - -DABSL_USE_GOOGLETEST_HEAD=ON \ + -DABSL_GOOGLETEST_DOWNLOAD_URL=${ABSL_GOOGLETEST_DOWNLOAD_URL} \ -DABSL_RUN_TESTS=ON \ -DBUILD_SHARED_LIBS=${build_shared} \ -DCMAKE_BUILD_TYPE=${compilation_mode} \ diff --git a/ci/linux_gcc_alpine_cmake.sh b/ci/linux_gcc_alpine_cmake.sh index c8f173da..31310ac7 100755 --- a/ci/linux_gcc_alpine_cmake.sh +++ b/ci/linux_gcc_alpine_cmake.sh @@ -14,18 +14,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -# TODO(absl-team): This script isn't fully hermetic because -# -DABSL_USE_GOOGLETEST_HEAD=ON means that this script isn't pinned to a fixed -# version of GoogleTest. This means that an upstream change to GoogleTest could -# break this test. Fix this by allowing this script to pin to a known-good -# version of GoogleTest. - set -euox pipefail if [[ -z ${ABSEIL_ROOT:-} ]]; then ABSEIL_ROOT="$(realpath $(dirname ${0})/..)" fi +source "${ABSEIL_ROOT}/ci/cmake_common.sh" + if [[ -z ${ABSL_CMAKE_CXX_STANDARDS:-} ]]; then ABSL_CMAKE_CXX_STANDARDS="11 14 17" fi @@ -46,17 +42,17 @@ for std in ${ABSL_CMAKE_CXX_STANDARDS}; do for build_shared in ${ABSL_CMAKE_BUILD_SHARED}; do time docker run \ --mount type=bind,source="${ABSEIL_ROOT}",target=/abseil-cpp,readonly \ - --workdir=/abseil-cpp \ --tmpfs=/buildfs:exec \ + --workdir=/buildfs \ --cap-add=SYS_PTRACE \ --rm \ -e CFLAGS="-Werror" \ -e CXXFLAGS="-Werror" \ + ${DOCKER_EXTRA_ARGS:-} \ "${DOCKER_CONTAINER}" \ /bin/sh -c " - cd /buildfs && \ cmake /abseil-cpp \ - -DABSL_USE_GOOGLETEST_HEAD=ON \ + -DABSL_GOOGLETEST_DOWNLOAD_URL=${ABSL_GOOGLETEST_DOWNLOAD_URL} \ -DABSL_RUN_TESTS=ON \ -DCMAKE_BUILD_TYPE=${compilation_mode} \ -DCMAKE_CXX_STANDARD=${std} \ diff --git a/ci/macos_xcode_cmake.sh b/ci/macos_xcode_cmake.sh index d90e273a..0847b3ea 100755 --- a/ci/macos_xcode_cmake.sh +++ b/ci/macos_xcode_cmake.sh @@ -14,9 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# This script is invoked on Kokoro to test Abseil on macOS. -# It is not hermetic and may break when Kokoro is updated. - set -euox pipefail if [[ -z ${ABSEIL_ROOT:-} ]]; then @@ -24,6 +21,13 @@ if [[ -z ${ABSEIL_ROOT:-} ]]; then fi ABSEIL_ROOT=$(realpath ${ABSEIL_ROOT}) +source "${ABSEIL_ROOT}/ci/cmake_common.sh" + +# The MacOS build doesn't run in a docker container, so we have to override ABSL_GOOGLETEST_DOWNLOAD_URL. +if [[ -r "${KOKORO_GFILE_DIR}/distdir/${ABSL_GOOGLETEST_COMMIT}.zip" ]]; then + ABSL_GOOGLETEST_DOWNLOAD_URL="file://${KOKORO_GFILE_DIR}/distdir/${ABSL_GOOGLETEST_COMMIT}.zip" +fi + if [[ -z ${ABSL_CMAKE_BUILD_TYPES:-} ]]; then ABSL_CMAKE_BUILD_TYPES="Debug" fi @@ -44,7 +48,7 @@ for compilation_mode in ${ABSL_CMAKE_BUILD_TYPES}; do -DCMAKE_BUILD_TYPE=${compilation_mode} \ -DCMAKE_CXX_STANDARD=11 \ -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--no-undefined" \ - -DABSL_USE_GOOGLETEST_HEAD=ON \ + -DABSL_GOOGLETEST_DOWNLOAD_URL="${ABSL_GOOGLETEST_DOWNLOAD_URL}" \ -DABSL_RUN_TESTS=ON time cmake --build . time ctest -C ${compilation_mode} --output-on-failure -- cgit v1.2.3