Statistics
| Branch: | Tag: | Revision:

root / devel / build_chroot @ 35133aae

History | View | Annotate | Download (3.9 kB)

1
#!/bin/bash
2
#Configuration
3
: ${DATA_DIR=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
set -e
38

    
39
#Cleanup
40
rm -rf $CHDIR
41
mkdir $CHDIR
42

    
43
#Install tools for building chroots
44
apt-get install -y schroot debootstrap
45

    
46
shopt -s expand_aliases
47
alias in_chroot='schroot -c $CHNAME -d / '
48
alias subst_variables='sed \
49
  -e "s/\${ARCH}/$ARCH/" \
50
  -e "s*\${CHDIR}*$CHDIR*" \
51
  -e "s/\${CHNAME}/$CHNAME/" \
52
  -e "s/\${CHROOTNAME}/$CHROOTNAME/" \
53
  -e "s*\${CHROOT_DIR}*$CHROOT_DIR*" \
54
  -e "s/\${COMP_FILENAME}/$COMP_FILENAME/" \
55
  -e "s/\${DIST_RELEASE}/$DIST_RELEASE/"'
56

    
57
#Generate chroot configurations
58
cat $DATA_DIR/temp.schroot.conf.in | subst_variables > $TEMP_CHROOT_CONF
59
cat $DATA_DIR/final.schroot.conf.in | subst_variables > $FINAL_CHROOT_CONF
60

    
61
#Install the base system
62
debootstrap --arch $ARCH $DIST_RELEASE $CHDIR
63

    
64
APT_INSTALL="apt-get install -y --no-install-recommends"
65

    
66
echo "deb http://backports.debian.org/debian-backports" \
67
     "$DIST_RELEASE-backports main contrib non-free" \
68
     > $CHDIR/etc/apt/sources.list.d/backports.list
69

    
70
#Install all the packages
71
in_chroot -- \
72
  apt-get update
73

    
74
#Install selected packages from backports
75
in_chroot -- \
76
  apt-get -y --no-install-recommends -t squeeze-backports install \
77
    git \
78
    vim
79

    
80
in_chroot -- \
81
  $APT_INSTALL python-setuptools build-essential python-dev sudo automake \
82
               fakeroot rsync locales
83

    
84
echo "en_US.UTF-8 UTF-8" >> $CHDIR/etc/locale.gen
85

    
86
in_chroot -- \
87
  locale-gen
88

    
89
in_chroot -- \
90
  $APT_INSTALL lvm2 ssh bridge-utils iproute iputils-arping \
91
               ndisc6 python python-pyopenssl openssl \
92
               python-pyparsing python-simplejson \
93
               python-pyinotify python-pycurl python-yaml socat fping
94

    
95
in_chroot -- \
96
  $APT_INSTALL python-paramiko qemu-utils
97

    
98
in_chroot -- \
99
  easy_install affinity bitarray ipaddr
100

    
101
#Haskell packages
102
in_chroot -- \
103
  $APT_INSTALL ghc6 \
104
               libghc6-parallel-dev libghc6-deepseq-dev \
105
               libghc6-curl-dev
106

    
107
in_chroot -- \
108
  $APT_INSTALL cabal-install
109

    
110
in_chroot -- \
111
  cabal update
112

    
113
in_chroot -- \
114
  $APT_INSTALL libpcre3-dev
115

    
116
in_chroot -- \
117
  cabal install --global \
118
    QuickCheck==2.5.1.1 \
119
    network==2.3 hslogger Crypto text regex-pcre \
120
    attoparsec vector \
121
    json==0.4.4 \
122
    MonadCatchIO-transformers==0.2.2.0 mtl==2.0.1.0 \
123
    hashable==1.1.2.0 case-insensitive==0.3 parsec==3.0.1 \
124
    network==2.3 snap-server==0.8.1 \
125
    hinotify==0.3.2
126

    
127
#Python development tools
128
in_chroot -- \
129
  $APT_INSTALL pandoc python-epydoc graphviz
130

    
131
in_chroot -- \
132
  easy_install sphinx==1.1.3 \
133
               logilab-common \
134
               logilab-astng==0.23.1 \
135
               pylint==0.25.1 \
136
               pep8==1.2 \
137
               coverage
138

    
139
#Haskell development tools
140
in_chroot -- \
141
  cabal install --global \
142
    HUnit \
143
    happy \
144
    hlint==1.8.34 \
145
    hscolour==1.20.3 \
146
    temporary \
147
    test-framework==0.6.1 \
148
    test-framework-hunit==0.2.7 \
149
    test-framework-quickcheck2==0.2.12.3
150

    
151
in_chroot -- \
152
  cabal install --global shelltestrunner
153

    
154
#Set default editor
155
in_chroot -- \
156
  update-alternatives --set editor $ALTERNATIVE_EDITOR
157

    
158
rm -f $COMP_FILEPATH
159
echo "Creating compressed schroot image..."
160
cd $CHDIR
161
tar czf $COMP_FILEPATH ./*
162
cd $ROOT
163
echo "Done"
164

    
165
rm -rf $CHDIR
166
rm -f $TEMP_CHROOT_CONF