From d9f1dadffb34393af2ed993826abeb340a7d4643 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Tue, 3 Mar 2015 18:05:00 -0800 Subject: [PATCH 1/2] etcd: enable slotting by internal protocol To support the transition to 2.0 both the new and old versions need to be installed side-by-side. However there will still only be one 'etcd' binary so one of the installed slots needs to provide it. How this works: - `ETCD_PROTOCOLS="1"` install etcd 0.4.x as only version. - `ETCD_PROTOCOLS="1 2"` install etcd 0.4.x and 2.0 in parallel. - `ETCD_PROTOCOLS="2"` install etcd 2.0 as only version. --- ...1-r245.ebuild => coreos-0.0.1-r246.ebuild} | 0 .../coreos-base/coreos/coreos-0.0.1.ebuild | 13 +++-- .../dev-db/etcd/etcd-0.4.7-r1.ebuild | 54 +++++++++++++++++++ .../dev-db/etcd/etcd-0.4.7.ebuild | 1 - .../profiles/coreos/base/make.defaults | 6 +++ 5 files changed, 68 insertions(+), 6 deletions(-) rename sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/{coreos-0.0.1-r245.ebuild => coreos-0.0.1-r246.ebuild} (100%) create mode 100644 sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-0.4.7-r1.ebuild delete mode 120000 sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-0.4.7.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r245.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r246.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r245.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r246.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild index b9a93bbb21..bbf68b3bff 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild @@ -9,7 +9,7 @@ HOMEPAGE="http://coreos.com" LICENSE="GPL-2" SLOT="0" KEYWORDS="amd64 arm x86" -IUSE="" +IUSE="etcd_protocols_1 etcd_protocols_2" ################################################################################ @@ -76,8 +76,13 @@ RDEPEND="${RDEPEND} app-editors/vim " -# TODO(ifup): -# coreos-base/crash-reporter +# Select between versions of etcd +# If protocol 1 is installed it must be configured to provide the default +# implementation based on whether protocol 2 is enabled or not. +RDEPEND="${RDEPEND} + dev-db/etcdctl + etcd_protocols_1? ( dev-db/etcd:1[etcd_protocols_2=] ) + " RDEPEND="${RDEPEND} app-emulation/xenstore @@ -139,8 +144,6 @@ RDEPEND="${RDEPEND} app-misc/ca-certificates app-crypt/gnupg virtual/udev - dev-db/etcd - dev-db/etcdctl net-fs/nfs-utils net-misc/iputils dev-vcs/git diff --git a/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-0.4.7-r1.ebuild b/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-0.4.7-r1.ebuild new file mode 100644 index 0000000000..7411e7b354 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-0.4.7-r1.ebuild @@ -0,0 +1,54 @@ +# +# Copyright (c) 2014 CoreOS, Inc.. All rights reserved. +# Distributed under the terms of the GNU General Public License v2 +# $Header:$ +# + +EAPI=4 +CROS_WORKON_PROJECT="coreos/etcd" +CROS_WORKON_LOCALNAME="etcd" +CROS_WORKON_REPO="git://github.com" +inherit coreos-doc toolchain-funcs cros-workon systemd + +if [[ "${PV}" == 9999 ]]; then + KEYWORDS="~amd64" +else + CROS_WORKON_COMMIT="d6523fe4638100c72f40cb282cd1232db13f7336" # v0.4.7 + KEYWORDS="amd64" +fi + +DESCRIPTION="etcd" +HOMEPAGE="https://github.com/coreos/etcd" +SRC_URI="" + +LICENSE="Apache-2.0" +SLOT="1" +IUSE="etcd_protocols_1 etcd_protocols_2" + +# Sanity check that this version is indeed wanted! +REQUIRED_USE="etcd_protocols_${SLOT}" + +DEPEND=">=dev-lang/go-1.2" +RDEPEND="!dev-db/etcd:0 + !etcd_protocols_2? ( !dev-db/etcd:2 )" + +src_compile() { + ./build +} + +src_install() { + local libexec="libexec/${PN}/internal_versions" + + exeinto "/usr/${libexec}" + newexe "${S}/bin/${PN}" ${SLOT} + + # protocol1 is default if protocol2 is disabled + if ! use etcd_protocols_2; then + dosym "../${libexec}/${SLOT}" /usr/bin/${PN} + + systemd_dounit "${FILESDIR}"/${PN}.service + systemd_dotmpfilesd "${FILESDIR}"/${PN}.conf + + coreos-dodoc -r Documentation/* + fi +} diff --git a/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-0.4.7.ebuild b/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-0.4.7.ebuild deleted file mode 120000 index f972b32dc1..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-0.4.7.ebuild +++ /dev/null @@ -1 +0,0 @@ -etcd-9999.ebuild \ No newline at end of file diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/make.defaults b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/make.defaults index ca6a9918e0..260c89a170 100644 --- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/make.defaults +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/make.defaults @@ -9,6 +9,12 @@ USE_EXPAND="${USE_EXPAND} BOARD_USE CROS_WORKON_TREE TESTS U_BOOT_CONFIG_USE U_BOOT_FDT_USE" USE_EXPAND_HIDDEN="${USE_EXPAND_HIDDEN} CROS_WORKON_TREE" +# Support selecting between different etcd versions. This must be done +# via use flags because if two versions are installed one must provide +# the "default" /usr/bin/etcd binary and systemd services. +USE_EXPAND="${USE_EXPAND} ETCD_PROTOCOLS" +ETCD_PROTOCOLS="1" + # Extra use flags for CoreOS SDK USE="${USE} cros_host expat -introspection -cups -tcpd -pcre -berkdb" From 10f3130d41f6c9c2220ab62133c9a7865be6a3fd Mon Sep 17 00:00:00 2001 From: Alex Crawford Date: Tue, 10 Feb 2015 16:21:13 -0800 Subject: [PATCH 2/2] etcd: add v2.0.4 --- ...1-r246.ebuild => coreos-0.0.1-r247.ebuild} | 0 .../coreos-base/coreos/coreos-0.0.1.ebuild | 7 +++-- .../dev-db/etcd/etcd-2.0.4.ebuild | 1 + .../dev-db/etcd/etcd-9999.ebuild | 28 ++++++++++++++----- 4 files changed, 27 insertions(+), 9 deletions(-) rename sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/{coreos-0.0.1-r246.ebuild => coreos-0.0.1-r247.ebuild} (100%) create mode 120000 sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-2.0.4.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r246.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r247.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r246.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1-r247.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild index bbf68b3bff..146c13298c 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos/coreos-0.0.1.ebuild @@ -80,8 +80,11 @@ RDEPEND="${RDEPEND} # If protocol 1 is installed it must be configured to provide the default # implementation based on whether protocol 2 is enabled or not. RDEPEND="${RDEPEND} - dev-db/etcdctl - etcd_protocols_1? ( dev-db/etcd:1[etcd_protocols_2=] ) + etcd_protocols_1? ( + dev-db/etcd:1[etcd_protocols_2=] + !etcd_protocols_2? ( dev-db/etcdctl ) + ) + etcd_protocols_2? ( dev-db/etcd:2 ) " RDEPEND="${RDEPEND} diff --git a/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-2.0.4.ebuild b/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-2.0.4.ebuild new file mode 120000 index 0000000000..f972b32dc1 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-2.0.4.ebuild @@ -0,0 +1 @@ +etcd-9999.ebuild \ No newline at end of file diff --git a/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-9999.ebuild b/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-9999.ebuild index 98e5c59f38..a149b478af 100644 --- a/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-9999.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/dev-db/etcd/etcd-9999.ebuild @@ -1,19 +1,20 @@ # -# Copyright (c) 2014 CoreOS, Inc.. All rights reserved. +# Copyright (c) 2015 CoreOS, Inc.. All rights reserved. # Distributed under the terms of the GNU General Public License v2 # $Header:$ # -EAPI=4 +EAPI=5 CROS_WORKON_PROJECT="coreos/etcd" CROS_WORKON_LOCALNAME="etcd" CROS_WORKON_REPO="git://github.com" -inherit coreos-doc toolchain-funcs cros-workon systemd +COREOS_GO_PACKAGE="github.com/coreos/etcd" +inherit coreos-doc coreos-go toolchain-funcs cros-workon systemd if [[ "${PV}" == 9999 ]]; then KEYWORDS="~amd64" else - CROS_WORKON_COMMIT="d6523fe4638100c72f40cb282cd1232db13f7336" # v0.4.7 + CROS_WORKON_COMMIT="1a2c6d3f2fbcb047712bfa3234bff5b9d07bdc57" # v2.0.4 KEYWORDS="amd64" fi @@ -22,17 +23,30 @@ HOMEPAGE="https://github.com/coreos/etcd" SRC_URI="" LICENSE="Apache-2.0" -SLOT="0" +SLOT="2" IUSE="" DEPEND=">=dev-lang/go-1.2" +RDEPEND="!dev-db/etcd:0 + !dev-db/etcdctl" src_compile() { - ./build + go_build "${COREOS_GO_PACKAGE}" + go_build "${COREOS_GO_PACKAGE}/etcdctl" + go_build "${COREOS_GO_PACKAGE}/tools/etcd-migrate" + go_build "${COREOS_GO_PACKAGE}/tools/etcd-dump-logs" } src_install() { - dobin ${S}/bin/${PN} + local libexec="libexec/${PN}/internal_versions" + + dobin ${WORKDIR}/gopath/bin/etcdctl + dobin ${WORKDIR}/gopath/bin/etcd-migrate + dobin ${WORKDIR}/gopath/bin/etcd-dump-logs + + exeinto "/usr/${libexec}" + newexe "${WORKDIR}/gopath/bin/${PN}" ${SLOT} + dosym "../${libexec}/${SLOT}" /usr/bin/${PN} systemd_dounit "${FILESDIR}"/${PN}.service systemd_dotmpfilesd "${FILESDIR}"/${PN}.conf