[Mellanox] Added patchwork link to commit message (#15301)
- Why I did it Add the patchwork link to the commit description for non-upstream patches if present - How I did it Parse the patchwork/<patch_name>.txt file from hw-mgmt
This commit is contained in:
parent
96cac8e918
commit
9d8ab1b8e4
@ -199,6 +199,7 @@ def build_commit_description(changes):
|
||||
content = content + f"* {key} : {value}\n"
|
||||
return content
|
||||
|
||||
|
||||
def parse_id(id_):
|
||||
if id_ and id_ != "N/A":
|
||||
id_ = "https://github.com/torvalds/linux/commit/" + id_
|
||||
|
@ -28,11 +28,18 @@ from helper import *
|
||||
COMMIT_TITLE = "Intgerate HW-MGMT {} Changes"
|
||||
|
||||
PATCH_TABLE_LOC = "platform/mellanox/hw-management/hw-mgmt/recipes-kernel/linux/"
|
||||
PATCHWORK_LOC = "linux-{}/patchwork"
|
||||
PATCH_TABLE_NAME = "Patch_Status_Table.txt"
|
||||
PATCH_TABLE_DELIMITER = "----------------------"
|
||||
PATCH_NAME = "patch name"
|
||||
COMMIT_ID = "Upstream commit id"
|
||||
|
||||
# Strips the subversion
|
||||
def get_kver(k_version):
|
||||
major, minor, subversion = k_version.split(".")
|
||||
k_ver = "{}.{}".format(major, minor)
|
||||
return k_ver
|
||||
|
||||
def trim_array_str(str_list):
|
||||
ret = [elem.strip() for elem in str_list]
|
||||
return ret
|
||||
@ -46,12 +53,8 @@ def get_line_elements(line):
|
||||
columns = trim_array_str(columns_raw)
|
||||
return columns
|
||||
|
||||
def load_patch_table(path, k_version):
|
||||
def load_patch_table(path, k_ver):
|
||||
patch_table_filename = os.path.join(path, PATCH_TABLE_NAME)
|
||||
|
||||
major, minor, subversion = k_version.split(".")
|
||||
k_ver = "{}.{}".format(major, minor)
|
||||
|
||||
print("Loading patch table {} kver:{}".format(patch_table_filename, k_ver))
|
||||
|
||||
if not os.path.isfile(patch_table_filename):
|
||||
@ -140,6 +143,8 @@ class Data:
|
||||
current_kcfg = list(tuple())
|
||||
# current raw kconfig exclude data
|
||||
kcfg_exclude = list()
|
||||
# kernel version
|
||||
k_ver = ""
|
||||
|
||||
class HwMgmtAction(Action):
|
||||
|
||||
@ -247,6 +252,7 @@ class PostProcess(HwMgmtAction):
|
||||
print("-> FATAL: Patch {} not found either in upstream or non-upstream list".format(patch))
|
||||
if not self.args.is_test:
|
||||
sys.exit(1)
|
||||
Data.k_ver = get_kver(self.args.kernel_version)
|
||||
|
||||
def find_mlnx_hw_mgmt_markers(self):
|
||||
""" Find the indexes where the current mlnx patches sits in SLK_SERIES file """
|
||||
@ -386,13 +392,45 @@ class PostProcess(HwMgmtAction):
|
||||
old_non_up_patches = [ptch.strip() for ptch in Data.old_non_up]
|
||||
return old_up_patches, old_non_up_patches
|
||||
|
||||
def _get_patchwork(self, patch_name):
|
||||
root_p = os.path.join(self.args.build_root, PATCH_TABLE_LOC)
|
||||
patchwork_loc = PATCHWORK_LOC.format(Data.k_ver)
|
||||
file_dir = os.path.join(root_p, patchwork_loc)
|
||||
file_loc = os.path.join(file_dir, f"{patch_name}.txt")
|
||||
if not os.path.exists(file_loc):
|
||||
return ""
|
||||
print(f"-> INFO: Patchwork file {file_loc} is present")
|
||||
lines = FileHandler.read_strip(file_loc)
|
||||
for line in lines:
|
||||
if "patchwork_link" not in line:
|
||||
continue
|
||||
tokens = line.split(":")
|
||||
if len(tokens) < 2:
|
||||
print(f"-> WARN: Invalid entry {line}, did not follow <key>:<value>")
|
||||
continue
|
||||
key = tokens[0]
|
||||
values = tokens[1:]
|
||||
if key == "patchwork_link":
|
||||
desc = ":".join(values)
|
||||
desc = desc.strip()
|
||||
print(f"-> INFO: Patch work link for patch {patch_name} : {desc}")
|
||||
return desc
|
||||
return ""
|
||||
|
||||
def _fetch_description(self, patch, id_):
|
||||
desc = parse_id(id_)
|
||||
if not desc:
|
||||
# not an upstream patch, check if the patchwork link is present and fetch it
|
||||
desc = self._get_patchwork(patch)
|
||||
return desc
|
||||
|
||||
def create_commit_msg(self, table):
|
||||
title = COMMIT_TITLE.format(self.args.hw_mgmt_ver)
|
||||
changes_slk, changes_sb = {}, {}
|
||||
old_up_patches, old_non_up_patches = self.list_patches()
|
||||
for patch in table:
|
||||
id_ = parse_id(patch.get(COMMIT_ID, ""))
|
||||
patch_ = patch.get(PATCH_NAME)
|
||||
id_ = self._fetch_description(patch_, patch.get(COMMIT_ID, ""))
|
||||
if patch_ in Data.new_up and patch_ not in old_up_patches:
|
||||
changes_slk[patch_] = id_
|
||||
print(f"-> INFO: Patch: {patch_}, Commit: {id_}, added to linux-kernel description")
|
||||
@ -432,7 +470,7 @@ class PostProcess(HwMgmtAction):
|
||||
self.write_series_diff()
|
||||
|
||||
path = os.path.join(self.args.build_root, PATCH_TABLE_LOC)
|
||||
patch_table = load_patch_table(path, self.args.kernel_version)
|
||||
patch_table = load_patch_table(path, Data.k_ver)
|
||||
|
||||
sb_msg, slk_msg = self.create_commit_msg(patch_table)
|
||||
|
||||
@ -470,4 +508,3 @@ if __name__ == '__main__':
|
||||
parser = create_parser()
|
||||
action = HwMgmtAction.get(parser.parse_args())
|
||||
action.perform()
|
||||
|
||||
|
@ -48,10 +48,10 @@ Kernel-5.10
|
||||
|0044-platform-mellanox-mlxreg-io-Fix-read-access-of-n-byt.patch | 5fd56f11838d | Bugfix upstream | 5.10.75 | |
|
||||
|0045-i2c-mlxcpld-Fix-criteria-for-frequency-setting.patch | 52f57396c75a | Feature upstream | | |
|
||||
|0046-i2c-mlxcpld-Reduce-polling-time-for-performance-impr.patch | 669b2e4aa1a8 | Feature upstream | | (5.16) |
|
||||
|0047-i2c-mlxcpld-Allow-flexible-polling-time-setting-for-.patch | 712d6617d0a2 | Feature upstream | | (5.16) |
|
||||
|0048-hwmon-pmbus-mp2975-Add-missed-POUT-attribute-for-pag.patch | 2292e2f685cd | Bugfix upstream | 5.10.71 | |
|
||||
|0049-leds-mlxreg-Provide-conversion-for-hardware-LED-colo.patch | | Rejected; take[ALL] | |Need to check patch apply. Can break patch apply|
|
||||
|0050-leds-mlxreg-Skip-setting-LED-color-during-initializa.patch | | Downstream | | |
|
||||
|0051-leds-mlxreg-Allow-multi-instantiation-of-same-name-L.patch | | Downstream | | Modular SN4800 |
|
||||
|0188-i2c-mux-Add-register-map-based-mux-driver.patch | | Feature pending | | BF3-COME |
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
@ -51,6 +51,7 @@
|
||||
0105-mlxsw-reg-Extend-MTBR-register-with-new-slot-number-.patch
|
||||
0106-mlxsw-reg-Extend-MCIA-register-with-new-slot-number-.patch
|
||||
0107-mlxsw-reg-Extend-MCION-register-with-new-slot-number.patch
|
||||
0188-i2c-mux-Add-register-map-based-mux-driver.patch
|
||||
###-> mellanox_hw_mgmt-end
|
||||
|
||||
# Cisco patches for 5.10 kernel
|
||||
|
@ -8,6 +8,7 @@
|
||||
+0169-TMP-mlxsw-i2c-Prevent-transaction-execution-for-spec.patch
|
||||
+0172-DS-platform-mlx-platform-Add-SPI-path-for-rack-switc.patch
|
||||
+0174-DS-mlxsw-core_linecards-Skip-devlink-and-provisionin.patch
|
||||
0188-i2c-mux-Add-register-map-based-mux-driver.patch
|
||||
###-> mellanox_hw_mgmt-end
|
||||
|
||||
# Cisco patches for 5.10 kernel
|
||||
|
@ -18,6 +18,7 @@
|
||||
import sys
|
||||
import shutil
|
||||
from unittest import mock, TestCase
|
||||
from pyfakefs.fake_filesystem_unittest import Patcher
|
||||
sys.path.append('../')
|
||||
from hwmgmt_kernel_patches import *
|
||||
|
||||
@ -49,6 +50,7 @@ NEW_UP_LIST = """\
|
||||
0105-mlxsw-reg-Extend-MTBR-register-with-new-slot-number-.patch
|
||||
0106-mlxsw-reg-Extend-MCIA-register-with-new-slot-number-.patch
|
||||
0107-mlxsw-reg-Extend-MCION-register-with-new-slot-number.patch
|
||||
0188-i2c-mux-Add-register-map-based-mux-driver.patch
|
||||
"""
|
||||
|
||||
TEST_SLK_COMMIT = """\
|
||||
@ -63,10 +65,9 @@ Intgerate HW-MGMT 7.0030.0937 Changes
|
||||
* 0009-i2c-mux-mlxcpld-Extend-driver-to-support-word-addres.patch : https://github.com/torvalds/linux/commit/c52a1c5f5db5
|
||||
* 0010-i2c-mux-mlxcpld-Extend-supported-mux-number.patch : https://github.com/torvalds/linux/commit/699c0506543e
|
||||
* 0011-i2c-mux-mlxcpld-Add-callback-to-notify-mux-creation-.patch : https://github.com/torvalds/linux/commit/a39bd92e92b9
|
||||
|
||||
* 0188-i2c-mux-Add-register-map-based-mux-driver.patch : https://patchwork.ozlabs.org/project/linux-i2c/patch/20230215195322.21955-1-vadimp@nvidia.com/
|
||||
"""
|
||||
|
||||
|
||||
TEST_SB_COMMIT = """\
|
||||
Intgerate HW-MGMT 7.0030.0937 Changes
|
||||
|
||||
@ -128,12 +129,6 @@ class TestHwMgmtPostAction(TestCase):
|
||||
Data.current_kcfg = KCFG.parse_opts_strs(Data.current_kcfg)
|
||||
Data.kcfg_exclude = FileHandler.read_raw(MOCK_INPUTS_DIR+"/kconfig-exclusions")
|
||||
|
||||
def tearDown(self):
|
||||
try:
|
||||
os.remove(MOCK_WRITE_FILE)
|
||||
except:
|
||||
pass
|
||||
|
||||
def test_find_mlnx_hw_mgmt_markers(self):
|
||||
self.action.find_mlnx_hw_mgmt_markers()
|
||||
print(Data.i_mlnx_start, Data.i_mlnx_end)
|
||||
@ -186,10 +181,15 @@ class TestHwMgmtPostAction(TestCase):
|
||||
assert check_file_content(MOCK_INPUTS_DIR+"expected_data/series.patch")
|
||||
|
||||
def test_commit_msg(self):
|
||||
table = load_patch_table(MOCK_INPUTS_DIR, "5.10.140")
|
||||
sb, slk = self.action.create_commit_msg(table)
|
||||
print(slk)
|
||||
print(TEST_SLK_COMMIT)
|
||||
assert slk.split() == TEST_SLK_COMMIT.split()
|
||||
assert sb.split() == TEST_SB_COMMIT.split()
|
||||
root_dir = "/sonic/" + PATCH_TABLE_LOC + PATCHWORK_LOC.format("5.10")
|
||||
content = "patchwork_link: https://patchwork.ozlabs.org/project/linux-i2c/patch/20230215195322.21955-1-vadimp@nvidia.com/\n"
|
||||
file = "0188-i2c-mux-Add-register-map-based-mux-driver.patch.txt"
|
||||
table = load_patch_table(MOCK_INPUTS_DIR, "5.10")
|
||||
with Patcher() as patcher:
|
||||
patcher.fs.create_file(os.path.join(root_dir, file), contents=content)
|
||||
sb, slk = self.action.create_commit_msg(table)
|
||||
print(slk)
|
||||
print(TEST_SLK_COMMIT)
|
||||
assert slk.split() == TEST_SLK_COMMIT.split()
|
||||
assert sb.split() == TEST_SB_COMMIT.split()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user