summaryrefslogtreecommitdiff
blob: c329818c19abf4f4ce82f11e187ae11291795db0 (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
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit linux-info systemd toolchain-funcs

DESCRIPTION="Kernel based automounter"
HOMEPAGE="https://web.archive.org/web/*/http://www.linux-consulting.com/Amd_AutoFS/autofs.html https://git.kernel.org/pub/scm/linux/storage/autofs/autofs.git"
SRC_URI="https://www.kernel.org/pub/linux/daemons/${PN}/v5/${P}.tar.xz
	https://dev.gentoo.org/~dlan/distfiles/${CATEGORY}/${PN}/${P}-patches-0.tar.xz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ~mips ppc ppc64 ~riscv sparc x86"
IUSE="dmalloc ldap +libtirpc mount-locking sasl selinux systemd"

# currently, sasl code assumes the presence of kerberosV
RDEPEND="
	net-libs/libnsl:=
	>=sys-apps/util-linux-2.20
	dmalloc? ( dev-libs/dmalloc[threads] )
	ldap? (
		>=net-nds/openldap-2.0:=
		sasl? (
			dev-libs/cyrus-sasl
			dev-libs/libxml2
			virtual/krb5
		)
	)
	systemd? ( sys-apps/systemd )
	libtirpc? ( net-libs/libtirpc:= )
	!libtirpc? ( elibc_glibc? ( sys-libs/glibc[rpc(-)] ) )
"
DEPEND="${RDEPEND}
	libtirpc? ( net-libs/rpcsvc-proto )
"
BDEPEND="
	sys-devel/flex
	virtual/pkgconfig
	app-alternatives/yacc
"
RDEPEND+=" selinux? ( sec-policy/selinux-automount )"

PATCHES=(
	"${WORKDIR}"/${P}-patches/
	"${FILESDIR}/${P}-dmalloc.patch"
	"${FILESDIR}/${P}-nfsv4-mount.patch"
	"${FILESDIR}/${P}-mount_conflict.patch"
)

pkg_setup() {
	linux-info_pkg_setup

	local CONFIG_CHECK

	if kernel_is -ge 4 18; then
		CONFIG_CHECK="~AUTOFS_FS"
	else
		CONFIG_CHECK="~AUTOFS4_FS"
	fi

	check_extra_config
}

src_prepare() {
	sed -i	-e "s:/usr/bin/kill:/bin/kill:" samples/autofs.service.in || die # bug #479492
	sed -i	-e "/^EnvironmentFile/d"        samples/autofs.service.in || die # bug #592334

	# Install samples including autofs.service
	sed -i -e "/^SUBDIRS/s/$/ samples/g" Makefile.rules || die

	default
}

src_configure() {
	# bug #483716
	tc-export AR
	# --with-confdir is for bug #361481
	# --with-mapdir is for bug #385113
	local myeconfargs=(
		--with-confdir=/etc/conf.d
		--with-mapdir=/etc/autofs
		$(use_with dmalloc)
		$(use_with ldap openldap)
		$(use_with libtirpc)
		$(use_with sasl)
		$(use_enable mount-locking)
		$(use_with systemd systemd $(systemd_get_systemunitdir)) # bug #479492
		--without-hesiod
		--disable-ext-env
		--enable-sloppy-mount # bug #453778
		--enable-force-shutdown
		--enable-ignore-busy
		RANLIB="$(type -P $(tc-getRANLIB))" # bug #483716
	)

	CONFIG_SHELL="${BROOT}/bin/bash" econf "${myeconfargs[@]}"
}

src_compile() {
	emake STRIP=: DONTSTRIP=1
}

src_install() {
	default
	rmdir "${D}"/run

	if kernel_is -lt 2 6 30; then
		# kernel patches
		docinto patches
		dodoc patches/${PN}4-2.6.??{,.?{,?}}-v5-update-????????.patch
	fi
	newinitd "${FILESDIR}"/autofs5.initd autofs
	insinto etc/autofs
	newins "${FILESDIR}"/autofs5-auto.master auto.master
}

pkg_postinst() {
	if kernel_is -lt 2 6 30; then
		elog "This version of ${PN} requires a kernel with autofs4 supporting"
		elog "protocol version 5.00. Patches for kernels older than 2.6.30 have"
		elog "been installed into"
		elog "${EROOT}/usr/share/doc/${P}/patches."
		elog "For further instructions how to patch the kernel, please refer to"
		elog "${EROOT}/usr/share/doc/${P}/INSTALL."
		elog
	fi
	elog "If you plan on using autofs for automounting remote NFS mounts,"
	elog "please check that both portmap (or rpcbind) and rpc.statd/lockd"
	elog "are running."
}