cros_sdk: Allow using a Frozen SDK for bootstrapping.

This makes the SDK builder use a fixed/frozen known
good version of a SDK when bootstrapping using a previously
built Chromium OS SDK.

BUG=chromium:861924
TEST=chromite unit tests pass.

Change-Id: Id0f2bbb8440a6edbc78b589f3330a4f86e9686d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1611012
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Commit-Queue: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Chris McDonald <cjmcdonald@chromium.org>
diff --git a/scripts/cros_sdk.py b/scripts/cros_sdk.py
index d80e9e2..3234547 100644
--- a/scripts/cros_sdk.py
+++ b/scripts/cros_sdk.py
@@ -862,6 +862,7 @@
       ignore_missing=True)
   sdk_latest_version = conf.get('SDK_LATEST_VERSION', '<unknown>')
   bootstrap_latest_version = conf.get('BOOTSTRAP_LATEST_VERSION', '<unknown>')
+  bootstrap_frozen_version = conf.get('BOOTSTRAP_FROZEN_VERSION', '<unknown>')
   parser, commands = _CreateParser(sdk_latest_version, bootstrap_latest_version)
   options = parser.parse_args(argv)
   chroot_command = options.commands
@@ -880,9 +881,12 @@
     _ReportMissing(osutils.FindMissingBinaries(PROXY_NEEDED_TOOLS))
   missing_image_tools = osutils.FindMissingBinaries(IMAGE_NEEDED_TOOLS)
 
-  # Use latest SDK for bootstrapping if requested.
+  # Use latest SDK for bootstrapping if requested. Use a frozen version of SDK
+  # for bootstrapping if BOOTSTRAP_FROZEN_VERSION is set.
   if options.self_bootstrap:
-    bootstrap_latest_version = sdk_latest_version
+    bootstrap_latest_version = (
+        sdk_latest_version if bootstrap_frozen_version == '<unknown>' else
+        bootstrap_frozen_version)
 
   if (sdk_latest_version == '<unknown>' or
       bootstrap_latest_version == '<unknown>'):