dv-flow-mgr 1.10.15546818223rc0__py3-none-any.whl → 1.10.15799221980rc0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
dv_flow/mgr/__init__.py CHANGED
@@ -32,6 +32,6 @@ from .task_runner import TaskSetRunner
32
32
  from .task_listener_log import TaskListenerLog
33
33
 
34
34
  VERSION="1.10.0"
35
- SUFFIX="15546818223rc0"
35
+ SUFFIX="15799221980rc0"
36
36
  __version__="%s%s" % (VERSION, SUFFIX)
37
37
 
@@ -28,6 +28,7 @@ from ..task_graph_builder import TaskGraphBuilder
28
28
  from ..task_runner import TaskSetRunner
29
29
  from ..task_listener_log import TaskListenerLog
30
30
  from ..task_graph_dot_writer import TaskGraphDotWriter
31
+ from .util import get_rootdir
31
32
 
32
33
 
33
34
  class CmdGraph(object):
@@ -35,16 +36,8 @@ class CmdGraph(object):
35
36
 
36
37
  def __call__(self, args):
37
38
 
38
- if args.root is not None:
39
- rootdir = args.root
40
- elif "DV_FLOW_ROOT" in os.environ.keys():
41
- rootdir = os.environ["DV_FLOW_ROOT"]
42
- else:
43
- rootdir = os.getcwd()
44
-
45
-
46
39
  # First, find the project we're working with
47
- pkg = loadProjPkgDef(rootdir)
40
+ pkg = loadProjPkgDef(get_rootdir(args))
48
41
 
49
42
  if pkg is None:
50
43
  raise Exception("Failed to find a 'flow.dv' file that defines a package in %s or its parent directories" % os.getcwd())
@@ -31,24 +31,19 @@ from ..task_graph_builder import TaskGraphBuilder
31
31
  from ..task_runner import TaskSetRunner
32
32
  from ..task_listener_log import TaskListenerLog
33
33
  from ..task_listener_trace import TaskListenerTrace
34
+ from .util import get_rootdir
34
35
 
35
36
 
36
37
  class CmdRun(object):
37
38
  _log : ClassVar = logging.getLogger("CmdRun")
38
39
 
39
40
  def __call__(self, args):
40
- if args.root is not None:
41
- rootdir = args.root
42
- elif "DV_FLOW_ROOT" in os.environ.keys():
43
- rootdir = os.environ["DV_FLOW_ROOT"]
44
- else:
45
- rootdir = os.getcwd()
46
41
 
47
42
  rgy = ExtRgy.inst()
48
43
 
49
44
  # First, find the project we're working with
50
45
  listener = TaskListenerLog()
51
- pkg = loadProjPkgDef(rootdir, listener=listener.marker)
46
+ pkg = loadProjPkgDef(get_rootdir(args), listener=listener.marker)
52
47
 
53
48
  if listener.has_severity[SeverityE.Error] > 0:
54
49
  print("Error(s) encountered while loading package definition")
@@ -29,6 +29,7 @@ from ..task_graph_builder import TaskGraphBuilder
29
29
  from ..task_runner import TaskSetRunner
30
30
  from ..task_listener_log import TaskListenerLog
31
31
  from ..task_graph_dot_writer import TaskGraphDotWriter
32
+ from .util import get_rootdir
32
33
 
33
34
 
34
35
  class CmdShow(object):
@@ -37,7 +38,7 @@ class CmdShow(object):
37
38
  def __call__(self, args):
38
39
 
39
40
  # First, find the project we're working with
40
- pkg = loadProjPkgDef(os.getcwd())
41
+ pkg = loadProjPkgDef(get_rootdir(args))
41
42
 
42
43
  if pkg is None:
43
44
  raise Exception("Failed to find a 'flow.dv' file that defines a package in %s or its parent directories" % os.getcwd())
@@ -0,0 +1,11 @@
1
+ import os
2
+
3
+ def get_rootdir(args):
4
+ rootdir = None
5
+ if hasattr(args, "root") and args.root is not None:
6
+ rootdir = args.root
7
+ elif "DV_FLOW_ROOT" in os.environ.keys():
8
+ rootdir = os.environ["DV_FLOW_ROOT"]
9
+ else:
10
+ rootdir = os.getcwd()
11
+ return rootdir
@@ -11,6 +11,7 @@ from .fragment_def import FragmentDef
11
11
  from .package_def import PackageDef
12
12
  from .package import Package
13
13
  from .param_def import ComplexType
14
+ from .param_ref_eval import ParamRefEval
14
15
  from .ext_rgy import ExtRgy
15
16
  from .srcinfo import SrcInfo
16
17
  from .task import Task, Strategy, StrategyGenerate
@@ -231,6 +232,7 @@ class PackageLoader(object):
231
232
  _pkg_s : List[PackageScope] = dc.field(default_factory=list)
232
233
  _pkg_m : Dict[str, Package] = dc.field(default_factory=dict)
233
234
  _pkg_path_m : Dict[str, Package] = dc.field(default_factory=dict)
235
+ _eval : ParamRefEval = dc.field(default_factory=ParamRefEval)
234
236
  _loader_scope : LoaderScope = None
235
237
 
236
238
  def __post_init__(self):
@@ -240,6 +242,8 @@ class PackageLoader(object):
240
242
  if self.env is None:
241
243
  self.env = os.environ.copy()
242
244
 
245
+ self._eval.set("env", self.env)
246
+
243
247
  self._loader_scope = LoaderScope(name=None, loader=self)
244
248
 
245
249
  def load(self, root) -> Package:
@@ -438,6 +442,10 @@ class PackageLoader(object):
438
442
 
439
443
  self._log.info("Loading imported package %s" % imp_path)
440
444
 
445
+ if "${{" in imp_path:
446
+ imp_path = self._eval.eval(imp_path)
447
+ self._log.info("Import path with expansion: %s" % imp_path)
448
+
441
449
  if not os.path.isabs(imp_path):
442
450
  for root in (basedir, os.path.dirname(self._file_s[0])):
443
451
  self._log.debug("Search basedir: %s ; imp_path: %s" % (root, imp_path))
@@ -448,6 +456,10 @@ class PackageLoader(object):
448
456
  self._log.debug("Found root file: %s" % resolved_path)
449
457
  imp_path = resolved_path
450
458
  break
459
+ else:
460
+ # absolute path.
461
+ if os.path.isdir(imp_path):
462
+ imp_path = self._findFlowDvInDir(imp_path)
451
463
 
452
464
  if not os.path.isfile(imp_path):
453
465
  self.error("Import file %s not found" % imp_path, pkg.srcinfo)
@@ -466,19 +478,30 @@ class PackageLoader(object):
466
478
  pkg.pkg_m[sub_pkg.name] = sub_pkg
467
479
  self._log.debug("<-- _loadPackageImport %s" % str(imp))
468
480
 
469
- def _findFlowDvInDir(self, base, leaf):
481
+ def _findFlowDvInDir(self, base, leaf=None):
470
482
  """Search down the tree looking for a flow.dv file"""
471
483
  self._log.debug("--> _findFlowDvInDir (%s, %s)" % (base, leaf))
472
484
  imp_path = None
473
- if os.path.isfile(os.path.join(base, leaf)):
474
- imp_path = os.path.join(base, leaf)
475
- self._log.debug("Found: %s" % imp_path)
476
- elif os.path.isdir(os.path.join(base, leaf)):
477
- if os.path.isfile(os.path.join(base, leaf, "flow.dv")):
478
- imp_path = os.path.join(base, leaf, "flow.dv")
479
- self._log.debug("Found: %s" % imp_path)
480
- else:
481
- imp_path = self._findFlowDvSubdir(os.path.join(base, leaf))
485
+ for name in ("flow.dv", "flow.yaml", "flow.yml"):
486
+ if leaf is None:
487
+ if os.path.isfile(base):
488
+ imp_path = base
489
+ elif os.path.isfile(os.path.join(base, name)):
490
+ imp_path = os.path.join(base, name)
491
+ elif os.path.isdir(base):
492
+ imp_path = self._findFlowDvSubdir(base)
493
+ elif os.path.isfile(os.path.join(base, leaf)):
494
+ imp_path = os.path.join(base, leaf)
495
+ self._log.debug("Found: %s" % imp_path)
496
+ elif os.path.isdir(os.path.join(base, leaf)):
497
+ if os.path.isfile(os.path.join(base, leaf, name)):
498
+ imp_path = os.path.join(base, leaf, name)
499
+ self._log.debug("Found: %s" % imp_path)
500
+ else:
501
+ imp_path = self._findFlowDvSubdir(os.path.join(base, leaf))
502
+ if imp_path is not None:
503
+ self._log.debug("Found: %s" % imp_path)
504
+ break
482
505
  self._log.debug("<-- _findFlowDvInDir %s" % imp_path)
483
506
  return imp_path
484
507
 
@@ -487,11 +510,14 @@ class PackageLoader(object):
487
510
  # Search deeper
488
511
  ret = None
489
512
  for subdir in os.listdir(dir):
490
- if os.path.isfile(os.path.join(dir, subdir, "flow.dv")):
491
- ret = os.path.join(dir, subdir, "flow.dv")
492
- self._log.debug("Found: %s" % ret)
493
- elif os.path.isdir(os.path.join(dir, subdir)):
494
- ret = self._findFlowDvSubdir(os.path.join(dir, subdir))
513
+ for name in ("flow.dv", "flow.yaml", "flow.yml"):
514
+ if os.path.isfile(os.path.join(dir, subdir, name)):
515
+ ret = os.path.join(dir, subdir, name)
516
+ self._log.debug("Found: %s" % ret)
517
+ elif os.path.isdir(os.path.join(dir, subdir)):
518
+ ret = self._findFlowDvSubdir(os.path.join(dir, subdir))
519
+ if ret is not None:
520
+ break
495
521
  if ret is not None:
496
522
  break
497
523
  return ret
dv_flow/mgr/util/util.py CHANGED
@@ -31,14 +31,17 @@ def loadProjPkgDef(path, listener=None):
31
31
  ret = None
32
32
  found = False
33
33
  while dir != "/" and dir != "" and os.path.isdir(dir):
34
- if os.path.exists(os.path.join(dir, "flow.dv")):
35
- with open(os.path.join(dir, "flow.dv")) as f:
36
- data = yaml.load(f, Loader=yaml.FullLoader)
37
- if "package" in data.keys():
38
- found = True
39
- listeners = [listener] if listener is not None else []
40
- ret = PackageLoader(marker_listeners=listeners).load(os.path.join(dir, "flow.dv"))
41
- break
34
+ for name in ("flow.dv", "flow.yaml", "flow.yml"):
35
+ if os.path.exists(os.path.join(dir, name)):
36
+ with open(os.path.join(dir, name)) as f:
37
+ data = yaml.load(f, Loader=yaml.FullLoader)
38
+ if "package" in data.keys():
39
+ found = True
40
+ listeners = [listener] if listener is not None else []
41
+ ret = PackageLoader(marker_listeners=listeners).load(os.path.join(dir, name))
42
+ break
43
+ if found:
44
+ break
42
45
  dir = os.path.dirname(dir)
43
46
 
44
47
  if not found:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-flow-mgr
3
- Version: 1.10.15546818223rc0
3
+ Version: 1.10.15799221980rc0
4
4
  Summary: DV Flow Manager is a build system for silicon design
5
5
  Author-email: Matthew Ballance <matt.ballance@gmail.com>
6
6
  License: Apache License
@@ -1,4 +1,4 @@
1
- dv_flow/mgr/__init__.py,sha256=FLH25pZ7BCcqKMfK3iZ0xyJQZ28wy31JyJEJWbA_XvE,1316
1
+ dv_flow/mgr/__init__.py,sha256=ofZc89mZ2Z8he5vLK3xJEdN9Ur4PRgp_JD7uJPvTV4o,1316
2
2
  dv_flow/mgr/__main__.py,sha256=yrNrvz-jYEovBGpY1E9aS1iZ9S_9MQv0lT-XUQSp0vc,4141
3
3
  dv_flow/mgr/cond_def.py,sha256=2ZkzPusqVkN1fFMTvkDl9O_OJLPdD_cK3xzX9J75RMw,343
4
4
  dv_flow/mgr/config.py,sha256=b2MVlVVNB0psk8x4bQRAYshkpNJrtyMtV1Ymhmx9AfM,137
@@ -21,7 +21,7 @@ dv_flow/mgr/out,sha256=d8GGBi3J43fhdLBlnsUbzBfRe0TD0QTP3nOTz54l2bI,200
21
21
  dv_flow/mgr/package.py,sha256=oKzYQypF-to4OXr8BKwPz7Z8cf7AC6eF6CiYj1jCyTI,4585
22
22
  dv_flow/mgr/package_def.py,sha256=h3_FIKQB0vqfcu1jRAZuB8W8Kozr62oaKNchxeNjpWk,5898
23
23
  dv_flow/mgr/package_import_spec.py,sha256=aZMpnS9a5NFY76_pYXEuO3-Mkc_xFzy73fdrUe_54Dc,1760
24
- dv_flow/mgr/package_loader.py,sha256=okXcF5EqgvKMHSCsEpMtpejhBmnE-QaUDoV4C1yNmdA,35750
24
+ dv_flow/mgr/package_loader.py,sha256=z02_buAgOIRtpNxuYgrdaeDxV6PLYcFGsOcElfH9cqM,36860
25
25
  dv_flow/mgr/package_node.py,sha256=CccD2ECiIXy9JBkRR3c7qDxeBiLiPbRT9CqR-Al_niI,214
26
26
  dv_flow/mgr/param.py,sha256=kkxMRGf6mPjSZJsjgLKH2vJL62Sn0ZESvjBLkEYOp20,1386
27
27
  dv_flow/mgr/param_def.py,sha256=GnaolV5QOrjBpqNj9yYo9nnrwEBpp4J_4ZYe14bsfO4,1939
@@ -58,10 +58,11 @@ dv_flow/mgr/task_runner.py,sha256=l1bkVoGerPl1mw4O-JMLGHgDZdWIHukfj5fElbiNizI,10
58
58
  dv_flow/mgr/type.py,sha256=hoJTatlPC0yOazKSWduK-5CfY38RPkc6qXFzOCcVSdM,723
59
59
  dv_flow/mgr/type_def.py,sha256=4sge3PibO1jDnS0cXdX0PiurcKbDA3kT6rb4DGIKwEM,1176
60
60
  dv_flow/mgr/yaml_srcinfo_loader.py,sha256=29BNRiB8Hj1FepkrLtdjHSv5U_85Q432gBeeK80nKEA,1606
61
- dv_flow/mgr/cmds/cmd_graph.py,sha256=s6EU27myTgXm1MJ2xFb04ndOPEejTXM2Hi7ipT4o110,3181
62
- dv_flow/mgr/cmds/cmd_run.py,sha256=oFKQ4W1E3SvetY_v4LYAogowDPFZ7S3U7uIqudYe3po,4154
63
- dv_flow/mgr/cmds/cmd_show.py,sha256=JOIFaVXt8YCf9bKXfq6qzV5wQdxdLHqE-yCj0ecGREs,3755
61
+ dv_flow/mgr/cmds/cmd_graph.py,sha256=VQLm-zoa5xbWNfJNoCnDihKniWW8W_tmCyWZISDzwDo,3006
62
+ dv_flow/mgr/cmds/cmd_run.py,sha256=0wqJpYwmqo9Ou5Tny12A67WqOdUWFgLVKeFy-0R07dA,3981
63
+ dv_flow/mgr/cmds/cmd_show.py,sha256=eNWP-cd3PTF1gfrdG58hzb6Mf5sNOGu1MZaslJ_z4fc,3791
64
64
  dv_flow/mgr/cmds/cmd_util.py,sha256=jdT48T_pZozCZUzkNy7tIhYL_kMGjWbV6g92oMYhRww,985
65
+ dv_flow/mgr/cmds/util.py,sha256=S6_wIxDBxzWVxwjmPiY6Wk_AO7sD0OLDw-ENqge6TWc,286
65
66
  dv_flow/mgr/share/flow.json,sha256=lNmZex9NXkYbyb2aZseQfUOkV9CMyfH0iLODEI7EPBw,5096
66
67
  dv_flow/mgr/std/create_file.py,sha256=SEpKTQdiY32002C7b4kYfAiK9v_xajixOJU5WftW75I,2957
67
68
  dv_flow/mgr/std/data_item.py,sha256=olKtspEVFOvr92reUl4QaQV27UVyjSGIfIWpsy0Myvo,434
@@ -73,12 +74,12 @@ dv_flow/mgr/std/message.py,sha256=0JHLErg8whqMLAasG1fumZ2O7R7WNWeNQ9ibJaLDpVY,10
73
74
  dv_flow/mgr/std/task_null.py,sha256=dw6LXBXVwth6gLPeduDvlz5znAhcVpDH8r1DticD-0w,1041
74
75
  dv_flow/mgr/util/__init__.py,sha256=6uuA6z5cKS2hcjJw6YyEM2M79g6OpXb6tZF_Gku-AGU,22
75
76
  dv_flow/mgr/util/__main__.py,sha256=F0LXpCDpYTPalSo0dc1h_qZkip5v1AZYYh-vcYbh5s0,983
76
- dv_flow/mgr/util/util.py,sha256=Ob2RTJOhanWajatiWJYm2ixuzspVx9hPFjGaaw0oPRI,1924
77
+ dv_flow/mgr/util/util.py,sha256=5wVWpkHn4U-Hcv-skaLaGC0bgoK63NaF-NH-DGpAaRM,2035
77
78
  dv_flow/mgr/util/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
79
  dv_flow/mgr/util/cmds/cmd_schema.py,sha256=IJzZdxCSEgIQ79LpYiM7UqJ9RJ-7yraqmBN2XVgAgXA,1752
79
- dv_flow_mgr-1.10.15546818223rc0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
80
- dv_flow_mgr-1.10.15546818223rc0.dist-info/METADATA,sha256=Hqaghk9RDnIFdKzSbHxKmuxsqXeZUHWO2bW-6Gh2oDg,13336
81
- dv_flow_mgr-1.10.15546818223rc0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
82
- dv_flow_mgr-1.10.15546818223rc0.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
83
- dv_flow_mgr-1.10.15546818223rc0.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
84
- dv_flow_mgr-1.10.15546818223rc0.dist-info/RECORD,,
80
+ dv_flow_mgr-1.10.15799221980rc0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
81
+ dv_flow_mgr-1.10.15799221980rc0.dist-info/METADATA,sha256=P5WbF55tMpkrg6XbrLJAAalWv-EzlaTRh5g0DK5RxmY,13336
82
+ dv_flow_mgr-1.10.15799221980rc0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
+ dv_flow_mgr-1.10.15799221980rc0.dist-info/entry_points.txt,sha256=1roy8wAFM48LabOvr6jiOw0MUs-qE8X3Vf8YykPazxk,50
84
+ dv_flow_mgr-1.10.15799221980rc0.dist-info/top_level.txt,sha256=amfVTkggzYPtWwLqNmRukfz1Buu0pGS2SrYBBLhXm04,8
85
+ dv_flow_mgr-1.10.15799221980rc0.dist-info/RECORD,,