chrony-4.0.ebuild 4.15 KB
Newer Older
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
1 2 3 4 5 6 7 8
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7
inherit systemd tmpfiles toolchain-funcs

DESCRIPTION="NTP client and server programs"
HOMEPAGE="https://chrony.tuxfamily.org/"
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
9 10 11 12 13 14 15 16 17 18

if [[ ${PV} == "9999" ]]; then
	EGIT_REPO_URI="https://git.tuxfamily.org/chrony/chrony.git"

	inherit git-r3
else
	SRC_URI="https://download.tuxfamily.org/${PN}/${P/_/-}.tar.gz"
	KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
fi

Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
19 20 21
LICENSE="GPL-2"
SLOT="0"
IUSE="
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
22
	+caps +cmdmon html ipv6 libedit +nettle +ntp +phc pps +refclock
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
23
	+rtc samba +seccomp +sechash selinux
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
24 25
"
REQUIRED_USE="
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
26
	sechash? ( nettle )
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
27
"
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
28
RESTRICT=test
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
29 30 31
CDEPEND="
	caps? ( acct-group/ntp acct-user/ntp sys-libs/libcap )
	libedit? ( dev-libs/libedit )
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
32
	nettle? ( dev-libs/nettle:= )
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
33 34 35 36 37 38 39 40 41 42 43
	seccomp? ( sys-libs/libseccomp )
"
DEPEND="
	${CDEPEND}
	html? ( dev-ruby/asciidoctor )
	pps? ( net-misc/pps-tools )
"
RDEPEND="
	${CDEPEND}
	selinux? ( sec-policy/selinux-chronyd )
"
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
44 45 46
BDEPEND="
	nettle? ( virtual/pkgconfig )
"
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
47 48 49 50
PATCHES=(
	"${FILESDIR}"/${PN}-3.5-pool-vendor-gentoo.patch
	"${FILESDIR}"/${PN}-3.5-r3-systemd-gentoo.patch
)
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
51 52 53 54 55
S="${WORKDIR}/${P/_/-}"

if [[ ${PV} == "9999" ]]; then
	BDEPEND+=" virtual/w3m"
fi
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
56 57 58

src_prepare() {
	default
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
59

Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
60 61 62 63
	sed -i \
		-e 's:/etc/chrony\.conf:/etc/chrony/chrony.conf:g' \
		doc/* examples/* || die

Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
64 65 66 67 68 69 70
	sed -i \
		-e 's|RELOADDNS||g' \
		-e 's|pkg-config|${PKG_CONFIG}|g' \
		configure || die

	cp "${FILESDIR}"/chronyd.conf "${T}"/chronyd.conf || die
}
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
71

Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
72
src_configure() {
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
73 74
	if ! use caps; then
		sed -i \
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
75 76
			-e 's/ -u ntp//' \
			"${T}"/chronyd.conf examples/chronyd.service || die
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
77 78 79 80
	fi

	if ! use seccomp; then
		sed -i \
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
81 82
			-e 's/ -F 0//' \
			"${T}"/chronyd.conf examples/chronyd.service || die
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
83 84
	fi

Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
85
	tc-export CC PKG_CONFIG
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
86

Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
87 88
	# Note: ncurses and nss switches are mentioned in the configure script but
	# do nothing
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
89 90 91 92 93 94
	# not an autotools generated script
	local myconf=(
		$(use_enable seccomp scfilter)
		$(usex caps '' --disable-linuxcaps)
		$(usex cmdmon '' --disable-cmdmon)
		$(usex ipv6 '' --disable-ipv6)
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
95
		$(usex libedit '' --without-editline)
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
96
		$(usex nettle '' --without-nettle)
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
97 98 99 100 101
		$(usex ntp '' --disable-ntp)
		$(usex phc '' --disable-phc)
		$(usex pps '' --disable-pps)
		$(usex refclock '' --disable-refclock)
		$(usex rtc '' --disable-rtc)
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
102 103
		$(usex samba --enable-ntp-signd '')
		$(usex sechash '' --disable-sechash)
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
104 105 106 107 108 109
		${EXTRA_ECONF}
		--chronysockdir="${EPREFIX}/run/chrony"
		--docdir="${EPREFIX}/usr/share/doc/${PF}"
		--mandir="${EPREFIX}/usr/share/man"
		--prefix="${EPREFIX}/usr"
		--sysconfdir="${EPREFIX}/etc/chrony"
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
110
		--with-hwclockfile="${EPREFIX}/etc/adjtime"
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
111 112 113 114 115
		--with-pidfile="${EPREFIX}/run/chrony/chronyd.pid"
		--without-nss
		--without-tomcrypt
	)

Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
116 117 118
	# print the ./configure call
	echo sh ./configure "${myconf[@]}" >&2
	sh ./configure "${myconf[@]}" || die
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
119 120 121
}

src_compile() {
Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
122 123 124 125 126
	if [[ ${PV} == "9999" ]]; then
		# uses w3m
		emake -C doc man txt
	fi

Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
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
	emake all docs $(usex html '' 'ADOC=true')
}

src_install() {
	default

	newinitd "${FILESDIR}"/chronyd.init-r2 chronyd
	newconfd "${T}"/chronyd.conf chronyd

	insinto /etc/${PN}
	newins examples/chrony.conf.example1 chrony.conf

	docinto examples
	dodoc examples/*.example*

	newtmpfiles - chronyd.conf <<<"d /run/chrony 0750 $(usex caps 'ntp ntp' 'root root')"

	if use html; then
		docinto html
		dodoc doc/*.html
	fi

	keepdir /var/{lib,log}/chrony

	if use caps; then
		# Prepare a directory for the chrony.drift file (a la ntpsec)
		# Ensures the environment is sane on new installs
		fowners ntp:ntp /var/{lib,log}/chrony
		fperms 770 /var/lib/chrony
	fi

	insinto /etc/logrotate.d
	newins "${FILESDIR}"/chrony-2.4-r1.logrotate chrony

Liguros - Gitlab CI/CD [master]'s avatar
updates  
Liguros - Gitlab CI/CD [master] committed
161
	systemd_dounit examples/chronyd.service
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
	systemd_dounit examples/chrony-wait.service
	systemd_enable_ntpunit 50-chrony chronyd.service
}

pkg_preinst() {
	HAD_CAPS=false

	if has_version 'net-misc/chrony[caps]'; then
		HAD_CAPS=true
	fi
}

pkg_postinst() {
	tmpfiles_process chronyd.conf

Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
177
	if [[ -n ${REPLACING_VERSIONS} ]] && use caps && ! ${HAD_CAPS}; then
Liguros - Gitlab CI/CD [develop]'s avatar
updates  
Liguros - Gitlab CI/CD [develop] committed
178 179 180 181 182
		ewarn "Please adjust permissions on ${EROOT}/var/{lib,log}/chrony to be owned by ntp:ntp"
		ewarn "e.g. chown -R ntp:ntp ${EROOT}/var/{lib,log}/chrony"
		ewarn "This is necessary for chrony to drop privileges"
	fi
}