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

Side by Side Diff: enter_chroot.sh

Issue 3318005: Use correct log functions for enter_chroot's console spew. (Closed) Base URL: http://git.chromium.org/git/crosutils.git
Patch Set: fix accidental clobbering of ellyjones change Created 10 years, 3 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 # Load common constants. This should be the first executable line. 9 # Load common constants. This should be the first executable line.
10 # The path to common.sh should be relative to your script's location. 10 # The path to common.sh should be relative to your script's location.
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 74
75 sudo chmod 0777 "$FLAGS_chroot/var/lock" 75 sudo chmod 0777 "$FLAGS_chroot/var/lock"
76 76
77 LOCKFILE="$FLAGS_chroot/var/lock/enter_chroot" 77 LOCKFILE="$FLAGS_chroot/var/lock/enter_chroot"
78 78
79 function setup_env { 79 function setup_env {
80 ( 80 (
81 flock 200 81 flock 200
82 echo $$ >> "$LOCKFILE" 82 echo $$ >> "$LOCKFILE"
83 83
84 echo >&2 "Mounting chroot environment." 84 info "Mounting chroot environment."
85 85
86 # Mount only if not already mounted 86 # Mount only if not already mounted
87 MOUNTED_PATH="$(readlink -f "$FLAGS_chroot/proc")" 87 MOUNTED_PATH="$(readlink -f "$FLAGS_chroot/proc")"
88 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ] 88 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]
89 then 89 then
90 sudo mount none -t proc "$MOUNTED_PATH" || \ 90 sudo mount none -t proc "$MOUNTED_PATH" || \
91 die "Could not mount $MOUNTED_PATH" 91 die "Could not mount $MOUNTED_PATH"
92 fi 92 fi
93 93
94 MOUNTED_PATH="$(readlink -f "$FLAGS_chroot/sys")" 94 MOUNTED_PATH="$(readlink -f "$FLAGS_chroot/sys")"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 135
136 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}${INNER_CHROME_ROOT}")" 136 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}${INNER_CHROME_ROOT}")"
137 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ] 137 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]
138 then 138 then
139 ! CHROME_ROOT="$(readlink -f "$FLAGS_chrome_root")" 139 ! CHROME_ROOT="$(readlink -f "$FLAGS_chrome_root")"
140 if [ -z "$CHROME_ROOT" ]; then 140 if [ -z "$CHROME_ROOT" ]; then
141 ! CHROME_ROOT="$(cat "${FLAGS_chroot}${CHROME_ROOT_CONFIG}" \ 141 ! CHROME_ROOT="$(cat "${FLAGS_chroot}${CHROME_ROOT_CONFIG}" \
142 2>/dev/null)" 142 2>/dev/null)"
143 fi 143 fi
144 if [[ ( -z "$CHROME_ROOT" ) || ( ! -d "${CHROME_ROOT}/src" ) ]]; then 144 if [[ ( -z "$CHROME_ROOT" ) || ( ! -d "${CHROME_ROOT}/src" ) ]]; then
145 echo >&2 "Not mounting chrome source" 145 info "Not mounting chrome source"
kliegs 2010/09/02 15:34:30 NIT: This should be switched to conditional and be
146 sudo rm -f "${FLAGS_chroot}${CHROME_ROOT_CONFIG}" 146 sudo rm -f "${FLAGS_chroot}${CHROME_ROOT_CONFIG}"
147 else 147 else
148 echo >&2 "Mounting chrome source at: $INNER_CHROME_ROOT" 148 info "Mounting chrome source at: $INNER_CHROME_ROOT"
149 echo "$CHROME_ROOT" | \ 149 echo "$CHROME_ROOT" | \
150 sudo dd of="${FLAGS_chroot}${CHROME_ROOT_CONFIG}" 150 sudo dd of="${FLAGS_chroot}${CHROME_ROOT_CONFIG}"
151 mkdir -p "$MOUNTED_PATH" 151 mkdir -p "$MOUNTED_PATH"
152 sudo mount --bind "$CHROME_ROOT" "$MOUNTED_PATH" || \ 152 sudo mount --bind "$CHROME_ROOT" "$MOUNTED_PATH" || \
153 die "Could not mount $MOUNTED_PATH" 153 die "Could not mount $MOUNTED_PATH"
154 fi 154 fi
155 fi 155 fi
156 156
157 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}${INNER_DEPOT_TOOLS_ROOT}")" 157 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}${INNER_DEPOT_TOOLS_ROOT}")"
158 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ] 158 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]
159 then 159 then
160 if [ $(which gclient 2>/dev/null) ]; then 160 if [ $(which gclient 2>/dev/null) ]; then
161 echo >&2 "Mounting depot_tools" 161 info "Mounting depot_tools"
162 DEPOT_TOOLS=$(dirname $(which gclient) ) 162 DEPOT_TOOLS=$(dirname $(which gclient) )
163 mkdir -p "$MOUNTED_PATH" 163 mkdir -p "$MOUNTED_PATH"
164 if ! sudo mount --bind "$DEPOT_TOOLS" "$MOUNTED_PATH"; then 164 if ! sudo mount --bind "$DEPOT_TOOLS" "$MOUNTED_PATH"; then
165 echo >&2 "depot_tools failed to mount; perhaps it's on NFS?" 165 warn "depot_tools failed to mount; perhaps it's on NFS?"
166 echo >&2 "This may impact chromium build." 166 warn "This may impact chromium build."
167 fi 167 fi
168 fi 168 fi
169 fi 169 fi
170 170
171 # Install fuse module. 171 # Install fuse module.
172 if [ -c "${FUSE_DEVICE}" ] ; then 172 if [ -c "${FUSE_DEVICE}" ] ; then
173 sudo modprobe fuse 2> /dev/null ||\ 173 sudo modprobe fuse 2> /dev/null ||\
174 echo >&2 "-- Note: modprobe fuse failed. gmergefs will not work" 174 warn "-- Note: modprobe fuse failed. gmergefs will not work"
175 fi 175 fi
176 176
177 # Turn off automounting of external media when we enter the 177 # Turn off automounting of external media when we enter the
178 # chroot; thus we don't have to worry about being able to unmount 178 # chroot; thus we don't have to worry about being able to unmount
179 # from inside. 179 # from inside.
180 if [ $(which gconftool-2 2>/dev/null) ]; then 180 if [ $(which gconftool-2 2>/dev/null) ]; then
181 gconftool-2 -g ${AUTOMOUNT_PREF} > \ 181 gconftool-2 -g ${AUTOMOUNT_PREF} > \
182 "${FLAGS_chroot}${SAVED_AUTOMOUNT_PREF_FILE}" 182 "${FLAGS_chroot}${SAVED_AUTOMOUNT_PREF_FILE}"
183 if [ $(gconftool-2 -s --type=boolean ${AUTOMOUNT_PREF} false) ]; then 183 if [ $(gconftool-2 -s --type=boolean ${AUTOMOUNT_PREF} false) ]; then
184 echo >&2 "-- Note: USB sticks may be automounted by your host OS." 184 warn "-- Note: USB sticks may be automounted by your host OS."
185 echo >&2 "-- Note: If you plan to burn bootable media, you may need to" 185 warn "-- Note: If you plan to burn bootable media, you may need to"
186 echo >&2 "-- Note: unmount these devices manually, or run image_to_usb.s h" 186 warn "-- Note: unmount these devices manually, or run image_to_usb.sh"
187 echo >&2 "-- Note: outside the chroot." 187 warn "-- Note: outside the chroot."
188 fi 188 fi
189 fi 189 fi
190 190
191 ) 200>>"$LOCKFILE" || die "setup_env failed" 191 ) 200>>"$LOCKFILE" || die "setup_env failed"
192 } 192 }
193 193
194 function teardown_env { 194 function teardown_env {
195 # Only teardown if we're the last enter_chroot to die 195 # Only teardown if we're the last enter_chroot to die
196 ( 196 (
197 flock 200 197 flock 200
(...skipping 14 matching lines...) Expand all
212 # All good, keep going 212 # All good, keep going
213 echo "$PID" >> "$TMP_LOCKFILE" 213 echo "$PID" >> "$TMP_LOCKFILE"
214 fi 214 fi
215 done 215 done
216 # Remove any dups from lock file while installing new one 216 # Remove any dups from lock file while installing new one
217 sort -n "$TMP_LOCKFILE" | uniq > "$LOCKFILE" 217 sort -n "$TMP_LOCKFILE" | uniq > "$LOCKFILE"
218 218
219 if [ $(which gconftool-2 2>/dev/null) ]; then 219 if [ $(which gconftool-2 2>/dev/null) ]; then
220 SAVED_PREF=$(cat "${FLAGS_chroot}${SAVED_AUTOMOUNT_PREF_FILE}") 220 SAVED_PREF=$(cat "${FLAGS_chroot}${SAVED_AUTOMOUNT_PREF_FILE}")
221 gconftool-2 -s --type=boolean ${AUTOMOUNT_PREF} ${SAVED_PREF} || \ 221 gconftool-2 -s --type=boolean ${AUTOMOUNT_PREF} ${SAVED_PREF} || \
222 echo >&2 "could not re-set your automount preference." 222 warn "could not re-set your automount preference."
223 fi 223 fi
224 224
225 if [ -s "$LOCKFILE" ]; then 225 if [ -s "$LOCKFILE" ]; then
226 echo >&2 "At least one other pid is running in the chroot, so not" 226 info "At least one other pid is running in the chroot, so not"
227 echo >&2 "tearing down env." 227 info "tearing down env."
228 else 228 else
229 MOUNTED_PATH=$(readlink -f "$FLAGS_chroot") 229 MOUNTED_PATH=$(readlink -f "$FLAGS_chroot")
230 echo >&2 "Unmounting chroot environment." 230 info "Unmounting chroot environment."
231 # sort the list of mounts in reverse order, to ensure umount of 231 # sort the list of mounts in reverse order, to ensure umount of
232 # cascading mounts in proper order 232 # cascading mounts in proper order
233 for i in \ 233 for i in \
234 $(mount | grep -F "on $MOUNTED_PATH/" | sort -r | awk '{print $3}'); do 234 $(mount | grep -F "on $MOUNTED_PATH/" | sort -r | awk '{print $3}'); do
235 safe_umount "$i" 235 safe_umount "$i"
236 done 236 done
237 fi 237 fi
238 ) 200>>"$LOCKFILE" || die "teardown_env failed" 238 ) 200>>"$LOCKFILE" || die "teardown_env failed"
239 } 239 }
240 240
241 if [ $FLAGS_mount -eq $FLAGS_TRUE ] 241 if [ $FLAGS_mount -eq $FLAGS_TRUE ]
242 then 242 then
243 setup_env 243 setup_env
244 echo >&2 "Make sure you run" 244 info "Make sure you run"
245 echo >&2 " $0 --unmount" 245 info " $0 --unmount"
246 echo >&2 "before deleting $FLAGS_chroot" 246 info "before deleting $FLAGS_chroot"
247 echo >&2 "or you'll end up deleting $FLAGS_trunk too!" 247 info "or you'll end up deleting $FLAGS_trunk too!"
248 exit 0 248 exit 0
249 fi 249 fi
250 250
251 if [ $FLAGS_unmount -eq $FLAGS_TRUE ] 251 if [ $FLAGS_unmount -eq $FLAGS_TRUE ]
252 then 252 then
253 teardown_env 253 teardown_env
254 exit 0 254 exit 0
255 fi 255 fi
256 256
257 # Make sure we unmount before exiting 257 # Make sure we unmount before exiting
(...skipping 11 matching lines...) Expand all
269 # which pass each command line into a separate call to enter_chroot 269 # which pass each command line into a separate call to enter_chroot
270 # so always have up-to-date info. For developer builds, there may not 270 # so always have up-to-date info. For developer builds, there may not
271 # be a single revision, since the developer may have 271 # be a single revision, since the developer may have
272 # hand-sync'd some subdirs and edited files in others. 272 # hand-sync'd some subdirs and edited files in others.
273 # In that case, check against origin/HEAD and mark** revision. 273 # In that case, check against origin/HEAD and mark** revision.
274 # Use git:8 chars of sha1 274 # Use git:8 chars of sha1
275 REVISION=$(git rev-parse --short=8 HEAD) 275 REVISION=$(git rev-parse --short=8 HEAD)
276 CHROOT_PASSTHRU="CHROMEOS_REVISION=$REVISION BUILDBOT_BUILD=$FLAGS_build_number CHROMEOS_OFFICIAL=$CHROMEOS_OFFICIAL" 276 CHROOT_PASSTHRU="CHROMEOS_REVISION=$REVISION BUILDBOT_BUILD=$FLAGS_build_number CHROMEOS_OFFICIAL=$CHROMEOS_OFFICIAL"
277 if [ -d "$HOME/.subversion" ]; then 277 if [ -d "$HOME/.subversion" ]; then
278 # Bind mounting .subversion into chroot 278 # Bind mounting .subversion into chroot
279 echo >&2 "mounting ~/.subversion into chroot" 279 info "mounting ~/.subversion into chroot"
280 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}/home/${USER}/.subversion")" 280 MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}/home/${USER}/.subversion")"
281 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then 281 if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then
282 mkdir -p "$MOUNTED_PATH" 282 mkdir -p "$MOUNTED_PATH"
283 sudo mount --bind "$HOME/.subversion" "$MOUNTED_PATH" || \ 283 sudo mount --bind "$HOME/.subversion" "$MOUNTED_PATH" || \
284 die "Could not mount $MOUNTED_PATH" 284 die "Could not mount $MOUNTED_PATH"
285 fi 285 fi
286 fi 286 fi
287 287
288 # Run command or interactive shell. Also include the non-chrooted path to 288 # Run command or interactive shell. Also include the non-chrooted path to
289 # the source trunk for scripts that may need to print it (e.g. 289 # the source trunk for scripts that may need to print it (e.g.
290 # build_image.sh). 290 # build_image.sh).
291 sudo chroot "$FLAGS_chroot" sudo -i -u $USER $CHROOT_PASSTHRU \ 291 sudo chroot "$FLAGS_chroot" sudo -i -u $USER $CHROOT_PASSTHRU \
292 EXTERNAL_TRUNK_PATH="${FLAGS_trunk}" LANG=C SSH_AGENT_PID="${SSH_AGENT_PID}" \ 292 EXTERNAL_TRUNK_PATH="${FLAGS_trunk}" LANG=C SSH_AGENT_PID="${SSH_AGENT_PID}" \
293 SSH_AUTH_SOCK="${SSH_AUTH_SOCK}" -- "$@" 293 SSH_AUTH_SOCK="${SSH_AUTH_SOCK}" -- "$@"
294 294
295 # Remove trap and explicitly unmount 295 # Remove trap and explicitly unmount
296 trap - EXIT 296 trap - EXIT
297 teardown_env 297 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