From 562482d9cc47b2b689a3540538942d35e7c60f53 Mon Sep 17 00:00:00 2001
From: Todd Gamblin <tgamblin@llnl.gov>
Date: Mon, 5 Nov 2018 23:25:40 -0800
Subject: [PATCH] env: only add `concrete` attribute to abstract specs

- to aovid changing spec hashes drastically, only add this attribute to
  differentiated abstract specs.

- othherwise assume that read-in specs are concrete
---
 lib/spack/spack/spec.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index 084b8176ec..f8991413cd 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -1462,7 +1462,8 @@ def to_node_dict(self, hash_function=None, all_deps=False):
                 'module': self.external_module
             }
 
-        d['concrete'] = self._concrete
+        if not self._concrete:
+            d['concrete'] = False
 
         if 'patches' in self.variants:
             variant = self.variants['patches']
@@ -1560,8 +1561,8 @@ def from_node_dict(node):
             spec.external_path = None
             spec.external_module = None
 
-        if 'concrete' in node:
-            spec._concrete = node['concrete']
+        # specs read in are concrete unless marked abstract
+        spec._concrete = node.get('concrete', True)
 
         if 'patches' in node:
             patches = node['patches']
-- 
GitLab