summaryrefslogtreecommitdiff
blob: 90aad649918c4d413b19595c24f62881fdd10534 (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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI="7"

inherit toolchain-funcs user

DESCRIPTION="Inspire IRCd - The Stable, High-Performance Modular IRCd"
HOMEPAGE="https://inspircd.github.com/"
SRC_URI="https://github.com/inspircd/inspircd/archive/v${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ~ppc ~ppc64 ~x86"
IUSE="debug gnutls ldap maxminddb mbedtls mysql pcre postgres re2 regex-posix regex-stdlib sqlite ssl sslrehashsignal tre"

RDEPEND="
	dev-lang/perl
	gnutls? ( net-libs/gnutls:= dev-libs/libgcrypt:0 )
	ldap? ( net-nds/openldap )
	maxminddb? ( dev-libs/libmaxminddb )
	mbedtls? ( net-libs/mbedtls:= )
	mysql? ( dev-db/mysql-connector-c:= )
	pcre? ( dev-libs/libpcre )
	postgres? ( dev-db/postgresql:= )
	re2? ( dev-libs/re2:= )
	sqlite? ( >=dev-db/sqlite-3.0 )
	ssl? ( dev-libs/openssl:= )
	tre? ( dev-libs/tre )"
DEPEND="${RDEPEND}"

DOCS=( docs/. )
PATCHES=( "${FILESDIR}"/${P}-fix-path-builds.patch )

pkg_setup() {
	enewgroup ${PN}
	enewuser ${PN} -1 -1 -1 ${PN}
}

src_prepare() {
	default

	# Patch the inspircd launcher with the inspircd user
	sed -i -e "s/@UID@/${PN}/" "make/template/${PN}" || die
}

src_configure() {
	local extras=""

	use gnutls && extras+="m_ssl_gnutls.cpp,"
	use ldap && extras+="m_ldap.cpp,"
	use maxminddb && extras+="m_geo_maxmind.cpp,"
	use mbedtls && extras+="m_ssl_mbedtls.cpp,"
	use mysql && extras+="m_mysql.cpp,"
	use pcre && extras+="m_regex_pcre.cpp,"
	use postgres && extras+="m_pgsql.cpp,"
	use re2 && extras+="m_regex_re2.cpp,"
	use regex-posix && extras+="m_regex_posix.cpp,"
	use regex-stdlib && extras+="m_regex_stdlib.cpp,"
	use sqlite && extras+="m_sqlite3.cpp,"
	use ssl && extras+="m_ssl_openssl.cpp,"
	use sslrehashsignal && extras+="m_sslrehashsignal.cpp,"
	use tre && extras+="m_regex_tre.cpp,"

	# The first configuration run enables certain "extra" InspIRCd
	# modules, the second run generates the actual makefile.
	if [[ -n "${extras}" ]]; then
		./configure --disable-interactive --enable-extras=${extras%,}
	fi

	local myconf=(
		--disable-interactive
		--disable-auto-extras
		--prefix="/usr/$(get_libdir)/${PN}"
		--config-dir="/etc/${PN}"
		--data-dir="/var/lib/${PN}/data"
		--log-dir="/var/log/${PN}"
		--binary-dir="/usr/bin"
		--module-dir="/usr/$(get_libdir)/${PN}/modules"
		--manual-dir="/usr/share/man")
	CXX="$(tc-getCXX)" ./configure "${myconf[@]}"
}

src_compile() {
	emake LDFLAGS="${LDFLAGS}" CXXFLAGS="${CXXFLAGS}" $(usex debug 'INSPIRCD_DEBUG=2' '') INSPIRCD_VERBOSE=1
}

src_install() {
	emake DESTDIR="${D%/}" install

	# Default is '0750', which causes init errors.
	fperms 0755 /usr/bin/inspircd{,-genssl}
	# Default is '0640', causing module load errors.
	fperms -R 0755 "/usr/lib64/inspircd/modules/."

	insinto "/usr/include/${PN}"
	doins -r include/.

	einstalldocs

	newinitd "${FILESDIR}/${PN}.initd" "${PN}"
	newconfd "${FILESDIR}/${PN}.confd" "${PN}"

	keepdir "/var/log/${PN}"

	diropts -o"${PN}" -g"${PN}" -m0700
	keepdir "/var/lib/${PN}/data"
}

pkg_postinst() {
	if [[ -z "${REPLACING_VERSIONS}" ]]; then
		# This is a new installation
		elog "You will find example configuration files under "
		elog "/usr/share/doc/${PN}"
		elog "Read the ${PN}.conf.example file carefully before "
		elog "starting the service."
	fi
	local pv
	for pv in ${REPLACING_VERSIONS}; do
		if ver_test "${pv}" -lt "2.0.24-r1"; then
			elog "Starting with 2.0.24-r1 the daemon is no longer started"
			elog "with the --logfile option and you are thus expected to define"
			elog "logging in the InspIRCd configuration file if you want it."
		fi
		if ver_test "${pv}" -lt "3.0.0"; then
			elog "Version 3.0 is a major upgrade which contains breaking"
			elog "changes.  You will need to update your configuration files."
			elog "See: https://docs.inspircd.org/3/configuration-changes"
		fi
	done
}