Skip to content

Commit

Permalink
Fix Kokoro tests to work on Monterey machines (#10472)
Browse files Browse the repository at this point in the history
* Fix ruby permissions after Monterey upgrade

* Install m4 via Homebrew

* Adding ruby/python fixes to presubmits

* Adding homebrew prefix command

* More fixes for objc, python, and benchmark build

* Properly disabling C++ benchmark warning

* Use python 2 for testing

* Splitting venv and python 2

* Setup tox-pyenv

* Silencing more warnings

* Cleanup

* Upgrade python tests to 3.7 on mac

* Switch to python 2 by default (googletest requires it)

* Remove venv for python tests, use python 3.7

* Disable all compiler warnings for benchmark builds

* Enable benchmark LTO to silence warnings

* Upgrade python C++ tests to 3.7 on mac

* Fix locale issues in cocoapods

* Upgrade iOS simulator for cocoapods

* Remove benchmark build from C++ tests
  • Loading branch information
mkruskal-google authored Aug 30, 2022
1 parent efc5200 commit 90a5d7a
Show file tree
Hide file tree
Showing 8 changed files with 35 additions and 36 deletions.
4 changes: 2 additions & 2 deletions benchmarks/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@ $(benchmarks_protoc_outputs_proto2_header): protoc_middleman2

initialize_submodule:
oldpwd=`pwd`
cd $(top_srcdir) && git submodule update --init -r third_party/benchmark && \
cd third_party/benchmark && cmake -DCMAKE_BUILD_TYPE=Release && make
cd $(top_srcdir) && git submodule update --init -r third_party/benchmark && cd third_party/benchmark \
&& cmake -DCMAKE_BUILD_TYPE=Release && make
cd $$oldpwd
touch initialize_submodule

Expand Down
3 changes: 3 additions & 0 deletions kokoro/macos/objectivec_cocoapods_integration/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
# Change to repo root
cd $(dirname $0)/../../..

# Fix locale issues in Monterey.
export LC_ALL=en_US.UTF-8

# Prepare worker environment to run tests
source kokoro/macos/prepare_build_macos_rc

Expand Down
35 changes: 20 additions & 15 deletions kokoro/macos/prepare_build_macos_rc
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,42 @@

set -eux

export HOMEBREW_PREFIX=$(brew --prefix)

##
# Select Xcode version

# Remember to update the Xcode version when Xcode_11.3.app is not available.
# If xcode is not available, it will probably encounter the failure for
# "autom4te: need GNU m4 1.4 or later: /usr/bin/m4"
# go/kokoro/userdocs/macos/selecting_xcode.md for more information.
export DEVELOPER_DIR=/Applications/Xcode_11.3.app/Contents/Developer
##
# Select Xcode version
export DEVELOPER_DIR=/Applications/Xcode_13.3.1.app/Contents/Developer
sudo xcode-select -s "${DEVELOPER_DIR}"

##
# Select C/C++ compilers

export CC=gcc
export CXX=g++

##
# Install Python 2 by default

eval "$(pyenv init -)"
pyenv install -v -s 2.7.18 && pyenv global 2.7.18

##
# Install Tox

if [[ "${KOKORO_INSTALL_TOX:-}" == "yes" ]] ; then
sudo python3 -m pip install --upgrade pip tox
pyenv install -v -s 3.7.13
pyenv global 3.7.13
sudo python -m pip install --upgrade pip tox tox-pyenv
fi

##
# Install RVM

# Setup RVM
if [[ "${KOKORO_INSTALL_RVM:-}" == "yes" ]] ; then
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -

# Old OpenSSL versions cannot handle the SSL certificate used by
# https://get.rvm.io, so as a workaround we download RVM directly from
# GitHub. See this issue for details: https://github.com/rvm/rvm/issues/5133
curl -sSL https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer | bash -s stable --ruby
git config --global --add safe.directory $HOMEBREW_PREFIX/Library/Taps/homebrew/homebrew-cask
git config --global --add safe.directory $HOMEBREW_PREFIX/Library/Taps/homebrew/homebrew-core
git config --global --add safe.directory $HOMEBREW_PREFIX/Library/Taps/homebrew/homebrew-services
sudo chown -R $(whoami) $HOME/.rvm/
fi
3 changes: 0 additions & 3 deletions kokoro/release/ruby/macos/build_artifacts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,5 @@ export ARTIFACT_DIR=$(pwd)/artifacts
# ruby environment
bash kokoro/release/ruby/macos/ruby/ruby_build_environment.sh

gem install rubygems-update
update_rubygems

# build artifacts
bash kokoro/release/ruby/macos/ruby/ruby_build.sh
4 changes: 4 additions & 0 deletions kokoro/release/ruby/macos/ruby/ruby_build_environment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

set -ex

# Fix permissions
sudo chown -R $(whoami) $HOME/.rvm/
sudo chown -R $(whoami) /Library/Ruby/

set +ex # rvm script is very verbose and exits with errorcode
source $HOME/.rvm/scripts/rvm
set -e # rvm commands are very verbose
Expand Down
5 changes: 3 additions & 2 deletions objectivec/DevTools/full_mac_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -234,8 +234,9 @@ fi
objectivec/generate_well_known_types.sh --check-only -j "${NUM_MAKE_JOBS}"

header "Checking on the ObjC Runtime Code"
objectivec/DevTools/pddm_tests.py
if ! objectivec/DevTools/pddm.py --dry-run objectivec/*.[hm] objectivec/Tests/*.[hm] ; then
LOCAL_PYTHON=python
"${LOCAL_PYTHON}" objectivec/DevTools/pddm_tests.py
if ! "${LOCAL_PYTHON}" objectivec/DevTools/pddm.py --dry-run objectivec/*.[hm] objectivec/Tests/*.[hm] ; then
echo ""
echo "Update by running:"
echo " objectivec/DevTools/pddm.py objectivec/*.[hm] objectivec/Tests/*.[hm]"
Expand Down
2 changes: 1 addition & 1 deletion objectivec/Tests/CocoaPods/run_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ do_test() {
# errors.
xcodebuild_args+=(
-sdk iphonesimulator ONLY_ACTIVE_ARCH=NO
-destination "platform=iOS Simulator,name=iPad 2,OS=9.3"
-destination "platform=iOS Simulator,name=iPad Air (5th generation),OS=15.4"
)
fi

Expand Down
15 changes: 2 additions & 13 deletions tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,6 @@ build_cpp() {
internal_build_cpp
make check -j$(nproc) || (cat src/test-suite.log; false)
cd conformance && make test_cpp && cd ..

# The benchmark code depends on cmake, so test if it is installed before
# trying to do the build.
if [[ $(type cmake 2>/dev/null) ]]; then
# Verify benchmarking code can build successfully.
cd benchmarks && make cpp-benchmark && cd ..
else
echo ""
echo "WARNING: Skipping validation of the bench marking code, cmake isn't installed."
echo ""
fi
}

build_cpp_tcmalloc() {
Expand Down Expand Up @@ -333,7 +322,7 @@ build_python() {
if [ $(uname -s) == "Linux" ]; then
envlist=py\{35,36\}-python
else
envlist=py\{36\}-python
envlist=py\{37\}-python
fi
python -m tox -e $envlist
cd ..
Expand Down Expand Up @@ -387,7 +376,7 @@ build_python_cpp() {
if [ $(uname -s) == "Linux" ]; then
envlist=py\{35,36\}-cpp
else
envlist=py\{36\}-cpp
envlist=py\{37\}-cpp
fi
tox -e $envlist
cd ..
Expand Down

0 comments on commit 90a5d7a

Please sign in to comment.