aboutsummaryrefslogtreecommitdiff
path: root/scripts/solution.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/solution.py')
-rw-r--r--scripts/solution.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/scripts/solution.py b/scripts/solution.py
index 60e9538..8e02324 100644
--- a/scripts/solution.py
+++ b/scripts/solution.py
@@ -6,7 +6,7 @@ import subprocess
import utils
from conf import conf
from conf import sf
-from exceptions import NoSolution
+import exceptions
def generate():
"""Collect boolean equations from files: rules, solved and required
@@ -14,7 +14,10 @@ def generate():
"""
# Check if rules_file exist. If it was generated.
if not os.path.isfile(sf(conf.rules_file)):
- raise Exception("Rules file missing. Run parse_kconfig and check ecistence of " + rules_file)
+ raise exceptions.MissingFile(conf.rules_file,"Run parse_kconfig.")
+
+ if sys.path.isfile(sf(conf.solution_file)) and conf.gen_all_solution_oninit:
+ raise exceptions.SolutionGenerated()
w_file = tempfile.NamedTemporaryFile(delete=False)
# Join files to one single temporary file
@@ -47,13 +50,14 @@ def generate():
w_file.close()
# Execute picosat
+ picosat_cmd = [conf.picosat, w_file.name]
+ picosat_cmd += ['-o', sf(conf.solution_file)]
+ if (conf.gen_all_solution_oninit):
+ picosat_cmd += ['--all']
if conf.picosat_output:
- subprocess.call([conf.picosat, w_file.name, '-o',
- sf(conf.solution_file)] + conf.picosat_args)
+ subprocess.call(picosat_cmd)
else:
- subprocess.call([conf.picosat, w_file.name, '-o',
- sf(conf.solution_file)] + conf.picosat_args,
- stdout=subprocess.DEVNULL)
+ subprocess.call(picosat_cmd, stdout=subprocess.DEVNULL)
os.remove(w_file.name)