From ae9a9e019a73cb951d4d2a2585ac71a53f351c81 Mon Sep 17 00:00:00 2001
From: Massimiliano Culpo <massimiliano.culpo@googlemail.com>
Date: Wed, 3 May 2017 06:21:37 +0200
Subject: [PATCH] spack: no stacktrace if not in debug mode + fix emacs variant
 (#4098)

* spack: no stacktrace if not in debug mode + fix emacs variant

* emacs: removed dead code
---
 bin/spack                                         |  2 ++
 lib/spack/spack/variant.py                        |  4 ++--
 var/spack/repos/builtin/packages/emacs/package.py | 13 +++++++------
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/bin/spack b/bin/spack
index 922e6a6be4..5ab805fe54 100755
--- a/bin/spack
+++ b/bin/spack
@@ -194,6 +194,8 @@ def _main(args, unknown_args):
             return_val = command(parser, args)
     except SpackError as e:
         e.die()
+    except Exception as e:
+        tty.die(str(e))
     except KeyboardInterrupt:
         sys.stderr.write('\n')
         tty.die("Keyboard interrupt.")
diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py
index 7102676b69..2d02ab1253 100644
--- a/lib/spack/spack/variant.py
+++ b/lib/spack/spack/variant.py
@@ -389,9 +389,9 @@ def _value_setter(self, value):
             self._original_value = value
             self._value = False
         else:
-            msg = 'cannot construct a BoolValuedVariant from '
+            msg = 'cannot construct a BoolValuedVariant for "{0}" from '
             msg += 'a value that does not represent a bool'
-            raise ValueError(msg)
+            raise ValueError(msg.format(self.name))
 
     def __contains__(self, item):
         return item is self.value
diff --git a/var/spack/repos/builtin/packages/emacs/package.py b/var/spack/repos/builtin/packages/emacs/package.py
index 71733eebd2..195cb1281f 100644
--- a/var/spack/repos/builtin/packages/emacs/package.py
+++ b/var/spack/repos/builtin/packages/emacs/package.py
@@ -36,8 +36,12 @@ class Emacs(AutotoolsPackage):
     version('24.5', 'd74b597503a68105e61b5b9f6d065b44')
 
     variant('X', default=False, description="Enable an X toolkit")
-    variant('toolkit', default='gtk',
-            description="Select an X toolkit (gtk, athena)")
+    variant(
+        'toolkit',
+        default='gtk',
+        values=('gtk', 'athena'),
+        description="Select an X toolkit (gtk, athena)"
+    )
 
     depends_on('pkg-config@0.9.0:', type='build')
 
@@ -53,12 +57,9 @@ class Emacs(AutotoolsPackage):
 
     def configure_args(self):
         spec = self.spec
-        args = []
+
         toolkit = spec.variants['toolkit'].value
         if '+X' in spec:
-            if toolkit not in ('gtk', 'athena'):
-                raise InstallError("toolkit must be in (gtk, athena), not %s" %
-                                   toolkit)
             args = [
                 '--with-x',
                 '--with-x-toolkit={0}'.format(toolkit)
-- 
GitLab