CN113835713A - 源码包下载方法、装置、计算机设备和存储介质 - Google Patents
源码包下载方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113835713A CN113835713A CN202111119589.3A CN202111119589A CN113835713A CN 113835713 A CN113835713 A CN 113835713A CN 202111119589 A CN202111119589 A CN 202111119589A CN 113835713 A CN113835713 A CN 113835713A
- Authority
- CN
- China
- Prior art keywords
- source code
- compiling
- directory
- software package
- package
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000010276 construction Methods 0.000 claims abstract description 10
- 238000004590 computer program Methods 0.000 claims description 29
- 238000012216 screening Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种源码包下载方法、装置、计算机设备和存储介质。该方法基于软件包构建系统实现,该方法包括:在检测到软件包构建系统下载完成待编译软件包的编译目录时,从编译目录中获取待编译软件包的元数据文件;对元数据文件进行解析,得到目标源码包的存放路径信息,目标源码包为编译待编译软件包时所需要的源码包;从存放路径信息指示的目标位置获取目标源码包,并将目标源码包下载至编译目录中的指定位置。采用本方法能够减少软件包编译前期的人工作业量和作业时间,提高软件包编译的效率。
Description
技术领域
本申请涉及计算机软件技术领域,特别是涉及一种源码包下载方法、装置、计算机设备和存储介质。
背景技术
随着计算机软件技术的发展,出现了软件包编译技术。软件包编译是软件包构建中的重要环节。在进行软件包编译时,需要用户提供软件包的源文件及其对应的源码包。
在基于软件包构建系统进行软件包编译的传统方法中,必须将源文件和源码包放在同一个地址下的同一个目录中,以便在编译过程中系统可以获取到源文件及其对应的源码包,从而进行后续的编译任务。
但在某些业务场景下,为了维护方便,会分别将源文件和源码包存放在不同网络节点或同一网络节点的不同位置。此时,在软件包编译时,系统将无法获取到源文件对应的源码包,因此,会发生系统报错并导致编译失败。在这种情况下,传统的做法是,在软件编译之前,手动将源码包整理到与其对应的源文件所在的同一个目录中,但是,这增加了软件包编译人员的工作量,导致软件包编译时间长、效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高软件包编译效率的源码包下载方法、装置、计算机设备和存储介质。
一种源码包下载方法,该方法基于软件包构建系统实现,该方法包括:
在检测到软件包构建系统下载完成待编译软件包的编译目录时,从编译目录中获取待编译软件包的元数据文件;
对元数据文件进行解析,得到目标源码包的存放路径信息,目标源码包为编译待编译软件包时所需要的源码包;
从存放路径信息指示的目标位置获取目标源码包,并将目标源码包下载至编译目录中的指定位置。
在一个实施例中,从编译目录中获取待编译软件包的元数据文件,包括:获取编译目录的目录路径信息,从目录路径信息中提取待编译软件包的软件包名称信息和元数据字段信息;根据软件包名称信息和元数据字段信息从编译目录中确定元数据文件。
在一个实施例中,对元数据文件进行解析之前,该方法还包括:判断编译目录中的指定位置上是否已经存在目标源码包,若否,则进入执行对元数据文件进行解析的步骤。
在一个实施例中,对元数据文件进行解析之前,该方法还包括:判断编译目录是否属于有效的文件版本控制仓库,若是,则进入执行对元数据文件进行解析的步骤。
在一个实施例中,从存放路径信息指示的目标位置获取目标源码包,包括:获取目标源码包的加密散列值,从目标位置的多个源码包中筛选加密散列值与目标源码包的加密散列值相匹配的源码包,将筛选出的源码包确认为目标源码包。
在一个实施例中,将目标源码包下载至编译目录中的指定位置之前,该方法还包括:检测编译目录所在的当前网络节点中是否加载了远程下载指令,若否,则在当前网络节点中加载远程下载指令。
在一个实施例中,将目标源码包下载至编译目录中的指定位置,包括:确定编译目录中的当前编译分支,在当前编译分支下创建资源子目录,将目标源码包下载至资源子目录中。
一种源码包下载装置,该装置基于软件包构建系统实现,该装置包括:
文件获取模块,用于在检测到软件包构建系统下载完成待编译软件包的编译目录时,从编译目录中获取待编译软件包的元数据文件;
文件解析模块,用于对元数据文件进行解析,得到目标源码包的存放路径信息,目标源码包为编译待编译软件包时所需要的源码包;
源码下载模块,用于从存放路径信息指示的目标位置获取目标源码包,并将目标源码包下载至编译目录中的指定位置。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的源码包下载方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的源码包下载方法的步骤。
上述源码包下载方法、装置、计算机设备和存储介质,在检测到软件包构建系统下载完成待编译软件包的编译目录后,触发进入获取并解析元数据文件的步骤,通过解析元数据文件,得到待编译软件包所需要的源码包的存放路径信息,从该存放路径信息所指示的位置拉取该源码包到该编译目录的指定位置。采用本方案,在软件包编译之前,无需手动将软件包的源文件及其对应的源码包整理至同一网路节点的同一目录下,软件包编译时,即使下载的编译目录中没有包含源码包,也可以继续将编译任务进行下去,因此,减少了编译前期的人工维护时间,提高了软件包编译的效率。
附图说明
图1为一个实施例中源码包下载方法的应用环境图;
图2为一个实施例中源码包下载方法的流程示意图;
图3为一个实施例中编译目录中的内容的示意图;
图4为一个实施例中编译目录、当前编译分支、当前网络节点和目标网络节点之间的关联关系的示意图;
图5为一个实施例中源码包下载装置的结构框图;
图6为一个实施例中计算机设备的内部结构图;
图7为另一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
在一个实施例中,本申请提供的源码包下载方法,可以应用于如图1所示的应用环境中。其中,当前网络节点102可以通过网络与目标网络节点104进行通信。具体地,当前网络节点102在检测到软件包构建系统下载完成待编译软件包的编译目录时,从编译目录中获取待编译软件包的元数据文件,对元数据文件进行解析,得到目标源码包的存放路径信息,目标源码包为编译待编译软件包时所需要的源码包,在存放路径信息指示的目标网络节点104中获取目标源码包,并将目标源码包下载至编译目录中的指定位置。
其中,网络节点由计算机设备或其他设备与一个有独立地址和具有传送或接收数据功能的网络相连所形成。网络节点包括但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、便携式可穿戴设备和服务器。每一个拥有自己唯一网络地址的设备都可以是网络节点。整个网络由许许多多的网络节点组成的,把许多的网络节点用通信线路连接起来,形成一定的几何关系,可以形成计算机网络拓扑。
其中,当前网络节点102是指软件包构建系统的网络节点,可以用于执行软件包编译任务。目标网络节点104是指存放待编译软件包的源码包的网络节点。
在另一个实施例中,本申请提供的源码包下载方法还可以仅基于图1中的当前网络节点102实现。具体地,当前网络节点102在检测到软件包构建系统下载完成待编译软件包的编译目录时,从编译目录中获取待编译软件包的元数据文件,对元数据文件进行解析,得到目标源码包的存放路径信息,目标源码包为编译待编译软件包时所需要的源码包,在存放路径信息指示的当前网络节点102中的目标位置获取目标源码包,并将目标源码包下载至编译目录中的指定位置。
在一个实施例中,如图2所示,提供了一种源码包下载方法,该方法可以基于软件包构建系统实现,以该方法应用于图1中的当前网络节点为例进行说明,包括以下步骤:
步骤S202:在检测到软件包构建系统下载完成待编译软件包的编译目录时,从编译目录中获取待编译软件包的元数据文件。
其中,软件包构建系统是指用于进行软件包构建的平台。例如,可以是Koji系统,Koji系统是基于RPM(Red-hat Package Manager,红帽软件包管理器)以及Linux操作系统的软件包构建系统。待编译软件包是指当前的有待进行编译的软件包。编译目录也可以称为源文件目录,其中可以包含编译待编译软件包所需的各种源文件和源码数据。在进行编译时,会根据编译目录中的各文件和数据进行编译,若编译目录中缺少了编译所需的文件或数据,系统将会报错,无法继续进行软件包的编译任务。元数据文件是指后缀为“.metadata”的文件,元数据文件中包含了对待编译软件包进行编译时所需的源码包的相关信息。
示例性地,基于Koji系统进行软件包编译时,编译目录中的内容可以如图3所示,其中,编译目录中可以包含SPECS(规范)和SOURCES(资源)两种子目录,以及后缀为“.metadata”的元数据文件。
在传统的方法中,软件包构建系统在下载完成待编译软件包的编译目录后,会直接进行软件包编译的步骤。然而,在本实施例中,具体地,可以通过设置插件程序的方式,在待编译软件包的编译目录下载完成时,触发进入插件程序,即进入从编译目录中获取待编译软件包的元数据文件的步骤。通过设置插件程序的触发条件,即,确定进入从编译目录中获取待编译软件包的元数据文件的步骤的时机,可以有效地兼容软件包构建系统原本的编译任务,在适当的位置和条件下执行本申请所涉及的源码包下载的方法的步骤。
示例性地,可以预先通过符合该软件包构建系统的程序语言编写插件程序,并在进行软件包编译之前将插件程序注册至该软件包构建系统中,在基于该软件包构建系统执行软件包编译任务时,在该软件包构建系统执行完成了“下载待编译软件包的编译目录”的事件时,触发启动并进入该插件程序,即,进入本方案所涉及的源码包下载方法的各步骤。
示例性地,若基于Koji系统进行软件包编译,则可以结合Koji系统原有的编译机制进行插件程序触发位置的设置,例如,可以使用Koji系统中的callbacks回调函数,在完成了“下载待编译软件包的编译目录”的事件时,回调进入插件程序。
在一个实施例中,在检测到软件包构建系统下载完成待编译软件包的编译目录时,从编译目录中获取待编译软件包的元数据文件之前,该方法还可以包括:将能够实现本申请所述涉及的源码包下载方法的计算机程序注册至该软件包构建系统中。
在一个实施例中,从编译目录中获取待编译软件包的元数据文件,包括:获取编译目录的目录路径信息,从目录路径信息中提取待编译软件包的软件包名称信息和元数据字段信息,根据软件包名称信息和元数据字段信息从编译目录中确定元数据文件。
在本实施例中,可以通过获取待编译软件包的相关参数信息,从而从编译目录中准确地确定出待编译软件包对应的元数据文件。其中,相关参数信息可以包括待编译软件包的软件包名称信息以及待编译软件包的元数据字段信息等。
更为具体地,编译目录的目录路径信息的最后一个分量可以作为待编译软件包的软件包名称信息。元数据文件的名称可以被设置为由软件包名称信息加元数据字段信息构成,因此,通过从目录路径信息中提取待编译软件包的软件包名称信息,并结合元数据字段信息,可以准确地从编译目录中确定出待编译软件包对应的元数据文件。
在一个实施例中,从编译目录中获取待编译软件包的元数据文件之前,该方法还可以包括:检测待编译软件包的编译目录中是否包含元数据文件。具体地,可以通过判断待编译软件包的编译目录中是否包含有后缀为“.metadata”的文件,若待编译软件包的编译目录中存在后缀为“.metadata”的文件,则判定元数据文件存在,可以继续执行从编译目录中获取待编译软件包的元数据文件的步骤。若后缀为“.metadata”的文件不存在,则判定元数据文件不存在,元数据文件不存在表明无法获取到源码包的相关信息,后续的源码包下载也无法进行,因此,可以直接退出软件包的编译任务。
在一个实施例中,对元数据文件进行解析之前,该方法还包括:判断编译目录中的指定位置上是否已经存在目标源码包,若编译目录中的指定位置上不存在目标源码包,则进入执行对元数据文件进行解析的步骤。其中,指定位置是指在编译目录下预先指定的用于存放目标源码包的位置。
在本实施例中,在解析元数据文件并下载目标源码包之前,可以进一步判断目标源码包是否已经存在于该编译目录中的指定位置。因为,在基于软件包构建系统进行软件包编译时,可能存在至少两种情况,第一,下载完成编译目录时,编译所需的源码包已经存在于编译目录中的指定位置,这种情况说明,在编译进行之前,待编译软件包的源码包和源文件就已经被维护在了同一网络节点的同一目录下。第二,下载完成编译目录时,编译目录中的指定位置上没有编译所需的源码包,这种情况说明,在编译进行之前,待编译软件包的源码包和源文件被分别存放在了不同网络节点或同一网络节点的不同位置。
本实施例,通过预先判断目标源码包是否已经存在于编译目录的指定位置,在源码包已经存在于编译目录的指定位置的情况下,不再重复进行后续目标源码包下载的相关步骤。因此,能够避免重复下载目标源码包,防止编译目录中出现数据重复的问题。还可以减少当前网络节点的下载资源的浪费,能够进一步提高软件包编译的效率。也即是说,本实施例的方案,能够有效地兼容上述的第一和第二两种情况。
在一个实施例中,对元数据文件进行解析之前,该方法还包括:判断编译目录是否属于有效的文件版本控制仓库,若是,则进入执行对元数据文件进行解析的步骤。
在软件包构建系统中,一个编译目录也可以理解为一个文件版本控制仓库。文件版本控制仓库里面的所有的文件都可以通过版本控制工具实现版本管理,版本控制工具能够跟踪并记录在该仓库中发生的所有更新。由于只有在有效的文件版本控制仓库内才可以实现有效编译,因此,在判断出编译目录为有效的文件版本控制仓库后,再执行后续的对元数据文件进行解析、下载目标源码包等步骤可以减少无效编译的问题的出现。
步骤S204:对元数据文件进行解析,得到目标源码包的存放路径信息,目标源码包为编译待编译软件包时所需要的源码包。
其中,目标源码包是指基于软件包构建系统对待编译软件包进行编译时所需要的源码包。源码包是指含有源代码文件的数据包。元数据文件中可以包括目标源码包的存放路径信息,也可以进一步包括目标源码包的名称信息、加密散列值等信息。其中,加密散列值可以用来对目标源码包进行校验。存放路径信息是指用于指示目标源码包的存放位置的信息。
具体地,可以通过解析元数据文件,循环读取元数据文件中每一行的内容,获取指示目标源码包的存放位置的存放路径信息。
步骤S206:从存放路径信息指示的目标位置获取目标源码包,并将目标源码包下载至编译目录中的指定位置。
其中,目标位置是指存放路径信息所指示的位置,该位置可以是任意一个远程的网络节点所在的位置或其下的任意一个目录所在的位置,也可以是当前进行软件包编译的当前网络节点下的编译目录之外的任意一个目录所在的位置。指定位置是指在编译目录下预先指定的用于存放目标源码包的位置。
示例性地,编译目录中可以包括SOURCES子目录,SOURCES子目录可以作为指定位置,即,目标源码包可以被下载至编译目录中的SOURCES子目录下。在一些实施例中,由于源码包不存在,SOURCES子目录也可能不存在,在SOURCES子目录不存在时,进一步地,还可以在编译目录下创建新的SOURCES子目录,并将目标源码包下载至该新创建的SOURCES子目录下。
具体地,可以根据从元数据文件中解析出的待编译软件包的目标源码包的存放路径信息,确定该存放路径信息所指示的目标位置,该目标位置可以是任意一个远程的网络节点所在的位置或其下的任意一个目录所在的位置,也可以是当前进行软件包编译的当前网络节点下的编译目录之外的任意一个目录所在的位置。进而从目标位置获取待编译软件包的目标源码包。当目标位置上仅存在一个源码包时,可以直接获取该源码包作为目标源码包,当目标位置上存在多个源码包时,可以从多个源码包中进一步筛选并确定出目标源码包。在获取到目标源码包之后,可以利用下载指令下载目标源码包,并指定下载地址为编译目录中的指定位置。在一个实施例中,从存放路径信息指示的目标位置上获取目标源码包,包括:获取目标源码包的加密散列值,从目标位置的多个源码包中筛选加密散列值与目标源码包的加密散列值相匹配的源码包,将筛选出的源码包确认为目标源码包。
在本实施例中,元数据文件中还可以包括目标源码包的加密散列值,在解析元数据文件的时候还可以从元数据文件中获取目标源码包的加密散列值。其中,各源码包可以用其对应的加密散列值进行命名。
本实施例,在目标源码包的存放路径信息所指示的目标网络节点或目标源码包目录(目标位置)中被存储了多个源码包时,可以通过比对加密散列值的方式,在多个源码包中进行筛选,从而更准确、快速地锁定待编译软件包所需要的目标源码包。
在一个实施例中,将目标源码包下载至编译目录中的指定位置之前,该方法还包括:检测编译目录所在的当前网络节点中是否加载了远程下载指令,若编译目录所在的当前网络节点中没有加载远程下载指令,则在当前网络节点中加载远程下载指令。
其中,当前网络节点是指当前进行待编译软件包的编译服务的网络节点。通过在下载目标源码包之前判断当前网络节点中是否加载了远程下载指令,在当前网络节点中没有加载远程下载指令时自动加载该远程下载指令,从而能够确保目标源码包下载任务的顺利进行,进一步提高软件包编译的效率。示例性地,远程下载指令可以是curl命令,远程下载指令能够用于远程拉取(下载)源码包。若当前网络节点中没有加载远程下载指令,则需要在执行将目标源码包下载至编译目录中的指定位置之前,在当前网络节点中加载远程下载指令,若当前网络节点中已经加载了远程下载指令,则可以通过调用该远程下载指令,从目标位置远程拉取目标源码包,并将目标源码包下载至编译目录中的指定位置。
在一个实施例中,将目标源码包下载至编译目录中的指定位置,包括:确定编译目录中的当前编译分支,在当前编译分支下创建资源(SOURCES)子目录,将目标源码包下载至资源子目录中。
在本实施中,当前编译分支为编译目录中当前正在进行编译的分支。通过确定需要目标源码包的当前编译分支,在该当前编译分支下创建资源子目录,并将目标源码包对应下载至该资源子目录中,能够准确地将从远程的网络节点拉取到的目标源码包放入需要该目标源码包的当前编译分支,从而确保当前编译分支能够正常、顺利地进行后续的软件包编译任务。参见图4所示,图4示出了一个实施例中编译目录、当前编译分支、当前网络节点、目标网络节点之间的关联关系。
上述源码包下载方法,在检测到软件包构建系统下载完成待编译软件包的编译目录后,触发进入获取并解析元数据文件的步骤,通过解析元数据文件,得到待编译软件包所需要的源码包的存放路径信息,从该存放路径信息所指示的位置拉取该源码包到该编译目录的指定位置。采用本方案,在软件包编译之前,无需手动将软件包的源文件及其对应的源码包整理至同一网路节点的同一目录下,软件包编译时,即使下载的编译目录中没有包含源码包,也可以继续将编译任务进行下去,因此,减少了编译前期的人工作业时间和作业量,提高了软件包编译的效率。
下面,再结合一个具体的应用实例,对本申请所涉及的源码包下载方法进行进一步地详细说明。具体可以包括以下步骤:
步骤1:确定插件程序在Koji系统中的触发位置。
当Koji系统完成某些事件后,可以自动执行用户指定的代码(插件程序),因此,首先可以确定触发进入实现本申请涉及的源码包下载方法的插件程序的触发位置。Koji系统在软件包编译过程中,会去用户指定的网络节点拉取软件包相关的源文件目录(编译目录)。在开发过程中,用于编译软件包的源码包与源文件可能维护于同一位置,也可能维护在不同网络节点或同一网络节点的不同位置。鉴于此,为了兼容Koji系统原有的编译机制,需要在Koji系统下载完软件包编译目录之后触发本申请所涉及的插件程序。例如,Koji系统提供了很多callbacks的回调函数,能够实现指定在什么事件发生后执行插件程序。例如,可以使用的callbakcs为postSCMCheckout,即可以实现在Koji系统下载完编译目录后切换到插件程序的分支以触发实现下载源码包的功能。
更为具体地,可以根据Koji系统的插件编程模板编写插件程序,以便于Koji系统的软件包编译服务启动时,将实现本申请涉及的源码包下载方法的插件程序注册至Koji系统。在触发该插件程序后,获取Koji系统中当前的待编译软件包的编译目录的目录路径信息,并将目录路径信息传递给步骤2。
步骤2:获取及判断待编译软件包的相关参数。
其中,待编译软件包的相关参数可以包括:软件包名称西悉尼、软件包元数据文件名称信息、源码包名称信息、源码包的存放路径信息、当前编译的编译分支信息等。
在本步骤中,为了兼容Koji系统原有的编译机制,需要区分Koji系统下载编译目录后,源码包已经存在和不存在的情况。当下载完成编译目录时,编译所需的源码包已经存在于编译目录中的指定位置,这种情况说明,在编译进行之前,待编译软件包的源码包和源文件就已经被维护在了同一网络节点的同一目录下。当下载完成编译目录时,编译目录中的指定位置上没有编译所需的源码包,这种情况说明,在编译进行之前,待编译软件包的源码包和源文件被分别存放在了不同网络节点或同一网络节点的不同位置。
具体可以包括以下步骤:
步骤21:获取待编译软件包的软件包名称信息。通过解析由步骤1传递来的目录路径信息,提取目录路径信息的最后一个分量即为待编译软件包的软件包名称。
步骤22:获取待编译软件包的元数据文件名称。元数据文件中包含源码包的名称信息、源码包的存放路径信息以及源码包的加密散列值。元数据文件名称可以由软件包名称结合元数据字段组成。
步骤23:判断元数据文件是否存在,若存在,则进行步骤24,若不存在则退出程序。
步骤24:解析元数据文件,获取源码包名称及其存放路径信息。
步骤25:判断源码包是否已经存在于编译目录中,若不存在,则进行步骤26,若存在,则表明此次编译的待编译软件包的源码包与源文件存在于同一个网络节点的相同位置,因此,不需要再次下载源码包,直接退出程序即可。
步骤26:确定当前编译分支。
步骤26:将当前编译分支的信息传递至步骤3。
步骤3:将源码包下载至编译目录的当前编译分支中的指定位置。
本步骤中,需要根据获取到的源码包的存放路径信息,去存放路径信息所指示的目标网络节点搜索待编译软件包的源码包,在目标网络节点中,源码包以其加密散列值命名。下载源码包时,需要比对所需源码包的加密散列值及目标网络节点中存放的所有源码包的加密散列值,若目标网络节点中存在加密散列值匹配的源码包,则表明所需的源码包存在,否则不存在。具体步骤如下:
步骤31:判断当前网路节点是否安装了curl命令,若没有安装,则执行curl安装命令。curl命令为远程下载源码包所需的指令。其中,curl命令是基于Linux系统的用于进行文件或数据下载的命令。
步骤32:判断待编译软件包的编译目录是否为一个有效的git仓库,若是,则执行步骤24,若不是,则退出程序。Koji系统下载的编译目录是一个可用的git仓库时,下载源码包才有意义。
其中,在git分布式版本控制系统中,可以将需要进行版本控制的文件目录叫做一个git仓库(文件版本控制仓库),每个git仓库可以简单理解成一个目录,这个目录里面的所有文件都通过git仓库来实现版本管理,git仓库都能跟踪并记录在该目录中发生的所有更新。
步骤33:在编译目录的当前分支目录下创建资源子目录。
步骤34:解析元数据文件,循环读取其每一行,获取所需源码包的加密散列值,对于元数据文件的每一行,循环执行步骤35。
步骤35:组装下载参数,使用curl命令将源码包下载至步骤33创建的资源子目录中。
本应用实例,提出了基于Koji系统的源码包远程下载的插件程序的实现方法,可解决Koji系统无法处理的编译软件包的源文件及起源码包存放在同一网络节点的不同位置或不同的网络节点的编译场景,同时还可以兼容Koji系统原本的编译机制,从而能够提高软件包编译效率。应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种源码包下载装置,该装置基于软件包构建系统实现,包括:文件获取模块510、文件解析模块520和源码下载模块530,其中:
文件获取模块510,用于在检测到软件包构建系统下载完成待编译软件包的编译目录时,从编译目录中获取待编译软件包的元数据文件;
文件解析模块520,用于对元数据文件进行解析,得到目标源码包的存放路径信息,目标源码包为编译待编译软件包时所需要的源码包;
源码下载模块530,用于从存放路径信息指示的目标位置获取目标源码包,并将目标源码包下载至编译目录中的指定位置。
在一个实施例中,文件获取模块510获取编译目录的目录路径信息,从目录路径信息中提取待编译软件包的软件包名称信息和元数据字段信息;根据软件包名称信息和元数据字段信息从编译目录中确定元数据文件。
在一个实施例中,文件获取模块510还用于判断编译目录中的指定位置上是否已经存在目标源码包,若否,则进入执行对元数据文件进行解析的步骤。
在一个实施例中,对元数据文件进行解析之前,文件获取模块510还用于判断编译目录是否属于有效的文件版本控制仓库,若是,则进入执行对元数据文件进行解析的步骤。
在一个实施例中,源码下载模块530获取目标源码包的加密散列值,从目标位置的多个源码包中筛选加密散列值与目标源码包的加密散列值相匹配的源码包,将筛选出的源码包确认为目标源码包。
在一个实施例中,将目标源码包下载至编译目录中的指定位置之前,源码下载模块530还用于检测编译目录所在的当前网络节点中是否加载了远程下载指令,若否,则在当前网络节点中加载远程下载指令。
在一个实施例中,源码下载模块530确定编译目录中的当前编译分支,在当前编译分支下创建资源子目录,将目标源码包下载至资源子目录中。
关于源码包下载装置的具体限定可以参见上文中对于源码包下载方法的限定,在此不再赘述。上述源码包下载装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
上述源码包下载装置,在检测到软件包构建系统下载完成待编译软件包的编译目录后,触发进入获取并解析元数据文件的步骤,通过解析元数据文件,得到待编译软件包所需要的源码包的存放路径信息,从该存放路径信息所指示的位置拉取该源码包到该编译目录的指定位置。采用本方案,在软件包编译之前,无需手动将软件包的源文件及其对应的源码包整理至同一网路节点的同一目录下,软件包编译时,即使下载的编译目录中没有包含源码包,也可以继续将编译任务进行下去,因此,减少了编译前期的人工作业时间和作业量,提高了软件包编译的效率。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种源码包下载方法。
在另一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种源码包下载方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6和图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:在检测到软件包构建系统下载完成待编译软件包的编译目录时,从编译目录中获取待编译软件包的元数据文件;对元数据文件进行解析,得到目标源码包的存放路径信息,目标源码包为编译待编译软件包时所需要的源码包;从存放路径信息指示的目标位置获取目标源码包,并将目标源码包下载至编译目录中的指定位置。
在一个实施例中,处理器执行计算机程序实现从编译目录中获取待编译软件包的元数据文件时,具体实现以下步骤:获取编译目录的目录路径信息,从目录路径信息中提取待编译软件包的软件包名称信息和元数据字段信息;根据软件包名称信息和元数据字段信息从编译目录中确定元数据文件。
在一个实施例中,处理器执行计算机程序实现对元数据文件进行解析之前,还实现以下步骤:判断编译目录中的指定位置上是否已经存在目标源码包,若否,则进入执行对元数据文件进行解析的步骤。
在一个实施例中,处理器执行计算机程序实现对元数据文件进行解析之前,还实现以下步骤:判断编译目录是否属于有效的文件版本控制仓库,若是,则进入执行对元数据文件进行解析的步骤。
在一个实施例中,处理器执行计算机程序实现从存放路径信息指示的目标位置获取目标源码包时,具体实现以下步骤:获取目标源码包的加密散列值,从目标位置的多个源码包中筛选加密散列值与目标源码包的加密散列值相匹配的源码包,将筛选出的源码包确认为目标源码包。
在一个实施例中,处理器执行计算机程序实现将目标源码包下载至编译目录中的指定位置之前,还实现以下步骤:检测编译目录所在的当前网络节点中是否加载了远程下载指令,若否,则在当前网络节点中加载远程下载指令。
在一个实施例中,处理器执行计算机程序实现将目标源码包下载至编译目录中的指定位置时,具体实现以下步骤:确定编译目录中的当前编译分支,在当前编译分支下创建资源子目录,将目标源码包下载至资源子目录中。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:在检测到软件包构建系统下载完成待编译软件包的编译目录时,从编译目录中获取待编译软件包的元数据文件;对元数据文件进行解析,得到目标源码包的存放路径信息,目标源码包为编译待编译软件包时所需要的源码包;从存放路径信息指示的目标位置获取目标源码包,并将目标源码包下载至编译目录中的指定位置。
在一个实施例中,计算机程序被处理器执行实现从编译目录中获取待编译软件包的元数据文件时,具体实现以下步骤:获取编译目录的目录路径信息,从目录路径信息中提取待编译软件包的软件包名称信息和元数据字段信息;根据软件包名称信息和元数据字段信息从编译目录中确定元数据文件。
在一个实施例中,计算机程序被处理器执行实现对元数据文件进行解析之前,还实现以下步骤:判断编译目录中的指定位置上是否已经存在目标源码包,若否,则进入执行对元数据文件进行解析的步骤。
在一个实施例中,计算机程序被处理器执行实现对元数据文件进行解析之前,还实现以下步骤:判断编译目录是否属于有效的文件版本控制仓库,若是,则进入执行对元数据文件进行解析的步骤。
在一个实施例中,计算机程序被处理器执行实现从存放路径信息指示的目标位置获取目标源码包时,具体实现以下步骤:获取目标源码包的加密散列值,从目标位置的多个源码包中筛选加密散列值与目标源码包的加密散列值相匹配的源码包,将筛选出的源码包确认为目标源码包。
在一个实施例中,计算机程序被处理器执行实现将目标源码包下载至编译目录中的指定位置之前,还实现以下步骤:检测编译目录所在的当前网络节点中是否加载了远程下载指令,若否,则在当前网络节点中加载远程下载指令。
在一个实施例中,计算机程序被处理器执行实现将目标源码包下载至编译目录中的指定位置时,具体实现以下步骤:确定编译目录中的当前编译分支,在当前编译分支下创建资源子目录,将目标源码包下载至资源子目录中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种源码包下载方法,所述方法基于软件包构建系统实现,所述方法包括:
在检测到所述软件包构建系统下载完成待编译软件包的编译目录时,从所述编译目录中获取所述待编译软件包的元数据文件;
对所述元数据文件进行解析,得到目标源码包的存放路径信息,所述目标源码包为编译所述待编译软件包时所需要的源码包;
从所述存放路径信息指示的目标位置获取所述目标源码包,并将所述目标源码包下载至所述编译目录中的指定位置。
2.根据权利要求1所述的方法,其特征在于,所述从所述编译目录中获取所述待编译软件包的元数据文件,包括:
获取所述编译目录的目录路径信息,从所述目录路径信息中提取所述待编译软件包的软件包名称信息和元数据字段信息;
根据所述软件包名称信息和所述元数据字段信息从所述编译目录中确定所述元数据文件。
3.根据权利要求1所述的方法,其特征在于,所述对所述元数据文件进行解析之前,所述方法还包括:
判断所述编译目录中的指定位置上是否已经存在所述目标源码包,若否,则进入执行所述对所述元数据文件进行解析的步骤。
4.根据权利要求1所述的方法,其特征在于,所述对所述元数据文件进行解析之前,所述方法还包括:
判断所述编译目录是否属于有效的文件版本控制仓库,若是,则进入执行所述对所述元数据文件进行解析的步骤。
5.根据权利要求1所述的方法,其特征在于,所述从所述存放路径信息指示的目标位置获取所述目标源码包,包括:
获取所述目标源码包的加密散列值,从所述目标位置的多个源码包中筛选加密散列值与所述目标源码包的加密散列值相匹配的源码包,将筛选出的源码包确认为所述目标源码包。
6.根据权利要求1所述的方法,其特征在于,所述将所述目标源码包下载至所述编译目录中的指定位置之前,所述方法还包括:
检测所述编译目录所在的当前网络节点中是否加载了远程下载指令,若否,则在所述当前网络节点中加载所述远程下载指令。
7.根据权利要求1所述的方法,其特征在于,所述将所述目标源码包下载至所述编译目录中的指定位置,包括:
确定所述编译目录中的当前编译分支,在所述当前编译分支下创建资源子目录,将所述目标源码包下载至所述资源子目录中。
8.一种源码包下载装置,其特征在于,所述装置基于软件包构建系统实现,所述装置包括:
文件获取模块,用于在检测到所述软件包构建系统下载完成待编译软件包的编译目录时,从所述编译目录中获取所述待编译软件包的元数据文件;
文件解析模块,用于对所述元数据文件进行解析,得到目标源码包的存放路径信息,所述目标源码包为编译所述待编译软件包时所需要的源码包;
源码下载模块,用于从所述存放路径信息指示的目标位置获取所述目标源码包,并将所述目标源码包下载至所述编译目录中的指定位置。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111119589.3A CN113835713B (zh) | 2021-09-24 | 2021-09-24 | 源码包下载方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111119589.3A CN113835713B (zh) | 2021-09-24 | 2021-09-24 | 源码包下载方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113835713A true CN113835713A (zh) | 2021-12-24 |
CN113835713B CN113835713B (zh) | 2023-08-08 |
Family
ID=78969719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111119589.3A Active CN113835713B (zh) | 2021-09-24 | 2021-09-24 | 源码包下载方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113835713B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114398102A (zh) * | 2022-01-18 | 2022-04-26 | 杭州米络星科技(集团)有限公司 | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 |
CN114564739A (zh) * | 2022-02-14 | 2022-05-31 | 浙江惠瀜网络科技有限公司 | 防止非法获取编码文件指标源码的方法及装置 |
CN116931954A (zh) * | 2023-09-18 | 2023-10-24 | 浙江简捷物联科技有限公司 | 一种嵌入式软件包编译构建方法、装置、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309706A (zh) * | 2013-05-24 | 2013-09-18 | 中标软件有限公司 | 基于Linux操作系统的内存文件系统制备方法及单元 |
-
2021
- 2021-09-24 CN CN202111119589.3A patent/CN113835713B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309706A (zh) * | 2013-05-24 | 2013-09-18 | 中标软件有限公司 | 基于Linux操作系统的内存文件系统制备方法及单元 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114398102A (zh) * | 2022-01-18 | 2022-04-26 | 杭州米络星科技(集团)有限公司 | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 |
CN114398102B (zh) * | 2022-01-18 | 2023-08-08 | 杭州米络星科技(集团)有限公司 | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 |
CN114564739A (zh) * | 2022-02-14 | 2022-05-31 | 浙江惠瀜网络科技有限公司 | 防止非法获取编码文件指标源码的方法及装置 |
CN116931954A (zh) * | 2023-09-18 | 2023-10-24 | 浙江简捷物联科技有限公司 | 一种嵌入式软件包编译构建方法、装置、设备及介质 |
CN116931954B (zh) * | 2023-09-18 | 2023-12-19 | 浙江简捷物联科技有限公司 | 一种嵌入式软件包编译构建方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113835713B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113835713B (zh) | 源码包下载方法、装置、计算机设备和存储介质 | |
CN109032662B (zh) | 代码文件生成方法、装置、计算机设备和存储介质 | |
CN108829477B (zh) | 界面跳转方法、装置、计算机设备和存储介质 | |
CN110569035B (zh) | 软件开发项目的代码编译方法、装置、设备和存储介质 | |
CN109814854B (zh) | 项目框架生成方法、装置、计算机设备和存储介质 | |
CN111679965A (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
US11113050B2 (en) | Application architecture generation | |
US20230036357A1 (en) | Method and apparatus for authority control, computer device and storage medium | |
CN111967017A (zh) | 生成依赖关系的方法、装置、终端设备及存储介质 | |
EP3447635A1 (en) | Application architecture generation | |
CN112395202B (zh) | 接口自动化测试方法、装置、计算机设备和存储介质 | |
CN112380130A (zh) | 基于调用依赖关系的应用测试方法和装置 | |
CN109508249B (zh) | 崩溃处理方法、装置及电子设备 | |
US20110078657A1 (en) | Operation management server, rollback execution method, and rollback execution program | |
CN111352631B (zh) | 一种接口兼容性检测方法及装置 | |
CN115454575B (zh) | jar包转换并自动加载的方法、装置、设备及存储介质 | |
CN108536444B (zh) | 插件编译方法、装置、计算机设备和存储介质 | |
CN113590179B (zh) | 插件检测方法、装置、电子设备及存储介质 | |
CN115543429A (zh) | 项目环境的搭建方法、电子设备及计算机可读存储介质 | |
CN115729590A (zh) | 服务部署方法、装置、设备和计算机可读存储介质 | |
CN115129348A (zh) | 应用程序的资源更新方法、装置、设备及可读存储介质 | |
CN114564385A (zh) | 软件测试方法、装置、计算机设备和存储介质 | |
CN111427770B (zh) | 一种资源测试方法及相关设备 | |
CN114003250A (zh) | 一种软件部署方法及装置 | |
CN112287343A (zh) | Sdk监控方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |