diff --git a/0012-change-go.mod-to-support-loongarch-vender.patch b/0012-change-go.mod-to-support-loongarch-vender.patch new file mode 100644 index 0000000000000000000000000000000000000000..c262c4b4ed716e4777816a9f23d51e01264c56c8 --- /dev/null +++ b/0012-change-go.mod-to-support-loongarch-vender.patch @@ -0,0 +1,28 @@ +From f03f7b56fc58a5b305f4e423865408d1e75e96f4 Mon Sep 17 00:00:00 2001 +From: weiyuan +Date: Wed, 17 Jan 2024 14:01:07 +0800 +Subject: [PATCH] change go.mod to support loongarch vender + +--- + go.mod | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/go.mod b/go.mod +index 56cd96b..89ab9e7 100644 +--- a/go.mod ++++ b/go.mod +@@ -44,9 +44,8 @@ require ( + go.uber.org/zap v1.10.0 + golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 + golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3 // indirect +- golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 +- golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 // indirect +- golang.org/x/text v0.3.3 // indirect ++ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd ++ golang.org/x/sys v0.0.0-20220209214540-3681064d5158 // indirect + golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2 + golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 // indirect + google.golang.org/grpc v1.26.0 +-- +2.33.0 + diff --git a/0013-add-support-loongarch-check.patch b/0013-add-support-loongarch-check.patch new file mode 100644 index 0000000000000000000000000000000000000000..513a67c58372b8f8e9845c6dbf945071e5184a59 --- /dev/null +++ b/0013-add-support-loongarch-check.patch @@ -0,0 +1,25 @@ +From 8df75ce704a694be2f28587239b3d9b8f19a22fd Mon Sep 17 00:00:00 2001 +From: dongjiao +Date: Thu, 25 Sep 2025 17:09:12 +0800 +Subject: [PATCH] add support loongarch check + +--- + etcdmain/etcd.go | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/etcdmain/etcd.go b/etcdmain/etcd.go +index 61dab3b..bb76f96 100644 +--- a/etcdmain/etcd.go ++++ b/etcdmain/etcd.go +@@ -603,7 +603,7 @@ func identifyDataDirOrDie(lg *zap.Logger, dir string) dirType { + + func checkSupportArch() { + // TODO qualify arm64 +- if runtime.GOARCH == "amd64" || runtime.GOARCH == "ppc64le" || runtime.GOARCH == "arm64" || runtime.GOARCH == "riscv64" { ++ if runtime.GOARCH == "amd64" || runtime.GOARCH == "ppc64le" || runtime.GOARCH == "arm64" || runtime.GOARCH == "riscv64" || runtime.GOARCH == "loong64" { + return + } + // unsupported arch only configured via environment variable +-- +2.33.0 + diff --git a/etcd-vendor-loong64.tar.gz b/etcd-vendor-loong64.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..36216655d0cb9142e473f77c94fec77d4f6af446 Binary files /dev/null and b/etcd-vendor-loong64.tar.gz differ diff --git a/etcd.spec b/etcd.spec index 8a29095b81ef1c68e5d58f14c456cdbb44bb144a..0ceaacdc54fd498c66125fc8b85b77659db2c13f 100644 --- a/etcd.spec +++ b/etcd.spec @@ -31,7 +31,7 @@ system.} %global gosupfiles integration/fixtures/* etcdserver/api/v2http/testdata/* Name: etcd -Release: 17 +Release: 18 Summary: Distributed reliable key-value store for the most critical data of a distributed system # Upstream license specification: Apache-2.0 @@ -43,6 +43,9 @@ Source2: %{name}.conf Source3: man-%{man_version}.tar.gz # sh genmanpages.sh path_to_built_source Source10: genmanpages.sh +# support for loongarch64 +Source11: etcd-vendor-loong64.tar.gz +Source12: loong64.tar.gz # update grpc-go version to v1.32.0 Patch1: 0001-Convert-int-to-string-using-strconv.Itoa.patch Patch2: 0002-Etcd-on-unsupported-platform-without-ETCD_UNSUPPORTED_ARCH=arm64-set.patch @@ -55,6 +58,9 @@ Patch8: 0008-fix-CVE-2023-32082.patch Patch9: 0009-fix-CVE-2021-28235.patch Patch10: 0010-fix-CVE-2021-44716.patch Patch11: 0011-fix-CVE-2022-3064.patch +# support for loongarch64 +Patch12: 0012-change-go.mod-to-support-loongarch-vender.patch +Patch13: 0013-add-support-loongarch-check.patch BuildRequires: golang BuildRequires: python3-devel @@ -83,6 +89,10 @@ Requires(pre): shadow-utils %ifarch sw_64 %patch3 -p1 %endif +%ifarch loongarch64 +%patch12 -p1 +%endif +%patch13 -p1 # For compatibility cp -aR etcdserver/api/snap snap cp -aR etcdserver/api/membership etcdserver/membership @@ -96,20 +106,37 @@ mv etcdctl/READMEv2.md READMEv2-etcdctl.md mkdir -p man/man1 cp ../man-%{man_version}/*.1 man/man1/. +%ifarch loongarch64 +tar xf %{SOURCE11} +tar xf %{SOURCE12} -C vendor/go.etcd.io/bbolt/ +%endif + %if %{without bootstrap} %build CGO_CFLAGS="-fstack-protector-strong -fPIE -D_FORTIFY_SOURCE=2 -O2" \ CGO_LDFLAGS_ALLOW="-Wl,-z,relro,-z,now" \ CGO_LDFLAGS="-Wl,-z,relro,-z,now -Wl,-z,noexecstack" \ GO111MODULE=on GOFLAGS=-mod=vendor \ -go build -buildmode=pie -ldflags "-linkmode=external -w -s" \ +go build \ +%ifnarch loongarch64 + -buildmode=pie \ +%else + -buildmode=exe \ +%endif +-ldflags "-linkmode=external -w -s" \ -o %{gobuilddir}/bin/etcd %{goipath} for cmd in etcdctl; do CGO_CFLAGS="-fstack-protector-strong -fPIE -D_FORTIFY_SOURCE=2 -O2" \ CGO_LDFLAGS_ALLOW="-Wl,-z,relro,-z,now" \ CGO_LDFLAGS="-Wl,-z,relro,-z,now -Wl,-z,noexecstack" \ GO111MODULE=on GOFLAGS=-mod=vendor \ - go build -buildmode=pie -ldflags "-linkmode=external -w -s" \ + go build \ +%ifnarch loongarch64 + -buildmode=pie \ +%else + -buildmode=exe \ +%endif + -ldflags "-linkmode=external -w -s" \ -o %{gobuilddir}/bin/$(basename $cmd) %{goipath}/$cmd done %endif @@ -168,6 +195,12 @@ getent passwd %{name} >/dev/null || useradd -r -g %{name} -d %{_sharedstatedir}/ %endif %changelog +* Wed Dec 03 2025 gaoyukun - 3.4.14-18 +- Type:update +- ID:NA +- SUG:NA +- DESC: support loogarch arch + * Thu Jul 3 2025 wubijie - 3.4.14-17 - Type:CVE - ID:CVE-2025-4673 diff --git a/loong64.tar.gz b/loong64.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e7bdca96408b8c63136f9f437f31d7d7d0f5eed9 Binary files /dev/null and b/loong64.tar.gz differ