编译依赖关系树的生成显示方法及装置制造方法及图纸

技术编号:15095412 阅读:48 留言:0更新日期:2017-04-07 22:44
本发明专利技术实施例提供了编译依赖关系树的生成显示方法及装置,所述方法包括:对于软件平台中的一个资源包,根据预先生成的资源表中该资源包对应的依赖信息,确定出该资源包的编译层级;分别根据预先生成的结果表、依赖表中该资源包对应的依赖包索引、输出包索引,确定出该资源包的上层、下层编译依赖关系;根据软件平台中多个资源包各自的编译层级,以及上层、下层编译依赖关系,生成该软件平台的编译依赖关系树并显示。用户可根据本发明专利技术实施例提供的编译依赖关系树,容易地确定出待编译的资源包,编译时所需的各层级的依赖包,及各依赖包之间的编译顺序等编译依赖关系,从而大大提升编译效率,并可防止因依赖错误或编译顺序错误而导致的编译错误。

Method and device for generating and displaying compiler dependency tree

The embodiment of the invention provides a display method and device for generating compiler dependent relation tree, the method includes: a software platform for resource package, according to the corresponding resource package pre generated in the resource table depends on the information, determine the resource pack compilation level; respectively according to the pre generated results table and dependent on the resource pack package in the corresponding table index, output index package, determined the resource package of upper and lower layers compilation dependencies; according to multiple resource pack their compiler level in the software platform, and the upper and lower compiler dependent relations, build the software platform to compile the dependency tree and display. The user can be compiled according to the embodiment of the invention provides the dependency tree, easily identified to be compiled on all levels of resource package required when compiling packages, and the dependencies between packages in order to compile and compile dependencies, thereby greatly enhancing the efficiency of compiler, and can prevent the dependent error or compile order error due to the compilation errors.

【技术实现步骤摘要】

本专利技术涉及软件编译
,具体而言,本专利技术涉及一种编译依赖关系树的生成显示方法及装置
技术介绍
随着技术的发展,很多用户在服务方提供的软件平台上编译软件,并将编译后软件打包成资源包,进行发布或者共享等等。例如,OBS(OpenBuildService)软件平台提供多种软件的编译服务。OBS软件平台支持对多种操作系统进行编译打包。多种操作系统包括Linux及其衍生系统;例如openSUSE、Debian、Fedora、Ubuntu、RedHatEnterpriseLinux、SUSELinuxEnterprise等。以Linux及其衍生系统为例,目前Linux系统的多个发行版所各自采用的封包格式、每个资源包编译时所依赖的依赖包通常不同,以及资源包编译输出后的输出包通常也不相同,造成资源包编译的拓扑排序的数据结果非常复杂。整个软件平台中,存在大量的资源包,资源包之间的编译依赖关系非常复杂;例如,一个资源包A既可以是另一个资源包B编译时所需的依赖包,又可以是资源包C编译后输出的输出包。本专利技术的专利技术人发现,目前的软件平台通常并不提供资源包之间的编译依赖关系。对于在软件平台上编译资源包的用户而言,自行了解整个软件平台的各资源包之间的编译依赖关系,工作量十分巨大,几乎是不可能完成的任务。因此,目前用户通常是利用最近的记载有编译依赖关系的文件,例如spec文件,自行修改该文件中的编译资源包所需的依赖包、以及各依赖包的编译顺序等编译依赖关系;之后进行资源包的编译打包;容易导致编译效率低下,编译错误等等。
技术实现思路
本专利技术针对现有方式的缺点,提出一种编译依赖关系树的生成显示方法及装置,用以解决现有技术存在不提供编译依赖关系而导致编译效率低下的问题。本专利技术的实施例根据一个方面,提供了一种编译依赖关系树的生成显示方法,包括:对于软件平台中的一个资源包,根据预先生成的资源表中该资源包对应的依赖信息,确定出该资源包的编译层级;分别根据预先生成的结果表、依赖表中该资源包对应的依赖包索引、输出包索引,确定出该资源包的上层、下层编译依赖关系;根据所述软件平台中多个资源包各自的编译层级,以及上层、下层编译依赖关系,生成该软件平台的编译依赖关系树并显示。较佳地,所述资源表是通过下述方法预先生成的:对于所述软件平台中的每个资源包,将该资源包名、依赖包名、输出包名、以及该资源包的层级都导入所述资源表的一条记录中,并设置所述层级为空;将所述软件平台中的一个资源包作为源包,采用递归方式确定源包的依赖包;在一层递归中,将上层递归的依赖包作为本层递归的源包,进而确定出本层递归的源包的依赖包,直到确定出的依赖包为库文件包,结束递归;将所述库文件包的层级设置为最小层级后,对于每层递归,将该层递归的源包的层级设置为该层递归的依赖包的层级加一,得到各资源包的层级。较佳地,所述确定出本层递归的源包的依赖包,包括:针对所述本层递归的源包,确定出所述结果表中该源包对应的依赖包索引指向的所述资源表中的资源包,作为该源包的依赖包。较佳地,所述将该层递归的源包的层级设置为该层递归的依赖包的层级加一,具体包括:若确定出一层递归的源包的多个依赖包,则将该层递归的源包的层级设置为所述多个依赖包中的最大层级加一。较佳地,所述编译依赖关系树的生成显示方法还包括:当确定出一层递归的源包的依赖包为排除包时,将该层递归的依赖包的层级设置为最小层级。本专利技术的实施例根据另一个方面,还提供了一种编译依赖关系树的生成显示装置,包括:编译层级确定模块,用于对于软件平台中的一个资源包,根据预先生成的资源表中该资源包对应的依赖信息,确定出该资源包的编译层级;编译依赖关系确定模块,用于分别根据预先生成的结果表、依赖表中该资源包对应的依赖包索引、结果表索引,确定出该资源包的上层、下层编译依赖关系;编译依赖关系树显示模块,用于根据所述软件平台中多个资源包各自的编译层级,以及上层、下层编译依赖关系,生成该软件平台的编译依赖关系树并显示。较佳地,所述编译依赖关系树的生成显示装置,还包括:资源表生成模块,用于对于所述软件平台中的每个资源包,将该资源包名、依赖包名、输出包名、以及该资源包的层级都导入所述资源表的一条记录中,并设置所述层级为空;将所述软件平台中的一个资源包作为源包,采用递归方式确定源包的依赖包;在一层递归中,将上层递归的依赖包作为本层递归的源包,进而确定出本层递归的源包的依赖包,直到确定出的依赖包为库文件包,结束递归;将所述库文件包的层级设置为最小层级后,对于每层递归,将该层递归的源包的层级设置为该层递归的依赖包的层级加一,得到各资源包的层级。较佳地,所述资源表生成模块,具体包括:资源表初始化单元,用于对于所述软件平台中的每个资源包,将该资源包名、依赖包名、输出包名、以及该资源包的层级都导入所述资源表的一条记录中,并设置所述层级为空;依赖包确定单元,用于将所述软件平台中的一个资源包作为源包,采用递归方式确定源包的依赖包;在一层递归中,将上层递归的依赖包作为本层递归的源包,进而确定出本层递归的源包的依赖包,直到确定出的依赖包为库文件包,结束递归;层级设置单元,用于将所述库文件包的层级设置为最小层级后,对于每层递归,将该层递归的源包的层级设置为该层递归的依赖包的层级加一,得到各资源包的层级。较佳地,所述依赖包确定单元还用于确定出一层递归的源包的多个依赖包;以及所述层级设置单元还用于将该层递归的源包的层级设置为所述依赖包确定单元确定出的多个依赖包中的最大层级加一。较佳地,所述依赖包确定单元还用于当确定出一层递归的源包的依赖包为排除包时,发送排除包通知;所述层级设置单元还用于接收到所述排除包通知后,将该层递归的依赖包的层级设置为最小层级。本专利技术实施例中,对于软件平台中的一个资源包,根据预先生成的资源表中该资源包对应的依赖信息,确定出该资源包的编译层级;分别根据预先生成的结果表、依赖表中该资源包对应的依赖包索引、结果表索引,确定出该资源包的上层、下层编译依赖关系;根据软件平台中多个资源包各自的编译层级,以及上层、下层编译依赖关系,生成该软件平台的编译依赖关系树并显示。用户可以根据本专利技术实例提供的编译依赖关系树,容易地确定出待编译的资源包,编译时所需的各层级的依赖包,以及各依赖包之本文档来自技高网
...

【技术保护点】
一种编译依赖关系树的生成显示方法,其特征在于,包括:对于软件平台中的一个资源包,根据预先生成的资源表中该资源包对应的依赖信息,确定出该资源包的编译层级;分别根据预先生成的结果表、依赖表中该资源包对应的依赖包索引、输出包索引,确定出该资源包的上层、下层编译依赖关系;根据所述软件平台中多个资源包各自的编译层级,以及上层、下层编译依赖关系,生成该软件平台的编译依赖关系树并显示。

【技术特征摘要】
1.一种编译依赖关系树的生成显示方法,其特征在于,包括:
对于软件平台中的一个资源包,根据预先生成的资源表中该资源包对
应的依赖信息,确定出该资源包的编译层级;
分别根据预先生成的结果表、依赖表中该资源包对应的依赖包索引、
输出包索引,确定出该资源包的上层、下层编译依赖关系;
根据所述软件平台中多个资源包各自的编译层级,以及上层、下层编
译依赖关系,生成该软件平台的编译依赖关系树并显示。
2.根据权利要求1所述的方法,其特征在于,所述资源表是通过下
述方法预先生成的:
对于所述软件平台中的每个资源包,将该资源包名、依赖包名、输出
包名、以及该资源包的层级都导入所述资源表的一条记录中,并设置所述
层级为空;
将所述软件平台中的一个资源包作为源包,采用递归方式确定源包的
依赖包;
在一层递归中,将上层递归的依赖包作为本层递归的源包,进而确定
出本层递归的源包的依赖包,直到确定出的依赖包为库文件包,结束递归;
将所述库文件包的层级设置为最小层级后,对于每层递归,将该层递
归的源包的层级设置为该层递归的依赖包的层级加一,得到各资源包的层
级。
3.根据权利要求2所述的方法,其特征在于,所述确定出本层递归
的源包的依赖包,包括:
针对所述本层递归的源包,确定出所述结果表中该源包对应的依赖包
索引指向的所述资源表中的资源包,作为该源包的依赖包。
4.根据权利要求2所述的方法,其特征在于,所述将该层递归的源
包的层级设置为该层递归的依赖包的层级加一,具体包括:
若确定出一层递归的源包的多个依赖包,则将该层递归的源包的层级
设置为所述多个依赖包中的最大层级加一。
5.根据权利要求2所述的方法,其特征在于,还包括:
当确定出一层递归的源包的依赖包为排除包时,将该层递归的依赖包
的层级设置为最小层级。
6.一种编译依赖关系树的生成显示装置,其特征在于,包括:
编译层级确定模块,用于对于软件平台中的一个资源包,根据预先生
成的资源表中该资源包对应的依赖信息,确定出该资源包的编译层级;
编译依赖关系确定模块,用于分别根据预先生成的结果表、依赖表中
该资源包对应的依赖包索引、结果表索引,确...

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

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

1