写点什么

【我和 openGauss 的故事】构建 openGauss 开发编译提交一体化环境

作者:daydayup
  • 2023-08-12
    北京
  • 本文字数:2612 字

    阅读完需:约 9 分钟

大数据模型 [openGauss](javascript:void(0);) 2023-07-29 17:58 发表于四川

前文

本文适合对 openGauss 源代码有好奇心的爱好者,那么一个友好的 openGauss 源代码环境应该是怎么样的。openGauss 的开发环境是如何设置的?openGauss 的编译环境是如何构建的?如何向 openGauss 提交代码,笔者集合官方和几位博主实践提供友好的 openGauss 源代码阅读环境。在这个环境,你可以阅读、可以开发、可以调试、可以运行。你可以马上把它提交 gitee,也可以选择向 openGauss 合并。


需要 windows 主机,linux 服务器,gitee 帐号各一个,你需要准备以下:


  • centos7.6 作为 linux 服务器,即调试编译环境,

  • Visual Studio code 1.80 安装在 windows 主机上,即开发阅读环境

  • 确认已注册 gitee 帐号,已经拥有 gitee 用户名和 gitee 密码


openGauss 源代码阅读环境的思路如下,分为 4 步走。


  1. 用自己帐号 gitee 把源码 openGauss 相关的都 fork 到自己的仓库下面

  2. centos7.6 服务器上运行 clone,把自己的远端代码全部弄下来。centos7.6 服务器安装调试工具,验证调试代码可编译可运行【此刻已经有 openGauss 安装包生成】

  3. windows 主机安装 vscode,安装 Remote -SSHRemote - Development 插件。安装后可以友好阅读并修改远端 centos7.6 的 gauss 内核代码,修改后保持同步。

  4. centos7.6 服务器设置 git 环境,保持与自己的 gitee 仓库同步,等待自己的 gitee 仓库与 opengauss 审核 并合入。

第一步,克隆官方 openGauss 环境

登陆 gitee,把官方 openGauss 的代码 fork 过来, https://gitee.com/opengauss/openGauss-server


点击 fork



弹出窗口



这时可以看到自己的仓库,https://gitee.com/xxxxx/openGauss-server


第二步,centos7.6 打造编译开发环境

此处需要 openGauss-server、openGauss-OM 和 openGauss-5.0.0-CentOS-64bit-all.tar.gz


mkdir /tmp/omm500cd  /tmp/omm500git clone https://gitee.com/opengauss/openGauss-OM.gitgit clone  https://gitee.com/angryart/openGauss-server wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/binarylibs/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz

tar -xvf openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz

注入环境变量yum remove libaio-devel libaio -yyum install -y git gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel libaio libaio-devel flex bison ncurese-devel glibc-devel patch rehat-lsb-core readline-devel perl gcc gcc-c++
# 配置环境变量echo "export CODE_BASE=/tmp/omm500/openGauss-server # Path of the openGauss-server file " >> ~/.bashrcecho "export BINARYLIBS=/tmp/omm500/openGauss-third_party_binarylibs_Centos7.6_x86_64 # Path of the binarylibs file " >> ~/.bashrcecho "export GAUSSHOME=\$CODE_BASE/dest/ " >> ~/.bashrcecho "export GCC_PATH=\$BINARYLIBS/buildtools/gcc7.3/ " >> ~/.bashrcecho "export CC=\$GCC_PATH/gcc/bin/gcc " >> ~/.bashrcecho "export CXX=\$GCC_PATH/gcc/bin/g++ " >> ~/.bashrcecho "export LD_LIBRARY_PATH=\$GAUSSHOME/lib:\$GCC_PATH/gcc/lib64:\$GCC_PATH/isl/lib:\$GCC_PATH/mpc/lib/:\$GCC_PATH/mpfr/lib/:\$GCC_PATH/gmp/lib/:\$LD_LIBRARY_PATH " >> ~/.bashrcecho "export PATH=\$GAUSSHOME/bin:\$GCC_PATH/gcc/bin:\$PATH " >> ~/.bashrcecho "export PGDATA=/opt/omm500/data" >> ~/.bashrcecho "export PGPORT=5432" >> ~/.bashrcecho "export PGDATABASE=postgres" >> ~/.bashrc

# 加载环境变量source ~/.bashrc
# 进入源码目录cd $CODE_BASE
# 编译server (这里就是openGauss提供的一键式编译脚本)sh build.sh -m release -3rd $BINARYLIBS -pkg
复制代码


如果成功编译好,如下界面



chmod +x build.sh 这个是opengauss安装的工具 ./build.sh -3rd $BINARYLIBS_PATH
复制代码


成功后,会有两个文件输出


第三步,windows vs code 安装扩展插件连上仓库

windows 下面已经安装好 vs code,网上找,直接下一步下一步进行安装,准备安装



选择 Remote-SSHRemote Development



依下图 123,对目标服务器进行连接。



点击框中搜索相关 openGauss 的目录



修改源码,openGauss 的内核代码是 gausskernel 下面, src\gausskernel\storage\access\archive\archive_am.cpp,增多一段 “Just for a test”



centos7.6 下面查看 src\gausskernel\storage\access\archive\archive_am.cpp ,发现文件的确已经发生变化。


第四步,centos7.6 服务器设置 git 环境

[root@server131 omm500]# git config  --global  user.name "xxxx"    gitee帐号名称[root@server131 omm500]# git config  --global  user.email "xxx@139.com"   gitee邮箱[root@server131 omm500]# ssh-keygen  -t rsa  -C  "xxx@139.com"    gitee帐号密码Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):Created directory '/root/.ssh'.Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:SHA256:RDYDta9IiPzK5eZCXu8bU0kOgQuhim9SwvSuZJmsCEI 15920142730@139.comThe key's randomart image is:+---[RSA 2048]----+|  .. .oo*        || .. .  + +       ||.. . .. +        ||=..... = o       ||+E+.. . S .      ||o+=... o .       ||+Oooo.+ .        ||B+++. .o         ||o.o+o.o.         |+----[SHA256]-----+[root@server131 openGauss-server]# git clone  https://gitee.com/angryart/openGauss-server[root@server131 openGauss-server]# git  remote  add upstream  https://gitee.com/opengauss/openGauss-server[root@server131 openGauss-server]# git  remote  set-url  --push upstream no_push
提交代码[root@server131 openGauss-server]# git add .[root@server131 openGauss-server]# git commit -m "message"[root@server131 openGauss-server]# git push origin master
复制代码


最后检验自己的仓库,已经提交成功



下面是自己的远端仓库与 openGauss 同步,需要提交 pull request



这里要写清楚改了什么,源分支是你修改的源代码, 目标分支是 openGauss 侧的的,如果官方同意,就会把你的代码合并到里面去。



用户头像

daydayup

关注

还未添加个人签名 2023-07-18 加入

还未添加个人简介

评论

发布
暂无评论
【我和openGauss的故事】构建openGauss开发编译提交一体化环境_daydayup_InfoQ写作社区