From 6420105b8338819b336862258683f94e6c90db8d Mon Sep 17 00:00:00 2001 From: dongjie110 <17621827400@163.com> Date: Fri, 27 Sep 2024 15:23:58 +0800 Subject: [PATCH] tools for create new openeuler version community and version base yaml --- tools/gen_pckg_mgmt.py | 119 +++++++++++++++++++++++++++++ tools/modify_src_openeuler_yaml.py | 27 +++---- 2 files changed, 133 insertions(+), 13 deletions(-) create mode 100644 tools/gen_pckg_mgmt.py diff --git a/tools/gen_pckg_mgmt.py b/tools/gen_pckg_mgmt.py new file mode 100644 index 0000000..fe35c25 --- /dev/null +++ b/tools/gen_pckg_mgmt.py @@ -0,0 +1,119 @@ +import numpy as np +import pandas as pd +import xlwt +import os +import yaml +import datetime + + +par = argparse.ArgumentParser() +par.add_argument("-tbr", "--to_branch", default=None, + help="which to branch you choose", required=True) +par.add_argument("-fbr", "--from_branch", default=None, + help="which from branch you choose", required=True) +args = par.parse_args() + + +datestr = datetime.datetime.now().strftime('%Y-%m-%d') +baseos_list = os.popen("cat baseos.list").read().split("\n") + + +def read_result(filename): + result = {} + #读取excel中所有数据 + file_path = os.path.join(os.getcwd(),filename) + data = pd.read_excel(file_path) + data.columns=["pkgname","project","gitee_status","build_status","install_status",'basey'] + for index,row in data.iterrows(): + pkg = row['pkgname'] + project = row['project'] + result[pkg] = project + print (result) + return result + +def get_project_packages(all_dict,from_branch,to_branch): + #读取excel中所有数据 + data = pd.read_excel('./{}.xlsx'.format(args.to_branch)) + data.columns=["pkgname",'project','status'] + i = 0 + j = 0 + for index,row in data.iterrows(): + pkg = row['pkgname'] + project = row['project'] + if project in ['openEuler:master:Epol']: + pkg_info = { + "name": pkg, + "source_dir": from_branch, + "destination_dir": to_branch, + "date": datestr + } + j += 1 + all_dict['epol']['packages'].append(pkg_info) + elif pkg in baseos_list: + pkg_info = { + "name": pkg, + "source_dir": from_branch, + "destination_dir": to_branch, + "date": datestr + } + all_dict['baseos']['packages'].append(pkg_info) + i += 1 + else: + pkg_info = { + "name": pkg, + "source_dir": from_branch, + "destination_dir": to_branch, + "date": datestr + } + all_dict['everything-exclude-baseos']['packages'].append(pkg_info) + i += 1 + print ("{} pkgs: {}".format(args.to_branch, i)) + print ("{} epol pkgs: {}".format(args.to_branch, j)) + return all_dict + +def get_private_path_pkgname(private_sig_path): + ''' + get private sig pkg name from sig path + params + private_sig_path : private sig path in community repo + ''' + private_sig_pkgs = [] + for filepath,dirnames,filenames in os.walk(private_sig_path): + for file in filenames: + head,sep,tail = file.partition('.') + private_sig_pkgs.append(head) + return private_sig_pkgs + +def check_private_sig_pkg(pkg_name): + ''' + check add pkg include in private sig + params + chang_file : modified file abs path + ''' + pkg_names = + private_sig_path = os.path.join(os.getcwd(), "community", "sig", "sig-recycle","src-openeuler") + private_sig_pkgs = get_private_path_pkgname(private_sig_path) + failed_msg = [] + if pkg_name in private_sig_pkgs: + pkg_names.append(pkg_name) + print ("private_sig_pkgs:{}".format(pkg_name)) + return pkg_names + + +def step_write(all_dict): + for key,value in all_dict.items(): + dir_path = os.path.join(os.getcwd(), '{}/{}'.format(args.to_branch,key)) + if not os.path.exists(dir_path): + os.makedirs(dir_path) + yaml_path = os.path.join(dir_path,"pckg-mgmt.yaml") + write_yaml(value,yaml_path) + +def write_yaml(dict_msg, file_path): + with open(file_path, "w", encoding='utf-8') as f: + yaml.dump(dict_msg, f, default_flow_style=False, sort_keys=False) + +from_branch = args.to_branch +to_branch = args.from_branch +all_dict = {'baseos':{'packages':[]},'everything-exclude-baseos':{'packages':[]},'epol':{'packages':[]},'delete':{'packages':[]}} +all_dict = get_project_packages(all_dict, from_branch, to_branch) +step_write(all_dict) \ No newline at end of file diff --git a/tools/modify_src_openeuler_yaml.py b/tools/modify_src_openeuler_yaml.py index 0e75c65..50fd497 100644 --- a/tools/modify_src_openeuler_yaml.py +++ b/tools/modify_src_openeuler_yaml.py @@ -40,9 +40,10 @@ def git_clone(gitee_repo): sys.exit(1) def read_yaml(file_path): + file_msg = [] if os.path.exists(file_path): with open(file_path, "r", encoding='utf-8') as f: - file_msg = yaml.load(f, Loader=yaml.SafeLoader) + file_msg = yaml.load(f, Loader=yaml.FullLoader) return file_msg def write_yaml(dict_msg, file_path): @@ -64,18 +65,19 @@ def modify_file_msg(release_management_path, yaml_path_dict): pkg_name = pckg['name'] add_msg = {'name': pckg['destination_dir'], 'type': 'protected', 'create_from': pckg['source_dir']} openeuler_path = yaml_path_dict.get(pkg_name, "") - openeuler_msg = read_yaml(openeuler_path) - for br in openeuler_msg['branches']: - if br['name'] == pckg['destination_dir']: - flag = True - break - if not flag: - openeuler_msg['branches'].append(add_msg) - write_yaml(openeuler_msg, openeuler_path) - print("Modify yaml: ", openeuler_path) - modify_list.append(pkg_name) + openeuler_msg = read_yaml(openeuler_path) + if openeuler_msg: + for br in openeuler_msg['branches']: + if br['name'] == pckg['destination_dir']: + flag = True + break + if not flag: + openeuler_msg['branches'].append(add_msg) + write_yaml(openeuler_msg, openeuler_path) + print("Modify yaml: ", openeuler_path) + modify_list.append(pkg_name) - write_yaml(modify_list, './modify_pkg.txt') # modify package name list + write_yaml(modify_list, './modify_pkg.txt') print('modify yaml number: ', len(modify_list)) @@ -87,7 +89,6 @@ def get_yaml_path(yaml_root_dir): if each_file.endswith('.yaml') and ('src-openeuler' in file_path): package_name = each_file[:-5] package_dict[package_name] = file_path - return package_dict -- Gitee