| # |
| # Copyright (C) 2019 Wind River Systems, Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| SUMMARY = "A distributed key-value store for shared config and service discovery" |
| DESCRIPTION = " \ |
| etcd is a distributed reliable key-value store for the most critical data \ |
| of a distributed system, with a focus on being: \ |
| \ |
| * Simple: well-defined, user-facing API (gRPC) \ |
| * Secure: automatic TLS with optional client cert authentication \ |
| * Fast: benchmarked 10,000 writes/sec \ |
| * Reliable: properly distributed using Raft \ |
| " |
| HOMEPAGE = "https://github.com/coreos/etcd" |
| LICENSE = "Apache-2.0" |
| LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" |
| |
| SRC_URI = " \ |
| git://github.com/coreos/etcd.git;branch=release-3.3 \ |
| " |
| |
| SRCREV = "94745a4eed0425653b3b4275a208d38babceeaec" |
| PV = "3.3.15+git${SRCPV}" |
| |
| S = "${WORKDIR}/git" |
| |
| inherit go goarch systemd useradd |
| |
| USERADD_PACKAGES = "${PN}" |
| USERADD_PARAM_${PN} = " \ |
| --system --shell ${sbindir}/nologin --comment 'etcd user' \ |
| --home-dir ${localstatedir}/lib --groups etcd --gid etcd etcd \ |
| " |
| GROUPADD_PARAM_${PN} = "etcd" |
| |
| TARGET_CC_ARCH += "${LDFLAGS}" |
| GO_IMPORT = "import" |
| |
| do_compile() { |
| export GOARCH="${TARGET_GOARCH}" |
| |
| # Setup vendor directory so that it can be used in GOPATH. |
| # |
| # Go looks in a src directory under any directory in GOPATH but |
| # uses 'vendor' instead of 'vendor/src'. We can fix this with a symlink. |
| # |
| # We also need to link in the ipallocator directory as that is not under |
| # a src directory. |
| export GOPATH="${B}/src/import/" |
| mkdir -p ${B}/src/import/src/github.com/coreos/ |
| ln -s ${S}/src/import ${B}/src/import/src/github.com/coreos/etcd |
| |
| # Pass the needed cflags/ldflags so that cgo |
| # can find the needed headers files and libraries |
| export CGO_ENABLED="1" |
| export CFLAGS="" |
| export LDFLAGS="" |
| export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}" |
| export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}" |
| |
| if [ "${TARGET_ARCH}" = "x86_64" ]; then |
| export GOARCH="amd64" |
| elif [ "${TARGET_ARCH}" = "i586" ]; then |
| export GOARCH="386" |
| fi |
| |
| ./src/import/build |
| } |
| |
| do_install() { |
| install -d ${D}/${bindir} |
| install -m 0755 ${B}/bin/etcd ${D}/${bindir}/etcd |
| install -m 0755 ${B}/bin/etcdctl ${D}/${bindir}/etcdctl |
| |
| install -d ${D}${systemd_system_unitdir} |
| install -m 0644 ${S}/src/import/contrib/systemd/etcd.service ${D}${systemd_system_unitdir} |
| |
| # etcd state is in /var/lib/etcd |
| install -d ${D}${sysconfdir}/tmpfiles.d |
| echo "d ${localstatedir}/lib/${BPN} 0755 etcd etcd -" \ |
| > ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf |
| |
| # we aren't creating a user, so we need to comment out this line |
| sed -i '/User/s/^/#/' ${D}${systemd_unitdir}/system/etcd.service |
| } |
| |
| deltask compile_ptest_base |
| |
| RDEPENDS_${PN} = "bash" |
| |
| # During packaging etcd gets the warning "no GNU hash in elf binary" |
| # This issue occurs due to compiling without ldflags, but a |
| # solution has yet to be found. For now we ignore this error with |
| # the line below. |
| #INSANE_SKIP_${PN} = "ldflags" |