summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-fs/nfs-utils')
-rw-r--r--net-fs/nfs-utils/Manifest3
-rw-r--r--net-fs/nfs-utils/files/exports1
-rw-r--r--net-fs/nfs-utils/files/nfs-utils-1.1.4-mtab-sym.patch39
-rw-r--r--net-fs/nfs-utils/files/nfs-utils-1.2.8-cross-build.patch48
-rw-r--r--net-fs/nfs-utils/files/nfs-utils-1.3.0-gcc-4.9.patch62
-rw-r--r--net-fs/nfs-utils/files/nfs-utils-1.3.2-background-statd.patch30
-rw-r--r--net-fs/nfs-utils/files/nfs-utils.conf3
-rw-r--r--net-fs/nfs-utils/files/nfs.confd38
-rwxr-xr-xnet-fs/nfs-utils/files/nfs.initd163
-rw-r--r--net-fs/nfs-utils/files/nfsclient.confd18
-rw-r--r--net-fs/nfs-utils/files/nfsclient.initd34
-rw-r--r--net-fs/nfs-utils/files/nfsd.service-r115
-rw-r--r--net-fs/nfs-utils/files/nfsmount.confd7
-rwxr-xr-xnet-fs/nfs-utils/files/nfsmount.initd48
-rw-r--r--net-fs/nfs-utils/files/nfsmount.initd-1.3.127
-rw-r--r--net-fs/nfs-utils/files/proc-fs-nfsd.mount8
-rw-r--r--net-fs/nfs-utils/files/rpc-gssd.service12
-rw-r--r--net-fs/nfs-utils/files/rpc-idmapd.service11
-rw-r--r--net-fs/nfs-utils/files/rpc-mountd.service-r110
-rw-r--r--net-fs/nfs-utils/files/rpc-statd.service-r212
-rw-r--r--net-fs/nfs-utils/files/rpc-svcgssd.service13
-rwxr-xr-xnet-fs/nfs-utils/files/rpc.gssd.initd24
-rwxr-xr-xnet-fs/nfs-utils/files/rpc.idmapd.initd26
-rw-r--r--net-fs/nfs-utils/files/rpc.pipefs.initd33
-rwxr-xr-xnet-fs/nfs-utils/files/rpc.statd.initd33
-rwxr-xr-xnet-fs/nfs-utils/files/rpc.svcgssd.initd24
-rw-r--r--net-fs/nfs-utils/files/var-lib-nfs-rpc_pipefs.mount7
-rw-r--r--net-fs/nfs-utils/metadata.xml17
-rw-r--r--net-fs/nfs-utils/nfs-utils-1.2.9-r3.ebuild153
-rw-r--r--net-fs/nfs-utils/nfs-utils-1.3.1-r4.ebuild172
-rw-r--r--net-fs/nfs-utils/nfs-utils-1.3.1-r5.ebuild172
-rw-r--r--net-fs/nfs-utils/nfs-utils-1.3.2-r6.ebuild177
32 files changed, 1440 insertions, 0 deletions
diff --git a/net-fs/nfs-utils/Manifest b/net-fs/nfs-utils/Manifest
new file mode 100644
index 000000000000..987134ab8946
--- /dev/null
+++ b/net-fs/nfs-utils/Manifest
@@ -0,0 +1,3 @@
+DIST nfs-utils-1.2.9.tar.bz2 774112 SHA256 90b76d5692a520b74273e607a4fd69df4cc35f65e242e22e2bc61b58759722f3 SHA512 c71f986a7e8f38492f8411540b32fef904f689b45b831e0e3c193628085d09742c6352dc42d6d374b8ded12e2b54f8fb3c8de66695a36cf038fc4afa5c29879e WHIRLPOOL 22e86859e9bf7a9a298c91f73a8afea63aa1e39753062ff664a17601d311d62f8f0efed8a0c5271751b53bb46cfc91bf721ca852dc1e744e4bb51f321a34c119
+DIST nfs-utils-1.3.1.tar.bz2 785800 SHA256 748c4afbdfd3e92017fe579f1dd3280a10db1306c43228f83cd6b55f0d95aed3 SHA512 304e718aaee1df4decb0711c58c814ac773d55277baca01fd74d275969b9a1cee4bf0c0c20ba3ed72a112bd92b4744d45179f29a2a69a7fc2ca2590762a671c9 WHIRLPOOL 6fe5e9957c4a2775871ede47d1020f1a642e9242501ff3d21b74c4772ae8dfcafba27334e5844a06f9cc3e0fd286d1f90573511c2b198e330cb46c06cdbfc592
+DIST nfs-utils-1.3.2.tar.bz2 789540 SHA256 5b9c72eef260b86a84619771e11bb013b99431e6b7ff0bbdc03fee90dba591f7 SHA512 65633db58bbc5b6bff6acab412dc085affc61e0a6e0aef72d630e67d05a8d08012dced81178a4c7af65c967c25b48161f8d887d261fdf5ce505b719dbdab757c WHIRLPOOL eee615f032987aee71adf04a3ad5f5b8f79dc4487f1be1a7fb87c42918a12ef9397ba990b02d4adb02265706df9f1e3ef409c141491759c65b8037693b9b06c9
diff --git a/net-fs/nfs-utils/files/exports b/net-fs/nfs-utils/files/exports
new file mode 100644
index 000000000000..5102ef27c150
--- /dev/null
+++ b/net-fs/nfs-utils/files/exports
@@ -0,0 +1 @@
+# /etc/exports: NFS file systems being exported. See exports(5).
diff --git a/net-fs/nfs-utils/files/nfs-utils-1.1.4-mtab-sym.patch b/net-fs/nfs-utils/files/nfs-utils-1.1.4-mtab-sym.patch
new file mode 100644
index 000000000000..c9e60afc74d2
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfs-utils-1.1.4-mtab-sym.patch
@@ -0,0 +1,39 @@
+ripped from Debian
+
+--- nfs-utils-1.1.4/utils/mount/fstab.c
++++ nfs-utils-1.1.4/utils/mount/fstab.c
+@@ -57,7 +57,7 @@ mtab_does_not_exist(void) {
+ return var_mtab_does_not_exist;
+ }
+
+-static int
++int
+ mtab_is_a_symlink(void) {
+ get_mtab_info();
+ return var_mtab_is_a_symlink;
+--- nfs-utils-1.1.4/utils/mount/fstab.h
++++ nfs-utils-1.1.4/utils/mount/fstab.h
+@@ -7,6 +7,7 @@
+ #define _PATH_FSTAB "/etc/fstab"
+ #endif
+
++int mtab_is_a_symlink(void);
+ int mtab_is_writable(void);
+ int mtab_does_not_exist(void);
+ void reset_mtab_info(void);
+--- nfs-utils-1.1.4/utils/mount/mount.c
++++ nfs-utils-1.1.4/utils/mount/mount.c
+@@ -230,6 +230,13 @@ create_mtab (void) {
+ int flags;
+ mntFILE *mfp;
+
++ /* Avoid writing if the mtab is a symlink to /proc/mounts, since
++ that would create a file /proc/mounts in case the proc filesystem
++ is not mounted, and the fchmod below would also fail. */
++ if (mtab_is_a_symlink()) {
++ return EX_SUCCESS;
++ }
++
+ lock_mtab();
+
+ mfp = nfs_setmntent (MOUNTED, "a+");
diff --git a/net-fs/nfs-utils/files/nfs-utils-1.2.8-cross-build.patch b/net-fs/nfs-utils/files/nfs-utils-1.2.8-cross-build.patch
new file mode 100644
index 000000000000..7317115a0e18
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfs-utils-1.2.8-cross-build.patch
@@ -0,0 +1,48 @@
+this is kind of hacky, but automake doesn't make this easy
+for us atm, so hack away :(
+
+(recent autotools will always add $(CFLAGS)/etc... to the compile)
+
+--- a/tools/locktest/Makefile.am
++++ b/tools/locktest/Makefile.am
+@@ -1,12 +1,11 @@
+ ## Process this file with automake to produce Makefile.in
+
+ CC=$(CC_FOR_BUILD)
+-LIBTOOL = @LIBTOOL@ --tag=CC
++CFLAGS=$(CFLAGS_FOR_BUILD)
++CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
++LDFLAGS=$(LDFLAGS_FOR_BUILD)
+
+ noinst_PROGRAMS = testlk
+ testlk_SOURCES = testlk.c
+-testlk_CFLAGS=$(CFLAGS_FOR_BUILD)
+-testlk_CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
+-testlk_LDFLAGS=$(LDFLAGS_FOR_BUILD)
+
+ MAINTAINERCLEANFILES = Makefile.in
+--- a/tools/rpcgen/Makefile.am
++++ b/tools/rpcgen/Makefile.am
+@@ -1,7 +1,9 @@
+ ## Process this file with automake to produce Makefile.in
+
+ CC=$(CC_FOR_BUILD)
+-LIBTOOL = @LIBTOOL@ --tag=CC
++CFLAGS=$(CFLAGS_FOR_BUILD)
++CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
++LDFLAGS=$(LDFLAGS_FOR_BUILD)
+
+ noinst_PROGRAMS = rpcgen
+ rpcgen_SOURCES = rpc_clntout.c rpc_cout.c rpc_hout.c rpc_main.c \
+@@ -9,10 +11,6 @@
+ rpc_util.c rpc_sample.c rpc_output.h rpc_parse.h \
+ rpc_scan.h rpc_util.h
+
+-rpcgen_CFLAGS=$(CFLAGS_FOR_BUILD)
+-rpcgen_CPPLAGS=$(CPPFLAGS_FOR_BUILD)
+-rpcgen_LDFLAGS=$(LDFLAGS_FOR_BUILD)
+-rpcgen_LDADD=$(LIBTIRPC)
+
+ MAINTAINERCLEANFILES = Makefile.in
+
+ EXTRA_DIST = rpcgen.new.1
diff --git a/net-fs/nfs-utils/files/nfs-utils-1.3.0-gcc-4.9.patch b/net-fs/nfs-utils/files/nfs-utils-1.3.0-gcc-4.9.patch
new file mode 100644
index 000000000000..e2d98b517e32
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfs-utils-1.3.0-gcc-4.9.patch
@@ -0,0 +1,62 @@
+From 25e83c2270b2d2966c992885faed0b79be09f474 Mon Sep 17 00:00:00 2001
+From: Jeff Layton <jlayton@poochiereds.net>
+Date: Thu, 1 May 2014 11:15:16 -0400
+Subject: [PATCH [nfs-utils]] mountd: fix segfault in add_name with newer gcc
+ compilers
+
+I hit a segfault in add_name with a mountd built with gcc-4.9.0. Some
+NULL pointer checks got reordered such that a pointer was dereferenced
+before checking to see whether it was NULL. The problem was due to
+nfs-utils relying on undefined behavior, which tricked gcc into assuming
+that the pointer would never be NULL.
+
+At first I assumed that this was a compiler bug, but Jakub Jelinek and
+Jeff Law pointed out:
+
+"If old is NULL, then:
+
+ strncpy(new, old, cp-old);
+
+is undefined behavior (even when cp == old == NULL in that case),
+therefore gcc assumes that old is never NULL, as otherwise it would be
+invalid.
+
+Just guard
+ strncpy(new, old, cp-old);
+ new[cp-old] = 0;
+with if (old) { ... }."
+
+This patch does that. If old is NULL though, then we still need to
+ensure that new is NULL terminated, lest the subsequent strcats walk off
+the end of it.
+
+Cc: Jeff Law <law@redhat.com>
+Cc: Jakub Jelinek <jakub@redhat.com>
+Signed-off-by: Jeff Layton <jlayton@poochiereds.net>
+Signed-off-by: Steve Dickson <steved@redhat.com>
+---
+ support/export/client.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/support/export/client.c b/support/export/client.c
+index dbf47b9..f85e11c 100644
+--- a/support/export/client.c
++++ b/support/export/client.c
+@@ -482,8 +482,12 @@ add_name(char *old, const char *add)
+ else
+ cp = cp + strlen(cp);
+ }
+- strncpy(new, old, cp-old);
+- new[cp-old] = 0;
++ if (old) {
++ strncpy(new, old, cp-old);
++ new[cp-old] = 0;
++ } else {
++ new[0] = 0;
++ }
+ if (cp != old && !*cp)
+ strcat(new, ",");
+ strcat(new, add);
+--
+2.0.0
+
diff --git a/net-fs/nfs-utils/files/nfs-utils-1.3.2-background-statd.patch b/net-fs/nfs-utils/files/nfs-utils-1.3.2-background-statd.patch
new file mode 100644
index 000000000000..393f70b87a99
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfs-utils-1.3.2-background-statd.patch
@@ -0,0 +1,30 @@
+From 17a3e5bffb7110d46de1bf42b64b90713ff5ea50 Mon Sep 17 00:00:00 2001
+From: Chris Mayo <aklhfex@gmail.com>
+Date: Sun, 1 Feb 2015 12:03:46 -0500
+Subject: [PATCH] statd: Fix test for foreground mode
+
+daemon_init parameter has the opposite sense
+to code removed in commit 7addf9d
+
+Signed-off-by: Chris Mayo <aklhfex@gmail.com>
+Signed-off-by: Steve Dickson <steved@redhat.com>
+---
+ utils/statd/statd.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/utils/statd/statd.c b/utils/statd/statd.c
+index 60ce6d1..2b7a167 100644
+--- a/utils/statd/statd.c
++++ b/utils/statd/statd.c
+@@ -393,7 +393,7 @@ int main (int argc, char **argv)
+ simulator (--argc, ++argv); /* simulator() does exit() */
+ #endif
+
+- daemon_init(!(run_mode & MODE_NODAEMON));
++ daemon_init((run_mode & MODE_NODAEMON));
+
+ if (run_mode & MODE_LOG_STDERR) {
+ xlog_syslog(0);
+--
+2.2.2
+
diff --git a/net-fs/nfs-utils/files/nfs-utils.conf b/net-fs/nfs-utils/files/nfs-utils.conf
new file mode 100644
index 000000000000..b9b586c2ac07
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfs-utils.conf
@@ -0,0 +1,3 @@
+d /var/lib/nfs/rpc_pipefs
+d /var/lib/nfs/v4recovery
+d /var/lib/nfs/v4root
diff --git a/net-fs/nfs-utils/files/nfs.confd b/net-fs/nfs-utils/files/nfs.confd
new file mode 100644
index 000000000000..9dc14058c1fe
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfs.confd
@@ -0,0 +1,38 @@
+# /etc/conf.d/nfs
+
+# If you wish to set the port numbers for lockd,
+# please see /etc/sysctl.conf
+
+# Optional services to include in default `/etc/init.d/nfs start`
+# For NFSv4 users, you'll want to add "rpc.idmapd" here.
+NFS_NEEDED_SERVICES=""
+
+# Options to pass to rpc.nfsd
+OPTS_RPC_NFSD="8"
+
+# Options to pass to rpc.mountd
+# ex. OPTS_RPC_MOUNTD="-p 32767"
+OPTS_RPC_MOUNTD=""
+
+# Options to pass to rpc.statd
+# ex. OPTS_RPC_STATD="-p 32765 -o 32766"
+OPTS_RPC_STATD=""
+
+# Options to pass to rpc.idmapd
+OPTS_RPC_IDMAPD=""
+
+# Options to pass to rpc.gssd
+OPTS_RPC_GSSD=""
+
+# Options to pass to rpc.svcgssd
+OPTS_RPC_SVCGSSD=""
+
+# Options to pass to rpc.rquotad (requires sys-fs/quota)
+OPTS_RPC_RQUOTAD=""
+
+# Timeout (in seconds) for exportfs
+EXPORTFS_TIMEOUT=30
+
+# Options to set in the nfsd filesystem (/proc/fs/nfsd/).
+# Format is <option>=<value>. Multiple options are allowed.
+#OPTS_NFSD="nfsv4leasetime=30 max_block_size=4096"
diff --git a/net-fs/nfs-utils/files/nfs.initd b/net-fs/nfs-utils/files/nfs.initd
new file mode 100755
index 000000000000..084506d4c475
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfs.initd
@@ -0,0 +1,163 @@
+#!/sbin/runscript
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+extra_started_commands="reload"
+
+# This variable is used for controlling whether or not to run exportfs -ua;
+# see stop() for more information
+restarting=no
+
+# The binary locations
+exportfs=/usr/sbin/exportfs
+ mountd=/usr/sbin/rpc.mountd
+ nfsd=/usr/sbin/rpc.nfsd
+smnotify=/usr/sbin/sm-notify
+
+depend() {
+ local myneed=""
+ # XXX: no way to detect NFSv4 is desired and so need rpc.idmapd
+ myneed="${myneed} $(
+ awk '!/^[[:space:]]*#/ {
+ # clear the path to avoid spurious matches
+ $1 = "";
+ if ($0 ~ /[(][^)]*sec=(krb|spkm)[^)]*[)]/) {
+ print "rpc.svcgssd"
+ exit 0
+ }
+ }' /etc/exports /etc/exports.d/*.exports 2>/dev/null
+ )"
+ config /etc/exports /etc/exports.d/*.exports
+ need portmap rpc.statd ${myneed} ${NFS_NEEDED_SERVICES}
+ use ypbind net dns rpc.rquotad rpc.idmapd rpc.svcgssd
+ after quota
+}
+
+mkdir_nfsdirs() {
+ local d
+ for d in v4recovery v4root ; do
+ d="/var/lib/nfs/${d}"
+ [ ! -d "${d}" ] && mkdir -p "${d}"
+ done
+}
+
+waitfor_exportfs() {
+ local pid=$1
+ ( sleep ${EXPORTFS_TIMEOUT:-30}; kill -9 ${pid} 2>/dev/null ) &
+ wait $1
+}
+
+mount_nfsd() {
+ if [ -e /proc/modules ] ; then
+ # Make sure nfs support is loaded in the kernel #64709
+ if ! grep -qs nfsd /proc/filesystems ; then
+ modprobe -q nfsd
+ fi
+ # Restart idmapd if needed #220747
+ if grep -qs nfsd /proc/modules ; then
+ killall -q -HUP rpc.idmapd
+ fi
+ fi
+
+ # This is the new "kernel 2.6 way" to handle the exports file
+ if grep -qs nfsd /proc/filesystems ; then
+ if ! mountinfo -q /proc/fs/nfsd ; then
+ ebegin "Mounting nfsd filesystem in /proc"
+ mount -t nfsd -o nodev,noexec,nosuid nfsd /proc/fs/nfsd
+ eend $?
+ fi
+
+ local o
+ for o in ${OPTS_NFSD} ; do
+ echo "${o#*=}" > "/proc/fs/nfsd/${o%%=*}"
+ done
+ fi
+}
+
+start_it() {
+ ebegin "Starting NFS $1"
+ shift
+ "$@"
+ eend $?
+ ret=$((ret + $?))
+}
+start() {
+ mount_nfsd
+ mkdir_nfsdirs
+
+ # Exportfs likes to hang if networking isn't working.
+ # If that's the case, then try to kill it so the
+ # bootup process can continue.
+ if grep -qs '^[[:space:]]*/' /etc/exports /etc/exports.d/*.exports ; then
+ ebegin "Exporting NFS directories"
+ ${exportfs} -r &
+ waitfor_exportfs $!
+ eend $?
+ fi
+
+ local ret=0
+ start_it mountd ${mountd} ${OPTS_RPC_MOUNTD}
+ start_it daemon ${nfsd} ${OPTS_RPC_NFSD}
+ [ -x "${smnotify}" ] && start_it smnotify ${smnotify} ${OPTS_SMNOTIFY}
+ return ${ret}
+}
+
+stop() {
+ local ret=0
+
+ ebegin "Stopping NFS mountd"
+ start-stop-daemon --stop --exec ${mountd}
+ eend $?
+ ret=$((ret + $?))
+
+ # nfsd sets its process name to [nfsd] so don't look for $nfsd
+ ebegin "Stopping NFS daemon"
+ start-stop-daemon --stop --name nfsd --user root --signal 2
+ eend $?
+ ret=$((ret + $?))
+ # in case things don't work out ... #228127
+ rpc.nfsd 0
+
+ # When restarting the NFS server, running "exportfs -ua" probably
+ # isn't what the user wants. Running it causes all entries listed
+ # in xtab to be removed from the kernel export tables, and the
+ # xtab file is cleared. This effectively shuts down all NFS
+ # activity, leaving all clients holding stale NFS filehandles,
+ # *even* when the NFS server has restarted.
+ #
+ # That's what you would want if you were shutting down the NFS
+ # server for good, or for a long period of time, but not when the
+ # NFS server will be running again in short order. In this case,
+ # then "exportfs -r" will reread the xtab, and all the current
+ # clients will be able to resume NFS activity, *without* needing
+ # to umount/(re)mount the filesystem.
+ if [ "${restarting}" = no -o "${RC_CMD}" = "restart" ] ; then
+ ebegin "Unexporting NFS directories"
+ # Exportfs likes to hang if networking isn't working.
+ # If that's the case, then try to kill it so the
+ # shutdown process can continue.
+ ${exportfs} -ua &
+ waitfor_exportfs $!
+ eend $?
+ fi
+
+ return ${ret}
+}
+
+reload() {
+ # Exportfs likes to hang if networking isn't working.
+ # If that's the case, then try to kill it so the
+ # bootup process can continue.
+ ebegin "Reloading /etc/exports"
+ ${exportfs} -r 1>&2 &
+ waitfor_exportfs $!
+ eend $?
+}
+
+restart() {
+ # See long comment in stop() regarding "restarting" and exportfs -ua
+ restarting=yes
+ svc_stop
+ svc_start
+}
diff --git a/net-fs/nfs-utils/files/nfsclient.confd b/net-fs/nfs-utils/files/nfsclient.confd
new file mode 100644
index 000000000000..8a995571e1b8
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfsclient.confd
@@ -0,0 +1,18 @@
+# You need to decide which nfs protocol version you want to use.
+# If you are unsure, leave these alone.
+#
+# If you are using only nfsv4, uncomment this line:
+#
+#rc_need="!rpc.statd"
+#
+# If you are using only nfsv3, uncomment this line:
+#
+#rc_need="!rpc.idmapd"
+#
+# You will need to set the dependencies in the nfsclient script to match
+# the network configuration tools you are using. This should be done in
+# this file by following the examples below, and not by changing the
+# service script itself. See /etc/conf.d/netmount for more examples.
+#
+# This is a safe default.
+rc_after="net"
diff --git a/net-fs/nfs-utils/files/nfsclient.initd b/net-fs/nfs-utils/files/nfsclient.initd
new file mode 100644
index 000000000000..ab13913b7b4a
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfsclient.initd
@@ -0,0 +1,34 @@
+#!/sbin/runscript
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
+
+depend() {
+ local opts myneed=""
+ if [ -e /etc/fstab ] ; then
+ for opts in $(fstabinfo -o -t nfs,nfs4) ; do
+ case $opts in
+ *sec=krb*|*sec=spkm*) myneed="$myneed rpc.gssd" ;;
+ esac
+ done
+ fi
+ config /etc/fstab
+ need portmap rpc.statd rpc.idmapd ${myneed}
+ use ypbind dns
+}
+
+start() {
+ if [ -x /usr/sbin/sm-notify ] ; then
+ ebegin "Starting NFS sm-notify"
+ /usr/sbin/sm-notify ${OPTS_SMNOTIFY}
+ eend $?
+ fi
+
+ # Make sure nfs support is loaded in the kernel #64709
+ if [ -e /proc/modules ] && ! grep -qs 'nfs$' /proc/filesystems ; then
+ modprobe -q nfs
+ fi
+ return 0
+}
diff --git a/net-fs/nfs-utils/files/nfsd.service-r1 b/net-fs/nfs-utils/files/nfsd.service-r1
new file mode 100644
index 000000000000..e15cf98f9bec
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfsd.service-r1
@@ -0,0 +1,15 @@
+[Unit]
+Description=NFS server
+After=rpcbind.service
+Requires=rpcbind.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/rpc.nfsd 8
+ExecStartPost=/usr/sbin/exportfs -a
+ExecStop=/usr/sbin/rpc.nfsd 0
+ExecStopPost=/usr/sbin/exportfs -a -u
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/nfsmount.confd b/net-fs/nfs-utils/files/nfsmount.confd
new file mode 100644
index 000000000000..418353668f97
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfsmount.confd
@@ -0,0 +1,7 @@
+# You will need to set the dependencies in the nfsmount script to match
+# the network configuration tools you are using. This should be done in
+# this file by following the examples below, and not by changing the
+# service script itself. See /etc/conf.d/netmount for more examples.
+#
+# This is a safe default.
+rc_after="net"
diff --git a/net-fs/nfs-utils/files/nfsmount.initd b/net-fs/nfs-utils/files/nfsmount.initd
new file mode 100755
index 000000000000..642d3494f17d
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfsmount.initd
@@ -0,0 +1,48 @@
+#!/sbin/runscript
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
+
+depend() {
+ local myneed=""
+ if [ -e /etc/fstab ] ; then
+ myneed="${myneed} $(
+ awk '!/^[[:space:]]*#/ && ($3 == "nfs" || $3 == "nfs4") {
+ if ($3 == "nfs4")
+ idmapd = "rpc.idmapd"
+ if ($4 ~ /sec=(krb|spkm)/)
+ gssd = "rpc.gssd"
+ }
+ END { print idmapd " " gssd }
+ ' /etc/fstab
+ )"
+ fi
+ config /etc/fstab
+ need portmap rpc.statd ${myneed}
+ use ypbind dns rpc.idmapd rpc.gssd
+}
+
+start() {
+ if [ -x /usr/sbin/sm-notify ] ; then
+ ebegin "Starting NFS sm-notify"
+ /usr/sbin/sm-notify ${OPTS_SMNOTIFY}
+ eend $?
+ fi
+
+ # Make sure nfs support is loaded in the kernel #64709
+ if [ -e /proc/modules ] && ! grep -qs 'nfs$' /proc/filesystems ; then
+ modprobe -q nfs
+ fi
+
+ ebegin "Mounting NFS filesystems"
+ mount -a -t nfs,nfs4
+ eend $?
+}
+
+stop() {
+ ebegin "Unmounting NFS filesystems"
+ umount -a -t nfs,nfs4
+ eend $?
+}
diff --git a/net-fs/nfs-utils/files/nfsmount.initd-1.3.1 b/net-fs/nfs-utils/files/nfsmount.initd-1.3.1
new file mode 100644
index 000000000000..ec74dbe4fdc9
--- /dev/null
+++ b/net-fs/nfs-utils/files/nfsmount.initd-1.3.1
@@ -0,0 +1,27 @@
+#!/sbin/runscript
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+# This is mostly as a fix for bug #537996, to avoid breaking existing users
+# with nfsmount in their runlevels.
+# If neither nfsclient nor netmount are in your runlevels, and you manually
+# start netmount before nfsclient, then this will break. A real solution is
+# forthcoming, but requires feature development, see bug #406021 for soft
+# dependencies
+depend() {
+ need nfsclient netmount
+}
+
+msg() {
+ ewarn "nfsmount is deprecated, please migrate as described in the news item: 2015-02-02-nfs-service-changes"
+ ewarn "This migration script will be removed after 01 Aug 2015."
+}
+
+start() {
+ msg
+}
+
+stop() {
+ msg
+}
diff --git a/net-fs/nfs-utils/files/proc-fs-nfsd.mount b/net-fs/nfs-utils/files/proc-fs-nfsd.mount
new file mode 100644
index 000000000000..26b58b9682d9
--- /dev/null
+++ b/net-fs/nfs-utils/files/proc-fs-nfsd.mount
@@ -0,0 +1,8 @@
+[Unit]
+Description=NFS Configuration File System
+DefaultDependencies=no
+
+[Mount]
+What=sunrpc
+Where=/proc/fs/nfsd
+Type=nfsd
diff --git a/net-fs/nfs-utils/files/rpc-gssd.service b/net-fs/nfs-utils/files/rpc-gssd.service
new file mode 100644
index 000000000000..4c96deef4408
--- /dev/null
+++ b/net-fs/nfs-utils/files/rpc-gssd.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=RPC GSS-API Client Daemon
+Documentation=man:rpc.gssd(8)
+After=rpcbind.service var-lib-nfs-rpc_pipefs.mount
+Requires=rpcbind.service var-lib-nfs-rpc_pipefs.mount
+Before=remote-fs-pre.target
+
+[Service]
+ExecStart=/usr/sbin/rpc.gssd -f
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/rpc-idmapd.service b/net-fs/nfs-utils/files/rpc-idmapd.service
new file mode 100644
index 000000000000..4a63b91ca73a
--- /dev/null
+++ b/net-fs/nfs-utils/files/rpc-idmapd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=NFS v4 ID-Name Mapping Daemon
+Documentation=man:rpc.idmapd(8) man:idmapd.conf(5)
+After=var-lib-nfs-rpc_pipefs.mount nfsd.service
+Requires=var-lib-nfs-rpc_pipefs.mount
+
+[Service]
+ExecStart=/usr/sbin/rpc.idmapd -f
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/rpc-mountd.service-r1 b/net-fs/nfs-utils/files/rpc-mountd.service-r1
new file mode 100644
index 000000000000..d5f5b24af399
--- /dev/null
+++ b/net-fs/nfs-utils/files/rpc-mountd.service-r1
@@ -0,0 +1,10 @@
+[Unit]
+Description=NFS Mount Daemon
+After=rpcbind.service nfsd.service
+Requires=rpcbind.service nfsd.service
+
+[Service]
+ExecStart=/usr/sbin/rpc.mountd -F
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/rpc-statd.service-r2 b/net-fs/nfs-utils/files/rpc-statd.service-r2
new file mode 100644
index 000000000000..3633ebded5d8
--- /dev/null
+++ b/net-fs/nfs-utils/files/rpc-statd.service-r2
@@ -0,0 +1,12 @@
+[Unit]
+Description=NFSv2/3 Network Status Monitor Daemon
+After=rpcbind.service
+Requires=rpcbind.service
+Before=remote-fs-pre.target
+Wants=remote-fs-pre.target
+
+[Service]
+ExecStart=/sbin/rpc.statd -F
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/rpc-svcgssd.service b/net-fs/nfs-utils/files/rpc-svcgssd.service
new file mode 100644
index 000000000000..121c61a49b30
--- /dev/null
+++ b/net-fs/nfs-utils/files/rpc-svcgssd.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=RPC GSS-API Server Daemon
+Documentation=man:rpc.svcgssd(8)
+After=rpcbind.service
+Requires=rpcbind.service
+Before=nfs-server.target
+PartOf=nfs-server.target
+
+[Service]
+ExecStart=/usr/sbin/rpc.svcgssd -f
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/rpc.gssd.initd b/net-fs/nfs-utils/files/rpc.gssd.initd
new file mode 100755
index 000000000000..465b05ef462b
--- /dev/null
+++ b/net-fs/nfs-utils/files/rpc.gssd.initd
@@ -0,0 +1,24 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
+
+depend() {
+ use ypbind net
+ need portmap rpc.pipefs
+ after quota
+}
+
+start() {
+ ebegin "Starting gssd"
+ start-stop-daemon --start --exec /usr/sbin/rpc.gssd -- ${OPTS_RPC_GSSD}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping gssd"
+ start-stop-daemon --stop --exec /usr/sbin/rpc.gssd
+ eend $?
+}
diff --git a/net-fs/nfs-utils/files/rpc.idmapd.initd b/net-fs/nfs-utils/files/rpc.idmapd.initd
new file mode 100755
index 000000000000..dcd0acd69e07
--- /dev/null
+++ b/net-fs/nfs-utils/files/rpc.idmapd.initd
@@ -0,0 +1,26 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
+
+rpc_bin=/usr/sbin/rpc.idmapd
+
+depend() {
+ use ypbind net
+ need portmap rpc.pipefs
+ after quota
+}
+
+start() {
+ ebegin "Starting idmapd"
+ ${rpc_bin} ${OPTS_RPC_IDMAPD}
+ eend $? "make sure DNOTIFY support is enabled ..."
+}
+
+stop() {
+ ebegin "Stopping idmapd"
+ start-stop-daemon --stop --exec ${rpc_bin}
+ eend $?
+}
diff --git a/net-fs/nfs-utils/files/rpc.pipefs.initd b/net-fs/nfs-utils/files/rpc.pipefs.initd
new file mode 100644
index 000000000000..1cd79e229a8b
--- /dev/null
+++ b/net-fs/nfs-utils/files/rpc.pipefs.initd
@@ -0,0 +1,33 @@
+#!/sbin/runscript
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+MNT="/var/lib/nfs/rpc_pipefs"
+
+mount_pipefs() {
+ local fstype=rpc_pipefs
+
+ # if things are already mounted, nothing to do
+ mountinfo -q ${MNT} && return 0
+
+ # if rpc_pipefs is not available, try to load sunrpc for it #219566
+ grep -qs ${fstype} /proc/filesystems || modprobe -q sunrpc
+ # if still not available, the `mount` will issue an error for the user
+
+ # now just do it for kicks
+ mkdir -p ${MNT}
+ mount -t ${fstype} ${fstype} ${MNT}
+}
+
+start() {
+ ebegin "Setting up RPC pipefs"
+ mount_pipefs
+ eend $? "make sure you have NFS/SUNRPC enabled in your kernel"
+}
+
+stop() {
+ ebegin "Unmounting RPC pipefs"
+ umount ${MNT}
+ eend $?
+}
diff --git a/net-fs/nfs-utils/files/rpc.statd.initd b/net-fs/nfs-utils/files/rpc.statd.initd
new file mode 100755
index 000000000000..fd4a7a1e1648
--- /dev/null
+++ b/net-fs/nfs-utils/files/rpc.statd.initd
@@ -0,0 +1,33 @@
+#!/sbin/runscript
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
+
+rpc_bin=/sbin/rpc.statd
+rpc_pid=/var/run/rpc.statd.pid
+
+depend() {
+ use ypbind net
+ need portmap
+ after quota
+}
+
+start() {
+ # Don't start rpc.statd if already started by someone else ...
+ # Don't try and kill it if it's already dead ...
+ if killall -q -0 ${rpc_bin} ; then
+ return 0
+ fi
+
+ ebegin "Starting NFS statd"
+ start-stop-daemon --start --exec ${rpc_bin} -- --no-notify ${OPTS_RPC_STATD}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping NFS statd"
+ start-stop-daemon --stop --exec ${rpc_bin} --pidfile /var/run/rpc.statd.pid
+ eend $?
+}
diff --git a/net-fs/nfs-utils/files/rpc.svcgssd.initd b/net-fs/nfs-utils/files/rpc.svcgssd.initd
new file mode 100755
index 000000000000..f677cb56d233
--- /dev/null
+++ b/net-fs/nfs-utils/files/rpc.svcgssd.initd
@@ -0,0 +1,24 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
+
+depend() {
+ use ypbind net
+ need portmap rpc.pipefs
+ after quota
+}
+
+start() {
+ ebegin "Starting svcgssd"
+ start-stop-daemon --start --exec /usr/sbin/rpc.svcgssd -- ${OPTS_RPC_SVCGSSD}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping svcgssd"
+ start-stop-daemon --stop --exec /usr/sbin/rpc.svcgssd
+ eend $?
+}
diff --git a/net-fs/nfs-utils/files/var-lib-nfs-rpc_pipefs.mount b/net-fs/nfs-utils/files/var-lib-nfs-rpc_pipefs.mount
new file mode 100644
index 000000000000..c4166582225d
--- /dev/null
+++ b/net-fs/nfs-utils/files/var-lib-nfs-rpc_pipefs.mount
@@ -0,0 +1,7 @@
+[Unit]
+Description=RPC Pipe File System
+
+[Mount]
+What=rpc_pipefs
+Where=/var/lib/nfs/rpc_pipefs
+Type=rpc_pipefs
diff --git a/net-fs/nfs-utils/metadata.xml b/net-fs/nfs-utils/metadata.xml
new file mode 100644
index 000000000000..d89ebcfd96ab
--- /dev/null
+++ b/net-fs/nfs-utils/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>net-fs</herd>
+ <longdescription>NFS client and server daemons</longdescription>
+ <use>
+ <flag name="libmount">Link mount.nfs with libmount</flag>
+ <flag name="nfsdcld">Enable nfsdcld NFSv4 clientid tracking daemon</flag>
+ <flag name="nfsidmap">Enable support for newer nfsidmap helper</flag>
+ <flag name="nfsv4">Enable support for NFSv4</flag>
+ <flag name="nfsv41">Enable support for NFSv4.1</flag>
+ <flag name="uuid">Support UUID lookups in rpc.mountd</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">nfs</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/net-fs/nfs-utils/nfs-utils-1.2.9-r3.ebuild b/net-fs/nfs-utils/nfs-utils-1.2.9-r3.ebuild
new file mode 100644
index 000000000000..d0ac41367386
--- /dev/null
+++ b/net-fs/nfs-utils/nfs-utils-1.2.9-r3.ebuild
@@ -0,0 +1,153 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+inherit eutils flag-o-matic multilib autotools systemd
+
+DESCRIPTION="NFS client and server daemons"
+HOMEPAGE="http://linux-nfs.org/"
+SRC_URI="mirror://sourceforge/nfs/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 ~mips ppc ppc64 s390 sh sparc x86"
+IUSE="caps ipv6 kerberos +libmount nfsdcld +nfsidmap +nfsv4 nfsv41 selinux tcpd +uuid"
+REQUIRED_USE="kerberos? ( nfsv4 )"
+RESTRICT="test" #315573
+
+# kth-krb doesn't provide the right include
+# files, and nfs-utils doesn't build against heimdal either,
+# so don't depend on virtual/krb.
+# (04 Feb 2005 agriffis)
+DEPEND_COMMON="tcpd? ( sys-apps/tcp-wrappers )
+ caps? ( sys-libs/libcap )
+ sys-libs/e2fsprogs-libs
+ >=net-nds/rpcbind-0.2.0-r1
+ net-libs/libtirpc
+ libmount? ( sys-apps/util-linux )
+ nfsdcld? ( >=dev-db/sqlite-3.3 )
+ nfsv4? (
+ >=dev-libs/libevent-1.0b
+ >=net-libs/libnfsidmap-0.21-r1
+ kerberos? (
+ >=net-libs/libtirpc-0.2.4-r1[kerberos]
+ app-crypt/mit-krb5
+ )
+ nfsidmap? (
+ >=net-libs/libnfsidmap-0.24
+ sys-apps/keyutils
+ )
+ )
+ nfsv41? (
+ sys-fs/lvm2
+ )
+ uuid? ( sys-apps/util-linux )"
+RDEPEND="${DEPEND_COMMON}
+ !net-nds/portmap
+ selinux? (
+ sec-policy/selinux-rpc
+ sec-policy/selinux-rpcbind
+ )
+"
+DEPEND="${DEPEND_COMMON}
+ virtual/pkgconfig"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-1.1.4-mtab-sym.patch
+ epatch "${FILESDIR}"/${PN}-1.2.8-cross-build.patch
+
+ sed \
+ -e "/^sbindir/s:= := \"${EPREFIX}\":g" \
+ -i utils/*/Makefile.am || die
+
+ eautoreconf
+}
+
+src_configure() {
+ export libsqlite3_cv_is_recent=yes # Our DEPEND forces this.
+ export ac_cv_header_keyutils_h=$(usex nfsidmap)
+ econf \
+ --with-statedir="${EPREFIX}"/var/lib/nfs \
+ --enable-tirpc \
+ --with-tirpcinclude="${EPREFIX}"/usr/include/tirpc/ \
+ $(use_enable libmount libmount-mount) \
+ $(use_with tcpd tcp-wrappers) \
+ $(use_enable nfsdcld nfsdcltrack) \
+ $(use_enable nfsv4) \
+ $(use_enable nfsv41) \
+ $(use_enable ipv6) \
+ $(use_enable caps) \
+ $(use_enable uuid) \
+ $(use_enable kerberos gss) \
+ --without-gssglue
+}
+
+src_compile(){
+ # remove compiled files bundled in the tarball
+ emake clean
+ default
+}
+
+src_install() {
+ default
+ rm linux-nfs/Makefile* || die
+ dodoc -r linux-nfs README
+
+ # Don't overwrite existing xtab/etab, install the original
+ # versions somewhere safe... more info in pkg_postinst
+ keepdir /var/lib/nfs/{,sm,sm.bak}
+ mv "${ED}"/var/lib "${ED}"/usr/$(get_libdir) || die
+
+ # Install some client-side binaries in /sbin
+ dodir /sbin
+ mv "${ED}"/usr/sbin/rpc.statd "${ED}"/sbin/ || die
+
+ if use nfsv4 && use nfsidmap ; then
+ # Install a config file for idmappers in newer kernels. #415625
+ insinto /etc/request-key.d
+ echo 'create id_resolver * * /usr/sbin/nfsidmap -t 600 %k %d' > id_resolver.conf
+ doins id_resolver.conf
+ fi
+
+ insinto /etc
+ doins "${FILESDIR}"/exports
+
+ local f list=() opt_need=""
+ if use nfsv4 ; then
+ opt_need="rpc.idmapd"
+ list+=( rpc.idmapd rpc.pipefs )
+ use kerberos && list+=( rpc.gssd rpc.svcgssd )
+ fi
+ for f in nfs nfsmount rpc.statd "${list[@]}" ; do
+ newinitd "${FILESDIR}"/${f}.initd ${f}
+ done
+ for f in nfs nfsmount ; do
+ newconfd "${FILESDIR}"/${f}.confd ${f}
+ done
+ sed -i \
+ -e "/^NFS_NEEDED_SERVICES=/s:=.*:=\"${opt_need}\":" \
+ "${ED}"/etc/conf.d/nfs || die #234132
+
+ systemd_dotmpfilesd "${FILESDIR}"/nfs-utils.conf
+ systemd_newunit "${FILESDIR}"/nfsd.service-r1 nfsd.service
+ systemd_newunit "${FILESDIR}"/rpc-statd.service-r2 rpc-statd.service
+ systemd_newunit "${FILESDIR}"/rpc-mountd.service-r1 rpc-mountd.service
+ systemd_dounit "${FILESDIR}"/rpc-idmapd.service
+ systemd_dounit "${FILESDIR}"/{proc-fs-nfsd,var-lib-nfs-rpc_pipefs}.mount
+ use nfsv4 && use kerberos && systemd_dounit "${FILESDIR}"/rpc-{gssd,svcgssd}.service
+}
+
+pkg_postinst() {
+ # Install default xtab and friends if there's none existing. In
+ # src_install we put them in /usr/lib/nfs for safe-keeping, but
+ # the daemons actually use the files in /var/lib/nfs. #30486
+ local f
+ mkdir -p "${EROOT}"/var/lib/nfs #368505
+ for f in "${EROOT}"/usr/$(get_libdir)/nfs/*; do
+ [[ -e ${EROOT}/var/lib/nfs/${f##*/} ]] && continue
+ einfo "Copying default ${f##*/} from ${EPREFIX}/usr/$(get_libdir)/nfs to ${EPREFIX}/var/lib/nfs"
+ cp -pPR "${f}" "${EROOT}"/var/lib/nfs/
+ done
+}
diff --git a/net-fs/nfs-utils/nfs-utils-1.3.1-r4.ebuild b/net-fs/nfs-utils/nfs-utils-1.3.1-r4.ebuild
new file mode 100644
index 000000000000..dfef08df4f80
--- /dev/null
+++ b/net-fs/nfs-utils/nfs-utils-1.3.1-r4.ebuild
@@ -0,0 +1,172 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit eutils flag-o-matic multilib autotools systemd
+
+DESCRIPTION="NFS client and server daemons"
+HOMEPAGE="http://linux-nfs.org/"
+SRC_URI="mirror://sourceforge/nfs/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~mips ppc ppc64 ~s390 ~sh ~sparc x86"
+IUSE="caps ipv6 kerberos +libmount nfsdcld +nfsidmap +nfsv4 nfsv41 selinux tcpd +uuid"
+REQUIRED_USE="kerberos? ( nfsv4 )"
+RESTRICT="test" #315573
+
+# kth-krb doesn't provide the right include
+# files, and nfs-utils doesn't build against heimdal either,
+# so don't depend on virtual/krb.
+# (04 Feb 2005 agriffis)
+DEPEND_COMMON="tcpd? ( sys-apps/tcp-wrappers )
+ caps? ( sys-libs/libcap )
+ sys-libs/e2fsprogs-libs
+ >=net-nds/rpcbind-0.2.0-r1
+ net-libs/libtirpc
+ libmount? ( sys-apps/util-linux )
+ nfsdcld? ( >=dev-db/sqlite-3.3 )
+ nfsv4? (
+ <=dev-libs/libevent-2.1
+ >=net-libs/libnfsidmap-0.21-r1
+ kerberos? (
+ >=net-libs/libtirpc-0.2.4-r1[kerberos]
+ app-crypt/mit-krb5
+ )
+ nfsidmap? (
+ >=net-libs/libnfsidmap-0.24
+ >=sys-apps/keyutils-1.5.9
+ )
+ )
+ nfsv41? (
+ sys-fs/lvm2
+ )
+ uuid? ( sys-apps/util-linux )"
+RDEPEND="${DEPEND_COMMON}
+ !net-nds/portmap
+ !<sys-apps/openrc-0.13.4
+ selinux? (
+ sec-policy/selinux-rpc
+ sec-policy/selinux-rpcbind
+ )
+"
+DEPEND="${DEPEND_COMMON}
+ virtual/pkgconfig"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-1.1.4-mtab-sym.patch
+ epatch "${FILESDIR}"/${PN}-1.2.8-cross-build.patch
+
+ sed \
+ -e "/^sbindir/s:= := \"${EPREFIX}\":g" \
+ -i utils/*/Makefile.am || die
+
+ eautoreconf
+}
+
+src_configure() {
+ export libsqlite3_cv_is_recent=yes # Our DEPEND forces this.
+ export ac_cv_header_keyutils_h=$(usex nfsidmap)
+ econf \
+ --with-statedir="${EPREFIX}"/var/lib/nfs \
+ --enable-tirpc \
+ --with-tirpcinclude="${EPREFIX}"/usr/include/tirpc/ \
+ $(use_enable libmount libmount-mount) \
+ $(use_with tcpd tcp-wrappers) \
+ $(use_enable nfsdcld nfsdcltrack) \
+ $(use_enable nfsv4) \
+ $(use_enable nfsv41) \
+ $(use_enable ipv6) \
+ $(use_enable caps) \
+ $(use_enable uuid) \
+ $(use_enable kerberos gss) \
+ --without-gssglue
+}
+
+src_compile(){
+ # remove compiled files bundled in the tarball
+ emake clean
+ default
+}
+
+src_install() {
+ default
+ rm linux-nfs/Makefile* || die
+ dodoc -r linux-nfs README
+
+ # Don't overwrite existing xtab/etab, install the original
+ # versions somewhere safe... more info in pkg_postinst
+ keepdir /var/lib/nfs/{,sm,sm.bak}
+ mv "${ED}"/var/lib "${ED}"/usr/$(get_libdir) || die
+
+ # Install some client-side binaries in /sbin
+ dodir /sbin
+ mv "${ED}"/usr/sbin/rpc.statd "${ED}"/sbin/ || die
+
+ if use nfsv4 && use nfsidmap ; then
+ # Install a config file for idmappers in newer kernels. #415625
+ insinto /etc/request-key.d
+ echo 'create id_resolver * * /usr/sbin/nfsidmap -t 600 %k %d' > id_resolver.conf
+ doins id_resolver.conf
+ fi
+
+ insinto /etc
+ doins "${FILESDIR}"/exports
+ keepdir /etc/exports.d
+
+ local f list=() opt_need=""
+ if use nfsv4 ; then
+ opt_need="rpc.idmapd"
+ list+=( rpc.idmapd rpc.pipefs )
+ use kerberos && list+=( rpc.gssd rpc.svcgssd )
+ fi
+ for f in nfs nfsclient rpc.statd "${list[@]}" ; do
+ newinitd "${FILESDIR}"/${f}.initd ${f}
+ done
+ newinitd "${FILESDIR}"/nfsmount.initd-1.3.1 nfsmount # Nuke after 2015/08/01
+ for f in nfs nfsclient ; do
+ newconfd "${FILESDIR}"/${f}.confd ${f}
+ done
+ sed -i \
+ -e "/^NFS_NEEDED_SERVICES=/s:=.*:=\"${opt_need}\":" \
+ "${ED}"/etc/conf.d/nfs || die #234132
+
+ systemd_dounit systemd/*.{mount,service,target}
+ if ! use nfsv4 || ! use kerberos ; then
+ rm "${D}$(systemd_get_unitdir)"/rpc-{gssd,svcgssd}.service || die
+ fi
+ rm "${D}$(systemd_get_unitdir)"/nfs-config.service || die
+ sed -i -r \
+ -e "/^EnvironmentFile=/s:=.*:=${EPREFIX}/etc/conf.d/nfs:" \
+ -e '/^(After|Wants)=nfs-config.service$/d' \
+ -e 's:/usr/sbin/rpc.statd:/sbin/rpc.statd:' \
+ "${D}$(systemd_get_unitdir)"/* || die
+}
+
+pkg_postinst() {
+ # Install default xtab and friends if there's none existing. In
+ # src_install we put them in /usr/lib/nfs for safe-keeping, but
+ # the daemons actually use the files in /var/lib/nfs. #30486
+ local f
+ mkdir -p "${EROOT}"/var/lib/nfs #368505
+ for f in "${EROOT}"/usr/$(get_libdir)/nfs/*; do
+ [[ -e ${EROOT}/var/lib/nfs/${f##*/} ]] && continue
+ einfo "Copying default ${f##*/} from ${EPREFIX}/usr/$(get_libdir)/nfs to ${EPREFIX}/var/lib/nfs"
+ cp -pPR "${f}" "${EROOT}"/var/lib/nfs/
+ done
+
+ if systemd_is_booted; then
+ if [[ ${REPLACING_VERSIONS} < 1.3.0 ]]; then
+ ewarn "We have switched to upstream systemd unit files. Since"
+ ewarn "they got renamed, you should probably enable the new ones."
+ ewarn "You can run 'equery files nfs-utils | grep systemd'"
+ ewarn "to know what services you need to enable now."
+ fi
+ else
+ ewarn "If you use OpenRC, the nfsmount service has been replaced with nfsclient."
+ ewarn "If you were using nfsmount, please add nfsclient and netmount to the"
+ ewarn "same runlevel as nfsmount."
+ fi
+}
diff --git a/net-fs/nfs-utils/nfs-utils-1.3.1-r5.ebuild b/net-fs/nfs-utils/nfs-utils-1.3.1-r5.ebuild
new file mode 100644
index 000000000000..a903a2298d32
--- /dev/null
+++ b/net-fs/nfs-utils/nfs-utils-1.3.1-r5.ebuild
@@ -0,0 +1,172 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit eutils flag-o-matic multilib autotools systemd
+
+DESCRIPTION="NFS client and server daemons"
+HOMEPAGE="http://linux-nfs.org/"
+SRC_URI="mirror://sourceforge/nfs/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm ~arm64 hppa ~ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86"
+IUSE="caps ipv6 kerberos +libmount nfsdcld +nfsidmap +nfsv4 nfsv41 selinux tcpd +uuid"
+REQUIRED_USE="kerberos? ( nfsv4 )"
+RESTRICT="test" #315573
+
+# kth-krb doesn't provide the right include
+# files, and nfs-utils doesn't build against heimdal either,
+# so don't depend on virtual/krb.
+# (04 Feb 2005 agriffis)
+DEPEND_COMMON="tcpd? ( sys-apps/tcp-wrappers )
+ caps? ( sys-libs/libcap )
+ sys-libs/e2fsprogs-libs
+ >=net-nds/rpcbind-0.2.0-r1
+ net-libs/libtirpc
+ libmount? ( sys-apps/util-linux )
+ nfsdcld? ( >=dev-db/sqlite-3.3 )
+ nfsv4? (
+ <=dev-libs/libevent-2.1
+ >=net-libs/libnfsidmap-0.21-r1
+ kerberos? (
+ >=net-libs/libtirpc-0.2.4-r1[kerberos]
+ app-crypt/mit-krb5
+ )
+ nfsidmap? (
+ >=net-libs/libnfsidmap-0.24
+ >=sys-apps/keyutils-1.5.9
+ )
+ )
+ nfsv41? (
+ sys-fs/lvm2
+ )
+ uuid? ( sys-apps/util-linux )"
+RDEPEND="${DEPEND_COMMON}
+ !net-nds/portmap
+ !<sys-apps/openrc-0.13.9
+ selinux? (
+ sec-policy/selinux-rpc
+ sec-policy/selinux-rpcbind
+ )
+"
+DEPEND="${DEPEND_COMMON}
+ virtual/pkgconfig"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-1.1.4-mtab-sym.patch
+ epatch "${FILESDIR}"/${PN}-1.2.8-cross-build.patch
+
+ sed \
+ -e "/^sbindir/s:= := \"${EPREFIX}\":g" \
+ -i utils/*/Makefile.am || die
+
+ eautoreconf
+}
+
+src_configure() {
+ export libsqlite3_cv_is_recent=yes # Our DEPEND forces this.
+ export ac_cv_header_keyutils_h=$(usex nfsidmap)
+ econf \
+ --with-statedir="${EPREFIX}"/var/lib/nfs \
+ --enable-tirpc \
+ --with-tirpcinclude="${EPREFIX}"/usr/include/tirpc/ \
+ $(use_enable libmount libmount-mount) \
+ $(use_with tcpd tcp-wrappers) \
+ $(use_enable nfsdcld nfsdcltrack) \
+ $(use_enable nfsv4) \
+ $(use_enable nfsv41) \
+ $(use_enable ipv6) \
+ $(use_enable caps) \
+ $(use_enable uuid) \
+ $(use_enable kerberos gss) \
+ --without-gssglue
+}
+
+src_compile(){
+ # remove compiled files bundled in the tarball
+ emake clean
+ default
+}
+
+src_install() {
+ default
+ rm linux-nfs/Makefile* || die
+ dodoc -r linux-nfs README
+
+ # Don't overwrite existing xtab/etab, install the original
+ # versions somewhere safe... more info in pkg_postinst
+ keepdir /var/lib/nfs/{,sm,sm.bak}
+ mv "${ED}"/var/lib "${ED}"/usr/$(get_libdir) || die
+
+ # Install some client-side binaries in /sbin
+ dodir /sbin
+ mv "${ED}"/usr/sbin/rpc.statd "${ED}"/sbin/ || die
+
+ if use nfsv4 && use nfsidmap ; then
+ # Install a config file for idmappers in newer kernels. #415625
+ insinto /etc/request-key.d
+ echo 'create id_resolver * * /usr/sbin/nfsidmap -t 600 %k %d' > id_resolver.conf
+ doins id_resolver.conf
+ fi
+
+ insinto /etc
+ doins "${FILESDIR}"/exports
+ keepdir /etc/exports.d
+
+ local f list=() opt_need=""
+ if use nfsv4 ; then
+ opt_need="rpc.idmapd"
+ list+=( rpc.idmapd rpc.pipefs )
+ use kerberos && list+=( rpc.gssd rpc.svcgssd )
+ fi
+ for f in nfs nfsclient rpc.statd "${list[@]}" ; do
+ newinitd "${FILESDIR}"/${f}.initd ${f}
+ done
+ newinitd "${FILESDIR}"/nfsmount.initd-1.3.1 nfsmount # Nuke after 2015/08/01
+ for f in nfs nfsclient ; do
+ newconfd "${FILESDIR}"/${f}.confd ${f}
+ done
+ sed -i \
+ -e "/^NFS_NEEDED_SERVICES=/s:=.*:=\"${opt_need}\":" \
+ "${ED}"/etc/conf.d/nfs || die #234132
+
+ systemd_dounit systemd/*.{mount,service,target}
+ if ! use nfsv4 || ! use kerberos ; then
+ rm "${D}$(systemd_get_unitdir)"/rpc-{gssd,svcgssd}.service || die
+ fi
+ rm "${D}$(systemd_get_unitdir)"/nfs-config.service || die
+ sed -i -r \
+ -e "/^EnvironmentFile=/s:=.*:=${EPREFIX}/etc/conf.d/nfs:" \
+ -e '/^(After|Wants)=nfs-config.service$/d' \
+ -e 's:/usr/sbin/rpc.statd:/sbin/rpc.statd:' \
+ "${D}$(systemd_get_unitdir)"/* || die
+}
+
+pkg_postinst() {
+ # Install default xtab and friends if there's none existing. In
+ # src_install we put them in /usr/lib/nfs for safe-keeping, but
+ # the daemons actually use the files in /var/lib/nfs. #30486
+ local f
+ mkdir -p "${EROOT}"/var/lib/nfs #368505
+ for f in "${EROOT}"/usr/$(get_libdir)/nfs/*; do
+ [[ -e ${EROOT}/var/lib/nfs/${f##*/} ]] && continue
+ einfo "Copying default ${f##*/} from ${EPREFIX}/usr/$(get_libdir)/nfs to ${EPREFIX}/var/lib/nfs"
+ cp -pPR "${f}" "${EROOT}"/var/lib/nfs/
+ done
+
+ if systemd_is_booted; then
+ if [[ ${REPLACING_VERSIONS} < 1.3.0 ]]; then
+ ewarn "We have switched to upstream systemd unit files. Since"
+ ewarn "they got renamed, you should probably enable the new ones."
+ ewarn "You can run 'equery files nfs-utils | grep systemd'"
+ ewarn "to know what services you need to enable now."
+ fi
+ else
+ ewarn "If you use OpenRC, the nfsmount service has been replaced with nfsclient."
+ ewarn "If you were using nfsmount, please add nfsclient and netmount to the"
+ ewarn "same runlevel as nfsmount."
+ fi
+}
diff --git a/net-fs/nfs-utils/nfs-utils-1.3.2-r6.ebuild b/net-fs/nfs-utils/nfs-utils-1.3.2-r6.ebuild
new file mode 100644
index 000000000000..5843c4ddb5d1
--- /dev/null
+++ b/net-fs/nfs-utils/nfs-utils-1.3.2-r6.ebuild
@@ -0,0 +1,177 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit eutils flag-o-matic multilib autotools systemd
+
+DESCRIPTION="NFS client and server daemons"
+HOMEPAGE="http://linux-nfs.org/"
+SRC_URI="mirror://sourceforge/nfs/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+IUSE="caps ipv6 kerberos +libmount nfsdcld +nfsidmap +nfsv4 nfsv41 selinux tcpd +uuid"
+REQUIRED_USE="kerberos? ( nfsv4 )"
+RESTRICT="test" #315573
+
+# kth-krb doesn't provide the right include
+# files, and nfs-utils doesn't build against heimdal either,
+# so don't depend on virtual/krb.
+# (04 Feb 2005 agriffis)
+DEPEND_COMMON="tcpd? ( sys-apps/tcp-wrappers )
+ caps? ( sys-libs/libcap )
+ sys-libs/e2fsprogs-libs
+ >=net-nds/rpcbind-0.2.0-r1
+ net-libs/libtirpc
+ libmount? ( sys-apps/util-linux )
+ nfsdcld? ( >=dev-db/sqlite-3.3 )
+ nfsv4? (
+ dev-libs/libevent
+ >=net-libs/libnfsidmap-0.21-r1
+ kerberos? (
+ >=net-libs/libtirpc-0.2.4-r1[kerberos]
+ app-crypt/mit-krb5
+ )
+ nfsidmap? (
+ >=net-libs/libnfsidmap-0.24
+ >=sys-apps/keyutils-1.5.9
+ )
+ )
+ nfsv41? (
+ sys-fs/lvm2
+ )
+ uuid? ( sys-apps/util-linux )"
+RDEPEND="${DEPEND_COMMON}
+ !net-nds/portmap
+ !<sys-apps/openrc-0.13.9
+ selinux? (
+ sec-policy/selinux-rpc
+ sec-policy/selinux-rpcbind
+ )
+"
+DEPEND="${DEPEND_COMMON}
+ virtual/pkgconfig"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-1.1.4-mtab-sym.patch
+ epatch "${FILESDIR}"/${PN}-1.2.8-cross-build.patch
+ epatch "${FILESDIR}"/${PN}-1.3.2-background-statd.patch
+
+ sed \
+ -e "/^sbindir/s:= := \"${EPREFIX}\":g" \
+ -i utils/*/Makefile.am || die
+
+ epatch_user
+ eautoreconf
+}
+
+src_configure() {
+ export libsqlite3_cv_is_recent=yes # Our DEPEND forces this.
+ export ac_cv_header_keyutils_h=$(usex nfsidmap)
+ econf \
+ --with-statedir="${EPREFIX}"/var/lib/nfs \
+ --enable-tirpc \
+ --with-tirpcinclude="${EPREFIX}"/usr/include/tirpc/ \
+ $(use_enable libmount libmount-mount) \
+ $(use_with tcpd tcp-wrappers) \
+ $(use_enable nfsdcld nfsdcltrack) \
+ $(use_enable nfsv4) \
+ $(use_enable nfsv41) \
+ $(use_enable ipv6) \
+ $(use_enable caps) \
+ $(use_enable uuid) \
+ $(use_enable kerberos gss) \
+ --without-gssglue
+}
+
+src_compile(){
+ # remove compiled files bundled in the tarball
+ emake clean
+ default
+}
+
+src_install() {
+ default
+ rm linux-nfs/Makefile* || die
+ dodoc -r linux-nfs README
+
+ # Don't overwrite existing xtab/etab, install the original
+ # versions somewhere safe... more info in pkg_postinst
+ keepdir /var/lib/nfs/{,sm,sm.bak}
+ mv "${ED}"/var/lib "${ED}"/usr/$(get_libdir) || die
+
+ # Install some client-side binaries in /sbin
+ dodir /sbin
+ mv "${ED}"/usr/sbin/rpc.statd "${ED}"/sbin/ || die
+
+ if use nfsv4 && use nfsidmap ; then
+ # Install a config file for idmappers in newer kernels. #415625
+ insinto /etc/request-key.d
+ echo 'create id_resolver * * /usr/sbin/nfsidmap -t 600 %k %d' > id_resolver.conf
+ doins id_resolver.conf
+ fi
+
+ insinto /etc
+ doins "${FILESDIR}"/exports
+ keepdir /etc/exports.d
+
+ local f list=() opt_need=""
+ if use nfsv4 ; then
+ opt_need="rpc.idmapd"
+ list+=( rpc.idmapd rpc.pipefs )
+ use kerberos && list+=( rpc.gssd rpc.svcgssd )
+ fi
+ for f in nfs nfsclient rpc.statd "${list[@]}" ; do
+ newinitd "${FILESDIR}"/${f}.initd ${f}
+ done
+ newinitd "${FILESDIR}"/nfsmount.initd-1.3.1 nfsmount # Nuke after 2015/08/01
+ for f in nfs nfsclient ; do
+ newconfd "${FILESDIR}"/${f}.confd ${f}
+ done
+ sed -i \
+ -e "/^NFS_NEEDED_SERVICES=/s:=.*:=\"${opt_need}\":" \
+ "${ED}"/etc/conf.d/nfs || die #234132
+
+ systemd_dounit systemd/*.{mount,service,target}
+ if ! use nfsv4 || ! use kerberos ; then
+ rm "${D}$(systemd_get_unitdir)"/rpc-{gssd,svcgssd}.service || die
+ fi
+ if ! use nfsv41 ; then
+ rm "${D}$(systemd_get_unitdir)"/nfs-blkmap.* || die
+ fi
+ rm "${D}$(systemd_get_unitdir)"/nfs-config.service || die
+ sed -i -r \
+ -e "/^EnvironmentFile=/s:=.*:=${EPREFIX}/etc/conf.d/nfs:" \
+ -e '/^(After|Wants)=nfs-config.service$/d' \
+ -e 's:/usr/sbin/rpc.statd:/sbin/rpc.statd:' \
+ "${D}$(systemd_get_unitdir)"/* || die
+}
+
+pkg_postinst() {
+ # Install default xtab and friends if there's none existing. In
+ # src_install we put them in /usr/lib/nfs for safe-keeping, but
+ # the daemons actually use the files in /var/lib/nfs. #30486
+ local f
+ mkdir -p "${EROOT}"/var/lib/nfs #368505
+ for f in "${EROOT}"/usr/$(get_libdir)/nfs/*; do
+ [[ -e ${EROOT}/var/lib/nfs/${f##*/} ]] && continue
+ einfo "Copying default ${f##*/} from ${EPREFIX}/usr/$(get_libdir)/nfs to ${EPREFIX}/var/lib/nfs"
+ cp -pPR "${f}" "${EROOT}"/var/lib/nfs/
+ done
+
+ if systemd_is_booted; then
+ if [[ ${REPLACING_VERSIONS} < 1.3.0 ]]; then
+ ewarn "We have switched to upstream systemd unit files. Since"
+ ewarn "they got renamed, you should probably enable the new ones."
+ ewarn "You can run 'equery files nfs-utils | grep systemd'"
+ ewarn "to know what services you need to enable now."
+ fi
+ else
+ ewarn "If you use OpenRC, the nfsmount service has been replaced with nfsclient."
+ ewarn "If you were using nfsmount, please add nfsclient and netmount to the"
+ ewarn "same runlevel as nfsmount."
+ fi
+}