CN112286534A - 一种软件包自动化编译方法 - Google Patents

一种软件包自动化编译方法 Download PDF

Info

Publication number
CN112286534A
CN112286534A CN202011343305.4A CN202011343305A CN112286534A CN 112286534 A CN112286534 A CN 112286534A CN 202011343305 A CN202011343305 A CN 202011343305A CN 112286534 A CN112286534 A CN 112286534A
Authority
CN
China
Prior art keywords
srpm
software package
compiled
compiling
list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011343305.4A
Other languages
English (en)
Inventor
刘星湘
石勇
孙利杰
周强
陈松政
刘文清
杨涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan Qilin Xin'an Technology Co Ltd
Original Assignee
Hunan Qilin Xin'an Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hunan Qilin Xin'an Technology Co Ltd filed Critical Hunan Qilin Xin'an Technology Co Ltd
Priority to CN202011343305.4A priority Critical patent/CN112286534A/zh
Publication of CN112286534A publication Critical patent/CN112286534A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

一种软件包自动化编译方法
技术领域
本发明涉及软件包编译方法,尤其涉及一种软件包自动化编译方法。
背景技术
在实际使用中,对于SRPM软件包的代码存储以及编译会涉及到多个不同的组件,如代码存储涉及到GIT、DISTGIT,软件包编译涉及到KOJI,进行编译行为涉及到用户CLIENT等,而使用GIT进行代码存储又涉及到对GIT的各种操作,使用KOJI编译又涉及到编译的顺序问题,等等。
在传统场景下,当进行大批量的SRPM软件包编译时是无法确定SRPM软件包的编译依赖顺序的,这一点就使得编译的成功率很低,会花销一部分的时间用于试错;另外的,将SRPM软件包的代码提交到GIT、DISTGIT进行存储也是一个繁重的工作。
如图1所示,用户CLIENT编译一个SRPM软件包需要将SRPM软件包存储到GIT、DISTGIT中(步骤1和2),然后提交KOJI编译(步骤4)。这是编译一个SRPM软件包需要进行的步骤,同时用户CLIENT也不清楚正确的编译顺序。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种软件包自动化编译方法,能够实现编译SRPM软件包前知道每一轮的编译顺序,以及SRPM存储GIT、DISTGIT、提交KOJI编译的过程实现自动化以减轻人力。
为解决上述技术问题,本发明提出的技术方案为:
一种软件包自动化编译方法,包括以下步骤:
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)读取YUM源地址段的每一个地址中的RPM软件包信息,将RPM软件包信息记录在Provides表中,所述RPM软件包信息包括RPM包或者SRPM编译出的RPM能够提供的文件、软件包的信息;
2.2)解析每一个待编译SRPM软件包,得到对应的spec文件,并将所有的spec文件写入第一列表中;
2.3)通过多线程的方式,从所述列表中取出spec文件进行检查,判断编译对应的SRPM软件包需要的编译依赖,在Provides表中能否找到匹配结果,如果存在匹配结果,则将该SRPM软件包编译后能够提供的文件信息以及生成的二进制包信息记录在Provides表中,并将对应的SRPM软件包加入当前待编译SRPM软件包列表,如果不存在匹配结果,将对应的SRPM软件包的编译依赖信息写入第二列表,直到第一列表为空;
2.4)将当前待编译SRPM软件包列表加入已编译包列表,从待编译SRPM软件包中移除当前待编译SRPM软件包列表中的SRPM软件包;
2.5)返回步骤2.2)创建下一待编译SRPM软件包列表,直到待检查列表为空。
进一步的,步骤2.3)中判断编译对应的SRPM软件包需要的编译依赖,在Provides表中能否找到匹配结果具体包括:解析对应的SRPM软件包得到Buildrequires表,所述Buildrequires表包括在SPEC文件中定义的编译依赖信息,若Provides表中包含对应的SRPM软件包的Buildrequires表,则存在匹配结果,否则不存在匹配结果。
进一步的,步骤2.3)还包括特殊情况的处理步骤,具体包括:如果不存在匹配结果且对应的SRPM软件包作为待编译SRPM软件包经历两次循环,则从记录SRPM软件包的编译依赖信息的第二列表中获取被需要做多的SRPM,将所述SRPM软件包从待编译SRPM软件包中移除,记录对应的编译依赖信息,并加入当前待编译SRPM软件包列表。
进一步的,步骤4)具体步骤包括:KOJI平台将当前待编译SRPM软件包列表中的SRPM软件包依次进行编译,编译完成后对二进制包进行解析,将得到的文件信息以及二进制包信息记录到KOJI上的源信息中,当前待编译SRPM软件包列表对应的文件信息以及二进制包信息作为下一待编译SRPM软件包列表中SRPM软件包的编译依赖。
与现有技术相比,本发明的优点在于:
1、本发明的方法能够得到有序的编译顺序轮次,保证成功率;
2、本发明的方法实现了自动化进行代码存储和KOJI编译,释放人力。
附图说明
图1为传统场景下用户CLIENT编译一个SRPM软件包的示意图。
图2为本发明实施例的方法的编译依赖计算程序的流程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
本发明提出一种软件包自动化编译方法,用于针对大批量的SRPM软件包得到编译顺序并自动化进行代码存储和编译,包括以下步骤:
1)获取CLINET提供的待编译SRPM软件包以及用于计算的YUM源地址段;
2)通过编译依赖计算程序处理待编译SRPM软件包以及YUM源地址段得到每一轮的待编译SRPM软件包列表;
3)选取当前轮次待编译SRPM软件包列表,依次将SRPM软件包存储到GIT、DISTGIT中;
4)遍历当前轮次待编译SRPM软件包列表,依次将SRPM软件包提交到KOJI编译;
5)监测KOJI编译的编译结果直到当前轮次待编译SRPM软件包列表中的SRPM软件包全部编译完成;
6)返回步骤3)直到所有待编译SRPM软件包编译完成。
通过上述步骤,本发明实现了自动化进行代码存储和KOJI编译,释放人力。
如图2所示,本发明依靠编译顺序计算程序对大批量的SRPM软件包进行处理,得到每一轮次应该编译的SRPM软件包,所述编译依赖计算程序包括以下步骤:
2.1)读取YUM源地址段的每一个地址中预先配置的RPM软件包信息,将RPM软件包信息记录在Provides表中,所述RPM软件包信息包括RPM包或者SRPM编译出的RPM能够提供的文件、软件包的信息;
2.2)解析每一个待编译SRPM软件包,得到对应的spec文件,并将所有的spec文件写入第一列表中;
2.3)通过多线程的方式,从所述列表中取出spec文件进行检查,判断编译对应的SRPM软件包需要的编译依赖,在Provides表中能否找到匹配结果,如果存在匹配结果,则将该SRPM软件包编译后能够提供的文件信息以及生成的二进制包信息记录在Provides表中,可通过rpmspec-q--provides*.spec获取,并将对应的SRPM软件包加入当前待编译SRPM软件包列表,如果不存在匹配结果,将对应的SRPM软件包的编译依赖信息写入第二列表,直到第一列表为空;
2.4)将当前待编译SRPM软件包列表加入已编译包列表,从待编译SRPM软件包中移除当前待编译SRPM软件包列表中的SRPM软件包;
2.5)返回步骤2.2)创建下一待编译SRPM软件包列表,直到待检查列表为空。
通过上述步骤,编译顺序计算程序可以将大批量无法确定编译顺序的SRPM软件包整理为每一轮次应该编译的SRPM软件包的列表,同时每一轮次编译完成的SRPM软件包作为下一轮次SRPM软件包的编译依赖,这样就能够保证,下一个轮次SRPM软件包编译时不会因为缺少依赖问题而导致编译失败。
本实施例中,步骤2.3)中判断编译对应的SRPM软件包需要的编译依赖,在Provides表中能否找到匹配结果具体包括:解析对应的SRPM软件包得到Buildrequires表,所述Buildrequires表包括在SPEC文件中定义的编译依赖信息,可通过rpmspec-q--buildrequires*.spec获取,若Provides表中包含对应的SRPM软件包的Buildrequires表,则存在匹配结果,否则不存在匹配结果。
针对某一待编译的SRPM软件包较为特殊,无法从每一轮的待编译SRPM软件包列表得到编译依赖信息的情况,本实施例的步骤2.3)还包括特殊情况的处理步骤,具体包括:如果不存在匹配结果且对应的SRPM软件包作为待编译SRPM软件包经历两次循环,则从记录SRPM软件包的编译依赖信息的第二列表中获取被需要做多的SRPM,将所述SRPM软件包从待编译SRPM软件包中移除,记录对应的编译依赖信息,并加入当前待编译SRPM软件包列表。
本实施例的步骤4)具体步骤包括:KOJI平台将当前待编译SRPM软件包列表中的SRPM软件包依次进行编译,编译完成后对二进制包进行解析,将得到的文件信息以及二进制包信息记录到KOJI上的源信息中,当前待编译SRPM软件包列表对应的文件信息以及二进制包信息作为下一待编译SRPM软件包列表中SRPM软件包的编译依赖。当前轮次的所有SRPM软件包编译完成,KOJI源中也就记录了此轮次能够提供的所有文件信息和所有二进制包信息了。下一轮次SRPM软件包编译时,就基于上一轮次SRPM软件包编译完得到的信息的基础上进行编译,因此根据步骤2)的编译顺序计算程序得到每一轮次待编译SRPM软件包列表的顺序之后,KOJI平台按照该顺序进行编辑可以显著提高成功率。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

Claims (5)

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.4)将当前待编译SRPM软件包列表加入已编译包列表,从待编译SRPM软件包中移除当前待编译SRPM软件包列表中的SRPM软件包;
2.5)返回步骤2.2)创建下一待编译SRPM软件包列表,直到待检查列表为空。
3.根据权利要求2所述的软件包自动化编译方法,其特征在于,步骤2.3)中判断编译对应的SRPM软件包需要的编译依赖,在Provides表中能否找到匹配结果具体包括:解析对应的SRPM软件包得到Buildrequires表,所述Buildrequires表包括在SPEC文件中定义的编译依赖信息,若Provides表中包含对应的SRPM软件包的Buildrequires表,则存在匹配结果,否则不存在匹配结果。
4.根据权利要求2所述的软件包自动化编译方法,其特征在于,步骤2.3)还包括特殊情况的处理步骤,具体包括:如果不存在匹配结果且对应的SRPM软件包作为待编译SRPM软件包经历两次循环,则从记录SRPM软件包的编译依赖信息的第二列表中获取被需要做多的SRPM,将所述SRPM软件包从待编译SRPM软件包中移除,记录对应的编译依赖信息,并加入当前待编译SRPM软件包列表。
5.根据权利要求1所述的软件包自动化编译方法,其特征在于,步骤4)具体步骤包括:KOJI平台将当前待编译SRPM软件包列表中的SRPM软件包依次进行编译,编译完成后对二进制包进行解析,将得到的文件信息以及二进制包信息记录到KOJI上的源信息中,当前待编译SRPM软件包列表对应的文件信息以及二进制包信息作为下一待编译SRPM软件包列表中SRPM软件包的编译依赖。
CN202011343305.4A 2020-11-25 2020-11-25 一种软件包自动化编译方法 Pending CN112286534A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011343305.4A CN112286534A (zh) 2020-11-25 2020-11-25 一种软件包自动化编译方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011343305.4A CN112286534A (zh) 2020-11-25 2020-11-25 一种软件包自动化编译方法

Publications (1)

Publication Number Publication Date
CN112286534A true CN112286534A (zh) 2021-01-29

Family

ID=74426708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011343305.4A Pending CN112286534A (zh) 2020-11-25 2020-11-25 一种软件包自动化编译方法

Country Status (1)

Country Link
CN (1) CN112286534A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113204347A (zh) * 2021-04-02 2021-08-03 北京易捷思达科技发展有限公司 适用于软件包的处理方法、装置及电子设备
CN113721918A (zh) * 2021-08-06 2021-11-30 苏州浪潮智能科技有限公司 一种基于koji进行编译和软件源制作的方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080022268A1 (en) * 2006-05-24 2008-01-24 Bea Systems, Inc. Dependency Checking and Management of Source Code, Generated Source Code Files, and Library Files
WO2015183241A1 (en) * 2014-05-27 2015-12-03 Hewlett-Packard Development Company, L.P. Distributed compilation of statically typed languages
CN106325965A (zh) * 2015-06-24 2017-01-11 龙芯中科技术有限公司 操作系统的编译方法和装置
CN110377290A (zh) * 2019-07-22 2019-10-25 阿里巴巴集团控股有限公司 一种目标工程编译的方法、装置及设备
CN110990020A (zh) * 2019-11-24 2020-04-10 苏州浪潮智能科技有限公司 一种软件编译方法、装置及电子设备和存储介质
CN111857730A (zh) * 2020-07-24 2020-10-30 苏州浪潮智能科技有限公司 一种操作系统编译的方法和设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080022268A1 (en) * 2006-05-24 2008-01-24 Bea Systems, Inc. Dependency Checking and Management of Source Code, Generated Source Code Files, and Library Files
WO2015183241A1 (en) * 2014-05-27 2015-12-03 Hewlett-Packard Development Company, L.P. Distributed compilation of statically typed languages
CN106325965A (zh) * 2015-06-24 2017-01-11 龙芯中科技术有限公司 操作系统的编译方法和装置
CN110377290A (zh) * 2019-07-22 2019-10-25 阿里巴巴集团控股有限公司 一种目标工程编译的方法、装置及设备
CN110990020A (zh) * 2019-11-24 2020-04-10 苏州浪潮智能科技有限公司 一种软件编译方法、装置及电子设备和存储介质
CN111857730A (zh) * 2020-07-24 2020-10-30 苏州浪潮智能科技有限公司 一种操作系统编译的方法和设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
南方以北: "【拓扑排序】:如何确定代码源文件的编译依赖关系?", pages 1 - 7, Retrieved from the Internet <URL:https://blog.csdn.net/qq_25800311/article/details/90690745> *
魏新宇等: "《云原生应用构建》", 30 June 2020, 北京:机械工业出版社, pages: 15 - 16 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113204347A (zh) * 2021-04-02 2021-08-03 北京易捷思达科技发展有限公司 适用于软件包的处理方法、装置及电子设备
CN113204347B (zh) * 2021-04-02 2022-03-22 北京易捷思达科技发展有限公司 适用于软件包的处理方法、装置及电子设备
CN113721918A (zh) * 2021-08-06 2021-11-30 苏州浪潮智能科技有限公司 一种基于koji进行编译和软件源制作的方法和装置
CN113721918B (zh) * 2021-08-06 2023-08-04 苏州浪潮智能科技有限公司 一种基于koji进行编译和软件源制作的方法和装置

Similar Documents

Publication Publication Date Title
CN102768639B (zh) 操作系统内核级错误定位方法及装置
CN112286534A (zh) 一种软件包自动化编译方法
CN112306855B (zh) 接口自动化测试方法、装置、终端和存储介质
CN110442371B (zh) 一种发布代码的方法、装置、介质及计算机设备
CN113434328A (zh) 一种分散控制系统逻辑组态编译纠错方法和系统
CN108121774B (zh) 一种数据表备份方法及终端设备
CN111984666B (zh) 数据库访问方法、装置、计算机可读存储介质和计算机设备
CN112783749A (zh) 一种静态代码扫描优化方法、装置、电子设备和存储介质
US6269367B1 (en) System and method for automated identification, remediation, and verification of computer program code fragments with variable confidence factors
EP3818437B1 (en) Binary software composition analysis
CN112559356A (zh) 一种软件自动测试方法及其系统
CN112506897A (zh) 一种分析、定位数据质量问题的方法及系统
CN111949467A (zh) 服务器硬件的校验方法和系统
CN114676126B (zh) 基于数据库的数据校验方法、装置、设备及存储介质
CN110674038A (zh) 一种对软件测试中错误信息的分类方法及装置
CN115562672A (zh) 源代码自动编译方法、编译系统、电子设备及存储介质
CN112784290B (zh) 数据导出工具安全性分析方法及系统及数据导出方法
CN112181951B (zh) 一种异构数据库数据迁移方法、装置及设备
CN113037521B (zh) 识别通讯设备状态的方法、通讯系统及存储介质
CN111930387B (zh) 一种集成包的集成方法及装置、电子设备和存储介质
CN111143229A (zh) 软件测试方法及装置、计算机设备及计算机可读存储介质
CN110764784B (zh) 一种识别三方so文件的方法、智能终端及存储介质
CN111670091B (zh) 机器人程序指令编译方法、机器人控制系统及存储装置
WO2023155863A1 (en) Methods and devices for compiler function fusion
CN112035161B (zh) 一种小程序发布校验的方法及并行发布的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination