[发明专利]编译方法、装置及设备有效
申请号: | 201710947458.1 | 申请日: | 2017-10-12 |
公开(公告)号: | CN107729017B | 公开(公告)日: | 2021-02-02 |
发明(设计)人: | 梁彦刚 | 申请(专利权)人: | 北京元心科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/65 |
代理公司: | 北京市立方律师事务所 11330 | 代理人: | 张筱宁;宋海斌 |
地址: | 100176 北京市大兴区北京经济*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 编译 方法 装置 设备 | ||
本发明实施例提供了编译方法、装置及设备,所述方法包括:接收到更新项目时,判断更新项目涉及的依赖关系中是否存在循环依赖;当判断结果表明存在循环依赖时,从更新项目开始执行编译,将循环依赖涉及的至少一个非更新项目设置为不可编译;检测到编译停止后,将不可编译的至少一个非更新项目设置为可编译,将更新项目设置为不可编译,使得编译继续执行。本发明实施例中,通过对循环依赖关系涉及的更新项目和至少一个非更新项目在可编译状态与不可编译状态之间合理切换,将循环依赖关系拆分为两个阶段非循环的依赖关系,并分别进行对应的两个阶段项目编译,从而可在防止陷入循环编译情况下,实现对循环依赖的项目的编译。
技术领域
本发明涉及编译技术领域,具体而言,本发明涉及一种编译方法、装置及设备。
背景技术
软件开发人员通常基于开放的完整的软件发布开发平台,例如OBS (Open BuildService,开放的构建服务)平台,开发编译软件。软件发布开发平台提供了基础架构来创建软件发布包,它支持广泛的操作系统和硬件架构,同时也支持插件(add-ons)、应用镜像(appliance images)或整个Linux的发布包。
有的软件发布开发平台支持依赖编译,也就是说如果一个项目更新,则除了该项目被编译之外,依赖这个项目的所有项目都会被重新编译。依赖编译功能为项目的整体更新提供了强大的支持。
但是如果软件发布开发平台的依赖编译产生循环依赖,则会造成软件发布开发平台中的项目编译的死循环,使得基于软件发布开发平台的项目编译失败。
本发明的发明人发现,一方面,支持依赖编译的软件发布开发平台的维护者通常仅仅关心软件发布开发平台本身的运行和维护,并不对编译依赖进行去循环依赖的维护;另一方面,开发人员通常不关心项目在软件发布开发平台上的依赖关系是否存在循环依赖;常常出现因循环依赖造成整个项目的编译失败。
目前,支持依赖编译的软件发布开发平台对于循环触发编译这个缺陷没有有效的解决方法。
发明内容
本发明针对现有方式的缺点,提出一种编译方法、装置及设备,用以解决现有技术存在软件发布开发平台容易产生循环编译的问题。
本发明的实施例根据第一个方面,提供了一种编译方法,包括:
接收到更新项目时,判断所述更新项目涉及的依赖关系中是否存在循环依赖;
当所述判断结果表明存在循环依赖时,从所述更新项目开始执行编译,将所述循环依赖涉及的至少一个非更新项目设置为不可编译;
检测到所述编译停止后,将所述不可编译的至少一个非更新项目设置为可编译,将所述更新项目设置为不可编译,使得编译继续执行。
本发明的实施例根据第二个方面,还提供了一种编译装置,包括:
循环依赖判断模块,用于接收到更新项目时,判断所述更新项目涉及的依赖关系中是否存在循环依赖;当所述判断结果表明存在循环依赖时,发送状态切换编译通知;
状态切换和编译模块,用于接收到所述状态切换编译通知后,从所述更新项目开始执行编译,将所述循环依赖涉及的至少一个非更新项目设置为不可编译;检测到所述编译停止后,将所述不可编译的至少一个非更新项目设置为可编译,将所述更新项目设置为不可编译,使得编译继续执行。
本发明的实施例根据第三个方面,还提供了一种编译设备,包括:
存储器;
处理器;
至少一个程序,存储于所述存储器中,被配置为由所述处理器执行时实现下述步骤:
接收到更新项目时,判断所述更新项目涉及的依赖关系中是否存在循环依赖;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京元心科技有限公司,未经北京元心科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710947458.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:VOCs推动解析装置及方法
- 下一篇:在线色谱的电子压力控制装置及方法