enter_chroot: re-factor chrome_root mounting to use ensure_mounted
The chrome root code doesn't attempt to mount the tree if there is no
source root configured. So re-order the code from:
- is chrome source mounted ?
- does a chrome source exist ?
- mount chrome source
to the more logical:
- does a chrome source exist ?
- use ensure_mounted to check+mount
This lets us use the mount cache for the chrome mounting and unifies
duplicated mount/checking logic.
BUG=None
TEST=`cros_sdk --enter` still works with simultaneous runs
TEST=`cros_sdk --enter -- ls` still works
Change-Id: I7e6af9dd7f65cefa04438c2862c931f06237060a
Reviewed-on: http://gerrit.chromium.org/gerrit/8032
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/sdk_lib/enter_chroot.sh b/sdk_lib/enter_chroot.sh
index 68d8255..afcd96f 100755
--- a/sdk_lib/enter_chroot.sh
+++ b/sdk_lib/enter_chroot.sh
@@ -250,29 +250,24 @@
fi
fi
- MOUNTED_PATH="$(readlink -f "${FLAGS_chroot}${INNER_CHROME_ROOT}")"
- if [ -z "$(mount | grep -F "on $MOUNTED_PATH ")" ]; then
- CHROME_ROOT="$(readlink -f "$FLAGS_chrome_root" || :)"
- if [ -z "$CHROME_ROOT" ]; then
- CHROME_ROOT="$(cat "${FLAGS_chroot}${CHROME_ROOT_CONFIG}" \
- 2>/dev/null || :)"
- CHROME_ROOT_AUTO=1
- fi
- if [[ -n "$CHROME_ROOT" ]]; then
- if [[ ! -d "${CHROME_ROOT}/src" ]]; then
- error "Not mounting chrome source"
- sudo rm -f "${FLAGS_chroot}${CHROME_ROOT_CONFIG}"
- if [[ ! "$CHROME_ROOT_AUTO" ]]; then
- exit 1
- fi
- else
- debug "Mounting chrome source at: $INNER_CHROME_ROOT"
- sudo bash -c "echo '$CHROME_ROOT' > \
- '${FLAGS_chroot}${CHROME_ROOT_CONFIG}'"
- mkdir -p "$MOUNTED_PATH"
- sudo mount --bind "$CHROME_ROOT" "$MOUNTED_PATH" || \
- die "Could not mount $MOUNTED_PATH"
+ CHROME_ROOT="$(readlink -f "$FLAGS_chrome_root" || :)"
+ if [ -z "$CHROME_ROOT" ]; then
+ CHROME_ROOT="$(cat "${FLAGS_chroot}${CHROME_ROOT_CONFIG}" \
+ 2>/dev/null || :)"
+ CHROME_ROOT_AUTO=1
+ fi
+ if [[ -n "$CHROME_ROOT" ]]; then
+ if [[ ! -d "${CHROME_ROOT}/src" ]]; then
+ error "Not mounting chrome source"
+ sudo rm -f "${FLAGS_chroot}${CHROME_ROOT_CONFIG}"
+ if [[ ! "$CHROME_ROOT_AUTO" ]]; then
+ exit 1
fi
+ else
+ debug "Mounting chrome source at: $INNER_CHROME_ROOT"
+ sudo bash -c "echo '$CHROME_ROOT' > \
+ '${FLAGS_chroot}${CHROME_ROOT_CONFIG}'"
+ ensure_mounted "$CHROME_ROOT" --bind "$INNER_CHROME_ROOT"
fi
fi