|
@@ -0,0 +1,79 @@
|
|
|
|
+#!/bin/bash
|
|
|
|
+
|
|
|
|
+# Exit immediately if a command returns a non-zero status.
|
|
|
|
+set -e
|
|
|
|
+
|
|
|
|
+################
|
|
|
|
+# Homebrew setup
|
|
|
|
+################
|
|
|
|
+
|
|
|
|
+# There's a homebrew bug which causes brew update to fail the first time. Run
|
|
|
|
+# it twice to workaround. https://github.com/Homebrew/homebrew/issues/42553
|
|
|
|
+brew update || brew update
|
|
|
|
+
|
|
|
|
+# List of homebrew formulae to install in the order they appear.
|
|
|
|
+# We require CMake and Ninja for our build and tests, and all the others are
|
|
|
|
+# dependencies of pyenv.
|
|
|
|
+REQUIREMENTS="cmake
|
|
|
|
+ ninja
|
|
|
|
+ readline
|
|
|
|
+ autoconf
|
|
|
|
+ pkg-config
|
|
|
|
+ openssl"
|
|
|
|
+
|
|
|
|
+# Install CMake, Ninja, and pyenv dependencies.
|
|
|
|
+for pkg in $REQUIREMENTS; do
|
|
|
|
+ # Install package, or upgrade it if it is already installed.
|
|
|
|
+ brew install $pkg || brew outdated $pkg || brew upgrade $pkg
|
|
|
|
+done
|
|
|
|
+
|
|
|
|
+##############
|
|
|
|
+# Python setup
|
|
|
|
+##############
|
|
|
|
+
|
|
|
|
+PYENV_ROOT="${HOME}/.pyenv"
|
|
|
|
+
|
|
|
|
+if [ ! -d "${PYENV_ROOT}/.git" ]; then
|
|
|
|
+ rm -rf ${PYENV_ROOT}
|
|
|
|
+ git clone https://github.com/yyuu/pyenv.git ${PYENV_ROOT}
|
|
|
|
+fi
|
|
|
|
+pushd ${PYENV_ROOT}
|
|
|
|
+git fetch --tags
|
|
|
|
+git checkout v1.2.1
|
|
|
|
+popd
|
|
|
|
+
|
|
|
|
+PATH="${PYENV_ROOT}/bin:${PATH}"
|
|
|
|
+
|
|
|
|
+eval "$(pyenv init -)"
|
|
|
|
+
|
|
|
|
+if [ "${YCMD_PYTHON_VERSION}" == "2.7" ]; then
|
|
|
|
+ # We need a recent enough version of Python 2.7 on macOS or an error occurs
|
|
|
|
+ # when installing the psutil dependency for our tests.
|
|
|
|
+ PYENV_VERSION="2.7.8"
|
|
|
|
+else
|
|
|
|
+ PYENV_VERSION="3.3.6"
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+# In order to work with ycmd, python *must* be built as a shared library. The
|
|
|
|
+# most compatible way to do this on macOS is with --enable-framework. This is
|
|
|
|
+# set via the PYTHON_CONFIGURE_OPTS option.
|
|
|
|
+export PYTHON_CONFIGURE_OPTS="--enable-framework"
|
|
|
|
+
|
|
|
|
+pyenv install --skip-existing ${PYENV_VERSION}
|
|
|
|
+pyenv rehash
|
|
|
|
+pyenv global ${PYENV_VERSION}
|
|
|
|
+
|
|
|
|
+# Initialize pyenv in other steps. See
|
|
|
|
+# https://circleci.com/docs/2.0/env-vars/#interpolating-environment-variables-to-set-other-environment-variables
|
|
|
|
+# and https://github.com/pyenv/pyenv/issues/264
|
|
|
|
+echo "export PATH=${PYENV_ROOT}/bin:\$PATH
|
|
|
|
+if [ -z \"\${PYENV_LOADING}\" ]; then
|
|
|
|
+ export PYENV_LOADING=true
|
|
|
|
+ eval \"\$(pyenv init -)\"
|
|
|
|
+ unset PYENV_LOADING
|
|
|
|
+fi" >> $BASH_ENV
|
|
|
|
+
|
|
|
|
+pip install -U pip wheel setuptools
|
|
|
|
+pip install -r python/test_requirements.txt
|
|
|
|
+
|
|
|
|
+set +e
|