鲲鹏社区首页
中文
注册
openEuler社区开源贡献实践

openEuler社区开源贡献实践

openEuler

发表于 2023/07/22

0

实践简介

尊敬的鲲鹏开发者您好,openEuler社区针对操作系统内核、服务器、云计算、边缘和嵌入式等全场景应用进行了全栈创新,打造了一个开放、多元和架构包容的软件生态体系和创新平台。您可以通过阅读本文进行openEuler社区开源贡献实践的快速入门。

本文主要通过步骤指引带领认证者体验参与openEuler社区开源贡献的主要流程,包括以下内容:

(1) Gitee账号注册

(2) CLA签署

(3) 微认证项目个人仓创建

(4) 社区Issue提交

(5) openEuler环境下软件开发基础

(6) openEuler社区代码提交

基础技能:

(1) 了解常用的Linux操作命令

(2) 了解常用的Git操作命令

openEuler社区简介

openEuler脱胎于EulerOS,EulerOS是华为公司自2010年起研发使用的服务器操作系统,Linux发行版之一,名字来源于著名数学家莱昂哈德·欧拉(Leonhard Euler);2019年9月,EulerOS正式开源,命名为openEuler。2021年9月25日,openEuler全新发布,升级为统一的面向数字基础设施的开源操作系统,通过一套操作系统架构,南向支持多样性设备,北向覆盖全场景应用,横向对接鸿蒙通过能力共享实现生态互通。2021年11月openEuler正式捐赠至开放原子基金会(OpenAtom Foundation),成为开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目。

若要获取更多openEuler社区的相关信息,请访问openEuler社区官网:

https://www.openeuler.org/zh/

准备工作

1.申请鲲鹏远程实验室资源

实验过程需要在鲲鹏平台上完成,为了方便开发者在鲲鹏环境上进行开发,鲲鹏在鲲鹏社区中提供了鲲鹏远程实验室资源供各位开发者免费申请。

为了兼顾所有鲲鹏开发者的开发体验,鲲鹏远程实验室中提供了云开发环境(开发态模式)和远程服务器(黑框模式)。本文涉及案例会在云开发环境上进行,开发者在申请云开发环境后可以直接通过在线IDE的方式打开页面进行操作。降低了开发者在鲲鹏上的开发门槛。

首先我们访问鲲鹏社区的远程实验室页面https://www.hikunpeng.com/zh/developer/cloud-lab,申请云开发环境:

之后输入自己的邮箱地址,选择openEuler 20.03 LTS-SP1系统,申请成功后点击“打开在线IDE”按钮,进入云开发环境中,云开发环境为开发者提供了在线Vscode页面,方便开发者直接在鲲鹏上进行开发。



OpenEuler社区开源贡献实践

1. Gitee账号注册

openEuler社区使用Gitee作为代码托管平台,因此参与openEuler社区贡献首先需要注册Gitee账号,在浏览器中访问https://gitee.com/signup,并按照指引注册Gitee账号。


2.CLA签署

在正式开始openEuler社区贡献前,还需要签署CLA(Contributor License Agreement,贡献者许可协议),CLA定义了知识产权被贡献给openEuler社区的具体条款。

在浏览器中访问 https://clasign.osinfra.cn/sign/Z2l0ZWUlMkZvcGVuZXVsZXI= ,点击“签署个人CLA”。


认真阅读CLA协议,并正确填写Gitee-ID、邮箱、姓名,并点击签署。


3.微认证项目个人仓创建

(1) 在浏览器中访问https://gitee.com/,使用前一步中注册的账号登录Gitee;

(2) 进入微认证软件仓库:https://gitee.com/openeuler/micro-certification

(3) 点击“Fork”,如下图所示,在个人账号下创建微认证项目仓库的个人Fork。

(4) 进入在线IDE页面后,点击侧边栏第一个图标后依次点击“终端”、“新建终端”,在终端执行以下命令:

git config --global user.email ‘{签署CLA时所使用的Email }’
git config --global user.name ‘{你的名字}’

例如下图所示:


注:{}中的部分请根据自己的实际情况替换。

(5) 进入到个人Fork仓,复制个人仓项目地址,如下图所。


(6) 执行以下命令,将个人软件仓库中的micro-certification项目克隆到本地开发环境中:

git clone {复制的个人仓项目地址}

注:{}中的部分请使用自己的个人仓项目地址进行替换。

4.社区Issue提交

(1) 进入微认证软件仓库:https://gitee.com/openeuler/micro-certification

(2) 点击Issues标签,创建新的Issue,如下图所示。

(3) 按照参考规范,如下图所示,填写Issue信息并点击提交


5.openEuler环境下的软件开发

本环节将以为openEuler社区提供一款新的软件包angle为例,带领学生了解openEuler环境下的软件开发流程以及为openEuler社区引入新的软件包这种openEuler社区主要贡献点的整体流程。

(1) 使用rpmbuild构建软件包至少需要包含两部分内容:源码包和Spec文件,执行以下命令手动创建以下两个目录。

mkdir -p /root/rpmbuild/SOURCES/
mkdir -p /root/rpmbuild/SPECS/

注:/{user_root}/rpmbuild/SOURCES/目录下包含需要进行打包的软件源代码压缩包,/{user_root}/rpmbuild/SPECS/目录下包含用于指导rpmbuild完成打包操作的配置文件,其中{user_root}为当前用户根目录。

(2) 执行下面命令,进入micro-certification代码仓库并创建个人对应的分支。

cd /root/micro-certification
git checkout -b my_branch

注:分支名my_branch可以根据实际情况进行替换。

(3) 执行下面的命令,在新分支下创建个人目录:

mkdir {your_name}

其中{your_name}根据实际情况进行替换

(4) SPEC文件是指导 rpmbuild 工作的配置文件,通常包含了该软件包的名称、版本、开源协议等相关信息以及构建各环节的脚本等配置:

Summary:软件的主要说明;

Name:软件的名称(RPM文件的名称构成之一);

Version:软件的版本(RPM文件名构成之一);

Release:该版本构建次数说明(RPM文件名构成之一);

License:用于指定软件的许可证类型;

URL:软件包源代码的下载地址;

SourceN:用于指定软件包源代码的位置的标签,其中N是一个数字,通常Source0是主要源代码,而Source1、Source2等则是附加的源代码包;

PatchN:指软件包的补丁文件,N代表补丁文件的序号;

BuildRoot:用于指定RPM包构建时的根目录;

Requires:指定软件包在安装和使用过程中的依赖关系;

BuildRequires:指定在构建软件包所需要的编译工具、库文件、开发包等依赖项;

对于软件构建的脚本控制则位于指定的宏定义后:

a.%description:用于描述软件包的简介和功能,在执行rpm -qi {软件包名称} 展示的一些基础说明就包括这里的设置信息。

b.%prep:用于指定在构建软件包之前需要执行的准备工作,它的主要任务可以包括:进行软件的补丁(patch)等相关工作;寻找软件所需要的目录是否已经存在。

c.%build:用于指定在构建软件包时需要执行的命令和操作。

d.%install: 用于指定软件包的安装过程。

e.%files:用于指定软件包中需要包含的文件,以备查验用。此外也可以指定每个文件的类型,包括帮助文件(%doc指定的文件)与配置文件(%config指定的文件)。

d.%changelog: 主要记录该软件曾经的更新记录,“*”后面应该要以时间、修改者、email 与软件版本作为说明,“-”后面则是详细的说明。

(5) 点击左上角,选择“文件”-“打开文件夹”,在页面上方弹出的输入框中输入路径/ root/micro-certification/my_test,点击左侧新建文件按钮,新建文件名为anglerpm.spec的配置文件,并将以下内容拷贝至该文件中,如下图所示。

Name: anglerpm
Version: 0.1
Release: 1%{?dist}
Summary: Get your name and show sin and cos value.
Group: Scientific Support License: GPLv2 URL: http:/playground.openeuler.org/ Source0: anglerpm-0.1.tar.gz

# BuildRequires: %description This package will let you input your name and calculate sin cos value %prep %setup -q %build ./configure make %install mkdir -p %{buildroot}/usr/local/bin install -m 755 anglerpm %{buildroot}/usr/local/bin %files /usr/local/bin/anglerpm %changelog * Mon Feb 14 2022 openEuler Playground <playground@openeuler.org> - 0.1 - Build the program & Happy Valentine's Day

(6) 执行以下命令将构建软件包所需文件拷贝至rpmbuild工作目录。

cp ../anglerpm-0.1.tar.gz /root/rpmbuild/SOURCES/
 cp anglerpm.spec /root/rpmbuild/SPECS/

(7) 执行以下命令开始制作rpm软件包。

cd /root/rpmbuild/SPECS/ && rpmbuild -ba anglerpm.spec

(8) 若上述步骤执行成功,则执行以下命令查看构建成功的rpm软件包。

cd /root/rpmbuild/RPMS/aarch64 && ls -l

(9) 执行以下命令安装构建完成的rpm软件包。

rpm -i anglerpm-0.1-1.aarch64

(10) 执行以下命令并与程序进行交互。

anglerpm

6 openEuler社区提交PR

(1) 执行以下命令进入micro-certification代码仓库,并确保当前处于个人开发分支。

cd /root/micro-certification
git branch

(2) 执行以下命令将修改完成的anglerpm.spec进行提交。

git add .
git commit -a -s

(3) 在弹出的编辑页面中填写Commit Message,具体可参考如下图片:


其中1为Commit Message标题,用于简单描述本次Commit:“This is a example commit for openEuler micro-certification.”;2为commit Message主体内容,用于详细描述本次Commit的修改内容:“This is the content,please modity according to your own changes.”;3为本次修改所包含的内容,请确认是否正确

(4) 编辑完成后敲击“ESC”,并输入“:wq”进行保存。

(5) 执行以下命令将代码提交至个人仓库。

git push --set-upstream origin {your_branch_name}

其中{your_branch_name}用新创建的分支名替换,提交时会提示输入gitee账号密码,请按照提示进行输入。

(6) 创建PR(Pull Request),将个人仓库中的修改提交到社区主干分支。

1) 浏览器进入个人代码仓库:

https://gitee.com/{your_gitee_id}/micro-certification 其中{your_gitee_id}根据自己的Gitee ID进行替换。

2) 使用分支选项栏将分支切换到新提交修改的分支,如下图所示。


3) 点击创建Pull Request。


4) 通过下拉选项栏将目标分支切换为micro-certification


5) 正确填写PR信息。

6) 提交PR并等待社区Maintainer Review。

实践总结

本次openEuler开源社区贡献实践,您应该获得以下能力:

1、 了解openEuler社区贡献的主要流程;

2、 签署openEuler个人开发者CLA;

3、 掌握git的基本使用;

4、 掌握如何在openEuler环境下进行软件开发;

5、 掌握如何在openEuler环境下构建rpm软件包;

6、 掌握如何向openEuler社区提交PR。

希望能够通过本次事件增加对openEuler社区及相关创新项目的理解和兴趣,同时您也可以访问openEuler社区官方网站,获取更多信息:https://www.openeuler.org/zh/

本页内容