launchctl limit maxfiles
ulimit -a
+# WARNING: TRY TO KEEP THIS FILE AS LEAN AS POSSIBLE
+# The rules:
+# - think twice before adding installer that takes long time (builds are already slow)
+# - do not add any steps that are flaky (builds will become flaky)
+# - try adding a dependency under a language-specific section first (reduces latency and increases build stability)
+# - only add stuff that you absolutely need for your builds to work (add comment to explain why its needed)
+
# Add GCP credentials for BQ access
pip install --user google-api-python-client oauth2client
export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/GrpcTesting-d0eeee2db331.json
export RUN_TESTS_FLAGS="--filter_pr_tests --base_branch origin/$KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH $RUN_TESTS_FLAGS"
fi
-set +ex # rvm script is very verbose and exits with errorcode
-# Advice from https://github.com/Homebrew/homebrew-cask/issues/8629#issuecomment-68641176
-brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup
-rvm --debug requirements ruby-2.5.0
-source $HOME/.rvm/scripts/rvm
-set -e # rvm commands are very verbose
-time rvm install 2.5.0
-rvm use 2.5.0 --default
-time gem install bundler -v 1.17.3 --no-ri --no-doc
-time gem install cocoapods --version 1.3.1 --no-ri --no-doc
-time gem install rake-compiler --no-ri --no-doc
-rvm osx-ssl-certs status all
-rvm osx-ssl-certs update all
-set -ex
-
-# cocoapods
-export LANG=en_US.UTF-8
-# pre-fetch cocoapods master repo's most recent commit only
-mkdir -p ~/.cocoapods/repos
-time git clone --depth 1 https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/master
-
-# python
-time pip install --user virtualenv
-time pip install --user --upgrade Mako six tox setuptools twisted pyyaml pyjwt cryptography requests
-export PYTHONPATH=/Library/Python/3.4/site-packages
-
-# Install Python 3.7 and Python 3.8
-time curl -O https://www.python.org/ftp/python/3.7.0/python-3.7.0-macosx10.9.pkg
-time curl -O https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg
-echo "ae0717a02efea3b0eb34aadc680dc498 python-3.7.0-macosx10.9.pkg" > /tmp/python_installer_checksum.md5
-echo "f5f9ae9f416170c6355cab7256bb75b5 python-3.8.0-macosx10.9.pkg" >> /tmp/python_installer_checksum.md5
-md5sum -c /tmp/python_installer_checksum.md5
-time sudo installer -pkg ./python-3.7.0-macosx10.9.pkg -target /
-time sudo installer -pkg ./python-3.8.0-macosx10.9.pkg -target /
-
-# set xcode version for Obj-C tests
-sudo xcode-select -switch /Applications/Xcode_9.2.app/Contents/Developer/
-
-# Disable some unwanted dotnet options
-export NUGET_XMLDOC_MODE=skip
-export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
-export DOTNET_CLI_TELEMETRY_OPTOUT=true
+if [ "${PREPARE_BUILD_INSTALL_DEPS_RUBY}" == "true" ]
+then
+ set +ex # rvm script is very verbose and exits with errorcode
+ # Advice from https://github.com/Homebrew/homebrew-cask/issues/8629#issuecomment-68641176
+ brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup
+ rvm --debug requirements ruby-2.5.0
+ source $HOME/.rvm/scripts/rvm
+ set -e # rvm commands are very verbose
+ time rvm install 2.5.0
+ rvm use 2.5.0 --default
+ time gem install bundler -v 1.17.3 --no-ri --no-doc
+ time gem install cocoapods --version 1.3.1 --no-ri --no-doc
+ time gem install rake-compiler --no-ri --no-doc
+ rvm osx-ssl-certs status all
+ rvm osx-ssl-certs update all
+ set -ex
+fi
-# TODO(jtattermusch): better debugging of clock skew, remove once not needed
-date
+if [ "${PREPARE_BUILD_INSTALL_DEPS_OBJC}" == "true" ]
+then
+ # cocoapods
+ export LANG=en_US.UTF-8
+ # pre-fetch cocoapods master repo's most recent commit only
+ mkdir -p ~/.cocoapods/repos
+ time git clone --depth 1 https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/master
-time git submodule update --init
+ # set xcode version for Obj-C tests
+ sudo xcode-select -switch /Applications/Xcode_9.2.app/Contents/Developer/
-# Store intermediate build files of ObjC tests into /tmpfs
-mkdir /tmpfs/Build-ios-binary-size
-ln -s /tmpfs/Build-ios-binary-size src/objective-c/examples/Sample/Build
-mkdir -p /tmpfs/DerivedData
-rm -rf ~/Library/Developer/Xcode/DerivedData
-mkdir -p ~/Library/Developer/Xcode
-ln -s /tmpfs/DerivedData ~/Library/Developer/Xcode/DerivedData
+ # Needed for ios-binary-size
+ time pip install --user pyyaml pyjwt cryptography requests
+
+ # Store intermediate build files of ObjC tests into /tmpfs
+ # TODO(jtattermusch): this has likely been done to avoid running
+ # out of disk space when running ios-binary-size tests, but
+ # it would be good to revisit.
+ mkdir /tmpfs/Build-ios-binary-size
+ ln -s /tmpfs/Build-ios-binary-size src/objective-c/examples/Sample/Build
+ mkdir -p /tmpfs/DerivedData
+ rm -rf ~/Library/Developer/Xcode/DerivedData
+ mkdir -p ~/Library/Developer/Xcode
+ ln -s /tmpfs/DerivedData ~/Library/Developer/Xcode/DerivedData
+fi
+
+if [ "${PREPARE_BUILD_INSTALL_DEPS_PYTHON}" == "true" ]
+then
+ # python
+ time pip install --user virtualenv
+ time pip install --user --upgrade Mako six tox setuptools twisted pyyaml pyjwt cryptography requests
+ export PYTHONPATH=/Library/Python/3.4/site-packages
+
+ # make sure md5sum is available (requires coreutils 8.31+)
+ brew upgrade coreutils
+
+ # Install Python 3.7 and Python 3.8
+ time curl -O https://www.python.org/ftp/python/3.7.0/python-3.7.0-macosx10.9.pkg
+ time curl -O https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg
+ echo "ae0717a02efea3b0eb34aadc680dc498 python-3.7.0-macosx10.9.pkg" > /tmp/python_installer_checksum.md5
+ echo "f5f9ae9f416170c6355cab7256bb75b5 python-3.8.0-macosx10.9.pkg" >> /tmp/python_installer_checksum.md5
+ md5sum -c /tmp/python_installer_checksum.md5
+ time sudo installer -pkg ./python-3.7.0-macosx10.9.pkg -target /
+ time sudo installer -pkg ./python-3.8.0-macosx10.9.pkg -target /
+fi
+
+if [ "${PREPARE_BUILD_INSTALL_DEPS_CSHARP}" == "true" ]
+then
+ # Disable some unwanted dotnet options
+ export NUGET_XMLDOC_MODE=skip
+ export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+ export DOTNET_CLI_TELEMETRY_OPTOUT=true
+
+ # Xcode 10+ doesn't support building for i386 architecture
+ sudo xcode-select -switch /Applications/Xcode_9.2.app/Contents/Developer/
+
+ # make sure we have the golang 1.13+
+ # recent golang is currently required by boringssl's cmake build
+ # and C# uses cmake to build grpc_csharp_ext
+ # see https://github.com/grpc/grpc/issues/21626
+ which go
+ ls -l $(which go)
+ go version # check original golang version (to diagnose the issue)
+ brew unlink go # stop using brew-provided version of go
+ time curl -O https://dl.google.com/go/go1.13.6.darwin-amd64.pkg
+ time sudo installer -pkg ./go1.13.6.darwin-amd64.pkg -target /
+ export PATH="/usr/local/go/bin:$PATH"
+ which go
+ go version
+fi
# PHP tests currently require using an older version of PHPUnit
ln -sf /usr/local/bin/phpunit-5.7 /usr/local/bin/phpunit
+# TODO(jtattermusch): better debugging of clock skew, remove once not needed
+date
+
+time git submodule update --init