From fd360bb6a691b7f69440fdeab8c2f2090fbb2611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zoran=20Peri=C4=8Di=C4=87?= Date: Fri, 18 Sep 2026 13:14:42 +0200 Subject: [PATCH] Initial package: etcd 3.7.1 from official upstream binaries Fedora retired etcd in rawhide, so recreate it. Instead of building from source with the Go packaging macros, repackage the official upstream release tarballs (x86_64 and aarch64), fetched via spectool. Stays drop-in compatible with the former Fedora package: same package name, /usr/bin/{etcd,etcdctl,etcdutl}, /etc/etcd/etcd.conf, /var/lib/etcd, etcd.service and the etcd system user (sysusers.d). Differences from the Fedora package: - no golang-go.etcd.io-etcd-devel subpackage - etcd.service runs /usr/bin/etcd directly (no GOMAXPROCS bash wrapper) - etcd.conf: drop options removed upstream (proxy, debug, log-package-levels), add ETCD_LOG_LEVEL - LICENSE taken from the upstream tag, release tarballs do not ship it --- .gitignore | 2 ++ etcd.conf | 42 +++++++++++++++++++++++++ etcd.service | 17 ++++++++++ etcd.spec | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 3 ++ 5 files changed, 152 insertions(+) create mode 100644 .gitignore create mode 100644 etcd.conf create mode 100644 etcd.service create mode 100644 etcd.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6db82a4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/etcd-v*-linux-*.tar.gz +/LICENSE diff --git a/etcd.conf b/etcd.conf new file mode 100644 index 0000000..1f1de0a --- /dev/null +++ b/etcd.conf @@ -0,0 +1,42 @@ +# [member] +ETCD_NAME=default +ETCD_DATA_DIR="/var/lib/etcd/default.etcd" +#ETCD_WAL_DIR="" +#ETCD_SNAPSHOT_COUNT="10000" +#ETCD_HEARTBEAT_INTERVAL="100" +#ETCD_ELECTION_TIMEOUT="1000" +#ETCD_LISTEN_PEER_URLS="http://localhost:2380" +ETCD_LISTEN_CLIENT_URLS="http://localhost:2379" +#ETCD_MAX_SNAPSHOTS="5" +#ETCD_MAX_WALS="5" +#ETCD_CORS="" +# +#[cluster] +#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380" +# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..." +#ETCD_INITIAL_CLUSTER="default=http://localhost:2380" +#ETCD_INITIAL_CLUSTER_STATE="new" +#ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" +ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379" +#ETCD_DISCOVERY="" +#ETCD_DISCOVERY_SRV="" +#ETCD_DISCOVERY_FALLBACK="proxy" +#ETCD_DISCOVERY_PROXY="" +#ETCD_STRICT_RECONFIG_CHECK="false" +#ETCD_AUTO_COMPACTION_RETENTION="0" +# +#[security] +#ETCD_CERT_FILE="" +#ETCD_KEY_FILE="" +#ETCD_CLIENT_CERT_AUTH="false" +#ETCD_TRUSTED_CA_FILE="" +#ETCD_AUTO_TLS="false" +#ETCD_PEER_CERT_FILE="" +#ETCD_PEER_KEY_FILE="" +#ETCD_PEER_CLIENT_CERT_AUTH="false" +#ETCD_PEER_TRUSTED_CA_FILE="" +#ETCD_PEER_AUTO_TLS="false" +# +#[logging] +# debug, info, warn, error, panic or fatal +#ETCD_LOG_LEVEL="info" diff --git a/etcd.service b/etcd.service new file mode 100644 index 0000000..d0e1d9e --- /dev/null +++ b/etcd.service @@ -0,0 +1,17 @@ +[Unit] +Description=Etcd Server +After=network.target +After=network-online.target +Wants=network-online.target + +[Service] +Type=notify +WorkingDirectory=/var/lib/etcd/ +EnvironmentFile=-/etc/etcd/etcd.conf +User=etcd +ExecStart=/usr/bin/etcd +Restart=on-failure +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target diff --git a/etcd.spec b/etcd.spec new file mode 100644 index 0000000..816512f --- /dev/null +++ b/etcd.spec @@ -0,0 +1,88 @@ +# Prebuilt upstream binaries: no debuginfo to extract +%global debug_package %{nil} + +Name: etcd +Version: 3.7.1 +Release: 1%{?dist} +Summary: Distributed reliable key-value store for the most critical data of a distributed system +License: Apache-2.0 +URL: https://etcd.io + +Source0: https://github.com/etcd-io/etcd/releases/download/v%{version}/etcd-v%{version}-linux-amd64.tar.gz +Source1: https://github.com/etcd-io/etcd/releases/download/v%{version}/etcd-v%{version}-linux-arm64.tar.gz +# Release tarballs do not ship the license text +Source2: https://raw.githubusercontent.com/etcd-io/etcd/v%{version}/LICENSE +Source10: %{name}.service +Source11: %{name}.conf + +ExclusiveArch: x86_64 aarch64 + +BuildRequires: systemd-rpm-macros +%{?systemd_requires} + +%description +Distributed reliable key-value store for the most critical data of a distributed +system. + +This package ships the official upstream release binaries (etcd, etcdctl and +etcdutl). + +%prep +%ifarch x86_64 +%setup -q -T -b 0 -n etcd-v%{version}-linux-amd64 +%endif +%ifarch aarch64 +%setup -q -T -b 1 -n etcd-v%{version}-linux-arm64 +%endif +cp -p %{SOURCE2} LICENSE + +# Create a sysusers.d config file +cat >etcd.sysusers.conf < - 3.7.1-1 +- Update to 3.7.1 +- Repackage official upstream release binaries instead of building from source +- Drop golang devel subpackage diff --git a/sources b/sources new file mode 100644 index 0000000..591e5d6 --- /dev/null +++ b/sources @@ -0,0 +1,3 @@ +SHA512 (etcd-v3.7.1-linux-amd64.tar.gz) = ee1d8b79d6ac4713d2d84cf95255439eaef1d641d57d0ee510668599010aabe012a74fb027bc91fc52cf378505cb91713d399a6eebfb7b8f17755c399c94d536 +SHA512 (etcd-v3.7.1-linux-arm64.tar.gz) = d81a2047582df2569f74c304e5af1ea9cbfb47b4ca0ca607612dfec5d09613b764b2a6b8222dfb1d520bcc7b5715b16d197fede6f984265cb444ba70608230c5 +SHA512 (LICENSE) = 6bd02bb97b3976857ebc154d11f9869472328b6d7d650b9d088ed425d167391c1f5ac87b7633fd92988831d36ea0b3be8d5bb2425399dcf237a88ba14e5fe375