2 Star 0 Fork 3

nicliuqi / daily

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
find_different_pkgs.py 2.94 KB
一键复制 编辑 原始数据 按行查看 历史
Se7en 提交于 2021-10-26 07:08 . add find_different_pkgs.py.
# -*- encoding=utf-8 -*-
import os
import subprocess
import sys
import yaml
def load_yaml(path):
try:
with open(path, 'r') as fp:
content = yaml.load(fp.read(), Loader=yaml.Loader)
return content
except FileNotFoundError:
print('Invalid yaml path: {}'.format(path))
sys.exit(1)
except yaml.MarkedYAMLError as e:
print(e)
sys.exit(1)
def excute_cmd(cmd):
subprocess.call(cmd, shell=True)
def gene_tmp_diff_file(dir1,dir2,pkgnamefile):
# 通过配置文件获取所有待diff的package的列表
print('Starting rpmdiff...')
tmpdir = 'tmp'
if os.path.exists(tmpdir):
excute_cmd('rm -rf {}'.format(tmpdir) )
excute_cmd('mkdir {}'.format(tmpdir))
tmp_diff_file = os.path.join(tmpdir, 'rpmdiff.txt')
pkgs_list = load_yaml(pkgnamefile)["same_package_name"]
excute_cmd('test -f {0} && rm -f {0}'.format(tmp_diff_file))
f = open('./tmp/not_exsit_pkgs.txt', 'w')
for pkg in pkgs_list:
print("RPM diff exe: {}".format(pkg))
ali_pkg_path = os.path.join(dir1, pkg)
centos_pkg_path = os.path.join(dir2, pkg)
if not os.path.exists(ali_pkg_path):
print('WARNING! Package {} is not exist'.format(ali_pkg_path))
f.write(ali_pkg_path + '\n')
continue
if not os.path.exists(centos_pkg_path):
print('WARING! Package {} is not exist'.format(centos_pkg_path))
f.write(centos_pkg_path + '\n')
continue
excute_cmd('echo "{}" >> {}'.format(pkg, tmp_diff_file))
excute_cmd('rpmdiff {0} {1} >> {2}'.format(ali_pkg_path, centos_pkg_path, tmp_diff_file))
excute_cmd('echo " " >> {}'.format(tmp_diff_file))
f.close()
print('rpmdiff finished.')
return tmp_diff_file
def main(dir1, dir2, pkgnamefile):
# 处理临时diff文件,将各个包对比的结果写入result.txt
tmpfile = gene_tmp_diff_file(dir1, dir2, pkgnamefile)
print('\nStarting variance analysis...')
with open(tmpfile, 'r') as f:
content = f.read().splitlines()
with open('./tmp/result.txt', 'a+') as f:
count = 0
for line in content:
if '5' in line[:11]:
count += 1
if len(line) == 0 or line == content[-1]:
if count == 0:
f.write(': same\n')
else:
f.write(': different\n')
if line.endswith('.rpm'):
print('Package name: {}'.format(line))
count = 0
f.write('{}'.format(line))
print('Variance Analysis finished.')
if __name__ == '__main__':
if len(sys.argv) != 4:
print("Param error.eg: python find_***.py dir1(centosdir) dir2 pkgfilepath.")
sys.exit(1)
dir1 = sys.argv[1]
dir2 = sys.argv[2]
pkgfile = sys.argv[3]
main(dir1, dir2, pkgfile)
Python
1
https://gitee.com/nicliuqi/daily.git
git@gitee.com:nicliuqi/daily.git
nicliuqi
daily
daily
master

搜索帮助