summaryrefslogtreecommitdiff
blob: ccc36ca0bd315b60a5041a87180649912a0af453 (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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit autotools flag-o-matic systemd tmpfiles

MY_P=${P/_p/p}
DESCRIPTION="Network Time Protocol suite/programs"
HOMEPAGE="https://www.ntp.org/"
SRC_URI="https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-${PV:0:3}/${MY_P}.tar.gz"
S="${WORKDIR}/${MY_P}"

LICENSE="HPND BSD ISC"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm arm64 hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="caps debug ipv6 openntpd parse-clocks readline samba selinux snmp ssl +threads vim-syntax zeroconf"

DEPEND="
	>=dev-libs/libevent-2.0.9:=[threads(+)?]
	readline? ( >=sys-libs/readline-4.1:= )
	kernel_linux? ( caps? ( sys-libs/libcap ) )
	zeroconf? ( net-dns/avahi[mdnsresponder-compat] )
	snmp? ( net-analyzer/net-snmp )
	ssl? ( dev-libs/openssl:= )
	parse-clocks? ( net-misc/pps-tools )
"
RDEPEND="
	${DEPEND}
	acct-group/ntp
	acct-user/ntp
	selinux? ( sec-policy/selinux-ntp )
	vim-syntax? ( app-vim/ntp-syntax )
	!net-misc/ntpsec
	!openntpd? ( !net-misc/openntpd )
"
BDEPEND="
	acct-group/ntp
	acct-user/ntp
	virtual/pkgconfig
"
PDEPEND="openntpd? ( net-misc/openntpd )"

PATCHES=(
	"${FILESDIR}"/${PN}-4.2.8-ipc-caps.patch # bug #533966
	"${FILESDIR}"/${PN}-4.2.8-sntp-test-pthreads.patch # bug #563922
	"${FILESDIR}"/${PN}-4.2.8_p14-add_cap_ipc_lock.patch # bug #711530
	"${FILESDIR}"/${PN}-4.2.8_p15-configure-clang16.patch
)

src_prepare() {
	default

	# Make sure every build uses the same install layout, bug #539092
	find sntp/loc/ -type f '!' -name legacy -delete || die

	# bug #622754
	eautoreconf

	# Disable pointless checks.
	touch .checkChangeLog .gcc-warning FRC.html html/.datecheck || die
}

src_configure() {
	# bug #264109
	append-cppflags -D_GNU_SOURCE

	# avoid libmd5/libelf
	export ac_cv_search_MD5Init=no ac_cv_header_md5_h=no
	export ac_cv_lib_elf_nlist=no
	# blah, no real configure options #176333
	export ac_cv_header_dns_sd_h=$(usex zeroconf)
	export ac_cv_lib_dns_sd_DNSServiceRegister=${ac_cv_header_dns_sd_h}
	# Unity builds, we don't really need support for it, bug #804109
	export PATH_RUBY=/bin/false

	local myeconfargs=(
		--with-lineeditlibs=readline,edit,editline
		--with-yielding-select
		--disable-local-libevent

		# Increase the default memlimit from 32MiB to 128MiB, bug #533232
		--with-memlock=256

		# Avoid overriding the user's toolchain settings, bug #895802
		--with-hardenfile=/dev/null

		$(use_enable caps linuxcaps)
		$(use_enable parse-clocks)
		$(use_enable ipv6)
		$(use_enable debug debugging)
		$(use_with readline lineeditlibs readline)
		$(use_enable samba ntp-signd)
		$(use_with snmp ntpsnmpd)
		$(use_with ssl crypto)
		$(use_enable threads thread-support)
	)

	econf "${myeconfargs[@]}"
}

src_install() {
	default

	# Move ntpd/ntpdate to sbin, bug #66671
	dodir /usr/sbin
	mv "${ED}"/usr/bin/{ntpd,ntpdate} "${ED}"/usr/sbin/ || die "move to sbin"

	dodoc INSTALL WHERE-TO-START

	insinto /etc
	doins "${FILESDIR}"/ntp.conf

	#bug #524726
	use ipv6 || sed -i '/^restrict .*::1/d' "${ED}"/etc/ntp.conf

	newinitd "${FILESDIR}"/ntpd.rc-r2 ntpd
	newconfd "${FILESDIR}"/ntpd.confd ntpd
	newinitd "${FILESDIR}"/ntp-client.rc ntp-client
	newconfd "${FILESDIR}"/ntp-client.confd ntp-client
	newinitd "${FILESDIR}"/sntp.rc sntp
	newconfd "${FILESDIR}"/sntp.confd sntp
	if ! use caps ; then
		sed -i "s|-u ntp:ntp||" "${ED}"/etc/conf.d/ntpd || die
	fi
	sed -i "s:/usr/bin:/usr/sbin:" "${ED}"/etc/init.d/ntpd || die

	if use openntpd ; then
		cd "${ED}" || die
		rm usr/sbin/ntpd || die
		rm etc/{conf,init}.d/ntpd || die
		rm usr/share/man/man1/ntpd.1 || die
	else
		newtmpfiles "${FILESDIR}"/ntp.tmpfiles ntp.conf
		systemd_newunit "${FILESDIR}"/ntpd.service-r2 ntpd.service
		if use caps ; then
			sed -i '/ExecStart/ s|$| -u ntp:ntp|' \
				"${D}$(systemd_get_systemunitdir)"/ntpd.service \
				|| die
		fi
		systemd_enable_ntpunit 60-ntpd ntpd.service
	fi

	systemd_newunit "${FILESDIR}"/ntpdate.service-r2 ntpdate.service
	systemd_install_serviced "${FILESDIR}"/ntpdate.service.conf
	systemd_newunit "${FILESDIR}"/sntp.service-r3 sntp.service
	systemd_install_serviced "${FILESDIR}"/sntp.service.conf
}

pkg_postinst() {
	if ! use openntpd; then
		tmpfiles_process ntp.conf
	fi

	if grep -qs '^[^#].*notrust' "${EROOT}"/etc/ntp.conf ; then
		eerror "The notrust option was found in your /etc/ntp.conf!"
		ewarn "If your ntpd starts sending out weird responses,"
		ewarn "then make sure you have keys properly setup and see"
		ewarn "https://bugs.gentoo.org/41827"
	fi
}