背景
Curve 联合 openEuler 举办的 Summer Code Camp 已圆满结束,本次开发者活动共有 14 位新晋 contributor。今天一起来看看新晋 contributor @peter5232 是如何顺利完成一道 hard 题,顺利抱走开发奖品——零刻开发机、华为耳机、小米手环的吧~(好多奖品!羡慕)
Curve
contributor
@peter5232
本科东北大学的人工智能专业,目前就读于西北工业大学的无人系统技术研究院的无人系统专业,常用语言c++、python、shell,平常闲暇时光看知乎、刷bilibili、览GitHub,找找自己感兴趣的开源项目进行学习,参与开源社区的建设。
暑假期间关注到很多活动,比如说开源之夏等,在开源之下中看到过 Curve 的项目,也研究过对应的课题,由于没有分布式和存储的底子就没有参加项目,但关注了 Curve 的 GitHub 以及公众号。某天刷微信的时候就看到了 Curve 的社区活动,发现有"openEuler 适配“的项目,以自己之前的开发经验来说,适配比较简单的,所以就开始研究这个项目。
一开始并没有报名,而是先弄了个 openEuelr 的虚拟机在上面测试,适配后发现难度可以,就开始和 menter 讨论和制定方案,拿下了 issue。

在开始适配之前
首先得看文档,看下 Curve 如何构建、部署、测试,好在 Curve 的文档非常健全,然后就开始按照文档在虚拟机上进行构建了(向 openEuler 社区申请了一台 openEuler 的测试机器)。
开发流程

可以看到是以 Dockerfile 为基础分阶段构建的,那就可以制定以下几个步骤:
1.先使用 yum 替换掉 apt 安装的包,如果 yum 不包含包,就通过下载源码手动编译的方式补齐(其中补齐的是 libfiu、python2)。
2.补齐依赖后开始按照 debian11 给好的编译步骤进行照搬,然后发生错误进行修改,在 x86 的 openEuler 适配中没有遇到太多的问题,因为 Curve 本身支持的就是 x86 架构,但是在 arm64 的适配过程中遇到了很多错误,如下图。

图 1 bazel 没有clean的原因

图 2 修改期间因为版本变动导致的错误
其中遇到的最多的还是指令集的问题比如 -msse 没有对应的编译参数,还有一个 x86 宏的未定义问题,这些问题通过百度基本上可以解决。
https://github.com/opencurve/curve/pull/2789 感兴趣的小伙伴可以自行了解 PR。
1.这是第一次真正的参加社区贡献,个人感觉 Curve 社区比其他的一些国内的社区要活跃,在群里说自己的问题几乎可以非常快的得到回复。
2.在这次开发中学习到了 bazel 构建、arm64 的系统迁移等知识,非常快乐!
开发收获



关于 Curve
Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。
GitHub:https://github.com/opencurve/curve 官网:https://opencurve.io/ 用户论坛:https://ask.opencurve.io/ 微信群:搜索群助手微信号 OpenCurve_bot





