build_packages: Add skip_setup_board option.

Builders re-running setup_board in build_packages results in wiping
configs set by setup_board unless set in both build_packages and
setup_board. To simplify APIs for builders, add the option for
setup_board to be skipped all together.

BUG=chromium:945003
TEST=./build_packages --board eve --skip_setup_board

Change-Id: I771d750b3bc0fe4b986decde4de89120540d2ed3
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosutils/+/2775837
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Michael Mortensen <mmortensen@google.com>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Michael Mortensen <mmortensen@google.com>
diff --git a/build_packages b/build_packages
index f01d5df..234d50f 100755
--- a/build_packages
+++ b/build_packages
@@ -73,6 +73,8 @@
   "Don't automatically rebuild dependencies."
 DEFINE_boolean skip_chroot_upgrade "${FLAGS_FALSE}" \
   "Don't run the chroot upgrade automatically; use with care."
+DEFINE_boolean skip_setup_board "${FLAGS_FALSE}" \
+  "Don't run setup_board. Implies skip_chroot_upgrade and skip_toolchain_update."
 DEFINE_boolean skip_toolchain_update "${FLAGS_FALSE}" \
   "Don't update toolchain automatically."
 DEFINE_boolean withdev "${FLAGS_TRUE}" \
@@ -168,41 +170,43 @@
   exit 1
 fi
 
-# Before we can run any tools, we need to update chroot or setup_board.
-UPDATE_ARGS=()
-if [[ -n ${FLAGS_accept_licenses} ]]; then
-  UPDATE_ARGS+=( --accept-licenses "${FLAGS_accept_licenses}" )
-fi
-if [ "${FLAGS_usepkg}" -eq "${FLAGS_TRUE}" ]; then
-  UPDATE_ARGS+=( --usepkg )
-else
-  UPDATE_ARGS+=( --nousepkg )
-fi
-if [[ "${FLAGS_jobs}" -ne -1 ]]; then
-  UPDATE_ARGS+=( --jobs=${FLAGS_jobs} )
-fi
-if [ "${FLAGS_reuse_pkgs_from_local_boards}" -eq "${FLAGS_TRUE}" ]; then
-  UPDATE_ARGS+=( --reuse-pkgs-from-local-boards )
-fi
-if [ "${FLAGS_skip_toolchain_update}" -eq "${FLAGS_TRUE}" ]; then
-  UPDATE_ARGS+=( --skip-toolchain-update )
-fi
-if [ "${FLAGS_skip_chroot_upgrade}" -eq "${FLAGS_TRUE}" ]; then
-  UPDATE_ARGS+=( --skip-chroot-upgrade )
-fi
-if [[ -n ${FLAGS_board_root} ]]; then
-  UPDATE_ARGS+=( --board-root "${FLAGS_board_root}" )
-fi
-if [ "${FLAGS_cleanbuild}" -eq "${FLAGS_TRUE}" ]; then
-  UPDATE_ARGS+=( --force )
-fi
-if [[ "${FLAGS_expandedbinhosts}" -eq "${FLAGS_TRUE}" ]]; then
-  UPDATE_ARGS+=( --more-binhosts )
-else
-  UPDATE_ARGS+=( --fewer-binhosts )
-fi
+if [[ "${FLAGS_skip_setup_board}" -eq "${FLAGS_FALSE}" ]]; then
+  # Before we can run any tools, we need to update chroot or setup_board.
+  UPDATE_ARGS=()
+  if [[ -n ${FLAGS_accept_licenses} ]]; then
+    UPDATE_ARGS+=( --accept-licenses "${FLAGS_accept_licenses}" )
+  fi
+  if [ "${FLAGS_usepkg}" -eq "${FLAGS_TRUE}" ]; then
+    UPDATE_ARGS+=( --usepkg )
+  else
+    UPDATE_ARGS+=( --nousepkg )
+  fi
+  if [[ "${FLAGS_jobs}" -ne -1 ]]; then
+    UPDATE_ARGS+=( --jobs=${FLAGS_jobs} )
+  fi
+  if [ "${FLAGS_reuse_pkgs_from_local_boards}" -eq "${FLAGS_TRUE}" ]; then
+    UPDATE_ARGS+=( --reuse-pkgs-from-local-boards )
+  fi
+  if [ "${FLAGS_skip_toolchain_update}" -eq "${FLAGS_TRUE}" ]; then
+    UPDATE_ARGS+=( --skip-toolchain-update )
+  fi
+  if [ "${FLAGS_skip_chroot_upgrade}" -eq "${FLAGS_TRUE}" ]; then
+    UPDATE_ARGS+=( --skip-chroot-upgrade )
+  fi
+  if [[ -n ${FLAGS_board_root} ]]; then
+    UPDATE_ARGS+=( --board-root "${FLAGS_board_root}" )
+  fi
+  if [ "${FLAGS_cleanbuild}" -eq "${FLAGS_TRUE}" ]; then
+    UPDATE_ARGS+=( --force )
+  fi
+  if [[ "${FLAGS_expandedbinhosts}" -eq "${FLAGS_TRUE}" ]]; then
+    UPDATE_ARGS+=( --more-binhosts )
+  else
+    UPDATE_ARGS+=( --fewer-binhosts )
+  fi
 
-setup_board --quiet --board=${FLAGS_board} "${UPDATE_ARGS[@]}"
+  setup_board --quiet --board=${FLAGS_board} "${UPDATE_ARGS[@]}"
+fi
 
 sudo_clear_shadow_locks "/build/${FLAGS_board}"
 PORTAGE_BINHOST=$(portageq-${FLAGS_board} envvar 'PORTAGE_BINHOST')