You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-admin/consul/consul-9999.ebuild

126 lines
2.9 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=5
inherit git-r3 golang-base systemd user
GO_PN="github.com/hashicorp/consul"
DESCRIPTION="A tool for service discovery, monitoring and configuration"
HOMEPAGE="http://www.consul.io"
SRC_URI=""
EGIT_REPO_URI="git://${GO_PN}.git"
SLOT="0"
LICENSE="MPL-2.0"
KEYWORDS=""
IUSE="test web"
RESTRICT="test"
DEPEND="
app-arch/zip
>=dev-lang/go-1.4:=
dev-go/go-crypto:=
test? ( dev-go/go-tools )
web? (
dev-ruby/sass
dev-ruby/uglifier
)"
RDEPEND=""
STRIP_MASK="*.a"
S="${WORKDIR}/src/${GO_PN}"
EGIT_CHECKOUT_DIR="${S}"
pkg_setup() {
enewgroup consul
enewuser consul -1 -1 /var/lib/${PN} consul
}
src_unpack() {
git-r3_src_unpack
cd "${S}" || die
# Create a writable GOROOT in order to avoid sandbox violations
# or other interference from installed instances.
export GOPATH="${WORKDIR}:$(get_golibdir_gopath)" GOROOT="${WORKDIR}/goroot"
cp -sR "${EPREFIX}"/usr/lib/go "${GOROOT}" || die
# Use latest versions of some packages, in case of incompatible
# API changes
rm -rf "${GOROOT}/src/${GO_PN%/*}" \
"${GOROOT}/pkg/$(go env GOOS)_$(go env GOARCH)/${GO_PN%/*}" || die
# Fetch dependencies
emake deps
# Avoid interference from installed instances
while read -r path; do
rm -rf "${GOROOT}/src/${path#${WORKDIR}/src}" \
"${GOROOT}/pkg/$(go env GOOS)_$(go env GOARCH)/${path#${WORKDIR}/src}" || die
done < <(find "${WORKDIR}"/src -maxdepth 3 -mindepth 3 -type d)
}
src_prepare() {
# Disable tests that fail under network-sandbox
sed -e 's:TestServer_StartStop:_TestServer_StartStop:' \
-i consul/server_test.go || die
sed -e 's:TestRetryJoin(:_TestRetryJoin(:' \
-i command/agent/command_test.go || die
}
src_compile() {
emake
if use web; then
pushd ui >/dev/null || die
emake dist
fi
}
src_install() {
local x
dobin bin/*
rm -rf bin || die
keepdir /etc/consul.d
insinto /etc/consul.d
doins "${FILESDIR}/"*.json.example
for x in /var/{lib,log}/${PN}; do
keepdir "${x}"
fowners consul:consul "${x}"
done
if use web; then
insinto /var/lib/${PN}/ui
doins -r ui/dist/*
fi
newinitd "${FILESDIR}/consul.initd" "${PN}"
newconfd "${FILESDIR}/consul.confd" "${PN}"
systemd_dounit "${FILESDIR}/consul.service"
egit_clean "${WORKDIR}"/{pkg,src}
find "${WORKDIR}"/src/${GO_PN} -mindepth 1 -maxdepth 1 -type f -delete || die
while read -r -d '' x; do
x=${x#${WORKDIR}/src}
[[ -d ${WORKDIR}/pkg/$(go env GOOS)_$(go env GOARCH)/${x} ||
-f ${WORKDIR}/pkg/$(go env GOOS)_$(go env GOARCH)/${x}.a ]] && continue
rm -rf "${WORKDIR}"/src/${x}
done < <(find "${WORKDIR}"/src/${GO_PN} -mindepth 1 -maxdepth 1 -type d -print0)
insopts -m0644 -p # preserve timestamps for bug 551486
insinto "$(get_golibdir)/pkg/$(go env GOOS)_$(go env GOARCH)/${GO_PN%/*}"
doins -r "${WORKDIR}"/pkg/$(go env GOOS)_$(go env GOARCH)/${GO_PN}
insinto "$(get_golibdir)/src/${GO_PN%/*}"
doins -r "${WORKDIR}"/src/${GO_PN}
}