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 {