From b171ac5050d0118e58a465253d5d6cd23147ccfb Mon Sep 17 00:00:00 2001
From: Todd Gamblin <tgamblin@llnl.gov>
Date: Sat, 10 Aug 2019 18:03:32 -0700
Subject: concretizer: split long lines in ASP programs

---
 lib/spack/spack/solver/asp.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py
index a13f022a91..1380675dd9 100644
--- a/lib/spack/spack/solver/asp.py
+++ b/lib/spack/spack/solver/asp.py
@@ -25,6 +25,10 @@ from spack.util.executable import which
 from spack.version import ver
 
 
+#: max line length for ASP programs in characters
+_max_line = 80
+
+
 def _id(thing):
     """Quote string if needed for it to be a valid identifier."""
     return '"%s"' % str(thing)
@@ -137,7 +141,10 @@ class AspGenerator(object):
 
     def rule(self, head, body):
         """ASP rule (an implication)."""
-        self.out.write("%s :- %s.\n" % (head, body))
+        rule_line = "%s :- %s.\n" % (head, body)
+        if len(rule_line) > _max_line:
+            rule_line = re.sub(r' \| ', "\n| ", rule_line)
+        self.out.write(rule_line)
 
     def constraint(self, body):
         """ASP integrity constraint (rule with no head; can't be true)."""
-- 
cgit v1.2.3-70-g09d2