Revert CMake Debug optimization flags to compare CI speeds. Drops the custom `CMAKE_C_FLAGS_DEBUG` and `CMAKE_CXX_FLAGS_DEBUG` overrides in `cmake.yml` (and the `-Og` workaround in `exception_safety_testing.h`) to benchmark default unoptimized CMake Debug builds across Linux, macOS, and Windows. PiperOrigin-RevId: 1001348712
diff --git a/.bazelrc b/.bazelrc index b1c92dd..c39ac4e 100644 --- a/.bazelrc +++ b/.bazelrc
@@ -77,6 +77,11 @@ build:remote --remote_executor=grpcs://us-east1-remotebuildexecution.googleapis.com build:remote --remote_instance_name=projects/google.com:absl-177019/instances/absl-ci-east +build:remote-floor --config=remote +build:remote-floor --extra_execution_platforms=//ci:rbe-floor +build:remote-floor --host_platform=//ci:rbe-floor +build:remote-floor --platforms=//ci:rbe-floor + build:remote-arm --config=remote-base build:remote-arm --extra_execution_platforms=//ci:rbe-arm build:remote-arm --host_platform=//ci:rbe-arm
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 768f1ca..b646e7a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml
@@ -44,10 +44,9 @@ cancel-in-progress: ${{ contains(fromJSON('["pull_request", "workflow_dispatch", "schedule"]'), github.event_name) }} jobs: - # Mirrors the 10 Linux "latest" Bazel Kokoro jobs (parallelized to 1 job per - # Bazel invocation). Not yet covered here: - # - "Linux GCC/libstdc++ (floor) Bazel" (requires a floor GCC Docker image) - # - CMake, macOS, and Windows Kokoro jobs + # Mirrors the 11 Linux Bazel Kokoro jobs (parallelized to 1 job per Bazel + # invocation). Not yet covered here: + # - macOS Bazel and Windows Bazel Kokoro jobs linux: name: Linux ${{ matrix.config.name }} Bazel strategy: @@ -87,26 +86,75 @@ - name: GCC/libstdc++ alternate options toolchain: gcc alternate_options: true + # linux_gcc-floor_libstdcxx_bazel.cfg (c++17 only) + - name: GCC/libstdc++ (floor) + toolchain: gcc + remote_config: remote-floor + container_image: gcr.io/google.com/absl-177019/oss-linux-toolchain-floor@sha256:f3d8a0f76a88d5edbba70250de47fb862271297b9ff41ff317240e564c95d65e + stds: '["c++17"]' # linux_arm_clang-latest_libcxx_bazel.cfg (c++17 and c++20 only) - name: ARM64 Clang/libc++ + os: ubuntu-24.04-arm toolchain: clang-arm - arch_suffix: -arm + remote_config: remote-arm stds: '["c++17", "c++20"]' uses: ./.github/workflows/bazel.yml secrets: inherit with: - os: ubuntu-24.04${{ matrix.config.arch_suffix }} + os: ${{ matrix.config.os || 'ubuntu-24.04' }} toolchain: ${{ matrix.config.toolchain }} - remote_config: remote${{ matrix.config.arch_suffix }} - container_image: gcr.io/google.com/absl-177019/gloop-linux-toolchain-latest@sha256:a820c79d3f356a64db121a4ee16c4408df18f9d2c8bf6c6abfae21666ac003ba + remote_config: ${{ matrix.config.remote_config || 'remote' }} + container_image: ${{ matrix.config.container_image || 'gcr.io/google.com/absl-177019/oss-linux-toolchain-latest@sha256:5a19067585ce5e5ee45640fd0287f05038d6b3f9574d6a5cdf08241e022d0f4a' }} alternate_options: ${{ matrix.config.alternate_options || false }} stds: ${{ matrix.config.stds || '["c++17", "c++20", "c++23"]' }} compilation_modes: ${{ matrix.config.compilation_modes || '["opt", "fastbuild"]' }} + cmake: + name: ${{ matrix.config.name }} CMake + strategy: + fail-fast: false # Don't cancel all jobs if one fails. + matrix: + config: + # linux_gcc-latest_libstdcxx_cxx17_cmake.cfg + - name: Linux GCC/libstdc++ + os: ubuntu-24.04 + container_image: gcr.io/google.com/absl-177019/oss-linux-latest@sha256:9f7f104e4857e3528e8bf5f14968183f5a0e786ca9ef63601eae4e4136f011d6 + # linux_gcc_alpine_cmake.cfg + - name: Alpine Linux GCC (musl) + os: ubuntu-24.04 + container_image: gcr.io/google.com/absl-177019/alpine@sha256:ae26b80601cebb14595056a94e070f0f865d24baaf3ce19bcd52f53be9f99c80 + build_types: '["Debug"]' + link_modes: '["static"]' + # cmake-install.cfg + - name: Linux Install + os: ubuntu-24.04 + container_image: gcr.io/google.com/absl-177019/oss-linux-latest@sha256:9f7f104e4857e3528e8bf5f14968183f5a0e786ca9ef63601eae4e4136f011d6 + build_types: '["Release"]' + link_modes: '["static", "shared"]' + install_test: true + # macos_xcode_cmake.cfg + - name: macOS Xcode + os: macos-latest + build_types: '["Debug"]' + # windows-msvc-2022-cxx17-dbg-cmake.cfg + # windows-msvc-2022-cxx17-dbg-dll-cmake.cfg + - name: Windows MSVC 2022 + os: windows-2022 + build_types: '["Debug"]' + link_modes: '["static", "shared"]' + uses: ./.github/workflows/cmake.yml + secrets: inherit + with: + os: ${{ matrix.config.os }} + container_image: ${{ matrix.config.container_image || '' }} + build_types: ${{ matrix.config.build_types || '["Debug", "Release"]' }} + link_modes: ${{ matrix.config.link_modes || '["static", "shared", "monolithic-shared"]' }} + install_test: ${{ matrix.config.install_test || false }} + # Provide a single predictably-named job for copybara to look for all-blocking-tests: name: All Blocking Tests - needs: [linux] + needs: [linux, cmake] runs-on: ubuntu-latest steps: - name: Check for cancellations
diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml new file mode 100644 index 0000000..550e8c9 --- /dev/null +++ b/.github/workflows/cmake.yml
@@ -0,0 +1,141 @@ +# Copyright 2026 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. + +name: CMake Tests + +on: + workflow_call: + inputs: + os: + description: "GitHub Actions runner OS (e.g. ubuntu-24.04, macos-latest, windows-2022)" + required: true + type: string + container_image: + description: "Docker container image to run in (empty string for host execution)" + required: false + default: "" + type: string + build_types: + description: "JSON array of CMAKE_BUILD_TYPE values to test" + required: false + default: '["Debug", "Release"]' + type: string + link_modes: + description: "JSON array of link modes to test (static, shared, monolithic-shared)" + required: false + default: '["static", "shared", "monolithic-shared"]' + type: string + install_test: + description: "Whether to run the CMake installation integration test" + required: false + default: false + type: boolean + +permissions: + contents: read + +jobs: + test: + runs-on: ${{ inputs.os }} + name: (${{ matrix.build_type }}, ${{ matrix.link_mode }}) + container: + image: ${{ inputs.container_image }} + # core=1 skips kernel pipe core_pattern handlers (e.g. apport) on death tests. + options: --cap-add=SYS_PTRACE --ulimit core=1 + credentials: + # TODO(b/573304451): Switch to Workload Identity Federation to avoid the need for secrets. + username: _json_key + password: ${{ secrets.GAR_SERVICE_ACCOUNT }} + strategy: + fail-fast: false # Don't cancel all jobs if one fails. + matrix: + build_type: ${{ fromJSON(inputs.build_types) }} + link_mode: ${{ fromJSON(inputs.link_modes) }} + defaults: + run: + shell: bash + env: + CC: ${{ startsWith(inputs.os, 'ubuntu') && 'gcc' || '' }} + CFLAGS: ${{ !inputs.install_test && startsWith(inputs.os, 'ubuntu') && '-Werror' || '' }} + CMAKE_BUILD_PARALLEL_LEVEL: 16 + CMAKE_C_COMPILER_LAUNCHER: sccache + CMAKE_CXX_COMPILER_LAUNCHER: sccache + CMAKE_GENERATOR: Ninja + CTEST_OUTPUT_ON_FAILURE: 1 + CXX: ${{ startsWith(inputs.os, 'ubuntu') && 'g++' || '' }} + CXXFLAGS: ${{ !inputs.install_test && (startsWith(inputs.os, 'ubuntu') && '-Werror' || startsWith(inputs.os, 'windows') && '-WX') || '' }} + SCCACHE_GCS_BUCKET: absl-cmake-sccache + SCCACHE_GCS_RW_MODE: READ_WRITE + SCCACHE_IDLE_TIMEOUT: 0 + SCCACHE_IGNORE_SERVER_IO_ERROR: 1 + steps: + - name: Checkout + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # 7.0.0 + + - name: Set up MSVC + if: ${{ runner.os == 'Windows' }} + uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 + with: + arch: x64 + vsversion: "2022" + + - name: Authenticate to Google Cloud + id: auth + uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0 + with: + credentials_json: ${{ secrets.GAR_SERVICE_ACCOUNT }} + + - name: Set up sccache + uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10 + + - name: Start sccache + env: + SCCACHE_GCS_KEY_PATH: ${{ steps.auth.outputs.credentials_file_path }} + run: sccache --start-server + + - name: Run installation test + if: ${{ inputs.install_test }} + env: + LINK_TYPE: ${{ matrix.link_mode == 'shared' && 'DYNAMIC' || 'STATIC' }} + run: > + source ci/cmake_common.sh && + export ABSL_GOOGLETEST_VERSION ABSL_GOOGLETEST_DOWNLOAD_URL && + CMake/install_test_project/test.sh + + - name: Configure + if: ${{ !inputs.install_test }} + run: > + source ci/cmake_common.sh && + cmake -B build + -DABSL_BUILD_TESTING=ON + -DABSL_GOOGLETEST_DOWNLOAD_URL=${ABSL_GOOGLETEST_DOWNLOAD_URL} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -DCMAKE_CXX_STANDARD=17 + -DBUILD_SHARED_LIBS=${{ matrix.link_mode != 'static' }} + -DABSL_BUILD_MONOLITHIC_SHARED_LIBS=${{ matrix.link_mode == 'monolithic-shared' }} + -DCMAKE_POLICY_DEFAULT_CMP0141=NEW + -DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded + + - name: Build + if: ${{ !inputs.install_test }} + run: cmake --build build + + - name: Run tests + if: ${{ !inputs.install_test }} + env: + TZDIR: ${{ github.workspace }}/absl/time/internal/cctz/testdata/zoneinfo + run: > + ctest --test-dir build -j $(nproc 2>/dev/null || sysctl -n hw.ncpu) + --repeat until-pass:3 + ${{ runner.os == 'Windows' && '-E "absl_lifetime_test|absl_symbolize_test"' || '' }}
diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake index 61e1ae4..271e5ba 100644 --- a/CMake/AbseilHelpers.cmake +++ b/CMake/AbseilHelpers.cmake
@@ -372,6 +372,7 @@ # COPTS: List of private compile options # DEFINES: List of public defines # LINKOPTS: List of link options +# SHARD_COUNT: Number of shards to split the test into for ctest # # Note: # By default, absl_cc_test will always create a binary named absl_${NAME}. @@ -405,7 +406,7 @@ cmake_parse_arguments(ABSL_CC_TEST "" - "NAME" + "NAME;SHARD_COUNT" "SRCS;COPTS;DEFINES;LINKOPTS;DEPS" ${ARGN} ) @@ -461,5 +462,16 @@ target_compile_features(${_NAME} PUBLIC ${ABSL_INTERNAL_CXX_STD_FEATURE}) endif() - add_test(NAME ${_NAME} COMMAND ${_NAME}) + if(ABSL_CC_TEST_SHARD_COUNT AND ABSL_CC_TEST_SHARD_COUNT GREATER 1) + math(EXPR _LAST_SHARD "${ABSL_CC_TEST_SHARD_COUNT} - 1") + foreach(_SHARD RANGE 0 ${_LAST_SHARD}) + add_test(NAME "${_NAME}_shard_${_SHARD}" COMMAND ${_NAME}) + set_tests_properties("${_NAME}_shard_${_SHARD}" PROPERTIES + ENVIRONMENT "GTEST_TOTAL_SHARDS=${ABSL_CC_TEST_SHARD_COUNT};GTEST_SHARD_INDEX=${_SHARD}" + COST 100 + ) + endforeach() + else() + add_test(NAME ${_NAME} COMMAND ${_NAME}) + endif() endfunction()
diff --git a/CMake/install_test_project/test.sh b/CMake/install_test_project/test.sh index 962bc8d..6b2d1e5 100755 --- a/CMake/install_test_project/test.sh +++ b/CMake/install_test_project/test.sh
@@ -19,8 +19,9 @@ # Fail on any error. Treat unset variables an error. Print commands as executed. set -euox pipefail -absl_dir=/abseil-cpp +absl_dir="${PWD}" absl_build_dir=/buildfs +mkdir -p "${absl_build_dir}" googletest_builddir=/googletest_builddir googletest_archive="googletest-${ABSL_GOOGLETEST_VERSION}.tar.gz" project_dir="${absl_dir}/CMake/install_test_project" @@ -40,8 +41,8 @@ mkdir build pushd build cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS="${build_shared_libs}" .. -make -j $(nproc) -make install +cmake --build . --parallel $(nproc) +cmake --install . ldconfig popd popd @@ -58,9 +59,9 @@ -DCMAKE_BUILD_TYPE=Release \ -DABSL_BUILD_TESTING=ON \ -DBUILD_SHARED_LIBS="${build_shared_libs}" -make -j $(nproc) -ctest -j $(nproc) --output-on-failure -make install +cmake --build . --parallel $(nproc) +ctest -j $(nproc) --output-on-failure --repeat until-pass:3 +cmake --install . ldconfig popd
diff --git a/absl/base/BUILD.bazel b/absl/base/BUILD.bazel index 749c54f..2ee5c2b 100644 --- a/absl/base/BUILD.bazel +++ b/absl/base/BUILD.bazel
@@ -565,6 +565,7 @@ srcs = ["spinlock_test_common.cc"], copts = ABSL_TEST_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, + shard_count = 4, tags = [ "no_test_wasm", ],
diff --git a/absl/base/CMakeLists.txt b/absl/base/CMakeLists.txt index 2f8846f..5325df7 100644 --- a/absl/base/CMakeLists.txt +++ b/absl/base/CMakeLists.txt
@@ -533,6 +533,8 @@ absl::core_headers absl::synchronization GTest::gtest_main + SHARD_COUNT + 4 ) # Internal-only target, do not depend on directly.
diff --git a/absl/base/exception_safety_testing_test.cc b/absl/base/exception_safety_testing_test.cc index 24b12d4..9aa4dce 100644 --- a/absl/base/exception_safety_testing_test.cc +++ b/absl/base/exception_safety_testing_test.cc
@@ -842,7 +842,7 @@ return true; } - static unsigned char successes; + static unsigned char successes [[maybe_unused]]; }; struct {
diff --git a/absl/base/internal/low_level_alloc_test.cc b/absl/base/internal/low_level_alloc_test.cc index 2f3a3fd..4cf469d 100644 --- a/absl/base/internal/low_level_alloc_test.cc +++ b/absl/base/internal/low_level_alloc_test.cc
@@ -66,7 +66,7 @@ // Use to indicate to the malloc hooks that // this calls is from LowLevelAlloc. -static bool using_low_level_alloc = false; +static bool using_low_level_alloc [[maybe_unused]] = false; // n times, toss a coin, and based on the outcome // either allocate a new block or deallocate an old block.
diff --git a/absl/container/BUILD.bazel b/absl/container/BUILD.bazel index 850eaec..7792be0 100644 --- a/absl/container/BUILD.bazel +++ b/absl/container/BUILD.bazel
@@ -845,6 +845,7 @@ srcs = ["internal/raw_hash_set_test.cc"], copts = ABSL_TEST_COPTS, linkstatic = 1, + shard_count = 4, tags = NOTEST_TAGS_MOBILE + [ "no_test_chromiumos_arm", "no_test_chromiumos_armv7",
diff --git a/absl/container/CMakeLists.txt b/absl/container/CMakeLists.txt index 7a2641c..0c07fed 100644 --- a/absl/container/CMakeLists.txt +++ b/absl/container/CMakeLists.txt
@@ -87,6 +87,8 @@ absl::test_allocator absl::test_instance_tracker GTest::gmock_main + SHARD_COUNT + 10 ) absl_cc_test( @@ -106,6 +108,8 @@ absl::flags absl::raw_logging_internal GTest::gmock_main + SHARD_COUNT + 10 ) # Internal-only target, do not depend on directly. @@ -871,6 +875,8 @@ absl::test_instance_tracker absl::type_traits GTest::gmock_main + SHARD_COUNT + 4 ) # Internal-only target, do not depend on directly.
diff --git a/absl/crc/CMakeLists.txt b/absl/crc/CMakeLists.txt index fb9beea..e50b242 100644 --- a/absl/crc/CMakeLists.txt +++ b/absl/crc/CMakeLists.txt
@@ -122,6 +122,8 @@ absl::string_view absl::strings GTest::gtest_main + SHARD_COUNT + 3 ) absl_cc_test(
diff --git a/absl/debugging/symbolize_test.cc b/absl/debugging/symbolize_test.cc index 8fcdb84..9ee0abd 100644 --- a/absl/debugging/symbolize_test.cc +++ b/absl/debugging/symbolize_test.cc
@@ -421,7 +421,7 @@ // to optimize away the .data section if no variables live in the // section. This variable should get placed in the .data section, and // the test below checks for the existence of a .data section. -static int in_data_section = 1; +static int in_data_section [[maybe_unused]] = 1; TEST(Symbolize, ForEachSection) { int fd;
diff --git a/absl/flags/CMakeLists.txt b/absl/flags/CMakeLists.txt index 0e40085..162b654 100644 --- a/absl/flags/CMakeLists.txt +++ b/absl/flags/CMakeLists.txt
@@ -455,6 +455,8 @@ absl::flags_internal absl::time GTest::gmock_main + SHARD_COUNT + 31 ) absl_cc_test(
diff --git a/absl/flags/flag_test.cc b/absl/flags/flag_test.cc index 1d6a496..5cacf64 100644 --- a/absl/flags/flag_test.cc +++ b/absl/flags/flag_test.cc
@@ -1026,7 +1026,7 @@ default; ~NonTriviallyCopyableUDT() { s_num_instance--; } - static uint64_t s_num_instance; + static uint64_t s_num_instance [[maybe_unused]]; char c; };
diff --git a/absl/hash/BUILD.bazel b/absl/hash/BUILD.bazel index fe76a1d..010668d 100644 --- a/absl/hash/BUILD.bazel +++ b/absl/hash/BUILD.bazel
@@ -89,6 +89,7 @@ ], copts = ABSL_TEST_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, + shard_count = 4, deps = [ ":hash", ":hash_testing",
diff --git a/absl/hash/CMakeLists.txt b/absl/hash/CMakeLists.txt index 2ced4b1..f8e7afa 100644 --- a/absl/hash/CMakeLists.txt +++ b/absl/hash/CMakeLists.txt
@@ -78,6 +78,8 @@ absl::string_view absl::strings GTest::gmock_main + SHARD_COUNT + 4 ) absl_cc_test(
diff --git a/absl/log/BUILD.bazel b/absl/log/BUILD.bazel index 2c0a8ff..3e15e0b 100644 --- a/absl/log/BUILD.bazel +++ b/absl/log/BUILD.bazel
@@ -315,6 +315,7 @@ srcs = ["absl_check_test.cc"], copts = ABSL_TEST_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, + shard_count = 4, tags = [ "no_test:os:ios", "no_test_ios", @@ -350,6 +351,7 @@ srcs = ["check_test.cc"], copts = ABSL_TEST_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, + shard_count = 4, tags = [ "no_test:os:ios", "no_test_ios",
diff --git a/absl/log/CMakeLists.txt b/absl/log/CMakeLists.txt index ebc24f3..1da38e4 100644 --- a/absl/log/CMakeLists.txt +++ b/absl/log/CMakeLists.txt
@@ -838,6 +838,8 @@ absl::string_view absl::strings GTest::gmock_main + SHARD_COUNT + 4 ) absl_cc_test( @@ -883,6 +885,8 @@ absl::string_view absl::strings GTest::gmock_main + SHARD_COUNT + 4 ) absl_cc_test(
diff --git a/absl/random/BUILD.bazel b/absl/random/BUILD.bazel index edc4e93..d63f8f3 100644 --- a/absl/random/BUILD.bazel +++ b/absl/random/BUILD.bazel
@@ -199,6 +199,7 @@ srcs = ["bernoulli_distribution_test.cc"], copts = ABSL_TEST_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, + shard_count = 4, deps = [ ":distributions", ":random", @@ -217,6 +218,7 @@ copts = ABSL_TEST_COPTS, flaky = 1, linkopts = ABSL_DEFAULT_LINKOPTS, + shard_count = 4, tags = [ "no_test_wasm", ], @@ -326,6 +328,7 @@ ], copts = ABSL_TEST_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, + shard_count = 4, tags = [ # Too Slow. "no_test_android_arm",
diff --git a/absl/random/CMakeLists.txt b/absl/random/CMakeLists.txt index 8a31015..f9d2d60 100644 --- a/absl/random/CMakeLists.txt +++ b/absl/random/CMakeLists.txt
@@ -272,6 +272,8 @@ absl::random_random GTest::gmock GTest::gtest_main + SHARD_COUNT + 4 ) absl_cc_test( @@ -295,6 +297,8 @@ absl::strings GTest::gmock GTest::gtest_main + SHARD_COUNT + 4 ) absl_cc_test( @@ -398,6 +402,8 @@ absl::strings GTest::gmock GTest::gtest_main + SHARD_COUNT + 4 ) absl_cc_test(
diff --git a/absl/strings/BUILD.bazel b/absl/strings/BUILD.bazel index 7711ad2..756300e 100644 --- a/absl/strings/BUILD.bazel +++ b/absl/strings/BUILD.bazel
@@ -598,6 +598,7 @@ timeout = "long", srcs = ["internal/cord_rep_btree_test.cc"], copts = ABSL_TEST_COPTS, + shard_count = 4, visibility = ["//visibility:private"], deps = [ ":cord_internal", @@ -1039,6 +1040,7 @@ timeout = "long", srcs = ["cord_test.cc"], copts = ABSL_TEST_COPTS, + shard_count = 4, visibility = ["//visibility:private"], deps = [ ":cord", @@ -1565,6 +1567,7 @@ timeout = "long", srcs = ["internal/str_format/convert_test.cc"], copts = ABSL_TEST_COPTS, + shard_count = 4, visibility = ["//visibility:private"], deps = [ ":str_format",
diff --git a/absl/strings/CMakeLists.txt b/absl/strings/CMakeLists.txt index 1461d94..8ba84b5 100644 --- a/absl/strings/CMakeLists.txt +++ b/absl/strings/CMakeLists.txt
@@ -714,6 +714,8 @@ absl::string_view absl::strings GTest::gmock_main + SHARD_COUNT + 4 ) absl_cc_test( @@ -1196,6 +1198,8 @@ absl::string_view absl::strings GTest::gmock_main + SHARD_COUNT + 4 ) absl_cc_test( @@ -1233,6 +1237,8 @@ absl::string_view absl::strings GTest::gmock_main + SHARD_COUNT + 4 ) absl_cc_test(
diff --git a/absl/strings/match.h b/absl/strings/match.h index 431d4f5..65bd8aa 100644 --- a/absl/strings/match.h +++ b/absl/strings/match.h
@@ -80,7 +80,8 @@ if (text.size() < suffix.size()) { return false; } - absl::string_view possible_match = text.substr(text.size() - suffix.size()); + absl::string_view possible_match = + text.substr(text.size() - suffix.size(), suffix.size()); return possible_match == suffix; } // StrContainsIgnoreCase()
diff --git a/absl/synchronization/BUILD.bazel b/absl/synchronization/BUILD.bazel index 977af61..7acbec4 100644 --- a/absl/synchronization/BUILD.bazel +++ b/absl/synchronization/BUILD.bazel
@@ -382,6 +382,7 @@ copts = ABSL_TEST_COPTS, flaky = 1, linkopts = ABSL_DEFAULT_LINKOPTS, + shard_count = 4, deps = [ ":kernel_timeout_internal", ":synchronization",
diff --git a/absl/synchronization/CMakeLists.txt b/absl/synchronization/CMakeLists.txt index 3502d11..50129ce 100644 --- a/absl/synchronization/CMakeLists.txt +++ b/absl/synchronization/CMakeLists.txt
@@ -198,6 +198,8 @@ absl::thread_pool absl::time GTest::gmock_main + SHARD_COUNT + 25 ) absl_cc_test( @@ -278,6 +280,8 @@ absl::thread_pool absl::time GTest::gmock_main + SHARD_COUNT + 4 ) absl_cc_test(
diff --git a/absl/time/BUILD.bazel b/absl/time/BUILD.bazel index eaea38a..347e24b 100644 --- a/absl/time/BUILD.bazel +++ b/absl/time/BUILD.bazel
@@ -181,6 +181,7 @@ ], copts = ABSL_TEST_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, + shard_count = 4, deps = [ ":clock_interface", ":simulated_clock",
diff --git a/absl/time/CMakeLists.txt b/absl/time/CMakeLists.txt index b141b62..79b99e8 100644 --- a/absl/time/CMakeLists.txt +++ b/absl/time/CMakeLists.txt
@@ -202,6 +202,8 @@ absl::synchronization absl::time GTest::gmock_main + SHARD_COUNT + 4 ) absl_cc_test(
diff --git a/ci/BUILD.bazel b/ci/BUILD.bazel index 607a356..4a1caac 100644 --- a/ci/BUILD.bazel +++ b/ci/BUILD.bazel
@@ -23,7 +23,21 @@ exec_properties = { "OSArch": "amd64", "cache-silo-key": "n2-highcpu-2-2026-10-14", - "container-image": "docker://gcr.io/google.com/absl-177019/gloop-linux-latest@sha256:e199623ad0b61b30d240e8bbddf473f65cb1a11da09462001d83b5066dbd9e98", + "container-image": "docker://gcr.io/google.com/absl-177019/oss-linux-latest@sha256:9f7f104e4857e3528e8bf5f14968183f5a0e786ca9ef63601eae4e4136f011d6", + "dockerRunAsRoot": "true", + }, +) + +platform( + name = "rbe-floor", + constraint_values = [ + "@platforms//os:linux", + "@platforms//cpu:x86_64", + ], + exec_properties = { + "OSArch": "amd64", + "cache-silo-key": "n2-highcpu-2-2026-10-14", + "container-image": "docker://gcr.io/google.com/absl-177019/oss-linux-floor@sha256:81041c514c7ee412a5677afc652b9eb3a02e0f6dfe8d71164d80e6e39820b09d", "dockerRunAsRoot": "true", }, ) @@ -37,7 +51,7 @@ exec_properties = { "OSArch": "arm64", "cache-silo-key": "t2a-standard-4-2026-10-14", - "container-image": "docker://gcr.io/google.com/absl-177019/gloop-linux-latest@sha256:e199623ad0b61b30d240e8bbddf473f65cb1a11da09462001d83b5066dbd9e98", + "container-image": "docker://gcr.io/google.com/absl-177019/oss-linux-latest@sha256:9f7f104e4857e3528e8bf5f14968183f5a0e786ca9ef63601eae4e4136f011d6", "dockerRunAsRoot": "true", }, )