forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
app-crypt/ekeyd: don't depend directly on openrc
Closes: https://bugs.gentoo.org/649476 Package-Manager: Portage-2.3.24, Repoman-2.3.6
- Loading branch information
Showing
1 changed file
with
164 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,164 @@ | ||
# Copyright 1999-2018 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=5 | ||
|
||
inherit eutils multilib linux-info toolchain-funcs udev systemd | ||
|
||
DESCRIPTION="Entropy Key userspace daemon" | ||
HOMEPAGE="http://www.entropykey.co.uk/" | ||
SRC_URI="mirror://ubuntu/pool/universe/e/ekeyd/ekeyd_${PV}.orig.tar.gz" | ||
|
||
LICENSE="MIT GPL-2" # GPL-2 (only) for init script | ||
SLOT="0" | ||
KEYWORDS="~amd64 ~x86" | ||
IUSE="kernel_linux munin minimal usb" | ||
REQUIRED_USE="minimal? ( !munin )" | ||
|
||
EKEYD_RDEPEND="dev-lang/lua" | ||
EKEYD_DEPEND="${EKEYD_RDEPEND}" | ||
EKEYD_RDEPEND="${EKEYD_RDEPEND} | ||
dev-lua/luasocket | ||
kernel_linux? ( virtual/udev ) | ||
munin? ( net-analyzer/munin )" | ||
|
||
RDEPEND="!minimal? ( ${EKEYD_RDEPEND} ) | ||
!app-crypt/ekey-egd-linux | ||
virtual/service-manager" | ||
DEPEND="!minimal? ( ${EKEYD_DEPEND} )" | ||
|
||
CONFIG_CHECK="~USB_ACM" | ||
|
||
pkg_setup() { | ||
if ! use minimal && use kernel_linux && ! use usb && linux_config_exists; then | ||
check_extra_config | ||
fi | ||
} | ||
|
||
src_prepare() { | ||
epatch "${FILESDIR}/${P}-const_char_usage.patch"; | ||
epatch "${FILESDIR}/${P}-enoent.patch"; | ||
epatch "${FILESDIR}/${P}-path-fixes.patch"; | ||
epatch "${FILESDIR}/${P}-udev-rule.patch"; | ||
epatch "${FILESDIR}/${P}-remove-werror.patch"; | ||
epatch "${FILESDIR}/${P}-misc.patch"; | ||
} | ||
|
||
src_compile() { | ||
local osname | ||
|
||
# Override automatic detection: upstream provides this with uname, | ||
# we don't like using uname. | ||
case ${CHOST} in | ||
*-linux-*) | ||
osname=linux;; | ||
*-freebsd*) | ||
osname=freebsd;; | ||
*-kfrebsd-gnu) | ||
osname=gnukfreebsd;; | ||
*-openbsd*) | ||
osname=openbsd;; | ||
*) | ||
die "Unsupported operating system!" | ||
;; | ||
esac | ||
|
||
# We don't slot LUA so we don't really need to have the variables | ||
# set at all. | ||
emake -C host \ | ||
CC="$(tc-getCC)" \ | ||
LUA_V= LUA_INC= \ | ||
OSNAME=${osname} \ | ||
OPT="${CFLAGS}" \ | ||
BUILD_ULUSBD=no \ | ||
$(use minimal && echo egd-linux) | ||
} | ||
|
||
src_install() { | ||
exeinto /usr/libexec | ||
newexe host/egd-linux ekey-egd-linux | ||
newman host/egd-linux.8 ekey-egd-linux.8 | ||
|
||
newconfd "${FILESDIR}"/ekey-egd-linux.conf.2 ekey-egd-linux | ||
newinitd "${FILESDIR}"/ekey-egd-linux.init.2 ekey-egd-linux | ||
|
||
dodoc doc/* AUTHORS ChangeLog THANKS | ||
|
||
use minimal && return | ||
# from here on, install everything that is not part of the minimal | ||
# support. | ||
|
||
emake -C host \ | ||
DESTDIR="${D}" \ | ||
MANZCMD=cat MANZEXT= \ | ||
install-ekeyd | ||
|
||
# We move the daemons around to avoid polluting the available | ||
# commands. | ||
dodir /usr/libexec | ||
mv "${D}"/usr/sbin/ekey*d "${D}"/usr/libexec | ||
|
||
systemd_dounit "${FILESDIR}/ekeyd.service" | ||
|
||
newinitd "${FILESDIR}"/${PN}.init.2 ${PN} | ||
|
||
if use kernel_linux; then | ||
local rules="${FILESDIR}/90-ekeyd.rules" | ||
udev_newrules ${rules} 90-${PN}.rules | ||
fi | ||
|
||
if use munin; then | ||
exeinto /usr/libexec/munin/plugins | ||
doexe munin/ekeyd_stat_ | ||
|
||
insinto /etc/munin/plugin-conf.d | ||
newins munin/plugin-conf.d_ekeyd ekeyd | ||
fi | ||
} | ||
|
||
pkg_postinst() { | ||
elog "${CATEGORY}/${PN} now install also the EGD client service ekey-egd-linux." | ||
elog "To use this service, you need enable EGDTCPSocket for the ekeyd service" | ||
elog "managing the key(s)." | ||
elog "" | ||
elog "The daemon will send more entropy to the kernel once the available pool" | ||
elog "falls below the value set in the kernel.random.write_wakeup_threshold" | ||
elog "sysctl entry." | ||
elog "" | ||
ewarn "Since version 1.1.4-r1, ekey-egd-linux will *not* set the watermark for" | ||
ewarn "you, instead you'll have to configure the sysctl in /etc/sysctl.conf" | ||
|
||
use minimal && return | ||
# from here on, document everything that is not part of the minimal | ||
# support. | ||
|
||
elog "" | ||
elog "To make use of your EntropyKey, make sure to execute ekey-rekey" | ||
elog "the first time, and then start the ekeyd service." | ||
elog "" | ||
elog "By default ekeyd will feed the entropy directly to the kernel's pool;" | ||
elog "if your system has jumps in load average, you might prefer using the" | ||
elog "EGD compatibility mode, by enabling EGDTCPSocket for ekeyd and then" | ||
elog "starting the ekey-egd-linux service." | ||
elog "" | ||
elog "The same applies if you intend to provide entropy for multiple hosts" | ||
elog "over the network. If you want to have the ekey-egd-linux service on" | ||
elog "other hosts, you can enable the 'minimal' USE flag." | ||
elog "" | ||
elog "The service supports multiplexing if you wish to use multiple" | ||
elog "keys, just symlink /etc/init.d/ekeyd → /etc/init.d/ekeyd.identifier" | ||
elog "and it'll be looking for /etc/entropykey/identifier.conf" | ||
elog "" | ||
|
||
if use kernel_linux; then | ||
elog "Some versions of Linux have a faulty CDC ACM driver that stops" | ||
elog "EntropyKey from working properly; please check the compatibility" | ||
elog "table at http://www.entropykey.co.uk/download/" | ||
else | ||
elog "Make sure your operating system supports the CDC ACM driver" | ||
elog "or otherwise you won't be able to use the EntropyKey." | ||
fi | ||
elog "" | ||
elog "If you're unsure about the working state of the CDC ACM driver" | ||
elog "enable the usb USE flag and use the userland USB daemon" | ||
} |