一种C/C++语言软件包二进制接口兼容性自动化判别方法技术

技术编号:32779708 阅读:31 留言:0更新日期:2022-03-23 19:37
本发明专利技术公开了一种C/C++语言软件包二进制接口(ABI)兼容性自动化判别方法。该方法包括:提供一个定义文件用于声明应用级ABI兼容性影响因子;为每个C/C++组件赋予一个ABI描述块,用于说明组件的ABI特性;给出一个软件包ABI标识计算算法,作为四元组坐标中的一个元素,用于发布组件二进制软件包;给出一个软件包依赖图ABI兼容性标识计算算法,用于辅助定位符合ABI兼容性要求的上游依赖包。本申请提供的方法针对目标软件包给定的ABI兼容性需求,能够自动判别目标软件包的上游依赖软件包(包括传递依赖包)是否与其具有一致的ABI兼容性,为解决C/C++软件持续集成过程中,软件依赖包的自动化定位和获取提供支持。动化定位和获取提供支持。动化定位和获取提供支持。

【技术实现步骤摘要】
一种C/C++语言软件包二进制接口兼容性自动化判别方法


[0001]本专利技术属于C/C++持续集成
,主要涉及一种C/C++语言软件包二进制接口兼容性自动化判别方法。

技术介绍

[0002]随着移动互联网、云计算、大数据、人工智能等技术的日新月异,数字化转型浪潮正在席卷各行各业。如何快速地持续交付高质量的软件,满足用户的多样化需求,并借此提升企业的利润和市场占有率,已经成为企业必须要面对的现实问题。在这一需求牵引下,持续集成技术在众多软件研发企业中得到了广泛应用。
[0003]企业落地持续集成最佳实践,其中一个关键要求是在软件构建过程中能够支持依赖包的自动化获取,这通常需要借助软件包依赖管理系统来实现。目前现有的软件包管理系统对Java、Python、Nodejs等较新开发语言有很好的支持,但对C/C++软件包在依赖管理方面还存在不足。主要原因在于,使用C/C++语言开发的软件包存在二进制接口(Application Binary Interface,ABI)兼容性问题,具有不同ABI兼容性的C/C++库之间要么无法链接、要么在本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种C/C++语言软件包二进制接口兼容性自动化判别方法,其特征在于,所述方法包括:S1:提供一个ABI兼容性影响因子定义文件,所述ABI兼容性影响因子定义文件,包含可能影响C/C++软件包ABI的所有应用级影响因子的名称及其取值范围的定义;S2:为每个C/C++组件赋予一个ABI描述块,所述ABI描述块包含ABI应用级影响因子投影定义,ABI应用级影响因子取值约束定义,以及软件包级影响因子定义三部分内容;S3:给出一个软件包ABI标识生成算法,作为坐标元素之一,用于发布组件二进制软件包;S4:给出一种C/C++软件仓库组织布局结构,所述软件仓库组织布局结构允许每个组件管理多个具有不同ABI兼容性的软件包;S5:提供一个软件包依赖图ABI兼容性标识ABI_KEY计算算法,用于辅助定位符合ABI兼容性要求的上游依赖包;S6:将S5所述软件包依赖图ABI兼容性标识计算算法得到的每个依赖组件的ABI_KEY,作为对应四元组坐标<组织名、组件名、版本号、ABI_KEY>中第四个元素的值,能够从S5所述C/C++软件仓库中定位目标软件包所需的所有满足ABI兼容性需求的依赖软件包。2.如权利要求1所述的C/C++语言软件包二进制接口兼容性自动化判别方法,其特征在于,在所述步骤S1中:所述应用级影响因子,采用分级哈希表的方式进行组织,以方便后续对其进行过滤和投影操作;所述应用级影响因子取值范围定义,用于对后面S3给出的软件包ABI标识生成算法输入参数取值进行规范化和有效性验证。3.如权利要求1或2所述的C/C++语言软件包二进制接口兼容性自动化判别方法,其特征在于,所述步骤S2包括:S2.1:所述ABI应用级影响因子投影定义,指软件包根据自身特性,以列表的形式给出的,可能会受到所述ABI兼容性影响因子定义文件中定义的哪类应用级因子的影响;所述哪类应用级因子,指的是应用级影响因子分级哈希表的第一级分类;S2.2:所述ABI应用级影响因子取值约束定义,采用三元组的方式定义应用级影响因子的取值约束,且所述三元组的实际值在ABI标识计算算法中动态计算,方便组件开发人员描述组件细粒度的ABI特性;S2.3:所述软件包级影响因子定义,指软件包自身的编译选项定义,以及软件包版本命名模式定义。4.如权利要求3所述的C/C++语言软件包二进制接口兼容性自动化判别方法,其特征在于,所述步骤S2.2包括:S2.2.1:应用级影响因子三元表达式的形式为:(布尔表达式)?表达式1:表达式2;所述布尔表达式的取值,在执行后续S3中软件包ABI标识计算算法时计算,当布尔表达式计算值为真时,对应影响因子设置为所述表达式1的值,否则设置为表达式2的值;S2.2.2:所述布尔表达式,是一个或多个基本布尔表达式,由括号以及AND、OR运算符,组合形成的复杂布尔表达式。5.如权利要求4所述的C/C++语言软件包二进制接口兼容性自动化判别方法,其特征在
于,所述基本布尔表达式,包括如下形式:字符串或数值比较表达式:>,<,==,>=,<=;范围表达式:x~[min,max),当且仅当x>=min且x<max时为真;枚举表达式:x in[a,b,c],当且仅当x是a、b、c之一时为真。6.如权利要求3所述的C/C++语言软件包二进制接口兼容性自动化判别方法,其特征在于,所述步骤S2.3包括:S2.3.1:所述软件包编译选项定义,指软件包自身的编译选项名称、取值范围和缺省值定义;用于区分不同软件包特有的编译开关对ABI兼容性的影响;S2.3.2:所述软件包版本命名...

【专利技术属性】
技术研发人员:吴炜李志蒋舟
申请(专利权)人:中国船舶重工集团公司第七零九研究所
类型:发明
国别省市:

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

1