Skip to content
Snippets Groups Projects
Commit 53feb12e authored by Todd Gamblin's avatar Todd Gamblin
Browse files

Cleanup and consolidate error handling

parent b9746de5
No related branches found
No related tags found
No related merge requests found
...@@ -126,14 +126,7 @@ def main(): ...@@ -126,14 +126,7 @@ def main():
try: try:
return_val = command(parser, args) return_val = command(parser, args)
except SpackError, e: except SpackError, e:
if spack.debug: e.die()
# In debug mode, raise with a full stack trace.
raise
elif e.long_message:
tty.die(e.message, e.long_message)
else:
tty.die(e.message)
except KeyboardInterrupt: except KeyboardInterrupt:
sys.stderr.write('\n') sys.stderr.write('\n')
tty.die("Keyboard interrupt.") tty.die("Keyboard interrupt.")
......
...@@ -280,6 +280,10 @@ def child_fun(): ...@@ -280,6 +280,10 @@ def child_fun():
# Use os._exit here to avoid raising a SystemExit exception, # Use os._exit here to avoid raising a SystemExit exception,
# which interferes with unit tests. # which interferes with unit tests.
os._exit(0) os._exit(0)
except spack.error.SpackError, e:
e.die()
except: except:
# Child doesn't raise or return to main spack code. # Child doesn't raise or return to main spack code.
# Just runs default exception handler and exits. # Just runs default exception handler and exits.
......
...@@ -22,6 +22,10 @@ ...@@ -22,6 +22,10 @@
# along with this program; if not, write to the Free Software Foundation, # along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
############################################################################## ##############################################################################
import os
import sys
import llnl.util.tty as tty
import spack
class SpackError(Exception): class SpackError(Exception):
"""This is the superclass for all Spack errors. """This is the superclass for all Spack errors.
...@@ -38,6 +42,17 @@ def long_message(self): ...@@ -38,6 +42,17 @@ def long_message(self):
return self._long_message return self._long_message
def die(self):
if spack.debug:
sys.excepthook(*sys.exc_info())
os._exit(1)
else:
tty.error(self.message)
if self.long_message:
print self.long_message
os._exit(1)
def __str__(self): def __str__(self):
msg = self.message msg = self.message
if self.long_message: if self.long_message:
......
...@@ -816,17 +816,8 @@ def real_work(): ...@@ -816,17 +816,8 @@ def real_work():
except ProcessError, e: except ProcessError, e:
# Annotate with location of build log. # Annotate with location of build log.
e.build_log = log_path e.build_log = log_path
# One of the processes returned an error code.
# Suppress detailed stack trace here unless in debug mode
if spack.debug:
raise e
else:
tty.error(e)
# Still need to clean up b/c there was an error.
cleanup() cleanup()
os._exit(1) raise e
except: except:
# other exceptions just clean up and raise. # other exceptions just clean up and raise.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment