Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: build/install-chroot.sh

Issue 3797014: Add a flag to control deb-srcs and only add host bins to the chroot if the distro matches. (Closed)
Patch Set: review change Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash -e 1 #!/bin/bash -e
2 2
3 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # This script installs Debian-derived distributions in a chroot environment. 7 # This script installs Debian-derived distributions in a chroot environment.
8 # It can for example be used to have an accurate 32bit build and test 8 # It can for example be used to have an accurate 32bit build and test
9 # environment when otherwise working on a 64bit machine. 9 # environment when otherwise working on a 64bit machine.
10 # N. B. it is unlikely that this script will ever work on anything other than a 10 # N. B. it is unlikely that this script will ever work on anything other than a
11 # Debian-derived system. 11 # Debian-derived system.
12 12
13 usage() { 13 usage() {
14 echo "usage: ${0##*/} [-m mirror] [-g group,...]" 14 echo "usage: ${0##*/} [-m mirror] [-g group,...] [-s] [-c]"
15 echo "-g group,... groups that can use the chroot unauthenticated" 15 echo "-g group,... groups that can use the chroot unauthenticated"
16 echo " Default: 'admin' and current user's group ('$(id -gn)')" 16 echo " Default: 'admin' and current user's group ('$(id -gn)')"
17 echo "-m mirror an alternate repository mirror for package downloads" 17 echo "-m mirror an alternate repository mirror for package downloads"
18 echo "-s configure default deb-srcs"
19 echo "-c always copy 64bit helper binaries to 32bit chroot"
18 echo "-h this help message" 20 echo "-h this help message"
19 } 21 }
20 22
21 process_opts() { 23 process_opts() {
22 local OPTNAME OPTIND OPTERR OPTARG 24 local OPTNAME OPTIND OPTERR OPTARG
23 while getopts ":g:m:h" OPTNAME; do 25 while getopts ":g:m:sch" OPTNAME; do
24 case "$OPTNAME" in 26 case "$OPTNAME" in
25 g) 27 g)
26 [ -n "${OPTARG}" ] && 28 [ -n "${OPTARG}" ] &&
27 chroot_groups="${chroot_groups}${chroot_groups:+,}${OPTARG}" 29 chroot_groups="${chroot_groups}${chroot_groups:+,}${OPTARG}"
28 ;; 30 ;;
29 m) 31 m)
30 if [ -n "${mirror}" ]; then 32 if [ -n "${mirror}" ]; then
31 echo "You can only specify exactly one mirror location" 33 echo "You can only specify exactly one mirror location"
32 usage 34 usage
33 exit 1 35 exit 1
34 fi 36 fi
35 mirror="$OPTARG" 37 mirror="$OPTARG"
36 ;; 38 ;;
39 s)
40 add_srcs="y"
41 ;;
42 c)
43 copy_64="y"
44 ;;
37 h) 45 h)
38 usage 46 usage
39 exit 0 47 exit 0
40 ;; 48 ;;
41 \:) 49 \:)
42 echo "'-$OPTARG' needs an argument." 50 echo "'-$OPTARG' needs an argument."
43 usage 51 usage
44 exit 1 52 exit 1
45 ;; 53 ;;
46 *) 54 *)
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 else 216 else
209 p="\$1"; shift 217 p="\$1"; shift
210 exec schroot -c ${target%bit} -p "\$p" -- "\$@" 218 exec schroot -c ${target%bit} -p "\$p" -- "\$@"
211 fi 219 fi
212 exit 1 220 exit 1
213 EOF 221 EOF
214 sudo chown root:root /usr/local/bin/"${target%bit}" 222 sudo chown root:root /usr/local/bin/"${target%bit}"
215 sudo chmod 755 /usr/local/bin/"${target%bit}" 223 sudo chmod 755 /usr/local/bin/"${target%bit}"
216 224
217 # Add the standard Ubuntu update repositories if requested. 225 # Add the standard Ubuntu update repositories if requested.
218 [ "${alt_repos}" = "y" -a -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] && 226 [ "${alt_repos}" = "y" -a \
227 -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] &&
219 sudo sed -i '/^deb .* [^ -]\+ main$/p 228 sudo sed -i '/^deb .* [^ -]\+ main$/p
220 s/^\(deb .* [^ -]\+\) main/\1-security main/ 229 s/^\(deb .* [^ -]\+\) main/\1-security main/
221 p 230 p
222 t1 231 t1
223 d 232 d
224 :1;s/-security main/-updates main/ 233 :1;s/-security main/-updates main/
225 t 234 t
226 d' "/var/lib/chroot/${target}/etc/apt/sources.list" 235 d' "/var/lib/chroot/${target}/etc/apt/sources.list"
227 236
228 # Add a few more repositories to the chroot 237 # Add a few more repositories to the chroot
229 [ -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] && 238 [ "${add_srcs}" = "y" -a \
239 -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] &&
230 sudo sed -i 's/ main$/ main restricted universe multiverse/ 240 sudo sed -i 's/ main$/ main restricted universe multiverse/
231 p 241 p
232 t1 242 t1
233 d 243 d
234 :1;s/^deb/deb-src/ 244 :1;s/^deb/deb-src/
235 t 245 t
236 d' "/var/lib/chroot/${target}/etc/apt/sources.list" 246 d' "/var/lib/chroot/${target}/etc/apt/sources.list"
237 247
238 # Update packages 248 # Update packages
239 sudo schroot -c "${target%bit}" -p -- /bin/sh -c ' 249 sudo schroot -c "${target%bit}" -p -- /bin/sh -c '
(...skipping 16 matching lines...) Expand all
256 sudo schroot -c "${target%bit}" -p -- /bin/sh -c ' 266 sudo schroot -c "${target%bit}" -p -- /bin/sh -c '
257 egrep '"'^$(id -nu) '"' /etc/sudoers >/dev/null 2>&1 || 267 egrep '"'^$(id -nu) '"' /etc/sudoers >/dev/null 2>&1 ||
258 echo '"'$(id -nu) ALL=(ALL) ALL'"' >>/etc/sudoers' 268 echo '"'$(id -nu) ALL=(ALL) ALL'"' >>/etc/sudoers'
259 269
260 # Install a few more commonly used packages 270 # Install a few more commonly used packages
261 sudo schroot -c "${target%bit}" -p -- apt-get -y install \ 271 sudo schroot -c "${target%bit}" -p -- apt-get -y install \
262 autoconf automake1.9 dpkg-dev g++-multilib gcc-multilib gdb less libtool \ 272 autoconf automake1.9 dpkg-dev g++-multilib gcc-multilib gdb less libtool \
263 strace 273 strace
264 274
265 # If running a 32bit environment on a 64bit machine, install a few binaries 275 # If running a 32bit environment on a 64bit machine, install a few binaries
266 # as 64bit. 276 # as 64bit. This is only done automatically if the chroot distro is the same as
267 if [ "${arch}" = 32bit ] && file /bin/bash 2>/dev/null | grep -q x86-64; then 277 # the host, otherwise there might be incompatibilities in build settings or
278 # runtime dependencies. The user can force it with the '-c' flag.
279 host_distro=$(grep DISTRIB_CODENAME /etc/lsb-release 2>/dev/null | \
280 cut -d "=" -f 2)
281 if [ "${copy_64}" = "y" -o \
282 "${host_distro}" = "${distname}" -a "${arch}" = 32bit ] && \
283 file /bin/bash 2>/dev/null | grep -q x86-64; then
268 readlinepkg=$(sudo schroot -c "${target%bit}" -p -- sh -c \ 284 readlinepkg=$(sudo schroot -c "${target%bit}" -p -- sh -c \
269 'apt-cache search "lib64readline.\$" | sort | tail -n 1 | cut -d " " -f 1') 285 'apt-cache search "lib64readline.\$" | sort | tail -n 1 | cut -d " " -f 1')
270 sudo schroot -c "${target%bit}" -p -- apt-get -y install \ 286 sudo schroot -c "${target%bit}" -p -- apt-get -y install \
271 lib64expat1 lib64ncurses5 ${readlinepkg} lib64z1 287 lib64expat1 lib64ncurses5 ${readlinepkg} lib64z1
272 dep= 288 dep=
273 for i in binutils gdb strace; do 289 for i in binutils gdb strace; do
274 [ -d /usr/share/doc/"$i" ] || dep="$dep $i" 290 [ -d /usr/share/doc/"$i" ] || dep="$dep $i"
275 done 291 done
276 [ -n "$dep" ] && sudo apt-get -y install $dep 292 [ -n "$dep" ] && sudo apt-get -y install $dep
277 sudo cp /usr/bin/gdb "/var/lib/chroot/${target}/usr/local/bin/" 293 sudo cp /usr/bin/gdb "/var/lib/chroot/${target}/usr/local/bin/"
(...skipping 22 matching lines...) Expand all
300 316
301 Successfully installed ${distname} ${arch} 317 Successfully installed ${distname} ${arch}
302 318
303 You can run programs inside of the chroot by invoking the "${target%bit}" 319 You can run programs inside of the chroot by invoking the "${target%bit}"
304 command. 320 command.
305 321
306 Your home directory is shared between the host and the chroot. But I configured 322 Your home directory is shared between the host and the chroot. But I configured
307 $HOME/chroot to be private to the chroot environment. You can use it 323 $HOME/chroot to be private to the chroot environment. You can use it
308 for files that need to differ between environments. 324 for files that need to differ between environments.
309 EOF 325 EOF
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698