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
This commit is contained in:
2026-09-18 13:15:56 +02:00
commit fd360bb6a6
5 changed files with 152 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
/etcd-v*-linux-*.tar.gz
/LICENSE
+42
View File
@@ -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"
+17
View File
@@ -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
+88
View File
@@ -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 <<EOF
u etcd - 'etcd user' %{_sharedstatedir}/%{name} -
EOF
%build
%install
install -Dpm 0755 -t %{buildroot}%{_bindir} etcd etcdctl etcdutl
install -Dpm 0644 %{SOURCE10} %{buildroot}%{_unitdir}/%{name}.service
install -dm 0755 %{buildroot}%{_sysconfdir}/%{name}
install -pm 0644 -t %{buildroot}%{_sysconfdir}/%{name} %{SOURCE11}
# And create /var/lib/etcd
install -dm 0755 %{buildroot}%{_sharedstatedir}/%{name}
install -Dpm 0644 etcd.sysusers.conf %{buildroot}%{_sysusersdir}/etcd.conf
%check
%{buildroot}%{_bindir}/etcd --version
%{buildroot}%{_bindir}/etcdctl version
%{buildroot}%{_bindir}/etcdutl version
%post
%systemd_post %{name}.service
%preun
%systemd_preun %{name}.service
%postun
%systemd_postun_with_restart %{name}.service
%files
%license LICENSE
%doc README.md README-etcdctl.md README-etcdutl.md READMEv2-etcdctl.md
%doc Documentation
%{_bindir}/etcd
%{_bindir}/etcdctl
%{_bindir}/etcdutl
%config(noreplace) %{_sysconfdir}/%{name}
%dir %attr(-,%{name},%{name}) %{_sharedstatedir}/%{name}
%{_unitdir}/%{name}.service
%{_sysusersdir}/etcd.conf
%changelog
* Fri Sep 18 2026 Zoran Pericic <zpericic@netst.org> - 3.7.1-1
- Update to 3.7.1
- Repackage official upstream release binaries instead of building from source
- Drop golang devel subpackage
+3
View File
@@ -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