Statistics
| Branch: | Tag: | Revision:

root / devel / build_chroot @ 8b3f1f42

History | View | Annotate | Download (3.5 kB)

1 8b3f1f42 Michele Tartara
#!/bin/bash
2 8b3f1f42 Michele Tartara
#Configuration
3 8b3f1f42 Michele Tartara
: ${DATA_DIR=data}
4 8b3f1f42 Michele Tartara
: ${ARCH=amd64}
5 8b3f1f42 Michele Tartara
: ${DIST_RELEASE=squeeze}
6 8b3f1f42 Michele Tartara
: ${CONF_DIR:=/etc/schroot/chroot.d}
7 8b3f1f42 Michele Tartara
: ${CHROOT_DIR:=/srv/chroot}
8 8b3f1f42 Michele Tartara
9 8b3f1f42 Michele Tartara
#Automatically generated variables
10 8b3f1f42 Michele Tartara
CHROOTNAME=$DIST_RELEASE-$ARCH
11 8b3f1f42 Michele Tartara
CHNAME=building_$CHROOTNAME
12 8b3f1f42 Michele Tartara
TEMP_CHROOT_CONF=$CONF_DIR/$CHNAME.conf
13 8b3f1f42 Michele Tartara
FINAL_CHROOT_CONF=$CHROOTNAME.conf
14 8b3f1f42 Michele Tartara
ROOT=`pwd`
15 8b3f1f42 Michele Tartara
CHDIR=$ROOT/$CHNAME
16 8b3f1f42 Michele Tartara
USER=`whoami`
17 8b3f1f42 Michele Tartara
COMP_FILENAME=$CHROOTNAME.tar.gz
18 8b3f1f42 Michele Tartara
COMP_FILEPATH=$ROOT/$COMP_FILENAME
19 8b3f1f42 Michele Tartara
20 8b3f1f42 Michele Tartara
#Runnability checks
21 8b3f1f42 Michele Tartara
if [ $USER != 'root' ]
22 8b3f1f42 Michele Tartara
then
23 8b3f1f42 Michele Tartara
  echo "This script requires root permissions to run"
24 8b3f1f42 Michele Tartara
  exit
25 8b3f1f42 Michele Tartara
fi
26 8b3f1f42 Michele Tartara
27 8b3f1f42 Michele Tartara
if [ -f $TEMP_CHROOT_CONF ]
28 8b3f1f42 Michele Tartara
then
29 8b3f1f42 Michele Tartara
  echo "The configuration file name for the temporary chroot"
30 8b3f1f42 Michele Tartara
  echo "  $TEMP_CHROOT_CONF"
31 8b3f1f42 Michele Tartara
  echo "already exists."
32 8b3f1f42 Michele Tartara
  echo "Remove it or change the CHNAME value in the script."
33 8b3f1f42 Michele Tartara
  exit
34 8b3f1f42 Michele Tartara
fi
35 8b3f1f42 Michele Tartara
36 8b3f1f42 Michele Tartara
set -e
37 8b3f1f42 Michele Tartara
38 8b3f1f42 Michele Tartara
#Cleanup
39 8b3f1f42 Michele Tartara
rm -rf $CHDIR
40 8b3f1f42 Michele Tartara
mkdir $CHDIR
41 8b3f1f42 Michele Tartara
42 8b3f1f42 Michele Tartara
#Install tools for building chroots
43 8b3f1f42 Michele Tartara
apt-get install -y schroot debootstrap
44 8b3f1f42 Michele Tartara
45 8b3f1f42 Michele Tartara
shopt -s expand_aliases
46 8b3f1f42 Michele Tartara
alias in_chroot='schroot -c $CHNAME -d / '
47 8b3f1f42 Michele Tartara
alias subst_variables='sed \
48 8b3f1f42 Michele Tartara
  -e "s/\${ARCH}/$ARCH/" \
49 8b3f1f42 Michele Tartara
  -e "s*\${CHDIR}*$CHDIR*" \
50 8b3f1f42 Michele Tartara
  -e "s/\${CHNAME}/$CHNAME/" \
51 8b3f1f42 Michele Tartara
  -e "s/\${CHROOTNAME}/$CHROOTNAME/" \
52 8b3f1f42 Michele Tartara
  -e "s*\${CHROOT_DIR}*$CHROOT_DIR*" \
53 8b3f1f42 Michele Tartara
  -e "s/\${COMP_FILENAME}/$COMP_FILENAME/" \
54 8b3f1f42 Michele Tartara
  -e "s/\${DIST_RELEASE}/$DIST_RELEASE/"'
55 8b3f1f42 Michele Tartara
56 8b3f1f42 Michele Tartara
#Generate chroot configurations
57 8b3f1f42 Michele Tartara
cat $DATA_DIR/temp.schroot.conf.in | subst_variables > $TEMP_CHROOT_CONF
58 8b3f1f42 Michele Tartara
cat $DATA_DIR/final.schroot.conf.in | subst_variables > $FINAL_CHROOT_CONF
59 8b3f1f42 Michele Tartara
60 8b3f1f42 Michele Tartara
#Install the base system
61 8b3f1f42 Michele Tartara
debootstrap --arch $ARCH $DIST_RELEASE $CHDIR
62 8b3f1f42 Michele Tartara
63 8b3f1f42 Michele Tartara
APT_INSTALL="apt-get install -y --no-install-recommends"
64 8b3f1f42 Michele Tartara
65 8b3f1f42 Michele Tartara
#Install all the packages
66 8b3f1f42 Michele Tartara
in_chroot -- \
67 8b3f1f42 Michele Tartara
  apt-get update
68 8b3f1f42 Michele Tartara
69 8b3f1f42 Michele Tartara
in_chroot -- \
70 8b3f1f42 Michele Tartara
  $APT_INSTALL python-setuptools build-essential python-dev sudo automake git \
71 8b3f1f42 Michele Tartara
               fakeroot vim rsync locales
72 8b3f1f42 Michele Tartara
73 8b3f1f42 Michele Tartara
echo "en_US.UTF-8 UTF-8" >> $CHDIR/etc/locale.gen
74 8b3f1f42 Michele Tartara
75 8b3f1f42 Michele Tartara
in_chroot -- \
76 8b3f1f42 Michele Tartara
  locale-gen
77 8b3f1f42 Michele Tartara
78 8b3f1f42 Michele Tartara
in_chroot -- \
79 8b3f1f42 Michele Tartara
  $APT_INSTALL lvm2 ssh bridge-utils iproute iputils-arping \
80 8b3f1f42 Michele Tartara
               ndisc6 python python-pyopenssl openssl \
81 8b3f1f42 Michele Tartara
               python-pyparsing python-simplejson \
82 8b3f1f42 Michele Tartara
               python-pyinotify python-pycurl python-yaml socat fping
83 8b3f1f42 Michele Tartara
84 8b3f1f42 Michele Tartara
in_chroot -- \
85 8b3f1f42 Michele Tartara
  $APT_INSTALL python-paramiko qemu-utils
86 8b3f1f42 Michele Tartara
87 8b3f1f42 Michele Tartara
in_chroot -- \
88 8b3f1f42 Michele Tartara
  easy_install affinity bitarray ipaddr
89 8b3f1f42 Michele Tartara
90 8b3f1f42 Michele Tartara
#Haskell packages
91 8b3f1f42 Michele Tartara
in_chroot -- \
92 8b3f1f42 Michele Tartara
  $APT_INSTALL ghc6 \
93 8b3f1f42 Michele Tartara
               libghc6-parallel-dev libghc6-deepseq-dev \
94 8b3f1f42 Michele Tartara
               libghc6-curl-dev
95 8b3f1f42 Michele Tartara
96 8b3f1f42 Michele Tartara
in_chroot -- \
97 8b3f1f42 Michele Tartara
  $APT_INSTALL cabal-install
98 8b3f1f42 Michele Tartara
99 8b3f1f42 Michele Tartara
in_chroot -- \
100 8b3f1f42 Michele Tartara
  cabal update
101 8b3f1f42 Michele Tartara
102 8b3f1f42 Michele Tartara
in_chroot -- \
103 8b3f1f42 Michele Tartara
  $APT_INSTALL libpcre3-dev
104 8b3f1f42 Michele Tartara
105 8b3f1f42 Michele Tartara
in_chroot -- \
106 8b3f1f42 Michele Tartara
  cabal install --global \
107 8b3f1f42 Michele Tartara
    QuickCheck==2.5.1.1 \
108 8b3f1f42 Michele Tartara
    network==2.3 hslogger Crypto text regex-pcre \
109 8b3f1f42 Michele Tartara
    attoparsec vector \
110 8b3f1f42 Michele Tartara
    json==0.4.4 \
111 8b3f1f42 Michele Tartara
    MonadCatchIO-transformers==0.2.2.0 mtl==2.0.1.0 \
112 8b3f1f42 Michele Tartara
    hashable==1.1.2.0 case-insensitive==0.3 parsec==3.0.1 \
113 8b3f1f42 Michele Tartara
    network==2.3 snap-server==0.8.1 \
114 8b3f1f42 Michele Tartara
    hinotify==0.3.2
115 8b3f1f42 Michele Tartara
116 8b3f1f42 Michele Tartara
#Python development tools
117 8b3f1f42 Michele Tartara
in_chroot -- \
118 8b3f1f42 Michele Tartara
  $APT_INSTALL pandoc python-epydoc graphviz
119 8b3f1f42 Michele Tartara
120 8b3f1f42 Michele Tartara
in_chroot -- \
121 8b3f1f42 Michele Tartara
  easy_install sphinx==1.1.3 \
122 8b3f1f42 Michele Tartara
               logilab-common \
123 8b3f1f42 Michele Tartara
               logilab-astng==0.23.1 \
124 8b3f1f42 Michele Tartara
               pylint==0.25.1 \
125 8b3f1f42 Michele Tartara
               pep8==1.2 \
126 8b3f1f42 Michele Tartara
               coverage
127 8b3f1f42 Michele Tartara
128 8b3f1f42 Michele Tartara
#Haskell development tools
129 8b3f1f42 Michele Tartara
in_chroot -- \
130 8b3f1f42 Michele Tartara
  cabal install --global \
131 8b3f1f42 Michele Tartara
    HUnit \
132 8b3f1f42 Michele Tartara
    happy \
133 8b3f1f42 Michele Tartara
    hlint==1.8.34 \
134 8b3f1f42 Michele Tartara
    hscolour==1.20.3 \
135 8b3f1f42 Michele Tartara
    temporary \
136 8b3f1f42 Michele Tartara
    test-framework==0.6.1 \
137 8b3f1f42 Michele Tartara
    test-framework-hunit==0.2.7 \
138 8b3f1f42 Michele Tartara
    test-framework-quickcheck2==0.2.12.3
139 8b3f1f42 Michele Tartara
140 8b3f1f42 Michele Tartara
in_chroot -- \
141 8b3f1f42 Michele Tartara
  cabal install --global shelltestrunner
142 8b3f1f42 Michele Tartara
143 8b3f1f42 Michele Tartara
rm -f $COMP_FILEPATH
144 8b3f1f42 Michele Tartara
echo "Creating compressed schroot image..."
145 8b3f1f42 Michele Tartara
cd $CHDIR
146 8b3f1f42 Michele Tartara
tar czf $COMP_FILEPATH ./*
147 8b3f1f42 Michele Tartara
cd $ROOT
148 8b3f1f42 Michele Tartara
echo "Done"
149 8b3f1f42 Michele Tartara
150 8b3f1f42 Michele Tartara
rm -rf $CHDIR
151 8b3f1f42 Michele Tartara
rm -f $TEMP_CHROOT_CONF