Nathaniel Manista | 840615e | 2015-01-22 20:31:47 +0000 | [diff] [blame] | 1 | #!/bin/bash |
Craig Tiller | 0605995 | 2015-02-18 08:34:56 -0800 | [diff] [blame] | 2 | # Copyright 2015, Google Inc. |
Craig Tiller | 8342881 | 2015-02-16 12:13:57 -0800 | [diff] [blame] | 3 | # All rights reserved. |
| 4 | # |
| 5 | # Redistribution and use in source and binary forms, with or without |
| 6 | # modification, are permitted provided that the following conditions are |
| 7 | # met: |
| 8 | # |
| 9 | # * Redistributions of source code must retain the above copyright |
| 10 | # notice, this list of conditions and the following disclaimer. |
| 11 | # * Redistributions in binary form must reproduce the above |
| 12 | # copyright notice, this list of conditions and the following disclaimer |
| 13 | # in the documentation and/or other materials provided with the |
| 14 | # distribution. |
| 15 | # * Neither the name of Google Inc. nor the names of its |
| 16 | # contributors may be used to endorse or promote products derived from |
| 17 | # this software without specific prior written permission. |
| 18 | # |
| 19 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 20 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 21 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| 22 | # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 23 | # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 24 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 25 | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 26 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 27 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 28 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 29 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
Nathaniel Manista | 840615e | 2015-01-22 20:31:47 +0000 | [diff] [blame] | 30 | |
| 31 | set -ex |
| 32 | |
| 33 | # change to grpc repo root |
| 34 | cd $(dirname $0)/../.. |
| 35 | |
Masood Malekghassemi | 2b84162 | 2015-07-28 17:39:02 -0700 | [diff] [blame] | 36 | ROOT=`pwd` |
Masood Malekghassemi | 12dadaf | 2015-08-05 13:30:17 -0700 | [diff] [blame] | 37 | PATH=$ROOT/bins/$CONFIG:$ROOT/bins/$CONFIG/protobuf:$PATH |
Masood Malekghassemi | 2b84162 | 2015-07-28 17:39:02 -0700 | [diff] [blame] | 38 | GRPCIO=$ROOT/src/python/grpcio |
| 39 | GRPCIO_TEST=$ROOT/src/python/grpcio_test |
Masood Malekghassemi | 12dadaf | 2015-08-05 13:30:17 -0700 | [diff] [blame] | 40 | GRPCIO_HEALTH_CHECKING=$ROOT/src/python/grpcio_health_checking |
Masood Malekghassemi | 743c10c | 2015-06-16 18:05:27 -0700 | [diff] [blame] | 41 | |
Masood Malekghassemi | 9554534 | 2015-10-05 15:25:39 -0700 | [diff] [blame^] | 42 | # |
| 43 | # Dependency steps. |
| 44 | # |
| 45 | install_grpcio_deps() { |
| 46 | cd $GRPCIO |
| 47 | pip install -r requirements.txt |
| 48 | } |
| 49 | install_grpcio_test_deps() { |
| 50 | cd $GRPCIO_TEST |
| 51 | pip install -r requirements.txt |
| 52 | } |
| 53 | # |
| 54 | # End dependency steps. |
| 55 | # |
| 56 | |
| 57 | # |
| 58 | # Install steps. Requires that the `pip` command is appropriate (i.e. that the |
| 59 | # virtual environment has been activated). |
| 60 | # |
| 61 | install_grpcio() { |
| 62 | CFLAGS="-I$ROOT/include -std=c89" LDFLAGS=-L$ROOT/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install $GRPCIO |
| 63 | } |
| 64 | install_grpcio_test() { |
| 65 | pip install $GRPCIO_TEST |
| 66 | } |
| 67 | install_grpcio_health_checking() { |
| 68 | pip install $GRPCIO_HEALTH_CHECKING |
| 69 | } |
| 70 | # |
| 71 | # End install steps. |
| 72 | # |
| 73 | |
| 74 | # Cleans the environment of previous installations |
| 75 | clean_grpcio_all() { |
| 76 | (yes | pip uninstall grpcio) || true |
| 77 | (yes | pip uninstall grpcio_test) || true |
| 78 | (yes | pip uninstall grpcio_health_checking) || true |
| 79 | } |
| 80 | |
| 81 | # Builds the testing environment. |
Masood Malekghassemi | e5f7002 | 2015-06-29 09:20:26 -0700 | [diff] [blame] | 82 | make_virtualenv() { |
| 83 | virtualenv_name="python"$1"_virtual_environment" |
| 84 | if [ ! -d $virtualenv_name ] |
| 85 | then |
| 86 | # Build the entire virtual environment |
| 87 | virtualenv -p `which "python"$1` $virtualenv_name |
| 88 | source $virtualenv_name/bin/activate |
Masood Malekghassemi | 2b84162 | 2015-07-28 17:39:02 -0700 | [diff] [blame] | 89 | |
| 90 | # Install grpcio |
Masood Malekghassemi | 9554534 | 2015-10-05 15:25:39 -0700 | [diff] [blame^] | 91 | install_grpcio_deps |
| 92 | install_grpcio |
Masood Malekghassemi | 2b84162 | 2015-07-28 17:39:02 -0700 | [diff] [blame] | 93 | |
| 94 | # Install grpcio_test |
Masood Malekghassemi | 9554534 | 2015-10-05 15:25:39 -0700 | [diff] [blame^] | 95 | install_grpcio_test_deps |
| 96 | install_grpcio_test |
Masood Malekghassemi | 12dadaf | 2015-08-05 13:30:17 -0700 | [diff] [blame] | 97 | |
| 98 | # Install grpcio_health_checking |
Masood Malekghassemi | 9554534 | 2015-10-05 15:25:39 -0700 | [diff] [blame^] | 99 | install_grpcio_health_checking |
Masood Malekghassemi | e5f7002 | 2015-06-29 09:20:26 -0700 | [diff] [blame] | 100 | else |
| 101 | source $virtualenv_name/bin/activate |
| 102 | # Uninstall and re-install the packages we care about. Don't use |
| 103 | # --force-reinstall or --ignore-installed to avoid propagating this |
| 104 | # unnecessarily to dependencies. Don't use --no-deps to avoid missing |
| 105 | # dependency upgrades. |
Masood Malekghassemi | 9554534 | 2015-10-05 15:25:39 -0700 | [diff] [blame^] | 106 | clean_grpcio_all |
| 107 | install_grpcio || ( |
Masood Malekghassemi | e5f7002 | 2015-06-29 09:20:26 -0700 | [diff] [blame] | 108 | # Fall back to rebuilding the entire environment |
| 109 | rm -rf $virtualenv_name |
| 110 | make_virtualenv $1 |
| 111 | ) |
Masood Malekghassemi | 9554534 | 2015-10-05 15:25:39 -0700 | [diff] [blame^] | 112 | install_grpcio_test |
| 113 | install_grpcio_health_checking |
Masood Malekghassemi | e5f7002 | 2015-06-29 09:20:26 -0700 | [diff] [blame] | 114 | fi |
| 115 | } |
| 116 | |
| 117 | make_virtualenv $1 |