Action class: options property can be obtained from env property

parent efd645af
...@@ -26,7 +26,6 @@ import importlib ...@@ -26,7 +26,6 @@ import importlib
class Action(object): class Action(object):
def __init__(self, modules_pool): def __init__(self, modules_pool):
self.modules_pool = modules_pool self.modules_pool = modules_pool
self.options = modules_pool.env.options
self.env = modules_pool.env self.env = modules_pool.env
if modules_pool.get_top_module().manifest_dict["action"] is "synthesis": if modules_pool.get_top_module().manifest_dict["action"] is "synthesis":
......
...@@ -43,41 +43,41 @@ class CheckCondition(Action): ...@@ -43,41 +43,41 @@ class CheckCondition(Action):
sys.exit(1) sys.exit(1)
def run(self): def run(self):
tool = self.options.tool tool = self.env.options.tool
if tool == "ise": if tool == "ise":
ver = self.env["ise_version"] ver = self.env["ise_version"]
if not ver: if not ver:
sys.exit(1) sys.exit(1)
ref = self.options.reference ref = self.env.options.reference
ver = float(ver) ver = float(ver)
ref = float(ref) ref = float(ref)
elif tool == "quartus": elif tool == "quartus":
ver = self.env["quartus_version"] ver = self.env["quartus_version"]
if not ver: if not ver:
sys.exit(1) sys.exit(1)
ref = self.options.reference ref = self.env.options.reference
elif tool == "modelsim": elif tool == "modelsim":
ver = self.env["modelsim_version"] ver = self.env["modelsim_version"]
if not ver: if not ver:
sys.exit(1) sys.exit(1)
ref = self.options.reference ref = self.env.options.reference
elif tool == "iverilog": elif tool == "iverilog":
ver = self.env["iverilog_version"] ver = self.env["iverilog_version"]
if not ver: if not ver:
sys.exit(1) sys.exit(1)
ref = self.options.reference ref = self.env.options.reference
ver = int(ver.replace('.', '')) ver = int(ver.replace('.', ''))
ref = int(ref.replace('.', '')) ref = int(ref.replace('.', ''))
elif tool == "isim": elif tool == "isim":
ver = self.env["ise_version"] ver = self.env["ise_version"]
if not ver: if not ver:
sys.exit(1) sys.exit(1)
ref = self.options.reference ref = self.env.options.reference
ver = re.sub("[a-zA-Z]", '', ver) ver = re.sub("[a-zA-Z]", '', ver)
ref = re.sub("[a-zA-Z]", '', ref) ref = re.sub("[a-zA-Z]", '', ref)
else: else:
logging.error("Unknown tool: %s" % tool) logging.error("Unknown tool: %s" % tool)
sys.exit("\nExiting") sys.exit("\nExiting")
comparison = self._compare(ver, ref, self.options.condition) comparison = self._compare(ver, ref, self.env.options.condition)
sys.exit(int(not comparison)) sys.exit(int(not comparison))
...@@ -26,7 +26,7 @@ from .action import Action ...@@ -26,7 +26,7 @@ from .action import Action
class CheckManifest(Action): class CheckManifest(Action):
def _check_options(self): def _check_options(self):
if not self.options.top: if not self.env.options.top:
logging.info("--top is not specified. Current manifest will be treated as the top manifest") logging.info("--top is not specified. Current manifest will be treated as the top manifest")
def run(self): def run(self):
......
...@@ -31,8 +31,8 @@ class ListFiles(Action): ...@@ -31,8 +31,8 @@ class ListFiles(Action):
file_set = self.modules_pool.build_file_set() file_set = self.modules_pool.build_file_set()
file_list = dep_solver.make_dependency_sorted_list(file_set) file_list = dep_solver.make_dependency_sorted_list(file_set)
files_str = [f.path for f in file_list] files_str = [f.path for f in file_list]
if self.options.delimiter == None: if self.env.options.delimiter == None:
delimiter = "\n" delimiter = "\n"
else: else:
delimiter = self.options.delimiter delimiter = self.env.options.delimiter
print(delimiter.join(files_str)) print(delimiter.join(files_str))
...@@ -42,27 +42,28 @@ def _convert_to_source_name(source_code): ...@@ -42,27 +42,28 @@ def _convert_to_source_name(source_code):
class ListModules(Action): class ListModules(Action):
def run(self): def run(self):
terse = self.env.options.terse
for m in self.modules_pool: for m in self.modules_pool:
if not m.isfetched: if not m.isfetched:
logging.warning("Module not fetched: %s" % m.url) logging.warning("Module not fetched: %s" % m.url)
if not self.options.terse: print("# MODULE UNFETCHED! -> %s" % m.url) if not terse: print("# MODULE UNFETCHED! -> %s" % m.url)
else: else:
if not self.options.terse: print("# MODULE START -> %s" % m.url) if not terse: print("# MODULE START -> %s" % m.url)
if m.source in [fetch.SVN, fetch.GIT]: if m.source in [fetch.SVN, fetch.GIT]:
if not self.options.terse: print("# * URL: "+m.url) if not terse: print("# * URL: "+m.url)
elif m.source == fetch.GITSUBMODULE: elif m.source == fetch.GITSUBMODULE:
if not self.options.terse: print("# * This is a submodule of: %s" % m.parent.url) if not terse: print("# * This is a submodule of: %s" % m.parent.url)
if m.source in [fetch.SVN, fetch.GIT, fetch.LOCAL] and m.parent: if m.source in [fetch.SVN, fetch.GIT, fetch.LOCAL] and m.parent:
if not self.options.terse: print("# * The parent for this module is: %s" % m.parent.url) if not terse: print("# * The parent for this module is: %s" % m.parent.url)
else: else:
if not self.options.terse: print("# * This is the root module") if not terse: print("# * This is the root module")
print("%s\t%s" % (path.relpath(m.path), _convert_to_source_name(m.source))) print("%s\t%s" % (path.relpath(m.path), _convert_to_source_name(m.source)))
if self.options.withfiles: if self.env.options.withfiles:
if not len(m.files): if not len(m.files):
if not self.options.terse: print("# * This module has no files") if not terse: print("# * This module has no files")
else: else:
for f in m.files: for f in m.files:
print("%s\t%s" % (path.relpath(f.path), "file")) print("%s\t%s" % (path.relpath(f.path), "file"))
if not self.options.terse: print("# MODULE END -> %s" % m.url) if not terse: print("# MODULE END -> %s" % m.url)
if not self.options.terse: print("") if not terse: print("")
...@@ -37,7 +37,7 @@ class MergeCores(Action): ...@@ -37,7 +37,7 @@ class MergeCores(Action):
self._check_manifest_variable_is_equal_to("action", "synthesis") self._check_manifest_variable_is_equal_to("action", "synthesis")
def _check_options(self): def _check_options(self):
if not self.options.dest: if not self.env.options.dest:
logging.error("--dest must be given for merge-cores") logging.error("--dest must be given for merge-cores")
sys.exit("Exiting") sys.exit("Exiting")
...@@ -47,7 +47,7 @@ class MergeCores(Action): ...@@ -47,7 +47,7 @@ class MergeCores(Action):
logging.info("Merging all cores into one source file per language.") logging.info("Merging all cores into one source file per language.")
flist = pool.build_file_set() flist = pool.build_file_set()
base = self.options.dest base = self.env.options.dest
f_out = open(base+".vhd", "w") f_out = open(base+".vhd", "w")
f_out.write("\n\n\n\n") f_out.write("\n\n\n\n")
......
...@@ -66,7 +66,7 @@ class GenerateSimulationMakefile(Action): ...@@ -66,7 +66,7 @@ class GenerateSimulationMakefile(Action):
self.env.check_general() self.env.check_general()
if self.env[path_key] is None and self.options.force is not True: if self.env[path_key] is None and self.env.options.force is not True:
logging.error("Can't generate a " + name + " makefile. " + logging.error("Can't generate a " + name + " makefile. " +
bin_name + " not found.") bin_name + " not found.")
sys.exit("Exiting") sys.exit("Exiting")
......
...@@ -143,7 +143,7 @@ end sdb_meta_pkg;""") ...@@ -143,7 +143,7 @@ end sdb_meta_pkg;""")
env.check_general() env.check_general()
env.check_tool(tool_object) env.check_tool(tool_object)
if not self.options.force: if not self.env.options.force:
if self.env[path_key] is None: if self.env[path_key] is None:
logging.error("Can't generate the " + name + " project. " + name + " not found.") logging.error("Can't generate the " + name + " project. " + name + " not found.")
quit() quit()
...@@ -170,7 +170,7 @@ end sdb_meta_pkg;""") ...@@ -170,7 +170,7 @@ end sdb_meta_pkg;""")
fileset.add(privative_files) fileset.add(privative_files)
sff = SourceFileFactory() sff = SourceFileFactory()
if self.options.generate_project_vhd: if self.env.options.generate_project_vhd:
self._write_project_vhd(id_value, env[version_key]) self._write_project_vhd(id_value, env[version_key])
fileset.add([sff.new(path=path.rel2abs("project.vhd"), fileset.add([sff.new(path=path.rel2abs("project.vhd"),
module=self.modules_pool.get_module_by_path("."))])\ module=self.modules_pool.get_module_by_path("."))])\
......
...@@ -36,7 +36,7 @@ class Tree(Action): ...@@ -36,7 +36,7 @@ class Tree(Action):
hierarchy = nx.DiGraph() hierarchy = nx.DiGraph()
color_index = 0 color_index = 0
if self.options.solved: if self.env.options.solved:
logging.warning("This is the solved tree") logging.warning("This is the solved tree")
else: else:
for m in self.modules_pool: for m in self.modules_pool:
...@@ -49,7 +49,7 @@ class Tree(Action): ...@@ -49,7 +49,7 @@ class Tree(Action):
else: else:
hierarchy.add_node(path.relpath(m.path)) hierarchy.add_node(path.relpath(m.path))
top_id = path.relpath(m.path) top_id = path.relpath(m.path)
if self.options.withfiles: if self.env.options.withfiles:
if len(m.files): if len(m.files):
for f in m.files: for f in m.files:
hierarchy.add_edge(path.relpath(m.path), path.relpath(f.path)) hierarchy.add_edge(path.relpath(m.path), path.relpath(f.path))
...@@ -61,13 +61,13 @@ class Tree(Action): ...@@ -61,13 +61,13 @@ class Tree(Action):
# Program should be one of: # Program should be one of:
# twopi, gvcolor, wc, ccomps, tred, sccmap, fdp, # twopi, gvcolor, wc, ccomps, tred, sccmap, fdp,
# circo, neato, acyclic, nop, gvpr, dot, sfdp. # circo, neato, acyclic, nop, gvpr, dot, sfdp.
if self.options.graphviz: if self.env.options.graphviz:
try: try:
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
except Exception as e: except Exception as e:
logging.error(e) logging.error(e)
quit() quit()
pos=nx.graphviz_layout(hierarchy, prog=self.options.graphviz, root=top_id) pos=nx.graphviz_layout(hierarchy, prog=self.env.options.graphviz, root=top_id)
nx.draw(hierarchy, pos, nx.draw(hierarchy, pos,
with_labels=True, with_labels=True,
alpha=0.5, alpha=0.5,
...@@ -76,7 +76,7 @@ class Tree(Action): ...@@ -76,7 +76,7 @@ class Tree(Action):
plt.show() plt.show()
if self.options.web: if self.env.options.web:
try: try:
import json import json
from networkx.readwrite import json_graph from networkx.readwrite import json_graph
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment