etcd
etcd 移植
移植的环境为 cr.loongnix.cn/library/golang:1.19-alpine 镜像。
拉取 etcd 源码并切换到 3.5.5 版本
修改脚本和源码
diff --git a/scripts/build-binary b/scripts/build-binary
index b819a3e57..8021192b9 100755
--- a/scripts/build-binary
+++ b/scripts/build-binary
@@ -77,6 +77,7 @@ function main {
TARGET_ARCHS+=("arm64")
TARGET_ARCHS+=("ppc64le")
TARGET_ARCHS+=("s390x")
+ TARGET_ARCHS+=("loong64")
fi
if [ ${GOOS} == "darwin" ]; then
diff --git a/server/etcdmain/etcd.go b/server/etcdmain/etcd.go
index 470eb83be..9ed379b50 100644
--- a/server/etcdmain/etcd.go
+++ b/server/etcdmain/etcd.go
@@ -471,6 +471,7 @@ func checkSupportArch() {
// to add a new platform, check https://github.com/etcd-io/website/blob/main/content/en/docs/next/op-guide/supported-platform.md
if runtime.GOARCH == "amd64" ||
runtime.GOARCH == "arm64" ||
+ runtime.GOARCH == "loong64" ||
runtime.GOARCH == "ppc64le" ||
runtime.GOARCH == "s390x" {
return
对 golang env 进行修改
编译
另起一个容器,配置: 按照同样的流程 go mod vendor,使用 vendor/golang.org/x 替换待编译容器中的 vendor/golang/x,在 vendor/go.etcd.io/bbolt/下 添加 bolt_loong64.go,在 etcdctl 以及 etcdutl 目录下也进行上述替换和添加操作。 最后在 etcd 根目录下执行:make / make build
冒烟测试
rpm 包制作
制作 rpm 包的环境为 cr.loongnix.cn/loongson/loongnix-server:8.4.0 镜像。
在 x86_64 机器上拉取同版本 rpm 包
在 x86_64 机器上解压 rpm 包的 .sepc 文件以及源文件
yum install rpm-build rpmrebuild rpm cpio
rpmrebuild -e -p --notest-install etcd-3.5.5-2.fc37.x86_64.rpm
构建打包文件
使用之前编译的二进制文件替换源文件中的二进制文件后创建打包目录:
[root@ec3237ae9ac7 rpmbuild]# tree -L 1
.
├── BUILD
├── BUILDROOT
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS