openubmc-bingo 0.5.272__py3-none-any.whl → 0.5.277__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.

Potentially problematic release.


This version of openubmc-bingo might be problematic. Click here for more details.

bmcgo/__init__.py CHANGED
@@ -9,4 +9,4 @@
9
9
  # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10
10
  # See the Mulan PSL v2 for more details.
11
11
 
12
- __version__ = '0.5.272'
12
+ __version__ = '0.5.277'
@@ -199,6 +199,10 @@ def merge_model_class(class_name, mds_class, mdb_obj, mdb_path):
199
199
  mds_class["interfaces"][intf_name]["defs"] = intf_json["defs"]
200
200
 
201
201
  merge_model_intf(intf_json[intf_name], mds_class["interfaces"][intf_name], class_name, intf_name)
202
+ mds_class["interfaces"]["bmc.kepler.Object.Properties"].pop("methods", None)
203
+ defs = mds_class["interfaces"]["bmc.kepler.Object.Properties"].get("defs", None)
204
+ if defs is not None:
205
+ defs.pop("Options", None)
202
206
 
203
207
 
204
208
  def get_class_name(path):
@@ -481,5 +481,16 @@ class ModelLuaUtils(Base, Utils):
481
481
  for intf_msg in msg.get('interfaces', {}).values():
482
482
  self.collect_features(intf_msg, features)
483
483
  return sorted(list(features))
484
+
485
+ def remove_description(self, input_dict):
486
+ keys_to_delete = []
487
+ for key, value in input_dict.items():
488
+ if isinstance(value, dict):
489
+ _ = self.remove_description(value)
490
+ if key == 'description':
491
+ keys_to_delete.append(key)
492
+ for key in keys_to_delete:
493
+ del input_dict[key]
494
+ return input_dict
484
495
 
485
496
  Factory().register("model.lua.mako", ModelLuaUtils)
@@ -14,6 +14,8 @@ ${render_utils.render_types(project_name, root)}
14
14
 
15
15
  % for (class_name, msg) in root.items():
16
16
 
17
+ <% msg = render_utils.remove_description(msg) %>
18
+
17
19
  % if version >= 9:
18
20
  % if class_name == 'private':
19
21
  <% continue %>
@@ -35,6 +35,7 @@ from bmcgo import errors
35
35
  from bmcgo.misc import CommandInfo
36
36
  from bmcgo.utils.tools import Tools
37
37
  from bmcgo.utils.buffer import Buffer
38
+ from bmcgo.utils.merge_csr import Merger
38
39
  from bmcgo.bmcgo_config import BmcgoConfig
39
40
  from bmcgo.functional.simple_sign import BmcgoCommand as SimpleSign
40
41
 
@@ -205,6 +206,8 @@ class BmcgoCommand:
205
206
  self.target_dir = None
206
207
  self.eeprom_sign_strategy = None
207
208
  self.hpm_sign_strategy = None
209
+ self.tmp_dir = None
210
+ self.merger = Merger(self.output_path)
208
211
 
209
212
  @staticmethod
210
213
  def get_oem_data(dir_path: str, comp_name: str):
@@ -294,6 +297,9 @@ class BmcgoCommand:
294
297
 
295
298
  def run(self):
296
299
  self.check_args()
300
+ tmp = tempfile.TemporaryDirectory()
301
+ self.tmp_dir = tmp.name
302
+ self.merger.update_tmp_dir(self.tmp_dir)
297
303
  if not os.path.exists(self.output_path):
298
304
  raise Exception(f"输出路径{self.output_path}不存在")
299
305
  sr_make_options_list = []
@@ -338,6 +344,8 @@ class BmcgoCommand:
338
344
  finally:
339
345
  if os.path.exists(self.work_dir):
340
346
  shutil.rmtree(self.work_dir)
347
+ if os.path.exists(self.tmp_dir):
348
+ shutil.rmtree(self.tmp_dir)
341
349
 
342
350
  def check_args(self):
343
351
  has_single_need_arg = self.bin or self.json or self.hpm or self.all
@@ -351,7 +359,7 @@ class BmcgoCommand:
351
359
 
352
360
  def get_sr_file_and_oem(self):
353
361
  sr_make_options_list = []
354
- csr_path = self.csr_path
362
+ csr_path = self.merger.get_single_csr(self.csr_path)
355
363
  oem_path = self.oem_path
356
364
  oem_data = bytearray()
357
365
  if not os.path.exists(csr_path):
@@ -382,7 +390,7 @@ class BmcgoCommand:
382
390
 
383
391
  def get_sr_files(self):
384
392
  dir_path = Path(self.csr_path)
385
- sr_files = [file for file in dir_path.glob("*.sr")]
393
+ sr_files = self.merger.get_multi_files(dir_path)
386
394
  sr_num = len(sr_files)
387
395
  if sr_num == 1:
388
396
  log.info("开始执行CSR出包任务...")
@@ -44,6 +44,16 @@ from bmcgo.component.component_helper import ComponentHelper
44
44
  IBMC_LOCK_FILE = "openubmc.lock"
45
45
  SDK_ROOT = "/opt/hi1711sdk"
46
46
  SDK_ROOT_MODULE_SYMVERS = os.path.join(SDK_ROOT, "Module.symvers")
47
+ PERSIST_TYPES = {
48
+ "TemporaryPer": "TemporaryPer",
49
+ "TemporaryPerRetain": "TemporaryPer",
50
+ "ResetPer": "ResetPer",
51
+ "ResetPerRetain": "ResetPer",
52
+ "PoweroffPer": "PoweroffPer",
53
+ "PoweroffPerRetain": "PoweroffPer",
54
+ "PermanentPer": "PermanentPer"
55
+ }
56
+ PRIMARY_KEYS = "PrimaryKeys"
47
57
  tools = Tools()
48
58
 
49
59
 
@@ -244,6 +254,13 @@ class TaskClass(Task):
244
254
  subsys = os.path.join(subsys, misc.StageEnum.STAGE_RC.value)
245
255
  return subsys
246
256
 
257
+ @staticmethod
258
+ def match_persist_type(usage):
259
+ for item in usage:
260
+ if item in PERSIST_TYPES:
261
+ return PERSIST_TYPES[item]
262
+ return None
263
+
247
264
  def find_conan_package_and_write(self, search, comps, file_handler, stage):
248
265
  if search.find("/") < 0:
249
266
  search += "/"
@@ -421,7 +438,8 @@ class TaskClass(Task):
421
438
  "TemporaryPer": {},
422
439
  "ResetPer": {},
423
440
  "PoweroffPer": {},
424
- "PermanentPer": {}
441
+ "PermanentPer": {},
442
+ "PrimaryKeys": {}
425
443
  }
426
444
  for comp in comps:
427
445
  try:
@@ -435,17 +453,20 @@ class TaskClass(Task):
435
453
  self.run_command(f"cp -df {temp_dst_file} {dst_file}", sudo=True)
436
454
  self.run_command(f"rm -rf {temp_dst_file}", sudo=True)
437
455
 
438
- def proc_sensitive(self, per_type, props, table_name, output):
439
- for prop_name, prop_data in props.items():
440
- for item in prop_data.get("usage", []):
441
- if item in output:
442
- per_type = item
443
- break
444
- is_sensitive = prop_data.get("sensitive", False)
445
- if per_type not in output or not is_sensitive:
456
+ def proc_sensitive(self, table_type, props, table_name, output):
457
+ for prop_key, prop_data in props.items():
458
+ prop_name = prop_key
459
+ if "alias" in prop_data:
460
+ prop_name = prop_data.get("alias")
461
+ if prop_data.get("primaryKey"):
462
+ output[PRIMARY_KEYS][table_name] = output[PRIMARY_KEYS].get(table_name, {})
463
+ output[PRIMARY_KEYS][table_name][prop_name] = prop_data.get("sensitive", False)
464
+ continue
465
+ per_type = self.match_persist_type(prop_data.get("usage", [])) or table_type
466
+ if not per_type:
446
467
  continue
447
468
  output[per_type][table_name] = output[per_type].get(table_name, {})
448
- output[per_type][table_name][prop_name] = True
469
+ output[per_type][table_name][prop_name] = prop_data.get("sensitive", False)
449
470
  return output
450
471
 
451
472
  def proc_comp(self, comp, output):
@@ -455,15 +476,15 @@ class TaskClass(Task):
455
476
  with open(model_file, "r") as fp:
456
477
  content = json.load(fp)
457
478
  for class_data in content.values():
458
- per_type = class_data.get("tableType", "")
479
+ table_type = PERSIST_TYPES.get(class_data.get("tableType", ""))
459
480
  table_name = class_data.get("tableName", "")
460
- if not table_name:
481
+ if not table_name or class_data.get("tableLocation") == "Local":
461
482
  continue
462
483
  class_props = [class_data.get("properties", {})]
463
484
  for intf_data in class_data.get("interfaces", {}).values():
464
485
  class_props.append(intf_data.get("properties", {}))
465
486
  for props in class_props:
466
- output = self.proc_sensitive(per_type, props, table_name, output)
487
+ output = self.proc_sensitive(table_type, props, table_name, output)
467
488
  return output
468
489
 
469
490
  def calc_options(self):
@@ -0,0 +1,6 @@
1
+ version_homogeneous: true
2
+ install_steps:
3
+ - type: apt
4
+ package_name: openubmc-qemu
5
+ doc: https://www.openubmc.cn/marketplace/QEMU
6
+
@@ -0,0 +1,6 @@
1
+ version_homogeneous: true
2
+ install_steps:
3
+ - type: apt
4
+ package_name: bmc-studio
5
+ doc: https://www.openubmc.cn/marketplace/BMC%20Studio
6
+
@@ -26,6 +26,20 @@ class InstallWorkflow:
26
26
  _workflows: Dict[str, List[str]] = {}
27
27
  search_paths: List[Path] = [Path(__file__).resolve().parent / install_consts.PLUGIN_INSTALL_PLAN_PATH]
28
28
 
29
+ @staticmethod
30
+ def tool_exists(tool_name: str, install_type: str):
31
+ try:
32
+ if install_type == "pip":
33
+ ret = tools.run_command(f"pip show {tool_name}", capture_output=True, ignore_error=True)
34
+ return ret.returncode == 0
35
+ if install_type == "apt":
36
+ ret = tools.run_command(f"dpkg -s {tool_name}", capture_output=True, ignore_error=True)
37
+ return "Status: install ok installed" in ret.stdout
38
+ except Exception as e:
39
+ tools.log.info(f"校验工具存在性时报错:{str(e)}")
40
+
41
+ return False
42
+
29
43
  @classmethod
30
44
  def discover_workflows(cls):
31
45
  for path in cls.search_paths:
@@ -35,7 +49,8 @@ class InstallWorkflow:
35
49
 
36
50
  for yml_file in path.glob("*.yml"):
37
51
  with open(yml_file) as conf:
38
- cls._workflows[yml_file.stem] = yaml.safe_load(conf)
52
+ file_content = yaml.safe_load(conf)
53
+ cls._register_workflows(yml_file=yml_file, file_content=file_content)
39
54
 
40
55
  @classmethod
41
56
  def parse(cls, name: str) -> List[str]:
@@ -51,4 +66,15 @@ class InstallWorkflow:
51
66
 
52
67
  @classmethod
53
68
  def get_all_plans(cls):
54
- return cls._workflows.keys()
69
+ return cls._workflows.keys()
70
+
71
+ @classmethod
72
+ def _register_workflows(cls, yml_file, file_content):
73
+ plans = file_content.get(install_consts.PLAN_STEPS, [])
74
+ for plan in plans:
75
+ inst_type = plan.get(install_consts.PLAN_INSTALL_TYPE)
76
+ if not inst_type:
77
+ raise ValueError(f"未配置 {yml_file}/{install_consts.PLAN_STEPS}/{install_consts.PLAN_INSTALL_TYPE}")
78
+ package_name = plan.get(install_consts.PLAN_PACKAGE_NAME)
79
+ if cls.tool_exists(package_name, inst_type): # 未安装的工具不加入_workflows
80
+ cls._workflows[yml_file.stem] = file_content
@@ -0,0 +1,124 @@
1
+ # coding: utf-8
2
+ # Copyright (c) 2025 Huawei Technologies Co., Ltd.
3
+ # openUBMC is licensed under Mulan PSL v2.
4
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
5
+ # You may obtain a copy of Mulan PSL v2 at:
6
+ # http://license.coscl.org.cn/MulanPSL2
7
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
8
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
9
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10
+ # See the Mulan PSL v2 for more details.
11
+
12
+ import json
13
+ import re
14
+ import os
15
+ from pathlib import Path
16
+ from bmcgo.utils.tools import Tools
17
+
18
+ tools = Tools("bmcgo_config")
19
+ log = tools.log
20
+
21
+
22
+ class Merger():
23
+ def __init__(self, output_dir):
24
+ self.output_dir = output_dir
25
+ self.special_suffix = ("_basic_info", "_mgmt_model", "_version")
26
+ self.tmp_dir = None
27
+
28
+ @staticmethod
29
+ def remove_json5_comments(text):
30
+ pattern = r"""
31
+ ("(?:\\.|[^"\\])*"
32
+ |'(?:\\.|[^'\\])*'
33
+ )
34
+ |(/\*[\s\S]*?\*/
35
+ |//[^\n]*
36
+ )
37
+ """
38
+
39
+ def replacer(match):
40
+ if match.group(1):
41
+ return match.group(1)
42
+ else:
43
+ return ''
44
+ return json.loads(re.sub(pattern, replacer, text, flags=re.VERBOSE))
45
+
46
+ def merge_json(self, dict1, dict2, is_top_level=True, path=None):
47
+ if path is None:
48
+ path = []
49
+ if not isinstance(dict1, dict) or not isinstance(dict2, dict):
50
+ if dict1 != dict2:
51
+ raise ValueError(f"字段冲突,路径{'/'.join(path)}的值不一致:{dict1} vs {dict2}")
52
+ return dict1
53
+ for key, value in dict2.items():
54
+ if key in dict1:
55
+ if is_top_level:
56
+ _ = self.merge_json(dict1[key], value, is_top_level=False, path=path + [key])
57
+ else:
58
+ raise ValueError(f"字段冲突:路径 {'/'.join(path + [key])} 在多个文件中重复出现")
59
+ else:
60
+ dict1[key] = value
61
+ return dict1
62
+
63
+ def generate_csr(self, filelist, csr_path):
64
+ log.info(f"正在创建临时csr文件")
65
+ merged = {}
66
+ for file_path in filelist:
67
+ p = Path(file_path)
68
+ if not p.exists():
69
+ raise FileNotFoundError(f"文件不存在:{file_path}")
70
+ with open(p, "r", encoding="utf-8") as fp:
71
+ content = self.remove_json5_comments(fp.read())
72
+ merged = self.merge_json(merged, content)
73
+ with open(csr_path, "w") as f:
74
+ json.dump(merged, f)
75
+ log.info(f"临时文件创建成功")
76
+
77
+ def update_tmp_dir(self, tmp_dir):
78
+ self.tmp_dir = tmp_dir
79
+
80
+ def get_single_csr(self, csr_path):
81
+ if os.path.exists(csr_path):
82
+ return csr_path
83
+ name, ext = os.path.splitext(csr_path)
84
+ modularize_csr = []
85
+ for suffix in self.special_suffix:
86
+ new_path = f"{name}{suffix}{ext}"
87
+ if not os.path.exists(new_path):
88
+ raise FileNotFoundError(f"路径 {new_path} 不存在")
89
+ modularize_csr.append(new_path)
90
+ csr_path = os.path.join(self.tmp_dir, os.path.basename(csr_path))
91
+ self.generate_csr(modularize_csr, csr_path)
92
+ return csr_path
93
+
94
+ def get_multi_files(self, dir_path):
95
+ srs = list(dir_path.glob("*.sr"))
96
+ stem_to_path = {p.stem: p for p in srs}
97
+ special_by_base = {}
98
+ for p in srs:
99
+ stem = p.stem
100
+ for suf in self.special_suffix:
101
+ if not stem.endswith(suf):
102
+ continue
103
+ base = stem.removesuffix(suf)
104
+ if base:
105
+ special_by_base.setdefault(base, {})[suf] = p
106
+ break
107
+ to_skip = set()
108
+ to_create = []
109
+ for base, mod_path in special_by_base.items():
110
+ if base in stem_to_path:
111
+ to_skip.update(mod_path.values())
112
+ else:
113
+ if not all(s in mod_path for s in self.special_suffix):
114
+ continue
115
+ plain = dir_path / f"{base}.sr"
116
+ if not plain.exists():
117
+ plain = os.path.join(self.tmp_dir, f"{base}.sr")
118
+ self.generate_csr([mod_path[s] for s in self.special_suffix], plain)
119
+ to_create.append(plain)
120
+ to_skip.update(mod_path.values())
121
+ res = [p for p in srs if p not in to_skip]
122
+ res.extend(to_create)
123
+ log.info(res)
124
+ return res
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openubmc-bingo
3
- Version: 0.5.272
3
+ Version: 0.5.277
4
4
  Summary: Tools provided by openubmc
5
5
  Home-page: https://openubmc.cn
6
6
  Classifier: Programming Language :: Python :: 3
@@ -19,6 +19,7 @@ Requires-Dist: jsonschema
19
19
  Requires-Dist: launchpadlib
20
20
  Requires-Dist: mako
21
21
  Requires-Dist: meson
22
+ Requires-Dist: paramiko <4.0.0
22
23
  Requires-Dist: protobuf ==3.19.1
23
24
  Requires-Dist: psutil
24
25
  Requires-Dist: pyecharts
@@ -1,4 +1,4 @@
1
- bmcgo/__init__.py,sha256=DlfF7Ejd_JSfShXVP-6tqxiwWr3mLrm5BaoI26J5HBY,563
1
+ bmcgo/__init__.py,sha256=SE0k3y8-A9Ww0-Mkf-KEYBYaGigM3CfrxZ3Kmh-f7Mo,563
2
2
  bmcgo/bmcgo.py,sha256=uD4TsfjrFB5aQPIS6WRUVc9ShXX-dSImY9ezkB13g1w,685
3
3
  bmcgo/bmcgo_config.py,sha256=zPghH-W8vNK1bAc5PjfwnWzkHYT499PlGbhUWhPKT5U,10888
4
4
  bmcgo/errors.py,sha256=QW1ndrJcJ2Ws7riOznPKVvZsNlrYk73eZol7w8gJTPU,3076
@@ -56,7 +56,7 @@ bmcgo/codegen/lua/script/ipmi_types_pb2.py,sha256=CaCartJKCRgx5WLBg4mbzS8VXwSKy3
56
56
  bmcgo/codegen/lua/script/lua_format.py,sha256=W3UO-II34qY0_st6QiHwSOrQZnqdz4mLWOIB3pfGe58,2003
57
57
  bmcgo/codegen/lua/script/mdb_register.py,sha256=m4St_oPFnaHZG0PTg_D47_zcrqGexy70otVVuu99VM8,7578
58
58
  bmcgo/codegen/lua/script/mds_util.py,sha256=CXcmVHimHMEhV7nds-Jxq29sSHJtuKjnoujgzF151JQ,11914
59
- bmcgo/codegen/lua/script/merge_model.py,sha256=VDe1b1zgbNEVeqpuzAyL7S8EAb1Hwy0N3Ayv4dT2_Hg,12923
59
+ bmcgo/codegen/lua/script/merge_model.py,sha256=XPl-T1LZyVJ_N0ugadHHi4dGPDYJ6zK47E8TV1i4gzk,13148
60
60
  bmcgo/codegen/lua/script/merge_proto_algo.py,sha256=IK7mjBYQWzwr5RtyeHp8CQFU_jIpuHkOxe6XSI_PcXU,3007
61
61
  bmcgo/codegen/lua/script/model_consistency_check.py,sha256=RzHW1heLgcPEAg9sKav-r4_XgI5JClrIPsWh7MkHHro,10670
62
62
  bmcgo/codegen/lua/script/proto_loader.py,sha256=w6TTyLvXrdXZKTKOGf87kSuSsbBviVeQJAhtjRc2K2Y,1913
@@ -90,7 +90,7 @@ bmcgo/codegen/lua/script/render_utils/ipmi_message_lua.py,sha256=Y-5pXMfAPDZqqoA
90
90
  bmcgo/codegen/lua/script/render_utils/mdb_lua.py,sha256=gKX_GUkIbYbbviBw9cEO3pfTwoLWurczYFmoOoWA1Us,6141
91
91
  bmcgo/codegen/lua/script/render_utils/message_lua.py,sha256=ZHJy35iJir1O149dafZnl-oEdU89-eP6VIeQmKjh9D8,1155
92
92
  bmcgo/codegen/lua/script/render_utils/messages_lua.py,sha256=eAe46JU1AJxfpifQCnioD1jxfDhfc-DLGRy8CmwCfBg,4948
93
- bmcgo/codegen/lua/script/render_utils/model_lua.py,sha256=DIBwEt7cQMxkePUjqBk0oks6HBy_jqB4K32J6K3UAZM,18040
93
+ bmcgo/codegen/lua/script/render_utils/model_lua.py,sha256=LfNXUxpaMp2AcjRPg5Hgdr-U6GI79g5_zvpkdVP5NGA,18429
94
94
  bmcgo/codegen/lua/script/render_utils/old_model_lua.py,sha256=OFUPJOaiXDjXpknbh6Pw0TNC1dUVtjPbuIs-3fSN7p4,15611
95
95
  bmcgo/codegen/lua/script/render_utils/plugin_lua.py,sha256=-_r-MqjDNnoYel6zdsNSkqYI3w1DKJPwJy5Vsevl33s,1481
96
96
  bmcgo/codegen/lua/script/render_utils/redfish_proto.py,sha256=lAVo9pPxkc7Iv22enuqCOJVTFy8_63C57iADjzYWz5g,3130
@@ -122,7 +122,7 @@ bmcgo/codegen/lua/templates/apps/mc.lua.mako,sha256=_PMYCI0-RImOv2LQYZU0aUKuL4jM
122
122
  bmcgo/codegen/lua/templates/apps/mdb.lua.mako,sha256=SWZejbAl-27d8Q_pb_I0IOAxxKIX3aEd2IXke2QHyvg,1237
123
123
  bmcgo/codegen/lua/templates/apps/mdb_interface.lua.mako,sha256=wZYf_FZa8nQO0bF9X4ilog47RO7I3VYE1cZdQ8IPg2M,2371
124
124
  bmcgo/codegen/lua/templates/apps/message.lua.mako,sha256=Rj1B_wi8dc2IUvoT0-Q2TfgUpIBxsXXaeqk00zXW1RA,1025
125
- bmcgo/codegen/lua/templates/apps/model.lua.mako,sha256=emHNRo9UeQKOtQzt2vZ8CWnt_eabReSTn0fMkSGKRsk,8839
125
+ bmcgo/codegen/lua/templates/apps/model.lua.mako,sha256=iNz0PZqYnEiyZOsTdGZuudhsS76weEi-3ABjNAzKYgc,8889
126
126
  bmcgo/codegen/lua/templates/apps/orm_classes.lua.mako,sha256=Oz2fKu5uhDJn7d0q178rgX9IDJ4Xmm0nfZYYrek5SNY,335
127
127
  bmcgo/codegen/lua/templates/apps/plugin.lua.mako,sha256=w8aVvxcuNKEmHjWiwFhe6aSIxkMHJKMuc5EaKNgb7DQ,246
128
128
  bmcgo/codegen/lua/templates/apps/redfish.proto.mako,sha256=0yisLKgHi-wuipvjbVZGYH_8ESCEr4wcB3KvAWsJUyE,2628
@@ -195,7 +195,7 @@ bmcgo/functional/bmc_studio_action.py,sha256=Gg96UB8QtnhsaqSdMhXuS9fddzAFPhR6UYC
195
195
  bmcgo/functional/check.py,sha256=LWoDAtEB2p65FemLEoNGz33ldtkbcJlc-uz8hwJl89U,8183
196
196
  bmcgo/functional/conan_index_build.py,sha256=cYpv83DFnsbUJri_dKyThLo7-SDRQ4253P4Nud-HYFY,9074
197
197
  bmcgo/functional/config.py,sha256=ZQ-a9hegI0cV41iTo7t49ryBeUH4wPJ-qkVvWp8toV4,10824
198
- bmcgo/functional/csr_build.py,sha256=_1ZGYxMNOmd_52upS1RdXf1uT8rjaW1bfIw7psfkDt0,40791
198
+ bmcgo/functional/csr_build.py,sha256=h1kyvTEdIbtcSDRCgc70xjChE-sat_SJXltxlulc2xU,41146
199
199
  bmcgo/functional/deploy.py,sha256=2NsxCpoZjL4jTyRpbIp20-EKKbQkQe-Hsm20uxHK2Xc,10677
200
200
  bmcgo/functional/diff.py,sha256=WBH6aRVyVInzyvqQrmslqpItKncFbB2Z9WIBE1_O6bo,10558
201
201
  bmcgo/functional/fetch.py,sha256=JE4iZt6a-vjuCrDg9RYDCTyLf5TvXZQvs0PgD3VBvtQ,10767
@@ -220,7 +220,7 @@ bmcgo/tasks/__init__.py,sha256=VapgzhPMmB7dzPIRohoVm1jjfVn_v97cYNCRmkxScaU,539
220
220
  bmcgo/tasks/download_buildtools_hm.py,sha256=f4UxStARc8Z8DnT_5O6ONajQ7P0sKyJ8brixr43fHVQ,5988
221
221
  bmcgo/tasks/misc.py,sha256=GK_bSDLGZW0FxywB2ICG1iIEz2y2QoCb1YQQk8SYOIA,711
222
222
  bmcgo/tasks/task.py,sha256=n7EhquD3FQeT8LHk0tREKOG9t1BcbMge_TY6ekGFydk,17064
223
- bmcgo/tasks/task_build_conan.py,sha256=nQt4VyK4QHh2u4JbM8kfK9WBVIMGKI18S2NPg9orlvQ,32962
223
+ bmcgo/tasks/task_build_conan.py,sha256=C6zGBSa3ai8p0_5timmfcqRh7sn6lNMdXl9Fi-TUEPA,33799
224
224
  bmcgo/tasks/task_build_rootfs_img.py,sha256=JKEvldJnLWu2IdVSntuVowocQwdVtBQUpxzhplYauPI,29209
225
225
  bmcgo/tasks/task_build_wbd_up.py,sha256=X9-0Qqad-s3mGfJBMeBQvfZ99KlWcgaMluDr_zv6Z-o,3122
226
226
  bmcgo/tasks/task_buildgppbin.py,sha256=Xjfw6j8OsyS_XRiOt4vqIK1rDQ4sNKG__eurDu-M9bo,6341
@@ -243,19 +243,22 @@ bmcgo/utils/fetch_component_code.py,sha256=vH9rY2YcXK5tBUEK7fLmKVxK9cYDM39FHmMan
243
243
  bmcgo/utils/install_manager.py,sha256=XMZUuIHm7_DWRdLV4dAevsyamQ6rt8lb_7OqGWzNBC8,4927
244
244
  bmcgo/utils/json_validator.py,sha256=_k5wU78wfYGrzvSDaqOEtT4otgKUjquVhZNpVf2PW_c,7524
245
245
  bmcgo/utils/mapping_config_patch.py,sha256=_gKfZnrvsLPgHn1yXhEJRVTAeuGpeGD9T-Pqyw5Ydys,16827
246
+ bmcgo/utils/merge_csr.py,sha256=JNxHCfW1au84WQshdz0aQy8wMTEOHonjQT3s6LjlZN4,4580
246
247
  bmcgo/utils/perf_analysis.py,sha256=fh6lV9AAKVhpPkGPwAJ8EWfGfUoHjqGYQxrvc32Xiac,4767
247
248
  bmcgo/utils/tools.py,sha256=athCcqcHgtIZY23GxziWdFjgjEhjGqTwbnezXjmg94Y,27421
248
249
  bmcgo/utils/installations/README.md,sha256=hKXnFYmeHEuROFMFE-vzlGLSHg71bei5ZYwyYZphWNk,2
249
250
  bmcgo/utils/installations/__init__.py,sha256=BDXz8BcSlCkfo5UYt6j2rm89-HiYA1ZzfpFhy99MH-0,538
250
251
  bmcgo/utils/installations/base_installer.py,sha256=3UZiKWoa41ygRbLD3QsE2FTp-VFp79V0I53QLRIf4E8,5902
251
252
  bmcgo/utils/installations/install_consts.py,sha256=QrRYfjw-rkwRllXDvC-pqoAH3Ii_tXsj590gzYxnAFA,1104
252
- bmcgo/utils/installations/install_workflow.py,sha256=KS1rdIpeomDgf50K__5t-lAMzCGuerJfdQoiDSxmi3w,1857
253
+ bmcgo/utils/installations/install_workflow.py,sha256=wT6lTE_s-NZP8LSZR1xlu4dXTtPTEai1dsq3D5-kLzE,3162
253
254
  bmcgo/utils/installations/version_util.py,sha256=dOwvLZ7iOmnzSeyD6_pRm7NS7I13Um5mSD_y0dVyO6M,3212
254
255
  bmcgo/utils/installations/install_plans/bingo.yml,sha256=Zw1HnAyNJdEwkE3fnd-_GCe9bwv1m6bmMlaQTJXaFa8,210
256
+ bmcgo/utils/installations/install_plans/qemu.yml,sha256=lT7aKag60QUH6hTGFKa3hGRqTlcaMxErxjnSaCMkQ9A,138
257
+ bmcgo/utils/installations/install_plans/studio.yml,sha256=APR3GM-3Q11LFfe8vh7t3LztDn4LLEpNHRUNjkaVekA,143
255
258
  bmcgo/utils/installations/installers/apt_installer.py,sha256=nPaCb4cobSi9InN_aHsEPtQ0k4FgsCUWE5_VgBPvcRE,3769
256
259
  bmcgo/utils/installations/installers/pip_installer.py,sha256=dDdios1EQ7fzt90r02pZeoM3jCmjslLzkSvzd2hgRVM,3241
257
- openubmc_bingo-0.5.272.dist-info/METADATA,sha256=IpWk_uqNBVhPkTRiZqbogAdFspHNvwzfIlxap7vWcH8,925
258
- openubmc_bingo-0.5.272.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
259
- openubmc_bingo-0.5.272.dist-info/entry_points.txt,sha256=UUoUP-vAWTgg9vEYbRwYqOBHgpRtkngdzMPb-ocz90g,42
260
- openubmc_bingo-0.5.272.dist-info/top_level.txt,sha256=9AcvCAt1nZcOgMsGt6T07mg2Bgtdet-3mHTwg91axgI,6
261
- openubmc_bingo-0.5.272.dist-info/RECORD,,
260
+ openubmc_bingo-0.5.277.dist-info/METADATA,sha256=A4lw7rAE8BogjZR_XLW2b_sVcoTZD478JX_PYHNBIFw,956
261
+ openubmc_bingo-0.5.277.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
262
+ openubmc_bingo-0.5.277.dist-info/entry_points.txt,sha256=UUoUP-vAWTgg9vEYbRwYqOBHgpRtkngdzMPb-ocz90g,42
263
+ openubmc_bingo-0.5.277.dist-info/top_level.txt,sha256=9AcvCAt1nZcOgMsGt6T07mg2Bgtdet-3mHTwg91axgI,6
264
+ openubmc_bingo-0.5.277.dist-info/RECORD,,