| OLD | NEW |
| 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 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 # 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 |
| 296 # cascading mounts in proper order | 296 # cascading mounts in proper order |
| 297 for i in \ | 297 for i in \ |
| 298 $(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 |
| 299 safe_umount "$i" | 299 safe_umount "$i" |
| 300 done | 300 done |
| 301 fi | 301 fi |
| 302 ) 200>>"$LOCKFILE" || die "teardown_env failed" | 302 ) 200>>"$LOCKFILE" || die "teardown_env failed" |
| 303 } | 303 } |
| 304 | 304 |
| 305 # This function does extra "fixups" of the chroot. It's a lot like |
| 306 # chroot_hacks_from_outside() in common.sh, except that it is only called |
| 307 # from enter_chroot.sh (chroot_hacks_from_outside is also called from |
| 308 # make_chroot.sh). This function was created because common.sh is on lockdown |
| 309 # and can't be changed. |
| 310 # |
| 311 # NOTE: the need for this type of "fixup" should be going away. If everything |
| 312 # in the chroot is versioned and nothing is generated, there is no need to |
| 313 # handle partly fixing up generated files. |
| 314 # |
| 315 # Please put date information so it's easy to keep track of when |
| 316 # old hacks can be retired and so that people can detect when a |
| 317 # hack triggered when it shouldn't have. |
| 318 function chroot_hacks_too() { |
| 319 local chroot_home="${FLAGS_chroot}/home/${USER}" |
| 320 |
| 321 # Add chromite stuff if not already done. |
| 322 if ! grep -q "^PATH=.*/trunk/chromite/bin" "${chroot_home}/.bashrc"; then |
| 323 info "Upgrading old chroot (pre 2011-02-09) - adding chromite to path" |
| 324 echo "PATH=\$PATH:/home/${USER}/trunk/chromite/bin" >> \ |
| 325 "${chroot_home}/.bashrc" |
| 326 fi |
| 327 if ! [ -L "${chroot_home}/.local/lib/python2.6/site-packages/chromite" ]; then |
| 328 info "Upgrading old chroot (pre 2011-02-09) - add chromite to site-packages" |
| 329 mkdir -p "${chroot_home}/.local/lib/python2.6/site-packages" |
| 330 ln -s ../../../../trunk/chromite \ |
| 331 "${chroot_home}/.local/lib/python2.6/site-packages/" |
| 332 fi |
| 333 } |
| 334 |
| 335 |
| 305 if [ $FLAGS_mount -eq $FLAGS_TRUE ]; then | 336 if [ $FLAGS_mount -eq $FLAGS_TRUE ]; then |
| 306 setup_env | 337 setup_env |
| 307 info "Make sure you run" | 338 info "Make sure you run" |
| 308 info " $0 --unmount" | 339 info " $0 --unmount" |
| 309 info "before deleting $FLAGS_chroot" | 340 info "before deleting $FLAGS_chroot" |
| 310 info "or you'll end up deleting $FLAGS_trunk too!" | 341 info "or you'll end up deleting $FLAGS_trunk too!" |
| 311 exit 0 | 342 exit 0 |
| 312 fi | 343 fi |
| 313 | 344 |
| 314 if [ $FLAGS_unmount -eq $FLAGS_TRUE ]; then | 345 if [ $FLAGS_unmount -eq $FLAGS_TRUE ]; then |
| 315 teardown_env | 346 teardown_env |
| 316 exit 0 | 347 exit 0 |
| 317 fi | 348 fi |
| 318 | 349 |
| 319 # Apply any hacks needed to update the chroot. | 350 # Apply any hacks needed to update the chroot. |
| 320 chroot_hacks_from_outside "${FLAGS_chroot}" | 351 chroot_hacks_from_outside "${FLAGS_chroot}" |
| 352 chroot_hacks_too |
| 321 | 353 |
| 322 | 354 |
| 323 # Make sure we unmount before exiting | 355 # Make sure we unmount before exiting |
| 324 trap teardown_env EXIT | 356 trap teardown_env EXIT |
| 325 setup_env | 357 setup_env |
| 326 | 358 |
| 327 # Get the git revision to pass into the chroot. | 359 # Get the git revision to pass into the chroot. |
| 328 # | 360 # |
| 329 # This must be determined outside the chroot because (1) there is no | 361 # This must be determined outside the chroot because (1) there is no |
| 330 # git inside the chroot, and (2) if there were it would likely be | 362 # git inside the chroot, and (2) if there were it would likely be |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 # Run command or interactive shell. Also include the non-chrooted path to | 400 # Run command or interactive shell. Also include the non-chrooted path to |
| 369 # the source trunk for scripts that may need to print it (e.g. | 401 # the source trunk for scripts that may need to print it (e.g. |
| 370 # build_image.sh). | 402 # build_image.sh). |
| 371 sudo -- chroot "$FLAGS_chroot" sudo -i -u $USER $CHROOT_PASSTHRU \ | 403 sudo -- chroot "$FLAGS_chroot" sudo -i -u $USER $CHROOT_PASSTHRU \ |
| 372 EXTERNAL_TRUNK_PATH="${FLAGS_trunk}" LANG=C SSH_AGENT_PID="${SSH_AGENT_PID}" \ | 404 EXTERNAL_TRUNK_PATH="${FLAGS_trunk}" LANG=C SSH_AGENT_PID="${SSH_AGENT_PID}" \ |
| 373 SSH_AUTH_SOCK="${SSH_AUTH_SOCK}" "$@" | 405 SSH_AUTH_SOCK="${SSH_AUTH_SOCK}" "$@" |
| 374 | 406 |
| 375 # Remove trap and explicitly unmount | 407 # Remove trap and explicitly unmount |
| 376 trap - EXIT | 408 trap - EXIT |
| 377 teardown_env | 409 teardown_env |
| OLD | NEW |