From 3b9107014b9f4c0013169fab923737bc8ae561ac Mon Sep 17 00:00:00 2001 From: David Rochberg Date: Thu, 2 Dec 2010 10:45:21 -0500 Subject: [PATCH] restart_in_chroot_if_needed can run scripts from bin/. cros_workon_now does this BUG=chromium-os:9877 TEST=ran bin/cros_workon_now, cros_workon, set_shared_user_password Note---this introduces another bashism to common.sh. However, despite comments to the contrary, common.sh does not actually parse under dash without this change Change-Id: I1e6b9751afa8341c100f3b8e0b96284835a53d17 Review URL: http://codereview.chromium.org/5444002 --- bin/cros_workon_make | 2 +- common.sh | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/bin/cros_workon_make b/bin/cros_workon_make index da2a3ebca5..1556149b82 100755 --- a/bin/cros_workon_make +++ b/bin/cros_workon_make @@ -10,7 +10,7 @@ . "$(dirname $0)/../common.sh" # Script must be run inside the chroot. -assert_inside_chroot +restart_in_chroot_if_needed "$@" get_default_board diff --git a/common.sh b/common.sh index 20a473cff8..a11f257289 100644 --- a/common.sh +++ b/common.sh @@ -106,7 +106,7 @@ DEFAULT_BUILD_ROOT=${CHROMEOS_BUILD_ROOT:-"$SRC_ROOT/build"} # Set up a global ALL_BOARDS value if [ -d $SRC_ROOT/overlays ]; then ALL_BOARDS=$(cd $SRC_ROOT/overlays;ls -1d overlay-* 2>&-|sed 's,overlay-,,g') -fi +fi # Strip CR ALL_BOARDS=$(echo $ALL_BOARDS) # Set a default BOARD @@ -231,11 +231,15 @@ function make_pkg_common { # Enter a chroot and restart the current script if needed function restart_in_chroot_if_needed { + # NB: Pass in ARGV: restart_in_chroot_if_needed "$@" if [ $INSIDE_CHROOT -ne 1 ] then - # Equivalent to enter_chroot.sh -- + local abspath=$(readlink -f "$0") + # strip everything up to (and including) /src/scripts/ from abspath + local path_from_scripts="${abspath##*/src/scripts/}" exec $SCRIPTS_DIR/enter_chroot.sh -- \ - $CHROOT_TRUNK_DIR/src/scripts/$(basename $0) $* + "$CHROOT_TRUNK_DIR/src/scripts/$path_from_scripts" "$@" + exit fi }