diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index 1317df8d077312483281f8113303146697244166..409a866849f7d1f78ac13587b98dd4c690ba81b8 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -310,10 +310,6 @@ def platform(self, value):
             refer to valid platforms.
         """
         value = str(value) if value is not None else None
-
-        if value is not None:
-            spack.architecture.verify_platform(value)
-
         self._platform = value
 
     @property
@@ -429,6 +425,8 @@ def to_dict(self):
 
     @staticmethod
     def from_dict(d):
+        if type(d['arch']) != type(d):
+            return ArchSpec('spackcompat', 'v08', d['arch'])
         d = d['arch']
         return ArchSpec(d['platform'], d['platform_os'], d['target'])
 
@@ -874,7 +872,7 @@ def _set_architecture(self, **kwargs):
             new_vals = tuple(kwargs.get(arg, None) for arg in arch_attrs)
             self.architecture = ArchSpec(*new_vals)
         else:
-            new_attrvals = [(a, v) for a, v in kwargs.iteritems() 
+            new_attrvals = [(a, v) for a, v in kwargs.iteritems()
                             if a in arch_attrs]
             for new_attr, new_value in new_attrvals:
                 if getattr(self.architecture, new_attr):