编译方法、装置及设备制造方法及图纸

技术编号:17345918 阅读:27 留言:0更新日期:2018-02-25 10:54
本发明专利技术实施例提供了编译方法、装置及设备,所述方法包括:接收到更新项目时,判断更新项目涉及的依赖关系中是否存在循环依赖;当判断结果表明存在循环依赖时,从更新项目开始执行编译,将循环依赖涉及的至少一个非更新项目设置为不可编译;检测到编译停止后,将不可编译的至少一个非更新项目设置为可编译,将更新项目设置为不可编译,使得编译继续执行。本发明专利技术实施例中,通过对循环依赖关系涉及的更新项目和至少一个非更新项目在可编译状态与不可编译状态之间合理切换,将循环依赖关系拆分为两个阶段非循环的依赖关系,并分别进行对应的两个阶段项目编译,从而可在防止陷入循环编译情况下,实现对循环依赖的项目的编译。

【技术实现步骤摘要】
编译方法、装置及设备
本专利技术涉及编译
,具体而言,本专利技术涉及一种编译方法、装置及设备。
技术介绍
软件开发人员通常基于开放的完整的软件发布开发平台,例如OBS(OpenBuildService,开放的构建服务)平台,开发编译软件。软件发布开发平台提供了基础架构来创建软件发布包,它支持广泛的操作系统和硬件架构,同时也支持插件(add-ons)、应用镜像(applianceimages)或整个Linux的发布包。有的软件发布开发平台支持依赖编译,也就是说如果一个项目更新,则除了该项目被编译之外,依赖这个项目的所有项目都会被重新编译。依赖编译功能为项目的整体更新提供了强大的支持。但是如果软件发布开发平台的依赖编译产生循环依赖,则会造成软件发布开发平台中的项目编译的死循环,使得基于软件发布开发平台的项目编译失败。本专利技术的专利技术人发现,一方面,支持依赖编译的软件发布开发平台的维护者通常仅仅关心软件发布开发平台本身的运行和维护,并不对编译依赖进行去循环依赖的维护;另一方面,开发人员通常不关心项目在软件发布开发平台上的依赖关系是否存在循环依赖;常常出现因循环依赖造成整个项目的编译失败。目前,支持依赖编译的软件发布开发平台对于循环触发编译这个缺陷没有有效的解决方法。
技术实现思路
本专利技术针对现有方式的缺点,提出一种编译方法、装置及设备,用以解决现有技术存在软件发布开发平台容易产生循环编译的问题。本专利技术的实施例根据第一个方面,提供了一种编译方法,包括:接收到更新项目时,判断所述更新项目涉及的依赖关系中是否存在循环依赖;当所述判断结果表明存在循环依赖时,从所述更新项目开始执行编译,将所述循环依赖涉及的至少一个非更新项目设置为不可编译;检测到所述编译停止后,将所述不可编译的至少一个非更新项目设置为可编译,将所述更新项目设置为不可编译,使得编译继续执行。本专利技术的实施例根据第二个方面,还提供了一种编译装置,包括:循环依赖判断模块,用于接收到更新项目时,判断所述更新项目涉及的依赖关系中是否存在循环依赖;当所述判断结果表明存在循环依赖时,发送状态切换编译通知;状态切换和编译模块,用于接收到所述状态切换编译通知后,从所述更新项目开始执行编译,将所述循环依赖涉及的至少一个非更新项目设置为不可编译;检测到所述编译停止后,将所述不可编译的至少一个非更新项目设置为可编译,将所述更新项目设置为不可编译,使得编译继续执行。本专利技术的实施例根据第三个方面,还提供了一种编译设备,包括:存储器;处理器;至少一个程序,存储于所述存储器中,被配置为由所述处理器执行时实现下述步骤:接收到更新项目时,判断所述更新项目涉及的依赖关系中是否存在循环依赖;当所述判断结果表明存在循环依赖时,从所述更新项目开始执行编译,将所述循环依赖涉及的至少一个非更新项目设置为不可编译;检测到所述编译停止后,将所述不可编译的至少一个非更新项目设置为可编译,将所述更新项目设置为不可编译,使得编译继续执行。本专利技术实施例中,当判断出更新项目涉及的依赖关系中存在循环依赖时,将循环依赖涉及的至少一个非更新项目设置为不可编译,并从更新项目开始执行编译;当检测到编译停止后,将不可编译的至少一个非更新项目设置为可编译,将更新项目设置为不可编译,使得编译执行。可见,本专利技术实施例中,通过对循环依赖关系涉及的更新项目和至少一个非更新项目在可编译状态与不可编译状态之间合理切换,将循环依赖关系拆分为两个阶段非循环的依赖关系,并根据两个阶段非循环的依赖关系分别进行对应的两个阶段项目编译,最终完成循环依赖关系涉及的所有项目的编译工作;从而可以在防止陷入循环编译的情况下,实现对循环依赖关系涉及项目的编译工作。本专利技术附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本专利技术的实践了解到。附图说明本专利技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:图1为现有的基于循环依赖关系进行编译的一个特例的示意图;图2为本专利技术实施例的编译方法的流程示意图;图3为本专利技术实施例的基于循环依赖关系转换出非循环依赖关系进行编译的一个特例的示意图;图4为本专利技术实施例的编译装置的内部结构的框架示意图;图5为本专利技术实施例的编译设备的内部结构的框架示意图。具体实施方式下面详细描述本专利技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本专利技术,而不能解释为对本专利技术的限制。本
技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本专利技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。本
技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本专利技术所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。本
技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(PersonalCommunicationsService,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(PersonalDigitalAssistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(GlobalPositioningSystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(MobileInternetDevice,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。本专利技术的专利技术人经过研究发现,目前OBS等软件发布开发平台对于编译项目的依赖关系仅仅是简单的触发关系,不对这种触发关本文档来自技高网
...
编译方法、装置及设备

【技术保护点】
一种编译方法,其特征在于,包括:接收到更新项目时,判断所述更新项目涉及的依赖关系中是否存在循环依赖;当所述判断结果表明存在循环依赖时,从所述更新项目开始执行编译,将所述循环依赖涉及的至少一个非更新项目设置为不可编译;检测到所述编译停止后,将所述不可编译的至少一个非更新项目设置为可编译,将所述更新项目设置为不可编译,使得编译继续执行。

【技术特征摘要】
1.一种编译方法,其特征在于,包括:接收到更新项目时,判断所述更新项目涉及的依赖关系中是否存在循环依赖;当所述判断结果表明存在循环依赖时,从所述更新项目开始执行编译,将所述循环依赖涉及的至少一个非更新项目设置为不可编译;检测到所述编译停止后,将所述不可编译的至少一个非更新项目设置为可编译,将所述更新项目设置为不可编译,使得编译继续执行。2.根据权利要求1所述的方法,其特征在于,所述判断所述更新项目涉及的依赖关系中是否存在循环依赖,包括:确定出依赖于所述更新项目的所有项目;判断所述所有项目中是否存在所述更新项目;以及所述判断结果表明存在循环依赖,包括:所述判断结果为所述所有项目中存在所述更新项目时,表明存在循环依赖。3.根据权利要求2所述的方法,其特征在于,所述判断所述所有项目中是否存在所述更新项目,包括:对于依赖于所述更新项目的每个项目,判断该每个项目是否存在依赖项目;当判断出该每个项目存在依赖项目时,判断该依赖项目是否是所述更新项目。4.根据权利要求2所述的方法,其特征在于,所述从所述更新项目开始执行编译,将所述循环依赖涉及的至少一个非更新项目设置为不可编译,包括:将所述循环依赖涉及的至少一个非更新项目设置为不可编译后,从所述更新项目开始执行编译。5.根据权利要求4所述的方法,其特征在于,所述将所述循环依赖涉及的至少一个非更新项目设置为不可编译,包括:对于所述依赖于所述更新项目的所有项目,将所述所有项目中除了所述更新项目之外的项目,都确定为非更新项目;将所述确定出的非更新项目中的至少一个非更新项目设置为不可编译。6.根据权利要求1所述的方法,其特征在于,所述将所述不可编译的至少一个非更新项目设置为可...

【专利技术属性】
技术研发人员:梁彦刚
申请(专利权)人:北京元心科技有限公司
类型:发明
国别省市:北京,11

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

1