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

Side by Side Diff: enter_chroot.sh

Issue 6246148: Switch from v_info logging to debug (Closed) Base URL: http://git.chromium.org/git/crosutils.git@master
Patch Set: Fix up CHROME_ROOT handling" Created 9 years, 10 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 | Annotate | Revision Log
« 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 1 #!/bin/bash
2 2
3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2009 The Chromium OS 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 # Script to enter the chroot environment 7 # Script to enter the chroot environment
8 8
9 # --- BEGIN COMMON.SH BOILERPLATE --- 9 # --- BEGIN COMMON.SH BOILERPLATE ---
10 # Load common CrOS utilities. Inside the chroot this file is installed in 10 # Load common CrOS utilities. Inside the chroot this file is installed in
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 If [-- command] is present, runs the command inside the chroot, 64 If [-- command] is present, runs the command inside the chroot,
65 after changing directory to /$USER/trunk/src/scripts. Note that neither 65 after changing directory to /$USER/trunk/src/scripts. Note that neither
66 the command nor args should include single quotes. For example: 66 the command nor args should include single quotes. For example:
67 67
68 $0 -- ./build_platform_packages.sh 68 $0 -- ./build_platform_packages.sh
69 69
70 Otherwise, provides an interactive shell. 70 Otherwise, provides an interactive shell.
71 " 71 "
72 72
73 # Version of info from common.sh that only echos if --verbose is set. 73 # Version of info from common.sh that only echos if --verbose is set.
74 function v_info { 74 function debug {
75 if [ $FLAGS_verbose -eq $FLAGS_TRUE ]; then 75 if [ $FLAGS_verbose -eq $FLAGS_TRUE ]; then
76 info "$1" 76 info "$1"
77 fi 77 fi
78 } 78 }
79 79
80 # Double up on the first '--' argument. Why? For enter_chroot, we want to 80 # Double up on the first '--' argument. Why? For enter_chroot, we want to
81 # emulate the behavior of sudo for setting environment vars. That is, we want: 81 # emulate the behavior of sudo for setting environment vars. That is, we want:
82 # ./enter_chroot [flags] [VAR=val] [-- command] 82 # ./enter_chroot [flags] [VAR=val] [-- command]
83 # ...but shflags ends up eating the '--' out of the command line and gives 83 # ...but shflags ends up eating the '--' out of the command line and gives
84 # us back "VAR=val" and "command" together in one chunk. By doubling up, we 84 # us back "VAR=val" and "command" together in one chunk. By doubling up, we
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 function setup_env { 135 function setup_env {
136 # Validate sudo timestamp before entering the critical section so that we 136 # Validate sudo timestamp before entering the critical section so that we
137 # don't stall for a password while we have the lockfile. 137 # don't stall for a password while we have the lockfile.
138 # Don't use sudo -v since that has issues on machines w/ no password. 138 # Don't use sudo -v since that has issues on machines w/ no password.
139 sudo echo "" > /dev/null 139 sudo echo "" > /dev/null
140 140
141 ( 141 (
142 flock 200 142 flock 200
143 echo $$ >> "$LOCKFILE" 143 echo $$ >> "$LOCKFILE"
144 144
145 v_info "Mounting chroot environment." 145 debug "Mounting chroot environment."
146 146
147 # Mount only if not already mounted 147 # Mount only if not already mounted
148 MOUNTED_PATH="$(readlink -f "$FLAGS_chroot/proc")" 148 MOUNTED_PATH="$(readlink -f "$FLAGS_chroot/proc")"
149 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then 149 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then
150 sudo mount none -t proc "$MOUNTED_PATH" || \ 150 sudo mount none -t proc "$MOUNTED_PATH" || \
151 die "Could not mount $MOUNTED_PATH" 151 die "Could not mount $MOUNTED_PATH"
152 fi 152 fi
153 153
154 MOUNTED_PATH="$(readlink -f "$FLAGS_chroot/sys")" 154 MOUNTED_PATH="$(readlink -f "$FLAGS_chroot/sys")"
155 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then 155 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 sudo mount --bind "$FLAGS_trunk" "$MOUNTED_PATH" || \ 187 sudo mount --bind "$FLAGS_trunk" "$MOUNTED_PATH" || \
188 die "Could not mount $MOUNTED_PATH" 188 die "Could not mount $MOUNTED_PATH"
189 fi 189 fi
190 190
191 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}${INNER_CHROME_ROOT}")" 191 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}${INNER_CHROME_ROOT}")"
192 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then 192 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then
193 ! CHROME_ROOT="$(readlink -f "$FLAGS_chrome_root")" 193 ! CHROME_ROOT="$(readlink -f "$FLAGS_chrome_root")"
194 if [ -z "$CHROME_ROOT" ]; then 194 if [ -z "$CHROME_ROOT" ]; then
195 ! CHROME_ROOT="$(cat "${FLAGS_chroot}${CHROME_ROOT_CONFIG}" \ 195 ! CHROME_ROOT="$(cat "${FLAGS_chroot}${CHROME_ROOT_CONFIG}" \
196 2>/dev/null)" 196 2>/dev/null)"
197 CHROME_ROOT_AUTO=1
197 fi 198 fi
198 if [[ ( -z "$CHROME_ROOT" ) || ( ! -d "${CHROME_ROOT}/src" ) ]]; then 199 if [[ ( -n "$CHROME_ROOT" ) ]]; then
199 v_info "Not mounting chrome source" 200 if [[ ( ! -d "${CHROME_ROOT}/src" ) ]]; then
200 sudo rm -f "${FLAGS_chroot}${CHROME_ROOT_CONFIG}" 201 error "Not mounting chrome source"
201 else 202 sudo rm -f "${FLAGS_chroot}${CHROME_ROOT_CONFIG}"
202 v_info "Mounting chrome source at: $INNER_CHROME_ROOT" 203 if [[ ! "$CHROME_ROOT_AUTO" ]]; then
diandersAtChromium 2011/02/08 02:35:13 It is only a fatal error if user specified in the
dgarrett 2011/02/08 02:40:55 Right. As best as I can figure out, this is as des
203 echo "$CHROME_ROOT" | \ 204 exit 1
204 sudo dd of="${FLAGS_chroot}${CHROME_ROOT_CONFIG}" 205 fi
205 mkdir -p "$MOUNTED_PATH" 206 else
206 sudo mount --bind "$CHROME_ROOT" "$MOUNTED_PATH" || \ 207 debug "Mounting chrome source at: $INNER_CHROME_ROOT"
207 die "Could not mount $MOUNTED_PATH" 208 sudo bash -c "echo $CHROME_ROOT > \
diandersAtChromium 2011/02/08 02:35:13 nit: Should put quotes around $CHROME_ROOT, just t
dgarrett 2011/02/08 02:40:55 Done.
209 ${FLAGS_chroot}${CHROME_ROOT_CONFIG}"
diandersAtChromium 2011/02/08 02:35:13 nite: ...and probably quotes here, too?
dgarrett 2011/02/08 02:40:55 Done.
210 mkdir -p "$MOUNTED_PATH"
211 sudo mount --bind "$CHROME_ROOT" "$MOUNTED_PATH" || \
212 die "Could not mount $MOUNTED_PATH"
213 fi
208 fi 214 fi
209 fi 215 fi
210 216
211 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}${INNER_DEPOT_TOOLS_ROOT}")" 217 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}${INNER_DEPOT_TOOLS_ROOT}")"
212 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then 218 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then
213 if [ $(which gclient 2>/dev/null) ]; then 219 if [ $(which gclient 2>/dev/null) ]; then
214 v_info "Mounting depot_tools" 220 debug "Mounting depot_tools"
215 DEPOT_TOOLS=$(dirname "$(which gclient)") 221 DEPOT_TOOLS=$(dirname "$(which gclient)")
216 mkdir -p "$MOUNTED_PATH" 222 mkdir -p "$MOUNTED_PATH"
217 if ! sudo mount --bind "$DEPOT_TOOLS" "$MOUNTED_PATH"; then 223 if ! sudo mount --bind "$DEPOT_TOOLS" "$MOUNTED_PATH"; then
218 warn "depot_tools failed to mount; perhaps it's on NFS?" 224 warn "depot_tools failed to mount; perhaps it's on NFS?"
219 warn "This may impact chromium build." 225 warn "This may impact chromium build."
220 fi 226 fi
221 fi 227 fi
222 fi 228 fi
223 229
224 # Install fuse module. 230 # Install fuse module.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 # Remove any dups from lock file while installing new one 280 # Remove any dups from lock file while installing new one
275 sort -n "$TMP_LOCKFILE" | uniq > "$LOCKFILE" 281 sort -n "$TMP_LOCKFILE" | uniq > "$LOCKFILE"
276 282
277 if [ $(which gconftool-2 2>/dev/null) ]; then 283 if [ $(which gconftool-2 2>/dev/null) ]; then
278 SAVED_PREF=$(cat "${FLAGS_chroot}${SAVED_AUTOMOUNT_PREF_FILE}") 284 SAVED_PREF=$(cat "${FLAGS_chroot}${SAVED_AUTOMOUNT_PREF_FILE}")
279 gconftool-2 -s --type=boolean ${AUTOMOUNT_PREF} ${SAVED_PREF} || \ 285 gconftool-2 -s --type=boolean ${AUTOMOUNT_PREF} ${SAVED_PREF} || \
280 warn "could not re-set your automount preference." 286 warn "could not re-set your automount preference."
281 fi 287 fi
282 288
283 if [ -s "$LOCKFILE" ]; then 289 if [ -s "$LOCKFILE" ]; then
284 v_info "At least one other pid is running in the chroot, so not" 290 debug "At least one other pid is running in the chroot, so not"
285 v_info "tearing down env." 291 debug "tearing down env."
286 else 292 else
287 MOUNTED_PATH=$(readlink -f "$FLAGS_chroot") 293 MOUNTED_PATH=$(readlink -f "$FLAGS_chroot")
288 v_info "Unmounting chroot environment." 294 debug "Unmounting chroot environment."
289 # sort the list of mounts in reverse order, to ensure umount of 295 # sort the list of mounts in reverse order, to ensure umount of
290 # cascading mounts in proper order 296 # cascading mounts in proper order
291 for i in \ 297 for i in \
292 $(mount | grep -F "on $MOUNTED_PATH/" | sort -r | awk '{print $3}'); do 298 $(mount | grep -F "on $MOUNTED_PATH/" | sort -r | awk '{print $3}'); do
293 safe_umount "$i" 299 safe_umount "$i"
294 done 300 done
295 fi 301 fi
296 ) 200>>"$LOCKFILE" || die "teardown_env failed" 302 ) 200>>"$LOCKFILE" || die "teardown_env failed"
297 } 303 }
298 304
299 if [ $FLAGS_mount -eq $FLAGS_TRUE ]; then 305 if [ $FLAGS_mount -eq $FLAGS_TRUE ]; then
300 setup_env 306 setup_env
301 v_info "Make sure you run" 307 info "Make sure you run"
302 v_info " $0 --unmount" 308 info " $0 --unmount"
303 v_info "before deleting $FLAGS_chroot" 309 info "before deleting $FLAGS_chroot"
304 v_info "or you'll end up deleting $FLAGS_trunk too!" 310 info "or you'll end up deleting $FLAGS_trunk too!"
305 exit 0 311 exit 0
306 fi 312 fi
307 313
308 if [ $FLAGS_unmount -eq $FLAGS_TRUE ]; then 314 if [ $FLAGS_unmount -eq $FLAGS_TRUE ]; then
309 teardown_env 315 teardown_env
310 exit 0 316 exit 0
311 fi 317 fi
312 318
313 # Apply any hacks needed to update the chroot. 319 # Apply any hacks needed to update the chroot.
314 chroot_hacks_from_outside "${FLAGS_chroot}" 320 chroot_hacks_from_outside "${FLAGS_chroot}"
(...skipping 19 matching lines...) Expand all
334 # Use git:8 chars of sha1 340 # Use git:8 chars of sha1
335 REVISION=$(cd ${FLAGS_trunk}/src/scripts ; git rev-parse --short=8 HEAD) 341 REVISION=$(cd ${FLAGS_trunk}/src/scripts ; git rev-parse --short=8 HEAD)
336 CHROOT_PASSTHRU="CHROMEOS_REVISION=$REVISION BUILDBOT_BUILD=$FLAGS_build_number CHROMEOS_OFFICIAL=$CHROMEOS_OFFICIAL" 342 CHROOT_PASSTHRU="CHROMEOS_REVISION=$REVISION BUILDBOT_BUILD=$FLAGS_build_number CHROMEOS_OFFICIAL=$CHROMEOS_OFFICIAL"
337 CHROOT_PASSTHRU="${CHROOT_PASSTHRU} \ 343 CHROOT_PASSTHRU="${CHROOT_PASSTHRU} \
338 CHROMEOS_RELEASE_APPID=${CHROMEOS_RELEASE_APPID:-"{DEV-BUILD}"}" 344 CHROMEOS_RELEASE_APPID=${CHROMEOS_RELEASE_APPID:-"{DEV-BUILD}"}"
339 CHROOT_PASSTHRU="${CHROOT_PASSTHRU} \ 345 CHROOT_PASSTHRU="${CHROOT_PASSTHRU} \
340 CHROMEOS_VERSION_TRACK=$CHROMEOS_VERSION_TRACK CHROMEOS_VERSION_AUSERVER=$CHROME OS_VERSION_AUSERVER CHROMEOS_VERSION_DEVSERVER=$CHROMEOS_VERSION_DEVSERVER" 346 CHROMEOS_VERSION_TRACK=$CHROMEOS_VERSION_TRACK CHROMEOS_VERSION_AUSERVER=$CHROME OS_VERSION_AUSERVER CHROMEOS_VERSION_DEVSERVER=$CHROMEOS_VERSION_DEVSERVER"
341 347
342 if [ -d "$HOME/.subversion" ]; then 348 if [ -d "$HOME/.subversion" ]; then
343 # Bind mounting .subversion into chroot 349 # Bind mounting .subversion into chroot
344 v_info "mounting ~/.subversion into chroot" 350 debug "mounting ~/.subversion into chroot"
345 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}/home/${USER}/.subversion")" 351 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}/home/${USER}/.subversion")"
346 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then 352 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then
347 mkdir -p "$MOUNTED_PATH" 353 mkdir -p "$MOUNTED_PATH"
348 sudo mount --bind "$HOME/.subversion" "$MOUNTED_PATH" || \ 354 sudo mount --bind "$HOME/.subversion" "$MOUNTED_PATH" || \
349 die "Could not mount $MOUNTED_PATH" 355 die "Could not mount $MOUNTED_PATH"
350 fi 356 fi
351 fi 357 fi
352 358
353 # Configure committer username and email in chroot .gitconfig 359 # Configure committer username and email in chroot .gitconfig
354 if [ $FLAGS_git_config -eq $FLAGS_TRUE ]; then 360 if [ $FLAGS_git_config -eq $FLAGS_TRUE ]; then
355 git config -f ${FLAGS_chroot}/home/${USER}/.gitconfig --replace-all \ 361 git config -f ${FLAGS_chroot}/home/${USER}/.gitconfig --replace-all \
356 user.name "$(cd /tmp; git var GIT_COMMITTER_IDENT | sed -e 's/ *<.*//')" 362 user.name "$(cd /tmp; git var GIT_COMMITTER_IDENT | sed -e 's/ *<.*//')"
357 git config -f ${FLAGS_chroot}/home/${USER}/.gitconfig --replace-all \ 363 git config -f ${FLAGS_chroot}/home/${USER}/.gitconfig --replace-all \
358 user.email "$(cd /tmp; git var GIT_COMMITTER_IDENT | \ 364 user.email "$(cd /tmp; git var GIT_COMMITTER_IDENT | \
359 sed -e 's/.*<\([^>]*\)>.*/\1/')" 365 sed -e 's/.*<\([^>]*\)>.*/\1/')"
360 fi 366 fi
361 367
362 # Run command or interactive shell. Also include the non-chrooted path to 368 # Run command or interactive shell. Also include the non-chrooted path to
363 # the source trunk for scripts that may need to print it (e.g. 369 # the source trunk for scripts that may need to print it (e.g.
364 # build_image.sh). 370 # build_image.sh).
365 sudo -- chroot "$FLAGS_chroot" sudo -i -u $USER $CHROOT_PASSTHRU \ 371 sudo -- chroot "$FLAGS_chroot" sudo -i -u $USER $CHROOT_PASSTHRU \
366 EXTERNAL_TRUNK_PATH="${FLAGS_trunk}" LANG=C SSH_AGENT_PID="${SSH_AGENT_PID}" \ 372 EXTERNAL_TRUNK_PATH="${FLAGS_trunk}" LANG=C SSH_AGENT_PID="${SSH_AGENT_PID}" \
367 SSH_AUTH_SOCK="${SSH_AUTH_SOCK}" "$@" 373 SSH_AUTH_SOCK="${SSH_AUTH_SOCK}" "$@"
368 374
369 # Remove trap and explicitly unmount 375 # Remove trap and explicitly unmount
370 trap - EXIT 376 trap - EXIT
371 teardown_env 377 teardown_env
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