|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +# This script tests the packaging of compdb on Ubuntu Trusty. |
| 4 | +# It has been made to run on Travis CI and locally on Ubuntu 14.04, |
| 5 | +# or locally inside docker thanks to docker/ubuntu-trusty.sh. |
| 6 | +# The dependencies can be found in docker/ubuntu-trusty/Dockerfile. |
| 7 | + |
| 8 | +if [[ ! -f compdb/__init__.py ]]; then |
| 9 | + 1>&2 echo "error: this script expects to run in compdb root directory!" |
| 10 | + exit 1 |
| 11 | +fi |
| 12 | + |
| 13 | +set -o errexit |
| 14 | +set -o xtrace |
| 15 | + |
| 16 | +# First generate release files to ~/dist |
| 17 | +virtualenv .venv |
| 18 | +source .venv/bin/activate |
| 19 | +pip install -U "setuptools>=18" |
| 20 | +pip install wheel |
| 21 | +python setup.py sdist bdist_wheel |
| 22 | +deactivate |
| 23 | +mv dist ~/dist |
| 24 | +rm -r .venv |
| 25 | + |
| 26 | +# Install from source |
| 27 | +mkdir ~/userbase |
| 28 | +PYTHONUSERBASE=~/userbase python setup.py install --user |
| 29 | +PYTHONUSERBASE=~/userbase PATH="$HOME/userbase/bin:$PATH" compdb version |
| 30 | +rm -r ~/userbase |
| 31 | + |
| 32 | +# Install from source with pip |
| 33 | +mkdir ~/userbase |
| 34 | +PYTHONUSERBASE=~/userbase pip install --user . |
| 35 | +PYTHONUSERBASE=~/userbase PATH="$HOME/userbase/bin:$PATH" compdb version |
| 36 | +rm -r ~/userbase |
| 37 | + |
| 38 | +# Install from source in virtualenv |
| 39 | +# On Ubuntu 14.04, system wide setuptools version is 3.3, |
| 40 | +# but in virtualenv it is 2.2, which is unsufficient. |
| 41 | +virtualenv .venv |
| 42 | +source .venv/bin/activate |
| 43 | +pip install -U "setuptools>=3.3" |
| 44 | +python setup.py install |
| 45 | +compdb version |
| 46 | +deactivate |
| 47 | +rm -r .venv |
| 48 | + |
| 49 | +# Wheel |
| 50 | +mkdir ~/userbase |
| 51 | +PYTHONUSERBASE=~/userbase pip install --user ~/dist/compdb-*.whl |
| 52 | +PYTHONUSERBASE=~/userbase PATH="$HOME/userbase/bin:$PATH" compdb version |
| 53 | +rm -r ~/userbase |
| 54 | + |
| 55 | +# Wheel in virtualenv |
| 56 | +# Seems to work out of the box for ubuntu 14:04: with setuptools 2.2 |
| 57 | +# and pip 1.5.x. |
| 58 | +# I assume wheels have support for 'extras_require' |
| 59 | +# for longer than source distributions. |
| 60 | +virtualenv .venv |
| 61 | +source .venv/bin/activate |
| 62 | +pip install ~/dist/compdb-*.whl |
| 63 | +compdb version |
| 64 | +deactivate |
| 65 | +rm -r .venv |
| 66 | + |
| 67 | +# pip install source distribution |
| 68 | +mkdir ~/userbase |
| 69 | +PYTHONUSERBASE=~/userbase pip install --user ~/dist/compdb-*.tar.gz |
| 70 | +PYTHONUSERBASE=~/userbase PATH="$HOME/userbase/bin:$PATH" compdb version |
| 71 | +rm -r ~/userbase |
| 72 | + |
| 73 | +# pip install source distribution in virtualenv |
| 74 | +# |
| 75 | +# 2 alternatives: |
| 76 | +# pip vendors setuptools, in pip 7.1.0 setuptools has been bumped to version 18. |
| 77 | +# Starting from this version 'extras_require' is supported in setup(). |
| 78 | +# |
| 79 | +# 1. works but does not use extras_require |
| 80 | +virtualenv .venv |
| 81 | +source .venv/bin/activate |
| 82 | +pip install -U 'setuptools>=3.3,<18' |
| 83 | +pip install -U 'pip<7.1.0' |
| 84 | +pip install ~/dist/compdb-*.tar.gz |
| 85 | +compdb version |
| 86 | +deactivate |
| 87 | +rm -r .venv |
| 88 | +# 2. works by using extras_require |
| 89 | +virtualenv .venv |
| 90 | +source .venv/bin/activate |
| 91 | +pip install -U 'setuptools>=18' |
| 92 | +pip install -U 'pip>=7.1.0' |
| 93 | +pip install ~/dist/compdb-*.tar.gz |
| 94 | +compdb version |
| 95 | +deactivate |
| 96 | +rm -r .venv |
| 97 | + |
| 98 | +# requirements.txt, depends on the pip version that vendors setuptools>=18 |
| 99 | +virtualenv .venv |
| 100 | +source .venv/bin/activate |
| 101 | +pip install -U 'pip==7.1.0' |
| 102 | +pip install -r requirements.txt |
| 103 | +deactivate |
| 104 | +rm -r .venv |
0 commit comments