Fix build_image --factory_install to work again.

There were two bugs:
 1) The test [ ${ARCH} -eq "arm" ] was wrong because -eq is a
    numeric comparison operator, not legal on strings.
 2) Variable ${ARCH} was used before set.

The code change includes comment changes to clarify the reasons for
the code, and a future-proofing logic change.

Change-Id: I63f502cc33cf8a9a441b4b305fc49ed57d0a55b1

BUG=None
TEST=build_image --factory_install, and boot the resulting image

Review URL: http://codereview.chromium.org/6905119
(cherry picked from commit b290366b6e24ce85fdb6a3b9360cc862036b8d2f)

Change-Id: I06688bbc96dd4d8f2c61bc87f82d2be88b00a84f
Reviewed-on: http://gerrit.chromium.org/gerrit/664
Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Tested-by: Nick Sanders <nsanders@chromium.org>
diff --git a/build_image b/build_image
index 9e1fde6..e19d58c 100755
--- a/build_image
+++ b/build_image
@@ -187,19 +187,43 @@
 # Determine build version.
 . "${OVERLAY_CHROMEOS_DIR}/config/chromeos_version.sh"
 
+BOARD="${FLAGS_board}"
+BOARD_ROOT="${FLAGS_build_root}/${BOARD}"
+
+# What cross-build are we targeting?
+. "${BOARD_ROOT}/etc/make.conf.board_setup"
+LIBC_VERSION=${LIBC_VERSION}
+
+# Figure out ARCH from the given toolchain.
+# TODO: Move to common.sh as a function after scripts are switched over.
+TC_ARCH=$(echo "${CHOST}" | awk -F'-' '{ print $1 }')
+case "${TC_ARCH}" in
+  arm*)
+    ARCH="arm"
+    ;;
+  *86)
+    ARCH="x86"
+    ;;
+  *)
+    error "Unable to determine ARCH from toolchain: ${CHOST}"
+    exit 1
+esac
+
 # Configure extra USE or packages for this type of build.
 EXTRA_PACKAGES=""
 if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ] ; then
   # Factory install needs to have the factory installer added.
   EXTRA_PACKAGES="${EXTRA_PACKAGES} chromeos-base/chromeos-factoryinstall"
-  # On x86, booting factory install shim on SD card needs to have the kernel
-  # initrmafs enabled. On ARM, booting factory install image on network does
-  # not needs initramfs. Force to enable fbconsole to fix a display driver bug.
-  if [ ${ARCH} -eq "arm" ] ; then
-    export USE="${USE} fbconsole"
-  else
+  # On x86, we boot the factory install shim from an SD card using
+  # initramfs for our root.  On ARM, we boot the factory install shim
+  # over the network, so we don't require initramfs, but we do require
+  # fbconsole to fix a display driver bug.
+  if [ "${ARCH}" = "x86" ] ; then
     export USE="${USE} initramfs"
   fi
+  if [ "${ARCH}" = "arm" ] ; then
+    export USE="${USE} fbconsole"
+  fi
 fi
 
 emerge_to_image() {
@@ -236,9 +260,6 @@
 PRISTINE_IMG="${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME}"
 DEVELOPER_IMG="${OUTPUT_DIR}/${DEVELOPER_IMAGE_NAME}"
 
-BOARD="${FLAGS_board}"
-BOARD_ROOT="${FLAGS_build_root}/${BOARD}"
-
 ROOT_FS_IMG="${OUTPUT_DIR}/rootfs.image"
 ROOT_FS_DIR="${OUTPUT_DIR}/rootfs"
 ROOT_FS_HASH="${OUTPUT_DIR}/rootfs.hash"
@@ -260,29 +281,10 @@
 # translate to /usr/local.
 DEV_IMAGE_ROOT="${STATEFUL_FS_DIR}/dev_image"
 
-# What cross-build are we targeting?
-. "${BOARD_ROOT}/etc/make.conf.board_setup"
-LIBC_VERSION=${LIBC_VERSION}
-
 if [ ${FLAGS_jobs} -ne -1 ]; then
   EMERGE_JOBS="--jobs=${FLAGS_jobs}"
 fi
 
-# Figure out ARCH from the given toolchain.
-# TODO: Move to common.sh as a function after scripts are switched over.
-TC_ARCH=$(echo "${CHOST}" | awk -F'-' '{ print $1 }')
-case "${TC_ARCH}" in
-  arm*)
-    ARCH="arm"
-    ;;
-  *86)
-    ARCH="x86"
-    ;;
-  *)
-    error "Unable to determine ARCH from toolchain: ${CHOST}"
-    exit 1
-esac
-
 if [[ ${FLAGS_crosbug12352_arm_kernel_signing} -eq ${FLAGS_TRUE} ]]; then
   crosbug12352_flag="--crosbug12352_arm_kernel_signing"
 else