[Buildroot] [PATCH 3/3] etcd: new package
Geoff Levand
geoff at infradead.org
Thu May 19 22:33:25 UTC 2016
etcd is a distributed key value store that provides a reliable
way to store data across a cluster of machines.
https://coreos.com/etcd
Signed-off-by: Geoff Levand <geoff at infradead.org>
---
package/Config.in | 1 +
package/etcd/Config.in | 9 ++++++
package/etcd/S80etcd2 | 33 ++++++++++++++++++++
package/etcd/etcd.hash | 2 ++
package/etcd/etcd.mk | 67 ++++++++++++++++++++++++++++++++++++++++
package/etcd/etcd2.service | 17 ++++++++++
package/etcd/etcd2_sysv.conf | 13 ++++++++
package/etcd/etcd2_tmpfiles.conf | 1 +
8 files changed, 143 insertions(+)
create mode 100644 package/etcd/Config.in
create mode 100644 package/etcd/S80etcd2
create mode 100644 package/etcd/etcd.hash
create mode 100644 package/etcd/etcd.mk
create mode 100644 package/etcd/etcd2.service
create mode 100644 package/etcd/etcd2_sysv.conf
create mode 100644 package/etcd/etcd2_tmpfiles.conf
diff --git a/package/Config.in b/package/Config.in
index 9d668bf..1825b6d 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1381,6 +1381,7 @@ endif
source "package/dnsmasq/Config.in"
source "package/drbd-utils/Config.in"
source "package/dropbear/Config.in"
+ source "package/etcd/Config.in"
source "package/ebtables/Config.in"
source "package/ejabberd/Config.in"
source "package/ethtool/Config.in"
diff --git a/package/etcd/Config.in b/package/etcd/Config.in
new file mode 100644
index 0000000..f7f19c0
--- /dev/null
+++ b/package/etcd/Config.in
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_ETCD
+ bool "etcd"
+ depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
+ depends on BR2_aarch64 || BR2_i386 || BR2_x86_64
+ help
+ etcd is a distributed key value store that provides a reliable
+ way to store data across a cluster of machines.
+
+ https://coreos.com/etcd
diff --git a/package/etcd/S80etcd2 b/package/etcd/S80etcd2
new file mode 100644
index 0000000..f6727d8
--- /dev/null
+++ b/package/etcd/S80etcd2
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+DAEMON=/usr/bin/etcd2
+CONFIG=/etc/etcd2.conf
+
+[ -x $DAEMON ] || exit 0
+[ -f $CONFIG ] || exit 0
+
+source $CONFIG
+
+case "$1" in
+ start)
+ printf "Starting etcd daemon: "
+ [ -n $ETCD_DATA_DIR ] || [ -d $ETCD_DATA_DIR ] || mkdir -p $ETCD_DATA_DIR
+ start-stop-daemon -S -x $DAEMON
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+ stop)
+ printf "Stopping etcd daemon: "
+ start-stop-daemon -K -x $DAEMON
+ [ $? = 0 ] && echo "OK" || echo "FAIL"
+ ;;
+ restart|reload|force-reload)
+ $0 stop || true
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|reload|force-reload}"
+ exit 1
+esac
+
+exit 0
diff --git a/package/etcd/etcd.hash b/package/etcd/etcd.hash
new file mode 100644
index 0000000..0802793
--- /dev/null
+++ b/package/etcd/etcd.hash
@@ -0,0 +1,2 @@
+# Locally computed:
+sha256 c08f68c3d21929ed3683fe94acefcd871bb3c4339117e745033bf2fb990966a9 v2.3.4.tar.gz
diff --git a/package/etcd/etcd.mk b/package/etcd/etcd.mk
new file mode 100644
index 0000000..223745d
--- /dev/null
+++ b/package/etcd/etcd.mk
@@ -0,0 +1,67 @@
+################################################################################
+#
+# etcd
+#
+################################################################################
+ETCD_VERSION = v2.3.4
+ETCD_SITE = https://github.com/coreos/etcd/archive
+ETCD_SOURCE = $(ETCD_VERSION).tar.gz
+
+ETCD_LICENSE = Apache-2.0
+ETCD_LICENSE_FILES = LICENSE
+
+ETCD_DEPENDENCIES = host-go
+
+ETCD_MAKE_ENV = \
+ $(HOST_GO_TARGET_ENV) \
+ GOBIN="$(@D)/bin" \
+ GOPATH="$(@D)/gopath" \
+ CGO_ENABLED=0 \
+
+ETCD_REPO_PATH = github.com/coreos/etcd
+
+ETCD_GLDFLAGS = \
+ -X $(ETCD_REPO_PATH)/version.GitSHA=$(ETCD_VERSION) \
+ -extldflags '-static'
+
+define ETCD_CONFIGURE_CMDS
+ # Put sources at prescribed GOPATH location.
+ mkdir -p $(@D)/gopath/src/github.com/coreos
+ ln -s $(@D) $(@D)/gopath/src/$(ETCD_REPO_PATH)
+endef
+
+define ETCD_BUILD_CMDS
+ cd $(@D) && $(ETCD_MAKE_ENV) $(HOST_GO_ROOT)/bin/go \
+ build -v -x -ldflags "$(FLANNEL_GLDFLAGS)" \
+ -o $(@D)/bin/etcd $(ETCD_REPO_PATH)
+ cd $(@D) && $(ETCD_MAKE_ENV) $(HOST_GO_ROOT)/bin/go \
+ build -v -x -ldflags "$(FLANNEL_GLDFLAGS)" \
+ -o $(@D)/bin/etcdctl $(ETCD_REPO_PATH)/etcdctl
+endef
+
+define ETCD_INSTALL_TARGET_CMDS
+ $(INSTALL) -D -m 0755 $(@D)/bin/etcd $(TARGET_DIR)/usr/bin/etcd2
+ $(INSTALL) -D -m 0755 $(@D)/bin/etcdctl $(TARGET_DIR)/usr/bin/etcdctl
+endef
+
+define ETCD_INSTALL_INIT_SYSV
+ $(INSTALL) -m 0755 -D package/etcd/etcd2_sysv.conf \
+ $(TARGET_DIR)/etc/etcd2.conf
+ $(INSTALL) -m 0755 -D package/etcd/S80etcd2 \
+ $(TARGET_DIR)/etc/init.d/S80etcd2
+endef
+
+define ETCD_INSTALL_INIT_SYSTEMD
+ $(INSTALL) -D -m 644 package/etcd/etcd2.service \
+ $(TARGET_DIR)/usr/lib/systemd/system/etcd2.service
+
+ $(INSTALL) -D -m 644 package/etcd/etcd2_tmpfiles.conf \
+ $(TARGET_DIR)/usr/lib/tmpfiles.d/etcd2.config
+
+ mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
+
+ ln -sf /usr/lib/systemd/system/etcd2.service \
+ $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/etcd2.service
+endef
+
+$(eval $(generic-package))
diff --git a/package/etcd/etcd2.service b/package/etcd/etcd2.service
new file mode 100644
index 0000000..288a0db
--- /dev/null
+++ b/package/etcd/etcd2.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=etcd2
+Conflicts=etcd.service
+
+[Service]
+User=etcd
+Type=notify
+Environment=ETCD_DATA_DIR=/var/lib/etcd2
+Environment=ETCD_NAME=%m
+ExecStart=/usr/bin/etcd2
+Restart=always
+RestartSec=10s
+LimitNOFILE=40000
+TimeoutStartSec=0
+
+[Install]
+WantedBy=multi-user.target
diff --git a/package/etcd/etcd2_sysv.conf b/package/etcd/etcd2_sysv.conf
new file mode 100644
index 0000000..2e397e9
--- /dev/null
+++ b/package/etcd/etcd2_sysv.conf
@@ -0,0 +1,13 @@
+# See https://coreos.com/etcd/docs/latest/configuration.html
+
+ETCD_NAME=default
+#ETCD_DISCOVERY=""
+#ETCD_DEBUG="true"
+
+ETCD_DATA_DIR="/var/lib/etcd"
+
+ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
+ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
+
+ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
+ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380"
diff --git a/package/etcd/etcd2_tmpfiles.conf b/package/etcd/etcd2_tmpfiles.conf
new file mode 100644
index 0000000..d8bfc78
--- /dev/null
+++ b/package/etcd/etcd2_tmpfiles.conf
@@ -0,0 +1 @@
+d /var/lib/etcd2 0755 etcd etcd - -
--
2.5.0
More information about the buildroot
mailing list