本发明涉及计算机软件技术领域,具体地说是一种分布式构建支持多内核应用程序的方法及系统。
背景技术:
在软件开发过程中,应用程序构建是获取程序发布包的关键步骤。良好的程序构建逻辑,可以有效提高软件发布包的易用性。
对于一些与操作系统底层较为贴近的软件(如macafee软件),其中的某些模块可能需要针对不同版本的操作系统内核,进行逻辑相同、结果不同的编译,即在不同的环境中编译,最终得到不同的编译产物。与此同时,软件中的其他模块,可能无需如此繁复的构建逻辑、仅一次构建即可运行于多个不同版本的操作系统。
现有技术中对代码的编译过程繁复,每增加一个需要支持的操作系统,都会大幅度修改编译过程,操作复杂,安装包的兼容性低。
技术实现要素:
本发明实施例中提供了一种分布式构建支持多内核应用程序的方法及系统,以解决现有技术中针对不同的操作系统内核,应用程序的编译过程复杂,安装包兼容性低的问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
本发明第一方面提供了一种分布式构建支持多内核应用程序的方法,包括以下步骤:
获取应用程序的构建信息;
获取应用程序的源代码,并根据源代码的获取路径分别进行应用层编译和内核编译;
将应用层编译产物和内核编译产物合并,生成应用程序发布包。
结合第一方面,在第一方面第一种可能的实现方式中,所述应用程序的构建信息包括参与构建的操作系统内核版本号。
结合第一方面,在第一方面第二种可能的实现方式中,通过应用层构建计算机进行应用层编译,通过内核构建计算机进行内核编译。
结合第一方面,在第一方面第二种可能的实现方式中,所述内核构建计算机包括若干个,每个内核构建计算机用于编译与自身操作系统内核版本相同的内核态源代码。
结合第一方面,在第一方面第三种可能的实现方式中,所述应用层编译产物包括应用层程序可执行文件,内核编译产物包括内核程序可执行文件。
本发明第二方面提供了一种分布式构建支持多内核应用程序的系统,包括
控制计算机,用于获取应用程序的构建信息和源代码,并根据源代码的获取路径,将应用层源代码和内核态源代码分别发送给应用层构建计算机和内核构建计算机;
内核构建计算机,用于对内核态源代码进行编译,得到内核编译产物;
应用层构建计算机,用于对应用层源代码进行编译,得到应用层编译产物,获取内核编译产物,并将内核编译产物和应用层编译产物合并,生成程序发布包。
结合第二方面,在第二方面第一种可能的实现方式中,所述内核构建计算机包括若干个,每个内核构建计算机用于编译与自身操作系统内核版本相同的内核态代码。
结合第二方面,在第二方面第一种可能的实现方式中,所述内核构建计算机和应用层构建计算机同步进行编译。
结合第二方面,在第二方面第一种可能的实现方式中,所述应用层构建计算机通过文件传输协议获取内核编译产物。
本发明第三方面提供了一种分布式构建支持多内核应用程序的系统,包括
控制计算机,用于获取应用程序的构建信息和源代码,并根据源代码的获取路径,将应用层源代码和内核态源代码分别发送给应用层构建计算机和内核构建计算机;
应用层构建计算机,用于对应用层源代码进行编译,得到应用层编译产物;
内核构建计算机,用于对内核态源代码进行编译,得到内核编译产物,获取应用层编译产物,并将内核编译产物和应用层编译产物合并,生成程序发布包。
本发明第二方面和第三方面的所述分布式构建支持多内核应用程序的系统能够实现第一方面及第一方面的各实现方式中的方法,并取得相同的效果。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
1、在构建之前,分析需要构建的内核版本,在获取到源代码后,巧妙的利用源代码获取路径不同,将构建过程分为应用层和内核态,并根据获取到的内核版本,分别用不同的构建计算机对应用层和内核态代码进行编译,并将得到的编译产物合并,形成程序发布包。得到的程序发布包能够支持多种操作系统内核,兼容性高。
2、不同构建计算机的编译过程同步进行,提高程序的构建效率,且一次构建即可实现长久使用,无需反复编译,节省程序构建的复杂度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明所述方法实施例的流程示意图;
图2是本发明所述方法具体实施过程的原理示意图;
图3是本发明所述系统的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
如图1、2所示,本发明分布式构建支持多内核应用程序的方法包括以下步骤:
s1,获取应用程序的构建信息;
应用程序的构建信息是参与构建的操作系统内核版本号的集合,构建信息可以通过控制计算机读取应用程序的配置文件获取,也可以通过在控制计算机上部署jenkins,并在jenkins中配置获取操作系统内核版本项。
s2,获取应用程序的源代码,并根据源代码的获取路径分别进行应用层编译和内核编译;
从源码库中获取应用程序的源代码,或将本地源代码更新到特定版本,该特定版本通常是应用程序的最新版本。控制计算机在获取源代码时,根据源代码的获取路径,将源代码分为应用层源代码和内核态源代码,并分别发起应用层构建和内核构建指令。
s3,将应用层编译产物和内核编译产物合并,生成应用程序发布包。
应用层构建计算机和内核构建计算机在接收到构建指令后,同时进行编译。应用层构建计算机用于进行应用层源代码的编译,得到应用层编译产物。内核构建计算机包括若干个,分别用内核构建计算机1、内核构建计算机2……内核构建计算机n表示,每个内核构建计算机用于编译与自身操作系统内核版本相同的内核态源代码,即分别进行内核1编译、内核2编译……内核n编译,得到各自的内核编译产物,即内核1编译产物、内核2编译产物……内核n编译产物。
应用层构建计算机利用文件传输协议,如ftp(filetransferprotocol,文件传输协议),获取内核编译产物,并将内核编译产物和应用层编译产物合并,生成程序发布包。控制计算机接收该程序发布包,导出发布构建产物,该发布构建产物即包含了支持多种内核的应用程序安装包。
应用层编译产物包括应用层程序可执行文件,内核编译产物包括内核程序可执行文件。对内核编译产物和应用层编译产物的合并可通过文件压缩的形式实现。
在对内核编译产物和应用层编译产物进行获取及合并时,不限于应用层构建计算机,也可选用任一内核构建计算机来实现。
如图3所示,本发明分布式构建支持多内核应用程序的系统包括控制计算机1、应用层构建计算机2和内核构建计算机3,内核构建计算机包括若干个,分别用内核构建计算机31、内核构建计算机32……内核构建计算机3n表示。
控制计算机1对用于获取应用程序的构建信息和源代码,并根据源代码的获取路径,将应用层源代码和内核态源代码分别发送给应用层构建计算机和内核构建计算机,并分别向应用层构建计算机2和内核构建计算机3发布构建指令。
内核构建计算机3用于对内核态源代码进行编译,得到内核编译产物。每个内核构建计算机用于编译与自身操作系统内核版本相同的内核态代码,得到各自的编译产物,内核1编译产物、内核2编译产物……内核n编译产物。
应用层构建计算机2用于对应用层源代码进行编译,得到应用层编译产物。
应用层构建计算机2还通过文件传输协议获取内核构建计算机的编译产物,并将应用层编译产物与内核编译产物进行合并,生成程序发布包。
对内核编译产物和应用层编译产物进行获取及合并时,不限于应用层构建计算机,也可选用任一内核构建计算机来实现。
以上所述只是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也被视为本发明的保护范围。