一种面向自主架构的PyPI仓库系统及快速构建方法技术方案

技术编号:38685022 阅读:15 留言:0更新日期:2023-09-02 22:57
本发明专利技术公开了一种面向自主架构的PyPI仓库系统及快速构建方法,其中方法步骤包括,同步创建并定期执行多种定时任务,所述定时任务包括数据库备份定时任务、PyPI扫描定时任务和僵尸进程清理定时任务,扫描PyPI仓库以获取待分析的Python包及其发布版本,所述扫描包括PyPI全仓扫描和新增Python版本后扫描,对Python包进行分析、代码迁移、依赖问题处理、构建打包和分类标记,自动化自主架构PyPI仓库构建并筛查出需要人工进行分析处理的Python包,扫描自主架构软件仓库并建立索引知识库,对Python包的依赖情况进行分析。Python包的依赖情况进行分析。Python包的依赖情况进行分析。

【技术实现步骤摘要】
一种面向自主架构的PyPI仓库系统及快速构建方法


[0001]本专利技术涉及一种面向自主架构的PyPI仓库系统及快速构建方法,属于计算机软件


技术介绍

[0002]众所周知,芯片是计算机等电子设备的核心与灵魂,因此,掌握着芯片行业就可谓掌握着计算机行业的命脉。目前处理器上所适配的开源软件不够完善,软件生态十分薄弱,导致用户使用自主架构的意愿较低。
[0003]对于对单个 Python 包进行代码移植,国内有部分厂商开发了用于配套自身所研发的国产处理器的代码迁移工具,这类工具可对 Python 包移植存在一定的辅助效果,例如华为推出的鲲鹏代码迁移工具 Porting Advisor 可对 Python 包中的 .so 动态链接库文件进行依赖分析;但是对于建设一个整体的自主架构 PyPI 仓库而言,尚未有人提出一套完整的流程方案。同时,现有的代码迁移工具的功能大多着重于对 C/C++ 语言进行分析,而没有根据 Python 包的特点对 Python 代码迁移设计针对性的功能。
[0004]目前自主架构软件生态研发人员在面对 Python 软件包时,往往采用“遇一移一、见招拆招”的手段,在遇到需要编译二进制发布文件的 Python 包时,一般凭经验定位需要移植的代码块并进行代码移植,若项目构建时出现报错则需要一一解决、反复尝试。除此以外,研发人员还需对 Python 包所依赖的其他 Python 包进行分析,并依次判断这些依赖包是否需要移植编译。这种方法对技术人员的专业水平有一定要求,无法保证移植的充分性和准确性,而且步骤繁琐,效率低下。最后,由于目前自主架构 PyPI 仓库的缺失,用户在使用 Python 时经常遇到所需的 Python 包无法安装使用的情况,导致用户体验低下。

技术实现思路

[0005]为解决现有技术的不足,本专利技术的目的在于提供一种面向自主架构的PyPI仓库系统及快速构建方法,解决了现有技术中自主架构软件对Python 软件包适应性差、导致用户体验低的问题。
[0006]为了实现上述目标,本专利技术采用如下的技术方案:一种面向自主架构的PyPI仓库系统,包括数据库模块、日志模块、定时任务模块、Web管理界面模块、依赖分析模块、待分析Python包扫描模块和Python包分析与构建模块;数据库模块用于存储Python软件包的各类信息数据,以及实现业务逻辑接口供其他模块与数据库进行交互;日志模块用于接收并记录各个模块的运行日志;定时任务模块用于创建并执行待分析Python包定时扫描任务、僵尸进程定时清理任务和数据库定时备份任务;Web管理界面模块包括多个面板,面板用于研发人员在线浏览和管理Python包、PyPI仓库和PyPI仓库建设系统;
依赖分析模块用于分析Python包的Python依赖树和对软件仓库中软件的依赖情况;待分析Python包扫描模块用于以增量的方式扫描出还未在自主架构上进行分析和构建打包测试的Python包及其版本、以及兼容的Python版本;Python包分析与构建模块用于分析Python包信息,对Python包进行自动化代码迁移、依赖问题处理和构建打包。
[0007]一种面向自主架构的PyPI仓库快速构建方法,包括如下步骤:同步创建并定期执行多种定时任务,定时任务包括数据库备份定时任务、PyPI扫描定时任务和僵尸进程清理定时任务;扫描PyPI仓库以获取待分析的Python包及其发布版本,扫描包括PyPI全仓扫描和新增Python版本后扫描;对Python包进行分析、代码迁移、依赖问题处理、构建打包和分类标记,自动化自主架构PyPI仓库构建并筛查出需要人工进行分析处理的Python包;扫描自主架构软件仓库并建立索引知识库,对Python包的依赖情况进行分析。
[0008]进一步地,前述数据库备份定时任务的执行步骤包括:创建处理数据库备份定时任务,并设置定时间隔;到达设定时间隔后,执行数据库的备份。
[0009]进一步地,前述PyPI扫描定时任务的执行步骤包括:创建PyPI扫描定时任务,并设置定时间隔;判断待分析Python包扫描模块和Python 包分析与构建模块的状态:若待分析Python包扫描模块和Python 包分析与构建模块处于非运行状态,则调用待分析Python包扫描模块进行PyPI扫描,否则到达设定时间隔后,重新判断待分析Python包扫描模块和Python 包分析与构建模块的状态。
[0010]进一步地,前述僵尸进程清理定时任务的执行步骤包括:创建僵尸进程清理定时任务,并设置定时间隔;到达设定时间隔后,清理Python包分析与构建模块中产生的僵尸进程。
[0011]进一步地,前述PyPI全仓扫描步骤包括:基于下载的PyPI的索引HTML文件,分析得到PyPI仓库中当前所有Python包的列表;调用PyPI提供的API,获取PyPI当前最新事件的序列号,记为latest_serial;若本次PyPI扫描为第一次进行,则将PyPI中的所有Python包设置为待分析包,否则将上次扫描所记录的事件序列号last_serial作为参数,调用PyPI提供的API,获取自上次扫描之后新增的或是发生了更新的Python包,并设置为待分析包;将最新事件序列号latest_serial保存为last_serial,以供下次扫描时使用;遍历所有待分析包,基于PyPI提供的JSON API,判断 JSON 文件是否存在,若不存在,则将该待分析包从待分析列表中删除;遍历所有待分析包,基于其元数据JSON文件得到该包兼容自主架构上已支持Python版本的所有发布版本,并加入待分析列表。
[0012]进一步地,前述新增Python版本后扫描步骤包括:
在自主架构上添加新支持的Python版本;扫描数据库,得到兼容新增Python版本的Python包及其发布版本,生成待分析列表。
[0013]进一步地,前述对Python包进行分析、代码迁移、依赖问题处理、构建打包和分类标记,自动化自主架构PyPI仓库构建并筛查出需要人工进行分析处理的Python包的步骤包括:遍历待分析列表,基于待分析Python包的每个待分析版本的官方发布包情况及数据库中的状态信息,对其进行分析处理,状态信息包括:在数据库中已被标记为“源码缺失”“无需处理”或“构建失败”、已成功构建过自主架构二进制发布文件和、数据库中存在其他标记/无记录;若状态信息为,已成功构建过自主架构二进制发布文件,则为该包该版本所有兼容的但尚未构建打包的自主架构Python版本分别创建容器环境,并基于以往已成功构建的自主架构二进制发布文件的构建记录构建二进制发布文件,将构建所得的二进制发布文件上传至自主架构PyPI仓库,并更新数据库中该包该版本的构建记录及相关信息;若状态信息为,在数据库中已被标记为“源码缺失”“无需处理”或“构建失败”,则将所有未成功构建的Python包及其他版本进行汇总;若状态信息为,在数据库中存在其他标记/无记录,则进一步进行分析和标记:若在PyPI中存在架本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向自主架构的PyPI仓库系统,其特征在于,包括数据库模块、日志模块、定时任务模块、Web管理界面模块、依赖分析模块、待分析Python包扫描模块和Python包分析与构建模块;所述数据库模块用于存储Python软件包的各类信息数据,以及实现业务逻辑接口供其他模块与数据库进行交互;所述日志模块用于接收并记录各个模块的运行日志;所述定时任务模块用于创建并执行待分析Python包定时扫描任务、僵尸进程定时清理任务和数据库定时备份任务;所述Web管理界面模块包括多个面板,所述面板用于研发人员在线浏览和管理Python包、PyPI仓库和PyPI仓库建设系统;所述依赖分析模块用于分析Python包的Python依赖树和对软件仓库中软件的依赖情况;所述待分析Python包扫描模块用于以增量的方式扫描出还未在自主架构上进行分析和构建打包测试的Python包及其版本、以及兼容的Python版本;所述Python包分析与构建模块用于分析Python包信息,对Python包进行自动化代码迁移、依赖问题处理和构建打包。2.一种面向自主架构的PyPI仓库快速构建方法,其特征在于,包括如下步骤:同步创建并定期执行多种定时任务,所述定时任务包括数据库备份定时任务、PyPI扫描定时任务和僵尸进程清理定时任务;扫描PyPI仓库以获取待分析的Python包及其发布版本,所述扫描包括PyPI全仓扫描和新增Python版本后扫描;基于对Python包进行分析、代码迁移、依赖问题处理、构建打包和分类标记,自动化自主架构PyPI仓库构建并筛查出需要人工进行分析处理的Python包;扫描自主架构软件仓库并建立索引知识库,对Python包的依赖情况进行分析。3.根据权利要求2所述的一种面向自主架构的PyPI仓库快速构建方法,其特征在于,所述数据库备份定时任务的执行步骤包括:创建处理数据库备份定时任务,并设置定时间隔;到达设定时间隔后,执行数据库的备份。4.根据权利要求2所述的一种面向自主架构的PyPI仓库快速构建方法,其特征在于,所述PyPI扫描定时任务的执行步骤包括:创建PyPI扫描定时任务,并设置定时间隔;判断待分析Python包扫描模块和Python 包分析与构建模块的状态:若待分析Python包扫描模块和Python 包分析与构建模块处于非运行状态,则调用待分析Python包扫描模块进行PyPI扫描,否则到达设定时间隔后,重新判断待分析Python包扫描模块和Python 包分析与构建模块的状态。5.根据权利要求2所述的一种面向自主架构的PyPI仓库快速构建方法,其特征在于,所述僵尸进程清理定时任务的执行步骤包括:创建僵尸进程清理定时任务,并设置定时间隔;到达设定时间隔后,清理Python包分析与构建模块中产生的僵尸进程。
6.根据权利要求2所述的一种面向自主架构的PyPI仓库快速构建方法,其特征在于,所述PyPI全仓扫描步骤包括:基于下载的PyPI的索引HTML文件,分析得到PyPI仓库中当前所有Python包的列表;调用PyPI提供的API,获取PyPI当前最新事件的序列号,记为latest_serial;若本次PyPI扫描为第一次进行,则将PyPI中的所有Python包设置为待分析包,否则将上次扫描所记录的事件序列号last_serial作为参数,调用PyPI提供的API,获取自上次扫描之后新增的或是发生了更新的Python包,并设置为待分析包;将最新事件序列号latest_serial保存为last_serial,以供下次扫描时使用;遍历所有待分析包,基于PyPI提供的JSON API,判断 JSON 文件是否存在,若不存在,则将该待分析包从待分析列表中删除;遍历所有待分析包,基于其元数据JSON文件得到该包兼容自主架构上已支持Python版本的所有发布版本,并加入待分析列表。7.根据权利要求2所述的一种面向自主架构的PyPI仓库快速构建方法,其特征在于,所述新增Python版本后扫描步骤包括:在自主架构上添加新支持的Python版本;扫描数据库,得到兼容...

【专利技术属性】
技术研发人员:荣伊龄王俊冯江
申请(专利权)人:无锡先进技术研究院
类型:发明
国别省市:

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

1