From 9e986201ba342836260c6db6e532db04d31153d9 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 26 Nov 2013 09:25:10 -0500
Subject: MAINT-3489: Make Mac updater script detect prematurely deleted .dmg.
 Also, delete it when done.

---
 .../updater/scripts/darwin/update_install.py                 | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/indra/viewer_components/updater/scripts/darwin/update_install.py b/indra/viewer_components/updater/scripts/darwin/update_install.py
index 10d507c9ef..08f4f0ebb9 100755
--- a/indra/viewer_components/updater/scripts/darwin/update_install.py
+++ b/indra/viewer_components/updater/scripts/darwin/update_install.py
@@ -199,6 +199,11 @@ def main(dmgfile, markerfile, markertext):
         # prepare for other cleanup
         with Janitor(LOGF) as janitor:
 
+            # Under some circumstances, this script seems to be invoked with a
+            # nonexistent pathname. Check for that.
+            if not os.path.isfile(dmgfile):
+                fail(dmgfile + " has been deleted")
+
             # Try to derive the name of the running viewer app bundle from our
             # own pathname. (Hopefully the old viewer won't copy this script
             # to a temp dir before running!)
@@ -376,6 +381,13 @@ def main(dmgfile, markerfile, markertext):
             log(' '.join(command))
             subprocess.check_call(command, stdout=LOGF, stderr=subprocess.STDOUT)
 
+        # If all the above succeeded, delete the .dmg file. We don't do this
+        # as a janitor.later() operation because we only want to do it if we
+        # get this far successfully. Note that this is out of the scope of the
+        # Janitor: we must detach the .dmg before removing it!
+        log("rm " + dmgfile)
+        os.remove(dmgfile)
+
     except Exception, err:
         # Because we carefully set sys.excepthook -- and even modify it to log
         # the problem once we have our log file open -- you might think we
-- 
cgit v1.2.3