【技术实现步骤摘要】
一种面向自主架构的PyPI仓库系统及快速构建方法
[0001]本专利技术涉及一种面向自主架构的PyPI仓库系统及快速构建方法,属于计算机软件
技术介绍
[0002]众所周知,芯片是计算机等电子设备的核心与灵魂,因此,掌握着芯片行业就可谓掌握着计算机行业的命脉。目前处理器上所适配的开源软件不够完善,软件生态十分薄弱,导致用户使用自主架构的意愿较低。
[0003]对于对单个 Python 包进行代码移植,国内有部分厂商开发了用于配套自身所研发的国产处理器的代码迁移工具,这类工具可对 Python 包移植存在一定的辅助效果,例如华为推出的鲲鹏代码迁移工具 Porting Advisor 可对 Python 包中的 .so 动态链接库文件进行依赖分析;但是对于建设一个整体的自主架构 PyPI 仓库而言,尚未有人提出一套完整的流程方案。同时,现有的代码迁移工具的功能大多着重于对 C/C++ 语言进行分析,而没有根据 Python 包的特点对 Python 代码迁移设计针对性的功能。
[0004]目前自主架构软件生态研发人员在面对 Python 软件包时,往往采用“遇一移一、见招拆招”的手段,在遇到需要编译二进制发布文件的 Python 包时,一般凭经验定位需要移植的代码块并进行代码移植,若项目构建时出现报错则需要一一解决、反复尝试。除此以外,研发人员还需对 Python 包所依赖的其他 Python 包进行分析,并依次判断这些依赖包是否需要移植编译。这种方法对技术人员的专业水平有一定要求,无法保证移植 ...
【技术保护点】
【技术特征摘要】
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版本;扫描数据库,得到兼容...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。