Statistics
| Branch: | Tag: | Revision:

root / devel / build_chroot @ 4fe04580

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