一种软件包自动化编译方法技术

技术编号:27193935 阅读:19 留言:0更新日期:2021-01-31 11:42
本发明专利技术公开了一种软件包自动化编译方法,包括以下步骤:获取CLINET提供的待编译SRPM软件包以及用于计算的YUM源地址段;通过编译依赖计算程序处理待编译SRPM软件包以及YUM源地址段得到每一轮的待编译SRPM软件包列表;选取当前轮次待编译SRPM软件包列表,依次将SRPM软件包存储到GIT、DISTGIT中;遍历当前轮次待编译SRPM软件包列表,依次将SRPM软件包提交到KOJI编译;监测KOJI编译的编译结果直到当前轮次待编译SRPM软件包列表中的SRPM软件包全部编译完成;重复上述步骤直到所有待编译SRPM软件包编译完成。本发明专利技术能够实现调整SRPM软件包编译顺序,以及SRPM存储GIT、DISTGIT、提交KOJI编译的过程实现自动化以减轻人力。编译的过程实现自动化以减轻人力。编译的过程实现自动化以减轻人力。

【技术实现步骤摘要】
一种软件包自动化编译方法


[0001]本专利技术涉及软件包编译方法,尤其涉及一种软件包自动化编译方法。

技术介绍

[0002]在实际使用中,对于SRPM软件包的代码存储以及编译会涉及到多个不同的组件,如代码存储涉及到GIT、DISTGIT,软件包编译涉及到KOJI,进行编译行为涉及到用户CLIENT等,而使用GIT进行代码存储又涉及到对GIT的各种操作,使用KOJI编译又涉及到编译的顺序问题,等等。
[0003]在传统场景下,当进行大批量的SRPM软件包编译时是无法确定SRPM软件包的编译依赖顺序的,这一点就使得编译的成功率很低,会花销一部分的时间用于试错;另外的,将SRPM软件包的代码提交到GIT、DISTGIT进行存储也是一个繁重的工作。
[0004]如图1所示,用户CLIENT编译一个SRPM软件包需要将SRPM软件包存储到GIT、DISTGIT中(步骤1和2),然后提交KOJI编译(步骤4)。这是编译一个SRPM软件包需要进行的步骤,同时用户CLIENT也不清楚正确的编译顺序。

技术实现思路

[0005]本专利技术要解决的技术问题就在于:针对现有技术存在的技术问题,本专利技术提供一种软件包自动化编译方法,能够实现编译SRPM软件包前知道每一轮的编译顺序,以及SRPM存储GIT、DISTGIT、提交KOJI编译的过程实现自动化以减轻人力。
[0006]为解决上述技术问题,本专利技术提出的技术方案为:
[0007]一种软件包自动化编译方法,包括以下步骤:
[0008]1)获取CLINET提供的待编译SRPM软件包以及用于计算的YUM源地址段;
[0009]2)通过编译依赖计算程序处理待编译SRPM软件包以及YUM源地址段得到每一轮的待编译SRPM软件包列表;
[0010]3)选取当前轮次待编译SRPM软件包列表,依次将SRPM软件包存储到GIT、DISTGIT中;
[0011]4)遍历当前轮次待编译SRPM软件包列表,依次将SRPM软件包提交到KOJI编译;
[0012]5)监测KOJI编译的编译结果直到当前轮次待编译SRPM软件包列表中的SRPM软件包全部编译完成;
[0013]6)返回步骤3)直到所有待编译SRPM软件包编译完成。
[0014]进一步的,所述编译依赖计算程序包括以下步骤:
[0015]2.1)读取YUM源地址段的每一个地址中的RPM软件包信息,将RPM软件包信息记录在Provides表中,所述RPM软件包信息包括RPM包或者SRPM编译出的RPM能够提供的文件、软件包的信息;
[0016]2.2)解析每一个待编译SRPM软件包,得到对应的spec文件,并将所有的spec文件写入第一列表中;
[0017]2.3)通过多线程的方式,从所述列表中取出spec文件进行检查,判断编译对应的SRPM软件包需要的编译依赖,在Provides表中能否找到匹配结果,如果存在匹配结果,则将该SRPM软件包编译后能够提供的文件信息以及生成的二进制包信息记录在Provides表中,并将对应的SRPM软件包加入当前待编译SRPM软件包列表,如果不存在匹配结果,将对应的SRPM软件包的编译依赖信息写入第二列表,直到第一列表为空;
[0018]2.4)将当前待编译SRPM软件包列表加入已编译包列表,从待编译SRPM软件包中移除当前待编译SRPM软件包列表中的SRPM软件包;
[0019]2.5)返回步骤2.2)创建下一待编译SRPM软件包列表,直到待检查列表为空。
[0020]进一步的,步骤2.3)中判断编译对应的SRPM软件包需要的编译依赖,在Provides表中能否找到匹配结果具体包括:解析对应的SRPM软件包得到Buildrequires表,所述Buildrequires表包括在SPEC文件中定义的编译依赖信息,若Provides表中包含对应的SRPM软件包的Buildrequires表,则存在匹配结果,否则不存在匹配结果。
[0021]进一步的,步骤2.3)还包括特殊情况的处理步骤,具体包括:如果不存在匹配结果且对应的SRPM软件包作为待编译SRPM软件包经历两次循环,则从记录SRPM软件包的编译依赖信息的第二列表中获取被需要做多的SRPM,将所述SRPM软件包从待编译SRPM软件包中移除,记录对应的编译依赖信息,并加入当前待编译SRPM软件包列表。
[0022]进一步的,步骤4)具体步骤包括:KOJI平台将当前待编译SRPM软件包列表中的SRPM软件包依次进行编译,编译完成后对二进制包进行解析,将得到的文件信息以及二进制包信息记录到KOJI上的源信息中,当前待编译SRPM软件包列表对应的文件信息以及二进制包信息作为下一待编译SRPM软件包列表中SRPM软件包的编译依赖。
[0023]与现有技术相比,本专利技术的优点在于:
[0024]1、本专利技术的方法能够得到有序的编译顺序轮次,保证成功率;
[0025]2、本专利技术的方法实现了自动化进行代码存储和KOJI编译,释放人力。
附图说明
[0026]图1为传统场景下用户CLIENT编译一个SRPM软件包的示意图。
[0027]图2为本专利技术实施例的方法的编译依赖计算程序的流程示意图。
具体实施方式
[0028]以下结合说明书附图和具体优选的实施例对本专利技术作进一步描述,但并不因此而限制本专利技术的保护范围。
[0029]本专利技术提出一种软件包自动化编译方法,用于针对大批量的SRPM软件包得到编译顺序并自动化进行代码存储和编译,包括以下步骤:
[0030]1)获取CLINET提供的待编译SRPM软件包以及用于计算的YUM源地址段;
[0031]2)通过编译依赖计算程序处理待编译SRPM软件包以及YUM源地址段得到每一轮的待编译SRPM软件包列表;
[0032]3)选取当前轮次待编译SRPM软件包列表,依次将SRPM软件包存储到GIT、DISTGIT中;
[0033]4)遍历当前轮次待编译SRPM软件包列表,依次将SRPM软件包提交到KOJI编译;
[0034]5)监测KOJI编译的编译结果直到当前轮次待编译SRPM软件包列表中的SRPM软件包全部编译完成;
[0035]6)返回步骤3)直到所有待编译SRPM软件包编译完成。
[0036]通过上述步骤,本专利技术实现了自动化进行代码存储和KOJI编译,释放人力。
[0037]如图2所示,本专利技术依靠编译顺序计算程序对大批量的SRPM软件包进行处理,得到每一轮次应该编译的SRPM软件包,所述编译依赖计算程序包括以下步骤:
[0038]2.1)读取YUM源地址段的每一个地址中预先配置的RPM软件包信息,将RPM软件包信息记录在Provides表中,所述RPM软件包信息包括RPM包或者SRPM编译出的RPM能够提供的文件、软件包的信息;
[0039]2.2)解析每一个待编译SRPM软件本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软件包自动化编译方法,其特征在于,包括以下步骤:1)获取CLINET提供的待编译SRPM软件包以及用于计算的YUM源地址段;2)通过编译依赖计算程序处理待编译SRPM软件包以及YUM源地址段得到每一轮的待编译SRPM软件包列表;3)选取当前轮次待编译SRPM软件包列表,依次将SRPM软件包存储到GIT、DISTGIT中;4)遍历当前轮次待编译SRPM软件包列表,依次将SRPM软件包提交到KOJI编译;5)监测KOJI编译的编译结果直到当前轮次待编译SRPM软件包列表中的SRPM软件包全部编译完成;6)返回步骤3)直到所有待编译SRPM软件包编译完成。2.根据权利要求1所述的软件包自动化编译方法,其特征在于,所述编译依赖计算程序包括以下步骤:2.1)读取YUM源地址段的每一个地址中的RPM软件包信息,将RPM软件包信息记录在Provides表中,所述RPM软件包信息包括RPM包或者SRPM编译出的RPM能够提供的文件、软件包的信息;2.2)解析每一个待编译SRPM软件包,得到对应的spec文件,并将所有的spec文件写入第一列表中;2.3)通过多线程的方式,从所述列表中取出spec文件进行检查,判断编译对应的SRPM软件包需要的编译依赖,在Provides表中能否找到匹配结果,如果存在匹配结果,则将该SRPM软件包编译后能够提供的文件信息以及生成的二进制包信息记录在Provides表中,并将对应的SRPM软件包加入当前待编译SRPM软件包列表,如果不存在匹配结果,将对应的SRPM软件包的编译依赖信息写入第二列表,直到第一列表为空;2...

【专利技术属性】
技术研发人员:刘星湘石勇孙利杰周强陈松政刘文清杨涛
申请(专利权)人:湖南麒麟信安科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1