summaryrefslogtreecommitdiff
blob: 442e9519dbed47b6fe675376072a079289fefeb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=5
inherit eutils readme.gentoo systemd user

DESCRIPTION="Dictionary Client/Server for the DICT protocol"
HOMEPAGE="http://www.dict.org/ https://sourceforge.net/projects/dict/"
SRC_URI="mirror://sourceforge/dict/${P}.tar.gz"

SLOT="0"
# We install rfc so - ISOC-rfc
LICENSE="GPL-2 ISOC-rfc"
KEYWORDS="alpha amd64 ~arm ~arm64 ~hppa ia64 ~mips ppc ppc64 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris"
IUSE="dbi judy minimal"

# <gawk-3.1.6 makes tests fail.
RDEPEND="
	sys-libs/zlib
	dev-libs/libmaa
	dbi? ( dev-db/libdbi )
	judy? ( dev-libs/judy )
	>=sys-apps/coreutils-6.10
"
DEPEND="${RDEPEND}
	>=sys-apps/gawk-3.1.6
	virtual/yacc
"

DOC_CONTENTS="
	To start and use ${PN} you need to emerge at least one dictionary from
	the app-dicts category with the package name starting with 'dictd-'.
	To install all available dictionaries, emerge app-dicts/dictd-dicts.
	${PN} will NOT start without at least one dictionary.\n
	\nIf you are running systemd, you will need to review the instructions
	explained in /etc/dict/dictd.conf comments.
"

pkg_setup() {
	enewgroup dictd # used in src_test()
	enewuser dictd -1 -1 -1 dictd
}

src_prepare() {
	epatch "${FILESDIR}"/dictd-1.10.11-colorit-nopp-fix.patch
	epatch "${FILESDIR}"/dictd-1.12.0-build.patch

	[[ ${CHOST} == *-darwin* ]] && \
		sed -i -e 's:libtool:glibtool:g' Makefile.in
}

src_configure() {
	econf \
		$(use_with dbi plugin-dbi) \
		$(use_with judy plugin-judy) \
		--sysconfdir="${EPREFIX}"/etc/dict
}

src_compile() {
	if use minimal; then
		emake dictfmt dictzip dictzip
	else
		emake
	fi
}

src_test() {
	use minimal && return 0 # All tests are for dictd which we don't build...
	if [[ ${EUID} -eq 0 ]]; then
		# If dictd is run as root user (-userpriv) it drops its privileges to
		# dictd user and group. Give dictd group write access to test directory.
		chown :dictd "${WORKDIR}" "${S}/test"
		chmod 770 "${WORKDIR}" "${S}/test"
	fi
	emake test
}

src_install() {
	if use minimal; then
		emake DESTDIR="${D}" install.dictzip install.dict install.dictfmt
	else
		emake DESTDIR="${D}" install

		dodoc doc/{dicf.ms,rfc.ms,rfc.sh,rfc2229.txt}
		dodoc doc/{security.doc,toc.ms}
		newdoc examples/dictd1.conf dictd.conf.example

		# conf files. For dict.conf see below.
		insinto /etc/dict
		for f in dictd.conf site.info colorit.conf; do
			doins "${FILESDIR}/1.10.11/${f}"
		done

		# startups for dictd
		newinitd "${FILESDIR}/1.10.11/dictd.initd" dictd
		newconfd "${FILESDIR}/1.10.11/dictd.confd" dictd
		systemd_dounit "${FILESDIR}"/${PN}.service
	fi

	insinto /etc/dict
	doins "${FILESDIR}/1.10.11/dict.conf"
	# Install docs
	dodoc README TODO ChangeLog ANNOUNCE NEWS

	readme.gentoo_create_doc
}