cos_gpu_installer: Only preload toolchain

BUG=b/242339918
TEST=First did the following sequence:

  COS_GPU_INSTALLER=gcr.io/$PROJECT/cos-gpu-installer cos-extensions \
    install gpu -- --prepare-build-tools
  # Verified that /var/lib/cos-extensions did not include the driver
  # signatures
  COS_GPU_INSTALLER=gcr.io/$PROJECT/cos-gpu-installer cos-extensions \
    install gpu -- --allow-unsigned-driver

Then, on a fresh VM, did:

  COS_GPU_INSTALLER=gcr.io/$PROJECT/cos-gpu-installer cos-extensions \
    install gpu -- --allow-unsigned-driver

Change-Id: Ib957d9896adecffbfb6812e7c7431e92d44bd9ee
Reviewed-on: https://cos-review.googlesource.com/c/cos/tools/+/36327
Cloud-Build: GCB Service account <228075978874@cloudbuild.gserviceaccount.com>
Reviewed-by: He Gao <hegao@google.com>
Reviewed-by: Arnav Kansal <rnv@google.com>
Tested-by: Robert Kolchmeyer <rkolchmeyer@google.com>
diff --git a/src/cmd/cos_gpu_installer/internal/commands/install.go b/src/cmd/cos_gpu_installer/internal/commands/install.go
index d719149..ca193c5 100644
--- a/src/cmd/cos_gpu_installer/internal/commands/install.go
+++ b/src/cmd/cos_gpu_installer/internal/commands/install.go
@@ -240,17 +240,19 @@
 	}
 	defer func() { callback <- 0 }()
 
-	if !c.unsignedDriver {
-		if c.signatureURL != "" {
-			if err := signing.DownloadDriverSignaturesFromURL(c.signatureURL); err != nil {
-				return errors.Wrap(err, "failed to download driver signature")
-			}
-		} else if err := signing.DownloadDriverSignatures(downloader, c.driverVersion); err != nil {
-			if strings.Contains(err.Error(), "404 Not Found") {
-				return fmt.Errorf("The GPU driver is not available for the COS version. Please wait for half a day and retry.")
-			}
-			return errors.Wrap(err, "failed to download driver signature")
-		}
+	if err := cos.SetCompilationEnv(downloader); err != nil {
+		return errors.Wrap(err, "failed to set compilation environment variables")
+	}
+	if err := remountExecutable(toolchainPkgDir); err != nil {
+		return fmt.Errorf("failed to remount %q as executable: %v", filepath.Dir(toolchainPkgDir), err)
+	}
+	if err := cos.InstallCrossToolchain(downloader, toolchainPkgDir); err != nil {
+		return errors.Wrap(err, "failed to install toolchain")
+	}
+
+	// Skip driver installation if we are only populating build tools cache
+	if c.prepareBuildTools {
+		return nil
 	}
 
 	var installerFile string
@@ -267,19 +269,17 @@
 		}
 	}
 
-	if err := cos.SetCompilationEnv(downloader); err != nil {
-		return errors.Wrap(err, "failed to set compilation environment variables")
-	}
-	if err := remountExecutable(toolchainPkgDir); err != nil {
-		return fmt.Errorf("failed to remount %q as executable: %v", filepath.Dir(toolchainPkgDir), err)
-	}
-	if err := cos.InstallCrossToolchain(downloader, toolchainPkgDir); err != nil {
-		return errors.Wrap(err, "failed to install toolchain")
-	}
-
-	// Skip driver installation if we are only populating build tools cache
-	if c.prepareBuildTools {
-		return nil
+	if !c.unsignedDriver {
+		if c.signatureURL != "" {
+			if err := signing.DownloadDriverSignaturesFromURL(c.signatureURL); err != nil {
+				return errors.Wrap(err, "failed to download driver signature")
+			}
+		} else if err := signing.DownloadDriverSignatures(downloader, c.driverVersion); err != nil {
+			if strings.Contains(err.Error(), "404 Not Found") {
+				return fmt.Errorf("The GPU driver is not available for the COS version. Please wait for half a day and retry.")
+			}
+			return errors.Wrap(err, "failed to download driver signature")
+		}
 	}
 
 	if err := installer.RunDriverInstaller(toolchainPkgDir, installerFile, !c.unsignedDriver, c.test, false); err != nil {