From: Elias Naur Date: Wed, 2 May 2018 21:26:58 +0000 (+0200) Subject: misc/ios: retry app install X-Git-Tag: go1.11beta1~561 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=78cb5d7a68f994978b1520baf724c8a7008a97c0;p=gostls13.git misc/ios: retry app install Sometimes ideviceinstaller fails to install the app. Retry a few times before giving up. For the iOS builder. Change-Id: Ib066ffd4f97ae8d22c0fa9a78ea4d04f67c17410 Reviewed-on: https://go-review.googlesource.com/111055 Run-TryBot: Elias Naur TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- diff --git a/misc/ios/go_darwin_arm_exec.go b/misc/ios/go_darwin_arm_exec.go index 6c5a913bc6..985c82bf81 100644 --- a/misc/ios/go_darwin_arm_exec.go +++ b/misc/ios/go_darwin_arm_exec.go @@ -377,15 +377,25 @@ func findDeviceAppPath(bundleID string) (string, error) { } func install(appdir string) error { - cmd := idevCmd(exec.Command( - "ideviceinstaller", - "-i", appdir, - )) - if out, err := cmd.CombinedOutput(); err != nil { - os.Stderr.Write(out) - return fmt.Errorf("ideviceinstaller -i %q: %v", appdir, err) + attempt := 0 + for { + cmd := idevCmd(exec.Command( + "ideviceinstaller", + "-i", appdir, + )) + if out, err := cmd.CombinedOutput(); err != nil { + // Sometimes, installing the app fails for some reason. + // Give the device a few seconds and try again. + if attempt < 5 { + time.Sleep(5 * time.Second) + attempt++ + continue + } + os.Stderr.Write(out) + return fmt.Errorf("ideviceinstaller -i %q: %v (%d attempts)", appdir, err, attempt) + } + return nil } - return nil } func idevCmd(cmd *exec.Cmd) *exec.Cmd {