~jocave/checkbox/hybrid-amd-gpu-mods

« back to all changes in this revision

Viewing changes to support/test-install-dependencies

  • Committer: Zygmunt Krynicki
  • Date: 2013-05-28 17:03:27 UTC
  • mto: This revision was merged to the branch mainline in revision 2146.
  • Revision ID: zygmunt.krynicki@canonical.com-20130528170327-ot0e4ogon5mxiija
support: add dependency support module

This patch changes all of the deployment scripts and adds a few new
conventions and utilities.

By convention, all sub-projects should have a directory called
'requirements' that may have any number of deb-*.txt and pip-*.txt files
inside. All of the deb-*.txt files must list the debian packages to
install, one per line. All of the pip-*.txt files must list the pypi
packages to install.  Unlike debian packages, pypi packages must be
pinned, that is, refer to a particular version using the name==version
syntax. All of those packages must be collected in a separate repository
'external-tarballs' which is managed externally.

To prepare a fresh system for checkbox development a number of steps are
taken. Firsst all of the debian dependencies are gathered and installed.
After that pip is installed from source. This is required because pip
for python3 is not packaged in Ubuntu 12.04 and it is required to
install additional packages. Pip, as all non-Debian packages, is
installed from 'external-tarballs'. Pip then is used to install all of
the gathered pip dependencies. At this time all of the external
dependencies should be ready. The last step is to develop all of the
sub-projects, in order: checkbox, plainbox and checkbox-ng.

The same sequence of actions is taken when provisioning vagrant images
and local, virtualenv-based development. Due to the overall complexity
the per-subproject mk-venv.sh files are now replaced with a single
global copy.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
# This file is part of Checkbox.
 
3
#
 
4
# Copyright 2013 Canonical Ltd.
 
5
# Written by:
 
6
#   Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
 
7
#
 
8
# Checkbox is free software: you can redistribute it and/or modify
 
9
# it under the terms of the GNU General Public License as published by
 
10
# the Free Software Foundation, either version 3 of the License, or
 
11
# (at your option) any later version.
 
12
#
 
13
# Checkbox is distributed in the hope that it will be useful,
 
14
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
# GNU General Public License for more details.
 
17
#
 
18
# You should have received a copy of the GNU General Public License
 
19
# along with Checkbox.  If not, see <http://www.gnu.org/licenses/>.
 
20
 
 
21
# Test script for 'install-dependencies'
 
22
# ======================================
 
23
#
 
24
# Creates a new random empty virtualenv with python3 and runs
 
25
# install-dependencies. Verifies the output of pip freeze at the end.
 
26
 
 
27
# Ensure that CHECKBOX_TOP is not empty
 
28
if [ "$CHECKBOX_TOP" = "" ]; then
 
29
    echo "E: this script requires \$CHECKBOX_TOP"
 
30
    exit 100
 
31
else
 
32
    # Export CHECKBOX_TOP for install-pip-dependencies
 
33
    export CHECKBOX_TOP
 
34
fi
 
35
 
 
36
# Create a directory for virtualenv and ensure it gets removed later
 
37
venv_path=$(mktemp -d)
 
38
trap "rm -rf \"$venv_path\"" EXIT
 
39
 
 
40
# Create a virtualenv
 
41
echo "I: creating temporary virtualenv"
 
42
if ! virtualenv --quiet -p python3 "$venv_path"; then
 
43
    echo "E: cannot create virtualenv"
 
44
    exit 1
 
45
fi
 
46
 
 
47
# Activate the virtualenv
 
48
. "$venv_path/bin/activate"
 
49
 
 
50
# Install all the packages
 
51
echo "I: installing dependencies"
 
52
$CHECKBOX_TOP/support/install-pip-dependencies
 
53
 
 
54
# Check installation outcome
 
55
echo "I: checking installed packages"
 
56
pip freeze > $venv_path/actual-pip-freeze.txt
 
57
if ! diff -u $CHECKBOX_TOP/support/expected-pip-freeze.txt $venv_path/actual-pip-freeze.txt ; then
 
58
    echo "E: actually installed packages don't match expectations"
 
59
    exit 2
 
60
fi
 
61
 
 
62
# Done
 
63
echo "I: testing complete, all good"
 
64
exit 0