CN107704246A - 终端、编译的方法及装置 - Google Patents

终端、编译的方法及装置 Download PDF

Info

Publication number
CN107704246A
CN107704246A CN201710948135.4A CN201710948135A CN107704246A CN 107704246 A CN107704246 A CN 107704246A CN 201710948135 A CN201710948135 A CN 201710948135A CN 107704246 A CN107704246 A CN 107704246A
Authority
CN
China
Prior art keywords
compiling
compiled
software kit
software
state
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
CN201710948135.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.)
Yuanxin Technology
Original Assignee
Yuanxin Technology
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 Yuanxin Technology filed Critical Yuanxin Technology
Priority to CN201710948135.4A priority Critical patent/CN107704246A/zh
Publication of CN107704246A publication Critical patent/CN107704246A/zh
Pending legal-status Critical Current

Links

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

本发明实施例提供了终端、编译的方法及装置,涉及技术及技术领域,该方法包括:当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定待编译的软件包所依赖的其它软件包分别对应的编译状态,然后当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包。本发明实施例提供的终端、编译的方法及装置能够避免所依赖的每个软件包编译成功时,均触发其开始编译,从而可以避免编译资源的浪费,以及编译过程的混乱。

Description

终端、编译的方法及装置
技术领域
本发明涉及计算机技术领域,具体而言,本发明涉及终端、编译的方法及装置。
背景技术
软件打包服务(Open Build Service,OBS)为一个开放的完整的软件分布开发平台,该开发平台提供基础架构,用于创建软件发布包。该开发平台不但支持多种Linux操作系统发行版以及硬件架构;同时也支持插件,应用于编译以及linux系统整体发布包的制作。OBS提供了工具集来协作工作,支持访问权限,合并请求和审查功能,终端设备可以通过web接口方便地访问OBS,同时OBS也支持命令行或者应用程序编程接口(ApplicationProgramming Interface,API)访问。OBS也支持依赖编译,并且当满足编译条件时,进行编译。
目前,一种编译的方法,当存在多个待编译的软件包,并开始编译任一软件包时,确定该待开始编译的软件包进行编译所依赖的软件包,当所依赖的任一软件包编译成功时,触发该待开始编译的软件包进行编译,例如,如图1所示,当前存在四个待编译的软件包,分别为软件包A、软件包B、软件包C以及软件包D,其中,软件包B以及软件包C均依赖软件包D,软件包A依赖软件包B、软件包C、软件包D,其中当软件包D编译成功时,触发软件包A、软件包B以及软件包C开始编译,当软件包B或软件包C编译成功时,触发软件包A进行编译。
然而,当通过上述方法进行编译时,当所依赖的任一软件包编译成功时,均会触发该待开始编译的软件包进行编译,若一个软件包依赖多个软件包,该软件包需要被触发编译多次,例如,当软件包D编译成功时,触发软件包A、软件包B以及软件包C开始编译,当软件包B编译成功时,又触发软件包A开始编译,软件包C编译成功,再次触发软件包A开始编译,即软件包A被触发开始编译3次,从而导致编译资源的浪费,以及编译过程的混乱。
发明内容
为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:
本发明的第一个实施例根据一个方面,提供了一种编译的方法,包括:
当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定待编译的软件包所依赖的其它软件包分别对应的编译状态;
当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包。
其中,编译状态包括以下至少一项:编译完成状态;未编译完成状态;
编译完成状态包括以下至少一项:编译成功状态;编译失败状态;
未编译完成状态包括以下至少一项:待编译状态;正在编译状态。
具体地,当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包的步骤,包括:
当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,根据所依赖的第一软件包对应的当前成功版本以及其它软件包分别对应的编译版本,开始编译该待编译的软件包,第一软件包为除其它软件包之外的软件包。
具体地,当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,根据其它软件包分别对应的编译版本,开始编译该待编译的软件包的方式,包括以下至少一项:
当待编译的软件包所依赖的其它软件包分别对应的编译状态均为编译成功状态时,根据所依赖的其它软件包分别对应的当前编译成功版本,开始编译该待编译的软件包;
当待编译的软件包所依赖的其它软件包分别对应的编译状态均为编译失败状态时,获取编译状态为编译失败状态的软件包的历史编译成功版本,并根据编译状态为编译失败状态的软件包的历史编译成功版本,开始编译该待编译的软件包;
当待编译的软件包所依赖的其它软件包分别对应的编译状态中包括编译成功状态以及编译失败状态时,获取编译状态为编译失败状态的软件包的历史编译成功版本,并根据编译状态为编译失败状态的软件包的历史编译成功版本以及编译状态为编译成功状态的软件包当前编译成功版本,开始编译该待编译的软件包。
进一步地,该方法还包括:
当编译状态发生变更时,将编译状态更新为变更后的编译状态。
进一步地,开始编译该待编译的软件包的步骤之后,还包括:
当待编译的软件包编译失败时,记录该软件包的编译状态为编译失败状态。
本发明的第二个实施例根据另一个方面,还提供了一种编译的装置,包括:
确定模块,用于当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定待编译的软件包所依赖的其它软件包分别对应的编译状态;
编译模块,用于当确定模块确定待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包。
其中,编译状态包括以下至少一项:编译完成状态;未编译完成状态;
编译完成状态包括以下至少一项:编译成功状态;编译失败状态;
未编译完成状态包括以下至少一项:待编译状态;正在编译状态。
具体地,编译模块,具体用于当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,根据所依赖的第一软件包对应的当前成功版本以及其它软件包分别对应的编译版本,开始编译该待编译的软件包,第一软件包为除其它软件包之外的软件包。
具体地,编译模块,具体还用于当待编译的软件包所依赖的其它软件包分别对应的编译状态均为编译成功状态时,根据所依赖的其它软件包分别对应的当前编译成功版本,开始编译该待编译的软件包;
编译模块,具体还用于当待编译的软件包所依赖的其它软件包分别对应的编译状态均为编译失败状态时,获取编译状态为编译失败状态的软件包的历史编译成功版本,并根据编译状态为编译失败状态的软件包的历史编译成功版本,开始编译该待编译的软件包;
编译模块,具体还用于当待编译的软件包所依赖的其它软件包分别对应的编译状态中包括编译成功状态以及编译失败状态时,获取编译状态为编译失败状态的软件包的历史编译成功版本,并根据编译状态为编译失败状态的软件包的历史编译成功版本以及编译状态为编译成功状态的软件包当前编译成功版本,开始编译该待编译的软件包。
进一步地,装置还包括:更新模块;
更新模块,用于当编译状态发生变更时,将编译状态更新为变更后的编译状态。
进一步地,装置还包括:记录模块;
记录模块,用于当待编译的软件包编译失败时,记录该软件包的编译状态为编译失败状态。
本发明的第三个实施例根据第三个方面,还提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现本发明的第一个实施例所述的编译的方法。
本发明提供了终端、编译的方法及装置,与现有技术的编译方法相比,本发明中当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定待编译的软件包所依赖的其它软件包分别对应的编译状态,并且当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包,即本发明中当某一软件包所依赖的任一软件包编译成功时,并不开始编译,而是先确定所依赖的其它软件包的编译状态,只有其它软件包的编译状态均为编译完成状态,才开始编译,因此本发明中当某一软件包所依赖的全部软件包均为编译完成状态时,才开始编译,从而可以避免所依赖的每个软件包编译成功时,均触发其开始编译,进而可以避免编译资源的浪费,以及编译过程的混乱。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为软件包依赖关系的示意图;
图2为本发明实施例的一种编译的方法流程图;
图3为本发明实施例的一种编译的装置结构示意图;
图4为本发明实施例的另一种编译的装置结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
现有技术中的技术问题产生的根本原因是由OBS本身提供的一种保护机制导致的,在OBS中,若某一个软件包编译失败,依赖该当前编译失败的软件包的其他软件包将取出该当前编译失败的软件包之前编译成功的版本开始编译,即不会因为一个软件包的编译事故,影响到操作系统制作最后的镜像文件。也就是,无论上层软件出现什么问题,最后OBS都会产生一个基本可用的操作系统镜像文件。
解决多次编译问题的关键在于限制由于依赖关系所触发的编译任务,具体如下所示。
实施例一
本发明实施例提供了一种编译的方法,如图2所示,包括:
步骤101、当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定待编译的软件包所依赖的其它软件包分别对应的编译状态。
对于本发明实施例,当某一待编译的软件包所依赖的任一软件包编译成功时,触发该待编译的软件包检测其所依赖的其它软件包的编译状态,并根据其所依赖的其它软件包返回的编译状态,确定该待编译的软件包是否开始编译。
例如,如图1所示,当前存在四个待编译的软件包,分别为软件包A、软件包B、软件包C以及软件包D,其中,软件包B以及软件包C均依赖软件包D,软件包A依赖软件包B、软件包C以及软件包D,软件包B以及软件包C之间不存在依赖关系,当软件包B编译成功时,触发软件包A检测软件包C以及软件包D分别对应的编译状态,并根据软件包C以及软件包D分别对应的编译状态,确定软件包A是否开始编译。
步骤102、当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包。
其中,编译状态包括以下至少一项:编译完成状态;未编译完成状态;编译完成状态包括以下至少一项:编译成功状态;编译失败状态;未编译完成状态包括以下至少一项:待编译状态;正在编译状态。
对于本发明实施例,当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译成功状态或者为编译失败状态时,该待编译的软件包开始编译。
例如,如图1所示,当软件包B编译成功时,触发软件包A检测软件包C以及软件包D分别对应的编译状态,并当检测到软件包C以及软件包D的编译状态为编译成功状态或者为编译失败状态时,开始编译该软件包A。
对于本发明实施例,当待编译的软件包所依赖的软件包均为编译完成状态(编译成功状态或者编译失败状态时),开始编译该待编译的软件包,避免其所依赖的其它软件包的编译成功后,再次触发该待编译的软件包开始编译。
对于本发明实施例,当待编译的软件包所依赖的其它软件包存在至少一个软件包的编译状态为未编译完成状态时,该待编译的软件包不开始编译,直至所依赖的另一软件包编译成功时,再次触发该待编译的软件包检测其所依赖的其它软件包的编译状态,直至其所依赖的所有软件包对应的编译状态均为编译完成状态时,开始编译。
本发明实施例提供了编译的方法,与现有技术的编译方法相比,本发明实施例中当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定待编译的软件包所依赖的其它软件包分别对应的编译状态,并且当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包,即本发明实施例中当某一软件包所依赖的任一软件包编译成功时,并不开始编译,而是先确定所依赖的其它软件包的编译状态,只有其它软件包的编译状态均为编译完成状态,才开始编译,因此本发明中当某一软件包所依赖的全部软件包均为编译完成状态时,才开始编译,从而可以避免所依赖的每个软件包编译成功时,均触发其开始编译,进而可以避免编译资源的浪费,以及编译过程的混乱。
实施例二
本发明实施例的另一种可能的实现方式,在实施例一的基础上,还包括实施例二所示的操作,其中,
步骤102、当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包,具体包括:当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,根据所依赖的第一软件包对应的当前成功版本以及其它软件包分别对应的编译版本,开始编译该待编译的软件包。
其中,第一软件包为除其它软件包之外的软件包。
其中第一软件包为触发该待编译的软件包,检测该待编译的软件包所依赖的其它软件包编译状态的软件包。
例如,如图1所示,软件包B编译成功时,触发软件包A检测软件包C以及软件包D的编译状态,当软件包C以及软件包D的编译状态均为编译完成状态时,软件包A根据软件包B当前的编译成功版本以及软件包C和软件包D分别对应的编译版本,开始编译该软件包A。
实施例三
本发明实施例的另一种可能的实现方式,在实施例二所示的基础上,还包括实施例三所示的操作,其中,
当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,根据其它软件包分别对应的编译版本,开始编译该待编译的软件包的方式,包括步骤A、步骤B以及步骤C中至少一项,其中,
步骤A、当待编译的软件包所依赖的其它软件包分别对应的编译状态均为编译成功状态时,根据所依赖的其它软件包分别对应的当前编译成功版本,开始编译该待编译的软件包。
对于本发明实施例,若待编译的软件包所依赖的其它软件包的编译状态均为编译成功状态,则表征该待编译的软件包所依赖的所有软件包的编译状态均为编译成功状态,则根据待编译的软件包所依赖的所有软件包的当前的编译成功版本,开始编译该待编译的软件包。
例如,如图1所示的软件包之间的依赖关系,当软件包C以及软件包D分别对应的编译状态为编译成功状态时,根据软件包B、软件包C以及软件包D分别对应的当前编译成功版本,开始编译软件包A。
步骤B、当待编译的软件包所依赖的其它软件包分别对应的编译状态均为编译失败状态时,获取编译状态为编译失败状态的软件包的历史编译成功版本,并根据编译状态为编译失败状态的软件包的历史编译成功版本,开始编译该待编译的软件包。
对于本发明实施例,触发该待编译的软件包检测其所依赖的其它软件包的编译状态的软件包的编译状态为编译成功状态,该其它软件包的编译状态均为编译失败状态时,则根据触发该待编译的软件包检测其所依赖的其它软件包编译状态的软件包所对应的当前编译成功版本,以及该其它软件包分别对应的历史成功编译版本,开始编译该待编译的软件包。
例如,软件包A为该待编译的软件包,软件包B为触发该软件包检测软件包C以及软件包D分别对应的编译状态的软件包,软件包C以及软件包D为该其它软件包,即软件包B的编译状态为编译成功状态,软件包C以及软件包D的编译状态分别为编译失败状态,则根据软件包B的当前编译成功版本、软件包C以及软件包D分别对应的历史编译成功版本开始编译该软件包A。
步骤C、当待编译的软件包所依赖的其它软件包分别对应的编译状态中包括编译成功状态以及编译失败状态时,获取编译状态为编译失败状态的软件包的历史编译成功版本,并根据编译状态为编译失败状态的软件包的历史编译成功版本以及编译状态为编译成功状态的软件包当前编译成功版本,开始编译该待编译的软件包。
对于本发明实施例,触发该待编译的软件包检测其所依赖的其它软件包的编译状态的软件包的编译状态为编译成功状态,该其它软件包的编译状态包括编译成功状态以及编译失败状态时,根据触发该待编译的软件包检测其所依赖的其它软件包的编译状态的软件包的当前编译成功版本、以及该其它软件包中编译状态为编译成功状态的软件包的当前成功版以及该其它软件包中编译状态为编译失败状态的软件包的历史编译成功版本,开始编译该待编译的软件包。
例如,软件包A为该待编译的软件包,软件包B为触发该软件包检测软件包C以及软件包D分别对应的编译状态的软件包,软件包C以及软件包D为该其它软件包,即软件包B的编译状态为编译成功状态,软件包C的编译状态为编译失败状态,软件包D的编译状态为编译成功状态,则根据软件包B以及软件包D分别对应的当前编译成功版本、以及软件包C的历史编译成功版本,开始编译该软件包A。
实施例四
本发明实施例的另一种可能的实现方式,在实施例一至实施例三中任一基础上,还包括实施例四所示的操作,其中,该方法还包括:当编译状态发生变更时,将编译状态更新为变更后的编译状态。
对于本发明实施例,当软件包的编译状态发生变更时,将该软件包的编译状态更新为变更后的编译状态,即当软件包的编译状态由正在编译状态变更为编译成功状态或者编译失败状态时,将该软件包的编译状态由待编译状态更新为编译成功状态或者编译失败状态;当软件包的编译状态由待编译状态变更为正在编译状态时,将该软件包的编译状态由待编译状态更新为正在编译状态。
对于本发明实施例,通过当编译状态发生变更时,将编译状态更新为变更后的编译状态,使得待编译的软件包能够根据所依赖的所有的软件包的最新编译状态,确定是否开始编译,从而可以提高软件包确定是否开始编译的准确度。
进一步地,开始编译该待编译的软件包的步骤之后,还包括:当待编译的软件包编译失败时,记录该软件包的编译状态为编译失败状态。
对于本发明实施例,当软件包编译失败时,记录该软件包的编译状态为编译失败状态,能够使得待编译软件包开始编译时,准确地获取该待编译软件包所依赖的软件包对应的编译成功版本,开始编译,从而可以提高编译的准确度,进而可以为测试人员正确验证版本提供有效的参考,也使得开发人员定位错误版本提供了便利。
本发明实施例提供了另一种编译的方法,通过当编译状态发生变更时,将编译状态更新为变更后的编译状态,使得待编译的软件包能够根据所依赖的所有的软件包的最新编译状态,确定是否开始编译,从而可以提高软件包确定是否开始编译的准确度;当软件包编译失败时,记录该软件包的编译状态为编译失败状态,能够使的待编译软件包开始编译时,准确地获取该待编译软件包所依赖的软件包对应的编译成功版本,开始编译,从而可以提高编译的准确度,进而可以为测试人员正确验证版本提供有效的参考,也使得开发人员定位错误版本提供了便利。
本发明实施例提供了一种编译的装置,如图3所示,包括:确定模块31、编译模块32,其中,
确定模块31,用于当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定待编译的软件包所依赖的其它软件包分别对应的编译状态。
编译模块32,用于当确定模块31确定待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包。
其中,编译状态包括以下至少一项:编译完成状态;未编译完成状态;编译完成状态包括以下至少一项:编译成功状态;编译失败状态;未编译完成状态包括以下至少一项:待编译状态;正在编译状态。
编译模块32,具体用于当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,根据所依赖的第一软件包对应的当前成功版本以及其它软件包分别对应的编译版本,开始编译该待编译的软件包,第一软件包为除其它软件包之外的软件包。
编译模块32,具体还用于当待编译的软件包所依赖的其它软件包分别对应的编译状态均为编译成功状态时,根据所依赖的其它软件包分别对应的当前编译成功版本,开始编译该待编译的软件包。
编译模块32,具体还用于当待编译的软件包所依赖的其它软件包分别对应的编译状态均为编译失败状态时,获取编译状态为编译失败状态的软件包的历史编译成功版本,并根据编译状态为编译失败状态的软件包的历史编译成功版本,开始编译该待编译的软件包。
编译模块32,具体还用于当待编译的软件包所依赖的其它软件包分别对应的编译状态中包括编译成功状态以及编译失败状态时,获取编译状态为编译失败状态的软件包的历史编译成功版本,并根据编译状态为编译失败状态的软件包的历史编译成功版本以及编译状态为编译成功状态的软件包当前编译成功版本,开始编译该待编译的软件包。
本发明实施例提供了另一种编译的装置,通过当编译状态发生变更时,将编译状态更新为变更后的编译状态,使得待编译的软件包能够根据所依赖的所有的软件包的最新编译状态,确定是否开始编译,从而可以提高软件包确定是否开始编译的准确度;当软件包编译失败时,记录该软件包的编译状态为编译失败状态,能够使的待编译软件包开始编译时,准确地获取该待编译软件包所依赖的软件包对应的编译成功版本,开始编译,从而可以提高编译的准确度,进而可以为测试人员正确验证版本提供有效的参考,也使得开发人员定位错误版本提供了便利。
进一步地,如图4所示,该装置还包括:更新模块41,其中,
更新模块41,用于当编译状态发生变更时,将编译状态更新为变更后的编译状态。
进一步地,如图4所示,该装置还包括:记录模块42,其中,
记录模块42,用于当待编译的软件包编译失败时,记录该软件包的编译状态为编译失败状态。
本发明实施例提供了一种编译的装置,与现有技术的编译方法相比,本发明实施例中当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定待编译的软件包所依赖的其它软件包分别对应的编译状态,并且当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包,即本发明实施例中当某一软件包所依赖的任一软件包编译成功时,并不开始编译,而是先确定所依赖的其它软件包的编译状态,只有其它软件包的编译状态均为编译完成状态,才开始编译,因此本发明实施例中当某一软件包所依赖的全部软件包均为编译完成状态时,才开始编译,从而可以避免所依赖的每个软件包编译成功时,均触发其开始编译,进而可以避免编译资源的浪费,以及编译过程的混乱。
本发明实施例提供的编译的装置可以实现上述提供的方法实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
本发明实施例还提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,该处理器执行所述程序时实现上述编译的方法。
本发明实施例提供了一种终端,与现有技术的编译方法相比,本发明实施例中当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定待编译的软件包所依赖的其它软件包分别对应的编译状态,并且当待编译的软件包所依赖的其它软件包分别对应的编译状态为编译完成状态时,开始编译该待编译的软件包,即本发明实施例中当某一软件包所依赖的任一软件包编译成功时,并不开始编译,而是先确定所依赖的其它软件包的编译状态,只有其它软件包的编译状态均为编译完成状态,才开始编译,因此本发明实施例中当某一软件包所依赖的全部软件包均为编译完成状态时,才开始编译,从而可以避免所依赖的每个软件包编译成功时,均触发其开始编译,进而可以避免编译资源的浪费,以及编译过程的混乱。
本发明实施例提供了另一种终端,通过当编译状态发生变更时,将编译状态更新为变更后的编译状态,使得待编译的软件包能够根据所依赖的所有的软件包的最新编译状态,确定是否开始编译,从而可以提高软件包确定是否开始编译的准确度;当软件包编译失败时,记录该软件包的编译状态为编译失败状态,能够使的待编译软件包开始编译时,准确地获取该待编译软件包所依赖的软件包对应的编译成功版本,开始编译,从而可以提高编译的准确度,进而可以为测试人员正确验证版本提供有效的参考,也使得开发人员定位错误版本提供了便利。
本发明实施例提供的终端可以实现上述提供的方法实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随即存储器)、EPROM(Erasable ProgrammableRead-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically ErasableProgrammable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种编译的方法,其特征在于,包括:
当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定所述待编译的软件包所依赖的其它软件包分别对应的编译状态;
当所述待编译的软件包所依赖的其它软件包分别对应的编译状态为所述编译完成状态时,开始编译该待编译的软件包。
2.根据权利要求1所述的方法,其特征在于,所述编译状态包括以下至少一项:编译完成状态;未编译完成状态;
所述编译完成状态包括以下至少一项:编译成功状态;编译失败状态;
所述未编译完成状态包括以下至少一项:待编译状态;正在编译状态。
3.根据权利要求2所述的方法,其特征在于,所述当所述待编译的软件包所依赖的其它软件包分别对应的编译状态为所述编译完成状态时,开始编译该待编译的软件包的步骤,包括:
当所述待编译的软件包所依赖的其它软件包分别对应的编译状态为所述编译完成状态时,根据所依赖的第一软件包对应的当前成功版本以及所述其它软件包分别对应的编译版本,开始编译该待编译的软件包,所述第一软件包为除所述其它软件包之外的软件包。
4.根据权利要求3所述的方法,其特征在于,当所述待编译的软件包所依赖的其它软件包分别对应的编译状态为所述编译完成状态时,根据所述其它软件包分别对应的编译版本,开始编译该待编译的软件包的方式,包括以下至少一项:
当所述待编译的软件包所依赖的其它软件包分别对应的编译状态均为编译成功状态时,根据所依赖的其它软件包分别对应的当前编译成功版本,开始编译该待编译的软件包;
当所述待编译的软件包所依赖的其它软件包分别对应的编译状态均为编译失败状态时,获取编译状态为编译失败状态的软件包的历史编译成功版本,并根据所述编译状态为编译失败状态的软件包的历史编译成功版本,开始编译该待编译的软件包;
当所述待编译的软件包所依赖的其它软件包分别对应的编译状态中包括编译成功状态以及编译失败状态时,获取编译状态为编译失败状态的软件包的历史编译成功版本,并根据所述编译状态为编译失败状态的软件包的历史编译成功版本以及编译状态为编译成功状态的软件包当前编译成功版本,开始编译该待编译的软件包。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
当编译状态发生变更时,将编译状态更新为变更后的编译状态。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述开始编译该待编译的软件包的步骤之后,还包括:
当所述待编译的软件包编译失败时,记录该软件包的编译状态为编译失败状态。
7.一种编译的装置,其特征在于,包括:
确定模块,用于当待编译的软件包所依赖的任一软件包的编译状态为编译完成状态中的编译成功状态时,确定所述待编译的软件包所依赖的其它软件包分别对应的编译状态;
编译模块,用于当所述确定模块确定所述待编译的软件包所依赖的其它软件包分别对应的编译状态为所述编译完成状态时,开始编译该待编译的软件包。
8.根据权利要求7所述的装置,其特征在于,
所述编译模块,具体用于当所述待编译的软件包所依赖的其它软件包分别对应的编译状态为所述编译完成状态时,根据所依赖的第一软件包对应的当前成功版本以及所述其它软件包分别对应的编译版本,开始编译该待编译的软件包,所述第一软件包为除所述其它软件包之外的软件包。
9.根据权利要求7-8任一项所述的装置,其特征在于,所述装置还包括:记录模块;
所述记录模块,用于当所述待编译的软件包编译失败时,记录该软件包的编译状态为编译失败状态。
10.一种终端,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-6任一项所述的编译的方法。
CN201710948135.4A 2017-10-12 2017-10-12 终端、编译的方法及装置 Pending CN107704246A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710948135.4A CN107704246A (zh) 2017-10-12 2017-10-12 终端、编译的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710948135.4A CN107704246A (zh) 2017-10-12 2017-10-12 终端、编译的方法及装置

Publications (1)

Publication Number Publication Date
CN107704246A true CN107704246A (zh) 2018-02-16

Family

ID=61183319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710948135.4A Pending CN107704246A (zh) 2017-10-12 2017-10-12 终端、编译的方法及装置

Country Status (1)

Country Link
CN (1) CN107704246A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612946B2 (en) * 2010-05-17 2013-12-17 Red Hat, Inc. Cross-building support using dependency information
CN104391733A (zh) * 2014-12-10 2015-03-04 华中科技大学 一种依据依赖关系动态编译软件包的方法
CN104915214A (zh) * 2015-06-25 2015-09-16 走遍世界(北京)信息技术有限公司 系统的发布方法及装置
CN105718296A (zh) * 2016-04-21 2016-06-29 北京元心科技有限公司 编译依赖关系树的生成显示方法及装置
CN106843995A (zh) * 2017-01-25 2017-06-13 杭州迪普科技股份有限公司 一种文件编译方法及装置
CN107239298A (zh) * 2017-04-28 2017-10-10 北京五八信息技术有限公司 应用程序调试方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612946B2 (en) * 2010-05-17 2013-12-17 Red Hat, Inc. Cross-building support using dependency information
CN104391733A (zh) * 2014-12-10 2015-03-04 华中科技大学 一种依据依赖关系动态编译软件包的方法
CN104915214A (zh) * 2015-06-25 2015-09-16 走遍世界(北京)信息技术有限公司 系统的发布方法及装置
CN105718296A (zh) * 2016-04-21 2016-06-29 北京元心科技有限公司 编译依赖关系树的生成显示方法及装置
CN106843995A (zh) * 2017-01-25 2017-06-13 杭州迪普科技股份有限公司 一种文件编译方法及装置
CN107239298A (zh) * 2017-04-28 2017-10-10 北京五八信息技术有限公司 应用程序调试方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
白云 等: "一个基于Bash的轻量级构建系统的设计与实现", 《计算机科学》 *

Similar Documents

Publication Publication Date Title
US7996818B1 (en) Method for testing using client specified references
RU2006100275A (ru) Система разработки интегральной схемы
CN110196795B (zh) 检测移动终端应用运行状态的方法及相关装置
EP1387304A1 (fr) Procédé de vérification fonctionnelle d'un modèle de circuit intégré pour constituer une plate-forme de vérification, équipement émulateur et plate-forme de vérification
CN110109840A (zh) 基于版本号比较的代码审计方法、审计装置及介质
CN105243329B (zh) Android系统漏洞挖掘的方法及装置
CN107404418B (zh) 互联网产品测试方法、装置、设备及存储介质
CN107797818A (zh) 应用程序升级方法及装置
CN110134604A (zh) 一种无需代码的单元或接口测试方法、装置和计算机设备
WO2014200803A1 (en) Using a static analysis for configuring a follow-on dynamic analysis for the evaluation of program code
CN104050054A (zh) 安装包安装失败的处理方法及原因确定方法及装置
CN106201865A (zh) 一种应用程序编程接口api测试方法、装置及终端设备
CN101739525B (zh) 安全校验的方法、编译装置、可运行.net程 序的装置和系统
CN110990346A (zh) 基于区块链的文件数据处理方法、装置、设备及存储介质
CN107656870A (zh) 应用调试方法及装置
US9064042B2 (en) Instrumenting computer program code by merging template and target code methods
CN107704246A (zh) 终端、编译的方法及装置
US10789404B1 (en) System, method, and computer program product for generating a formal verification model
CN102597952B (zh) 软件库重新构建装置和方法、以及利用该装置和方法的导航装置
CN106874785A (zh) 多操作系统的系统文件访问方法及装置
CN106844206A (zh) 移动终端中调试多系统的方法及装置
CN104217021A (zh) 阅读服务器、终端设备及其显示阅读内容的方法
CN111245676B (zh) 通信协议可信性验证装置
CN111859313A (zh) 验证方法及装置
CN113609014A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180216