Statistics
| Branch: | Tag: | Revision:

root / devel / build_chroot @ 87414481

History | View | Annotate | Download (4.3 kB)

1
#!/bin/bash
2
#Configuration
3
: ${DATA_DIR=`dirname $0`/data}
4
: ${ARCH=amd64}
5
: ${DIST_RELEASE=squeeze}
6
: ${CONF_DIR:=/etc/schroot/chroot.d}
7
: ${CHROOT_DIR:=/srv/chroot}
8
: ${ALTERNATIVE_EDITOR:=/usr/bin/vim.basic}
9

    
10
#Automatically generated variables
11
CHROOTNAME=$DIST_RELEASE-$ARCH
12
CHNAME=building_$CHROOTNAME
13
TEMP_CHROOT_CONF=$CONF_DIR/$CHNAME.conf
14
FINAL_CHROOT_CONF=$CHROOTNAME.conf
15
ROOT=`pwd`
16
CHDIR=$ROOT/$CHNAME
17
USER=`whoami`
18
COMP_FILENAME=$CHROOTNAME.tar.gz
19
COMP_FILEPATH=$ROOT/$COMP_FILENAME
20

    
21
#Runnability checks
22
if [ $USER != 'root' ]
23
then
24
  echo "This script requires root permissions to run"
25
  exit
26
fi
27

    
28
if [ -f $TEMP_CHROOT_CONF ]
29
then
30
  echo "The configuration file name for the temporary chroot"
31
  echo "  $TEMP_CHROOT_CONF"
32
  echo "already exists."
33
  echo "Remove it or change the CHNAME value in the script."
34
  exit
35
fi
36

    
37
if [ ! -d $DATA_DIR ]
38
then
39
  echo "The data directory"
40
  echo "  $DATA_DIR"
41
  echo "does not exist."
42
  echo "Please, set the DATA_DIR environment variable so that it points to the"
43
  echo "data directory."
44
  exit
45
fi
46

    
47
set -e
48

    
49
#Cleanup
50
rm -rf $CHDIR
51
mkdir $CHDIR
52

    
53
#Install tools for building chroots
54
apt-get install -y schroot debootstrap
55

    
56
shopt -s expand_aliases
57
alias in_chroot='schroot -c $CHNAME -d / '
58
alias subst_variables='sed \
59
  -e "s/\${ARCH}/$ARCH/" \
60
  -e "s*\${CHDIR}*$CHDIR*" \
61
  -e "s/\${CHNAME}/$CHNAME/" \
62
  -e "s/\${CHROOTNAME}/$CHROOTNAME/" \
63
  -e "s*\${CHROOT_DIR}*$CHROOT_DIR*" \
64
  -e "s/\${COMP_FILENAME}/$COMP_FILENAME/" \
65
  -e "s/\${DIST_RELEASE}/$DIST_RELEASE/"'
66

    
67
#Generate chroot configurations
68
cat $DATA_DIR/temp.schroot.conf.in | subst_variables > $TEMP_CHROOT_CONF
69
cat $DATA_DIR/final.schroot.conf.in | subst_variables > $FINAL_CHROOT_CONF
70

    
71
#Install the base system
72
debootstrap --arch $ARCH $DIST_RELEASE $CHDIR
73

    
74
APT_INSTALL="apt-get install -y --no-install-recommends"
75

    
76
echo "deb http://backports.debian.org/debian-backports" \
77
     "$DIST_RELEASE-backports main contrib non-free" \
78
     > $CHDIR/etc/apt/sources.list.d/backports.list
79

    
80
#Install all the packages
81
in_chroot -- \
82
  apt-get update
83

    
84
#Install selected packages from backports
85
in_chroot -- \
86
  apt-get -y --no-install-recommends -t squeeze-backports install \
87
    git \
88
    vim
89

    
90
in_chroot -- \
91
  $APT_INSTALL python-setuptools build-essential python-dev sudo automake \
92
               fakeroot rsync locales less
93

    
94
echo "en_US.UTF-8 UTF-8" >> $CHDIR/etc/locale.gen
95

    
96
in_chroot -- \
97
  locale-gen
98

    
99
in_chroot -- \
100
  $APT_INSTALL lvm2 ssh bridge-utils iproute iputils-arping \
101
               ndisc6 python python-pyopenssl openssl \
102
               python-pyparsing python-simplejson \
103
               python-pyinotify python-pycurl python-yaml socat fping
104

    
105
in_chroot -- \
106
  $APT_INSTALL python-paramiko qemu-utils
107

    
108
in_chroot -- \
109
  easy_install affinity bitarray ipaddr
110

    
111
#Haskell packages
112
in_chroot -- \
113
  $APT_INSTALL ghc6 \
114
               libghc6-parallel-dev libghc6-deepseq-dev \
115
               libghc6-curl-dev
116

    
117
in_chroot -- \
118
  $APT_INSTALL cabal-install
119

    
120
in_chroot -- \
121
  cabal update
122

    
123
in_chroot -- \
124
  $APT_INSTALL libpcre3-dev
125

    
126
in_chroot -- \
127
  cabal install --global \
128
    network==2.3 \
129
    regex-pcre==0.94.2 \
130
    hinotify==0.3.2 \
131
    hslogger==1.1.4 \
132
    attoparsec==0.10.1.1\
133
    quickcheck==2.5.1.1 \
134
    crypto==4.2.4 \
135
    monadcatchio-transformers==0.2.2.0 \
136
    mtl==2.0.1.0 \
137
    hashable==1.1.2.0 \
138
    case-insensitive==0.3 \
139
    parsec==3.0.1 \
140
    network==2.3 \
141
    snap-server==0.8.1 \
142
    text==0.11.3.0 \
143
    vector==0.9.1 \
144
    json==0.4.4
145

    
146
#Python development tools
147
in_chroot -- \
148
  $APT_INSTALL pandoc python-epydoc graphviz
149

    
150
in_chroot -- \
151
  easy_install sphinx==1.1.3 \
152
               logilab-common \
153
               logilab-astng==0.23.1 \
154
               pylint==0.25.1 \
155
               pep8==1.2 \
156
               coverage
157

    
158
#Haskell development tools
159
in_chroot -- \
160
  cabal install --global \
161
    hunit==1.2.5.2 \
162
    happy==1.18.10 \
163
    hlint==1.8.34 \
164
    hscolour==1.20.3 \
165
    temporary==1.1.2.3 \
166
    test-framework==0.6.1 \
167
    test-framework-hunit==0.2.7 \
168
    test-framework-quickcheck2==0.2.12.3
169

    
170
in_chroot -- \
171
  cabal install --global shelltestrunner
172

    
173
#Set default editor
174
in_chroot -- \
175
  update-alternatives --set editor $ALTERNATIVE_EDITOR
176

    
177
rm -f $COMP_FILEPATH
178
echo "Creating compressed schroot image..."
179
cd $CHDIR
180
tar czf $COMP_FILEPATH ./*
181
cd $ROOT
182
echo "Done"
183

    
184
rm -rf $CHDIR
185
rm -f $TEMP_CHROOT_CONF