浏览代码

Add new NFS utilities package with working init script.

"Steven J. Hill" 18 年之前
父节点
当前提交
72f3ebce22
共有 4 个文件被更改,包括 2875 次插入0 次删除
  1. 33 0
      package/nfs-utils/Config.in
  2. 81 0
      package/nfs-utils/init-nfs
  3. 2675 0
      package/nfs-utils/nfs-utils-1.0.10-debian.patch
  4. 86 0
      package/nfs-utils/nfs-utils.mk

+ 33 - 0
package/nfs-utils/Config.in

@@ -0,0 +1,33 @@
+config BR2_PACKAGE_NFS_UTILS
+	bool "nfs-utils"
+	default n
+	help
+	  The NFS Linux kernel server.
+
+	  http://sourceforge.net/projects/nfs
+
+menu "NFS utilities selection"
+	depends BR2_PACKAGE_NFS_UTILS
+
+config BR2_PACKAGE_NFS_UTILS_RPCDEBUG
+	bool "rpcdebug"
+	default n
+	depends on BR2_PACKAGE_NFS_UTILS
+	help
+	  The RPC debugging utility
+
+config BR2_PACKAGE_NFS_UTILS_RPC_LOCKD
+	bool "rpc.lockd"
+	default n
+	depends on BR2_PACKAGE_NFS_UTILS
+	help
+	  NFS lock manager for Linux kernels older than 2.4
+
+config BR2_PACKAGE_NFS_UTILS_RPC_RQUOTAD
+	bool "rpc.rquotad"
+	default n
+	depends on BR2_PACKAGE_NFS_UTILS
+	help
+	  NFS remote quota server
+
+endmenu

+ 81 - 0
package/nfs-utils/init-nfs

@@ -0,0 +1,81 @@
+#!/bin/sh
+#
+# nfs           This shell script takes care of starting and stopping
+#               the NFS services. Stolen from RedHat FC5.
+
+[ -x /usr/sbin/rpc.statd ] || exit 0
+[ -x /usr/sbin/rpc.nfsd ] || exit 0
+[ -x /usr/sbin/rpc.mountd ] || exit 0
+[ -x /usr/sbin/exportfs ] || exit 0
+
+# Don't fail if /etc/exports doesn't exist; create a bare-bones version and continue.
+[ -r /etc/exports ] || \
+    { touch /etc/exports && chmod u+rw,g+r,o+r /etc/exports ; } || \
+    { echo "/etc/exports does not exist" ; exit 0 ; }
+    
+# The /var/lib/nfs directory is actually on a tmpfs filesystem.
+mkdir -p /var/lib/nfs/sm
+mkdir -p /var/lib/nfs/sm.bak
+touch /var/lib/nfs/etab
+touch /var/lib/nfs/rmtab
+touch /var/lib/nfs/state
+touch /var/lib/nfs/xtab
+
+# See how we were called.
+case "$1" in
+  start)
+	# Start daemons.
+	echo -n "Starting NFS statd: "
+	rpc.statd
+	touch /var/lock/subsys/nfslock
+	echo "done"
+
+	echo -n "Starting NFS services: "
+	/usr/sbin/exportfs -r
+	rpc.statd
+	echo "done"
+
+	echo -n "Starting NFS daemon: "
+	rpc.nfsd 2
+	echo "done"
+
+	echo -n "Starting NFS mountd: "
+	rpc.mountd
+	echo "done"
+	touch /var/lock/subsys/nfs
+	;;
+  stop)
+	# Stop daemons.
+	echo -n "Shutting down NFS mountd: "
+	killall -q rpc.mountd
+	echo "done"
+
+	echo "Shutting down NFS daemon: "
+	kill -9 `pidof nfsd` 2>/dev/null
+	echo "done"
+
+	echo -n "Shutting down NFS services: "
+	/usr/sbin/exportfs -au
+	rm -f /var/lock/subsys/nfs
+	killall -q rpc.statd
+	echo "done"
+
+	echo -n "Stopping NFS statd: "
+	killall -q rpc.statd
+	echo "done"
+	rm -f /var/lock/subsys/nfslock
+	;;
+  restart)
+	stop
+	start
+	;;
+  reload)
+	/usr/sbin/exportfs -r
+	touch /var/lock/subsys/nfs
+	;;
+  *)
+	echo "Usage: nfs {start|stop|reload}"
+	exit 1
+esac
+
+exit 0

+ 2675 - 0
package/nfs-utils/nfs-utils-1.0.10-debian.patch

@@ -0,0 +1,2675 @@
+--- nfs-utils-1.0.10.orig/utils/exportfs/exports.man
++++ nfs-utils-1.0.10/utils/exportfs/exports.man
+@@ -29,6 +29,9 @@
+ the export name using a backslash followed by the character code as three
+ octal digits.
+ .PP
++To apply changes to this file, run exportfs \-ra or /etc/init.d/nfs-kernel-server
++reload (the latter being a distribution-specific extension).
++.PP
+ .SS Machine Name Formats
+ NFS clients may be specified in a number of ways:
+ .IP "single host
+@@ -402,8 +405,11 @@
+ .TP
+ .IR root_squash
+ Map requests from uid/gid 0 to the anonymous uid/gid. Note that this does
+-not apply to any other uids that might be equally sensitive, such as user
+-.IR bin .
++not apply to any other uids or gids that might be equally sensitive, such as
++user
++.IR bin 
++or group
++.IR staff .
+ .TP
+ .IR no_root_squash
+ Turn off root squashing. This option is mainly useful for diskless clients.
+--- nfs-utils-1.0.10.orig/utils/mountd/mountd.c
++++ nfs-utils-1.0.10/utils/mountd/mountd.c
+@@ -558,7 +558,7 @@
+ 
+ 	/* Parse the command line options and arguments. */
+ 	opterr = 0;
+-	while ((c = getopt_long(argc, argv, "o:n:Fd:f:p:P:hH:N:V:vs:t:", longopts, NULL)) != EOF)
++	while ((c = getopt_long(argc, argv, "o:nFd:f:p:P:hH:N:V:vs:t:", longopts, NULL)) != EOF)
+ 		switch (c) {
+ 		case 'o':
+ 			descriptors = atoi(optarg);
+--- nfs-utils-1.0.10.orig/utils/nfsstat/nfsstat.man
++++ nfs-utils-1.0.10/utils/nfsstat/nfsstat.man
+@@ -14,36 +14,36 @@
+ displays statistics kept about NFS client and server activity.
+ .SH OPTIONS
+ .TP
+-.B -s, --server
++.B \-s, \-\-server
+ Print only server-side statistics. The default is to print both server and
+ client statistics.
+ .TP
+-.B -c, --client
++.B \-c, \-\-client
+ Print only client-side statistics.
+ .TP
+-.B -n, --nfs
++.B \-n, \-\-nfs
+ Print only NFS statistics. The default is to print both NFS and RPC
+ information.
+ .TP
+-.B -2
++.B \-2
+ Print only NFS v2 statistics. The default is to only print information
+ about the versions of \fBNFS\fR that have non-zero counts.
+ .TP
+-.B -3
++.B \-3
+ Print only NFS v3 statistics. 
+ .TP
+-.B -4
++.B \-4
+ Print only NFS v4 statistics. 
+ .TP
+-.B -m, --mounted
++.B \-m, \-\-mounted
+ Print information about each of the mounted \fBNFS\fR file systems.
+ 
+ If this option is used, all other options are ignored.
+ .TP
+-.B -r, --rpc
++.B \-r, \-\-rpc
+ Print only RPC statistics.
+ .TP
+-.BI -o " facility
++.BI \-o " facility
+ Display statistics for the specified facility, which must be one of:
+ .RS
+ .TP
+@@ -69,27 +69,27 @@
+ Display all of the above facilities.
+ .RE
+ .TP
+-.B -v, --verbose
+-This is equivalent to \fB-o all\fR.
++.B \-v, \-\-verbose
++This is equivalent to \fB\-o all\fR.
+ .SH EXAMPLES
+ .TP
+-.B nfsstat -o all -234
++.B nfsstat \-o all \-234
+ Show all information about all versions of \fBNFS\fR.
+ .TP
+-.B nfsstat --verbose -234
++.B nfsstat \-\-verbose \-234
+ Same as above.
+ .TP
+-.B nfsstat -o all
++.B nfsstat \-o all
+ Show all information about about active versions of \fBNFS\fR.
+ .TP
+-.B nfsstat --nfs --server -3
++.B nfsstat \-\-nfs \-\-server \-3
+ Show statistics for \fBNFS\fR version 3 server.
+ .TP
+-.B nfsstat -m
++.B nfsstat \-m
+ Show information about mounted \fBNFS\fR filesystems.
+ .\" --------------------- DISPLAY --------------------------------
+ .SH DISPLAY
+-The \fBFlags\fR output from the \fB-m\fR option is the same as the
++The \fBFlags\fR output from the \fB\-m\fR option is the same as the
+ flags give to the \fBmount\fR command.
+ .\" --------------------- FILES ----------------------------------
+ .SH FILES
+@@ -111,11 +111,11 @@
+ .BR nfs (5).
+ .\" ---------------------- BUGS ----------------------------------
+ .SH BUGS
+-The default output has be changed.  To get the old default output you must run \fBnfsstat --auto -2\fR.
++The default output has be changed.  To get the old default output you must run \fBnfsstat \-\-auto \-2\fR.
+ .P
+-The function of the \fB-v\fR and \fB-a\fR options have changed. The \fB-a\fR option
+-is now reserved for future use. The \fB-v\fR does what the \fB-a\fR option used to do,
+-and the new \fB-[234]\fR options replace the \fB-v\fR option.
++The function of the \fB\-v\fR and \fB\-a\fR options have changed. The \fB\-a\fR option
++is now reserved for future use. The \fB\-v\fR does what the \fB\-a\fR option used to do,
++and the new \fB\-[234]\fR options replace the \fB\-v\fR option.
+ .P
+ The \fBDisplay\fR section should be more complete.
+ .P
+--- nfs-utils-1.0.10.orig/utils/rquotad/rquota.h
++++ nfs-utils-1.0.10/utils/rquotad/rquota.h
+@@ -0,0 +1,155 @@
++/*
++ * Please do not edit this file.
++ * It was generated using rpcgen.
++ */
++
++#ifndef _RQUOTA_H_RPCGEN
++#define _RQUOTA_H_RPCGEN
++
++#include <rpc/rpc.h>
++
++#ifndef IXDR_GET_INT32
++#define IXDR_GET_INT32(buf) IXDR_GET_LONG((buf))
++#endif
++#ifndef IXDR_PUT_INT32
++#define IXDR_PUT_INT32(buf, v) IXDR_PUT_LONG((buf), (v))
++#endif
++#ifndef IXDR_GET_U_INT32
++#define IXDR_GET_U_INT32(buf) IXDR_GET_U_LONG((buf))
++#endif
++#ifndef IXDR_PUT_U_INT32
++#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_U_LONG((buf), (v))
++#endif
++#define RQ_PATHLEN 1024
++
++struct getquota_args {
++	char *gqa_pathp;
++	int gqa_uid;
++};
++typedef struct getquota_args getquota_args;
++#ifdef __cplusplus 
++extern "C" bool_t xdr_getquota_args(XDR *, getquota_args*);
++#elif __STDC__ 
++extern  bool_t xdr_getquota_args(XDR *, getquota_args*);
++#else /* Old Style C */ 
++bool_t xdr_getquota_args();
++#endif /* Old Style C */ 
++
++
++struct ext_getquota_args {
++	char *gqa_pathp;
++	int gqa_type;
++	int gqa_id;
++};
++typedef struct ext_getquota_args ext_getquota_args;
++#ifdef __cplusplus 
++extern "C" bool_t xdr_ext_getquota_args(XDR *, ext_getquota_args*);
++#elif __STDC__ 
++extern  bool_t xdr_ext_getquota_args(XDR *, ext_getquota_args*);
++#else /* Old Style C */ 
++bool_t xdr_ext_getquota_args();
++#endif /* Old Style C */ 
++
++
++struct rquota {
++	int rq_bsize;
++	bool_t rq_active;
++	u_int rq_bhardlimit;
++	u_int rq_bsoftlimit;
++	u_int rq_curblocks;
++	u_int rq_fhardlimit;
++	u_int rq_fsoftlimit;
++	u_int rq_curfiles;
++	u_int rq_btimeleft;
++	u_int rq_ftimeleft;
++};
++typedef struct rquota rquota;
++#ifdef __cplusplus 
++extern "C" bool_t xdr_rquota(XDR *, rquota*);
++#elif __STDC__ 
++extern  bool_t xdr_rquota(XDR *, rquota*);
++#else /* Old Style C */ 
++bool_t xdr_rquota();
++#endif /* Old Style C */ 
++
++
++enum gqr_status {
++	Q_OK = 1,
++	Q_NOQUOTA = 2,
++	Q_EPERM = 3,
++};
++typedef enum gqr_status gqr_status;
++#ifdef __cplusplus 
++extern "C" bool_t xdr_gqr_status(XDR *, gqr_status*);
++#elif __STDC__ 
++extern  bool_t xdr_gqr_status(XDR *, gqr_status*);
++#else /* Old Style C */ 
++bool_t xdr_gqr_status();
++#endif /* Old Style C */ 
++
++
++struct getquota_rslt {
++	gqr_status status;
++	union {
++		rquota gqr_rquota;
++	} getquota_rslt_u;
++};
++typedef struct getquota_rslt getquota_rslt;
++#ifdef __cplusplus 
++extern "C" bool_t xdr_getquota_rslt(XDR *, getquota_rslt*);
++#elif __STDC__ 
++extern  bool_t xdr_getquota_rslt(XDR *, getquota_rslt*);
++#else /* Old Style C */ 
++bool_t xdr_getquota_rslt();
++#endif /* Old Style C */ 
++
++
++#define RQUOTAPROG ((u_int32_t)100011)
++#define RQUOTAVERS ((u_int32_t)1)
++
++#ifdef __cplusplus
++#define RQUOTAPROC_GETQUOTA ((u_int32_t)1)
++extern "C" getquota_rslt * rquotaproc_getquota_1(getquota_args *, CLIENT *);
++extern "C" getquota_rslt * rquotaproc_getquota_1_svc(getquota_args *, struct svc_req *);
++#define RQUOTAPROC_GETACTIVEQUOTA ((u_int32_t)2)
++extern "C" getquota_rslt * rquotaproc_getactivequota_1(getquota_args *, CLIENT *);
++extern "C" getquota_rslt * rquotaproc_getactivequota_1_svc(getquota_args *, struct svc_req *);
++
++#elif __STDC__
++#define RQUOTAPROC_GETQUOTA ((u_int32_t)1)
++extern  getquota_rslt * rquotaproc_getquota_1(getquota_args *, CLIENT *);
++extern  getquota_rslt * rquotaproc_getquota_1_svc(getquota_args *, struct svc_req *);
++#define RQUOTAPROC_GETACTIVEQUOTA ((u_int32_t)2)
++extern  getquota_rslt * rquotaproc_getactivequota_1(getquota_args *, CLIENT *);
++extern  getquota_rslt * rquotaproc_getactivequota_1_svc(getquota_args *, struct svc_req *);
++
++#else /* Old Style C */ 
++#define RQUOTAPROC_GETQUOTA ((u_int32_t)1)
++extern  getquota_rslt * rquotaproc_getquota_1();
++extern  getquota_rslt * rquotaproc_getquota_1_svc();
++#define RQUOTAPROC_GETACTIVEQUOTA ((u_int32_t)2)
++extern  getquota_rslt * rquotaproc_getactivequota_1();
++extern  getquota_rslt * rquotaproc_getactivequota_1_svc();
++#endif /* Old Style C */ 
++#define EXT_RQUOTAVERS ((u_int32_t)2)
++
++#ifdef __cplusplus
++extern "C" getquota_rslt * rquotaproc_getquota_2(ext_getquota_args *, CLIENT *);
++extern "C" getquota_rslt * rquotaproc_getquota_2_svc(ext_getquota_args *, struct svc_req *);
++extern "C" getquota_rslt * rquotaproc_getactivequota_2(ext_getquota_args *, CLIENT *);
++extern "C" getquota_rslt * rquotaproc_getactivequota_2_svc(ext_getquota_args *, struct svc_req *);
++
++#elif __STDC__
++extern  getquota_rslt * rquotaproc_getquota_2(ext_getquota_args *, CLIENT *);
++extern  getquota_rslt * rquotaproc_getquota_2_svc(ext_getquota_args *, struct svc_req *);
++extern  getquota_rslt * rquotaproc_getactivequota_2(ext_getquota_args *, CLIENT *);
++extern  getquota_rslt * rquotaproc_getactivequota_2_svc(ext_getquota_args *, struct svc_req *);
++
++#else /* Old Style C */ 
++extern  getquota_rslt * rquotaproc_getquota_2();
++extern  getquota_rslt * rquotaproc_getquota_2_svc();
++extern  getquota_rslt * rquotaproc_getactivequota_2();
++extern  getquota_rslt * rquotaproc_getactivequota_2_svc();
++#endif /* Old Style C */ 
++
++#endif /* !_RQUOTA_H_RPCGEN */
+--- nfs-utils-1.0.10.orig/utils/rquotad/rquota_xdr.c
++++ nfs-utils-1.0.10/utils/rquotad/rquota_xdr.c
+@@ -0,0 +1,215 @@
++/*
++ * Please do not edit this file.
++ * It was generated using rpcgen.
++ */
++
++#include "rquota.h"
++
++bool_t
++xdr_getquota_args(xdrs, objp)
++	XDR *xdrs;
++	getquota_args *objp;
++{
++
++	 if (!xdr_string(xdrs, &objp->gqa_pathp, RQ_PATHLEN)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_int(xdrs, &objp->gqa_uid)) {
++		 return (FALSE);
++	 }
++	return (TRUE);
++}
++
++bool_t
++xdr_ext_getquota_args(xdrs, objp)
++	XDR *xdrs;
++	ext_getquota_args *objp;
++{
++
++	 if (!xdr_string(xdrs, &objp->gqa_pathp, RQ_PATHLEN)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_int(xdrs, &objp->gqa_type)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_int(xdrs, &objp->gqa_id)) {
++		 return (FALSE);
++	 }
++	return (TRUE);
++}
++
++bool_t
++xdr_rquota(xdrs, objp)
++	XDR *xdrs;
++	rquota *objp;
++{
++
++
++	 if (xdrs->x_op == XDR_ENCODE) {
++		int32_t *buf = XDR_INLINE(xdrs,10 * BYTES_PER_XDR_UNIT);
++		if (buf == NULL) {
++		 if (!xdr_int(xdrs, &objp->rq_bsize)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_bool(xdrs, &objp->rq_active)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_bhardlimit)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_bsoftlimit)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_curblocks)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_fhardlimit)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_fsoftlimit)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_curfiles)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_btimeleft)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_ftimeleft)) {
++			 return (FALSE);
++		 }
++
++	  }
++	  else {
++		 (void) IXDR_PUT_INT32(buf,objp->rq_bsize);
++		 (void) IXDR_PUT_BOOL(buf,objp->rq_active);
++		 (void) IXDR_PUT_U_INT32(buf,objp->rq_bhardlimit);
++		 (void) IXDR_PUT_U_INT32(buf,objp->rq_bsoftlimit);
++		 (void) IXDR_PUT_U_INT32(buf,objp->rq_curblocks);
++		 (void) IXDR_PUT_U_INT32(buf,objp->rq_fhardlimit);
++		 (void) IXDR_PUT_U_INT32(buf,objp->rq_fsoftlimit);
++		 (void) IXDR_PUT_U_INT32(buf,objp->rq_curfiles);
++		 (void) IXDR_PUT_U_INT32(buf,objp->rq_btimeleft);
++		 (void) IXDR_PUT_U_INT32(buf,objp->rq_ftimeleft);
++	  }
++
++ 	 return (TRUE);
++	} else if (xdrs->x_op == XDR_DECODE) {
++		int32_t *buf = XDR_INLINE(xdrs,10 * BYTES_PER_XDR_UNIT);
++		if (buf == NULL) {
++		 if (!xdr_int(xdrs, &objp->rq_bsize)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_bool(xdrs, &objp->rq_active)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_bhardlimit)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_bsoftlimit)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_curblocks)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_fhardlimit)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_fsoftlimit)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_curfiles)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_btimeleft)) {
++			 return (FALSE);
++		 }
++		 if (!xdr_u_int(xdrs, &objp->rq_ftimeleft)) {
++			 return (FALSE);
++		 }
++
++	  }
++	  else {
++		 objp->rq_bsize = IXDR_GET_INT32(buf);
++		 objp->rq_active = IXDR_GET_BOOL(buf);
++		 objp->rq_bhardlimit = IXDR_GET_U_INT32(buf);
++		 objp->rq_bsoftlimit = IXDR_GET_U_INT32(buf);
++		 objp->rq_curblocks = IXDR_GET_U_INT32(buf);
++		 objp->rq_fhardlimit = IXDR_GET_U_INT32(buf);
++		 objp->rq_fsoftlimit = IXDR_GET_U_INT32(buf);
++		 objp->rq_curfiles = IXDR_GET_U_INT32(buf);
++		 objp->rq_btimeleft = IXDR_GET_U_INT32(buf);
++		 objp->rq_ftimeleft = IXDR_GET_U_INT32(buf);
++	  }
++	 return(TRUE);
++	}
++
++	 if (!xdr_int(xdrs, &objp->rq_bsize)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_bool(xdrs, &objp->rq_active)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_u_int(xdrs, &objp->rq_bhardlimit)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_u_int(xdrs, &objp->rq_bsoftlimit)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_u_int(xdrs, &objp->rq_curblocks)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_u_int(xdrs, &objp->rq_fhardlimit)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_u_int(xdrs, &objp->rq_fsoftlimit)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_u_int(xdrs, &objp->rq_curfiles)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_u_int(xdrs, &objp->rq_btimeleft)) {
++		 return (FALSE);
++	 }
++	 if (!xdr_u_int(xdrs, &objp->rq_ftimeleft)) {
++		 return (FALSE);
++	 }
++	return (TRUE);
++}
++
++bool_t
++xdr_gqr_status(xdrs, objp)
++	XDR *xdrs;
++	gqr_status *objp;
++{
++
++	 if (!xdr_enum(xdrs, (enum_t *)objp)) {
++		 return (FALSE);
++	 }
++	return (TRUE);
++}
++
++bool_t
++xdr_getquota_rslt(xdrs, objp)
++	XDR *xdrs;
++	getquota_rslt *objp;
++{
++
++	 if (!xdr_gqr_status(xdrs, &objp->status)) {
++		 return (FALSE);
++	 }
++	switch (objp->status) {
++	case Q_OK:
++		 if (!xdr_rquota(xdrs, &objp->getquota_rslt_u.gqr_rquota)) {
++			 return (FALSE);
++		 }
++		break;
++	case Q_NOQUOTA:
++		break;
++	case Q_EPERM:
++		break;
++	default:
++		return (FALSE);
++	}
++	return (TRUE);
++}
+--- nfs-utils-1.0.10.orig/utils/showmount/showmount.man
++++ nfs-utils-1.0.10/utils/showmount/showmount.man
+@@ -21,7 +21,7 @@
+ The output from
+ .B showmount
+ is designed to
+-appear as though it were processed through ``sort -u''.
++appear as though it were processed through ``sort \-u''.
+ .SH OPTIONS
+ .TP
+ .BR \-a " or " \-\-all
+--- nfs-utils-1.0.10.orig/debian/bzero.patch
++++ nfs-utils-1.0.10/debian/bzero.patch
+@@ -0,0 +1,11 @@
++--- nfs-utils-1.0.9.orig/support/nfs/svc_socket.c
+++++ nfs-utils-1.0.9/support/nfs/svc_socket.c
++@@ -35,6 +35,8 @@
++ # define __close(f)		close ((f))
++ #endif
++ 
+++#define __bzero(d,n)		memset((d),'\0',(n))
+++
++ static int
++ svc_socket (u_long number, int type, int protocol, int reuse)
++ {
+--- nfs-utils-1.0.10.orig/debian/control
++++ nfs-utils-1.0.10/debian/control
+@@ -0,0 +1,57 @@
++Source: nfs-utils
++Priority: standard
++Section: net
++Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
++Uploaders: Steinar H. Gunderson <sesse@debian.org>, Daniel Baumann <daniel@debian.org>
++Build-Depends: debhelper (>= 5), libwrap0-dev, libevent-dev, libnfsidmap-dev, libkrb5-dev, libgssapi-dev, librpcsecgss-dev, perl, pkg-config
++Build-Conflicts: librpcsecgss-dev (= 0.14-1)
++Standards-Version: 3.7.2
++
++Package: nfs-kernel-server
++Priority: optional
++Architecture: any
++Depends: nfs-common (>= 1:1.0.8-1), ucf, lsb-base (>= 1.3-9ubuntu3), ${shlibs:Depends}
++Provides: knfs, nfs-server
++Conflicts: knfs, nfs-server
++Replaces: knfs, nfs-server
++Description: Kernel NFS server support
++ Use this package if you want to use the kernel-mode NFS server.
++ The user-mode NFS server in the "nfs-user-server" package is slower
++ and less featureful but easier to debug than the kernel-mode server.
++ .
++ Upstream: SourceForge project "nfs", CVS module nfs-utils.
++ .
++  Homepage: http://nfs.sourceforge.net/
++
++Package: nfs-common
++Architecture: any
++Depends: portmap, adduser, ucf, lsb-base (>= 1.3-9ubuntu3), netbase (>= 4.24), ${shlibs:Depends}
++Provides: nfs-client
++Conflicts: nfs-client
++Replaces: nfs-client, nfs-kernel-server (<< 1:1.0.7-5)
++Description: NFS support files common to client and server
++ Use this package on any machine that uses NFS, either as client or
++ server.  Programs included: lockd, statd, showmount, nfsstat, gssd
++ and idmapd.
++ .
++ Upstream: SourceForge project "nfs", CVS module nfs-utils.
++ .
++  Homepage: http://nfs.sourceforge.net/
++
++Package: nhfsstone
++Priority: extra
++Architecture: any
++Depends: nfs-common, ${shlibs:Depends}
++Replaces: nfs-kernel-server
++Description: NFS benchmark program
++ nhfsstone (pronounced n-f-s-stone, the "h" is silent) is used on a
++ NFS client to generate an artificial load with a particular mix of
++ NFS operations. It reports the average response time of the server
++ in milliseconds per call and the load in calls per second. The
++ program adjusts its calling patterns based on the client's kernel
++ NFS statistics and the elapsed time. Load can be generated over a
++ given time or number of NFS calls.
++ .
++ Upstream: SourceForge project "nfs", CVS module nfs-utils.
++ .
++  Homepage: http://nfs.sourceforge.net/
+--- nfs-utils-1.0.10.orig/debian/rules
++++ nfs-utils-1.0.10/debian/rules
+@@ -0,0 +1,65 @@
++#!/usr/bin/make -f
++# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
++
++DEB_BUILD_GNU_TYPE	:= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
++DEB_HOST_GNU_TYPE	:= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
++DEB_HOST_ARCH		:= $(shell dpkg-architecture -qDEB_HOST_ARCH)
++DEB_HOST_ARCH_OS	:= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
++
++# Temporary root
++DEBTMP	:= $(shell pwd)/debian/tmp
++
++build: build-stamp
++build-stamp:
++	dh_testdir
++ifeq ($(DEB_HOST_ARCH),ia64)
++	patch -p1 < debian/bzero.patch
++endif
++	CFLAGS="-g -O2 -Wall" ./configure \
++		--mandir='$${prefix}/share/man' \
++		--enable-secure-statd 
++	$(MAKE)
++	touch build-stamp
++
++clean:
++	dh_testdir
++	dh_testroot
++	rm -f build-stamp
++	rm -rf $(DEBTMP)
++	-$(MAKE) distclean
++	dh_clean
++
++binary-indep: build
++binary-arch: build
++	dh_testdir
++	dh_testroot
++	dh_clean -k
++	dh_installdirs
++	mkdir $(DEBTMP)
++	$(MAKE) DESTDIR='$(DEBTMP)' install
++	dh_install
++	
++	# Fix up the manpages
++	for f in lockd statd showmount; do \
++	  perl -pi -e "s#/usr(/sbin/(rpc\\.)?$$f)#\$$1#g" \
++	    debian/tmp/usr/share/man/man8/$$f.8; \
++	done;
++	
++	dh_installdocs -A
++	dh_installdocs -pnfs-common debian/README.Debian.nfsv4
++	install -m 0755 debian/nfs-common.init debian/nfs-common/etc/init.d/nfs-common
++	install -m 0755 debian/nfs-kernel-server.init debian/nfs-kernel-server/etc/init.d/nfs-kernel-server
++	dh_installman
++	dh_link
++	dh_installchangelogs ChangeLog
++	dh_strip
++	dh_compress
++	dh_fixperms
++	dh_installdeb
++	dh_shlibdeps
++	dh_gencontrol
++	dh_md5sums
++	dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary
+--- nfs-utils-1.0.10.orig/debian/changelog
++++ nfs-utils-1.0.10/debian/changelog
+@@ -0,0 +1,1055 @@
++nfs-utils (1:1.0.10-2) unstable; urgency=low
++
++  * Remove leftover log file from the .diff.gz.
++  * Build package with -O2; it got lost somewhere along the way.
++  * Replace - by \- in man pages (exports, nfsstat, showmount) where
++    appropriate.
++  * Add Required-Stop to the nfs-common and nfs-kernel-server init script
++    blocks to match the Required-Start directives.
++  * Finally remove DH_VERBOSE=1 from debian/rules.
++  * Add a reference to Trond Myklebust's client patch sets in
++    README.Debian.nfsv4.
++  * Handle issues with the nfs entries missing in /etc/services. (Closes:
++    #392276).
++    * Depend on netbase (>= 4.24), to make sure we have a version that has the
++      entries in the first place.
++    * Document that the entries might be missing still in README.Debian.nfsv4
++      (in case the user refused to replace a modified version of
++      /etc/services), and that they might need re-adding.
++    * Make the init script check that the lines are there before starting
++      rpc.gssd, and refer to the README otherwise.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Wed, 11 Oct 2006 15:15:49 +0200
++
++nfs-utils (1:1.0.10-1) unstable; urgency=low
++
++  * New upstream release.
++    * Fixes issues with missing write_oid() function. (Closes: #386117)
++  * Drop versioned dependency on libnfsidmap1, now that libnfsidmap-dev has
++    fixed shlibs. This makes it possible to build against libnfsidmap2.
++    (Closes: #386116)
++  * Update README.Debian.nfsv4.
++    * Remove the part about a patched mount; the NFSv4 patch has been enabled
++      in mount for some time.
++    * Note that the special export structure might go away in the future.
++    * Note that you will need idmapd and possibly gssd/svcgssd enabled.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Wed,  6 Sep 2006 00:30:32 +0200
++
++nfs-utils (1:1.0.9-12) unstable; urgency=low
++
++  * Really remove dependency on sysvinit.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Tue,  5 Sep 2006 13:59:29 +0200
++
++nfs-utils (1:1.0.9-11) unstable; urgency=low
++
++  * In the exports man page, document that there might be sensitive non-root
++    gids as well as uids, for instance gid staff. (Closes: #385377)
++  * Remove unnecessary dependency on sysvinit, in line with the Ubuntu
++    packages.
++  * Change the versioned build-dependency on librpcsecgss-dev (>= 0.14-2)
++    to a build-conflict on 0.14-1, as that is the only version, and it's
++    easier for backports and other distributions without the new version of
++    librpcsecgss.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Thu, 31 Aug 2006 01:53:45 +0200
++
++nfs-utils (1:1.0.9-10) unstable; urgency=low
++
++  * The -n option (short option for --no-tcp) to rpc.mountd was set
++    to take a parameter, even though --no-tcp doesn't take any, the
++    parameter is never used and the help doesn't mention any. Remove
++    the colon after 'n' in the getopt string to fix it.
++  * Add a versioned dependency from nfs-common to libnfsidmap1 (>= 0.16-3)
++    temporarily, to work around #384688.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sat, 26 Aug 2006 03:29:09 +0200
++
++nfs-utils (1:1.0.9-9) unstable; urgency=medium
++
++  * Patched svc_socket.c to define __bzero only on ia64.
++    Closes: #384552.
++ 
++ -- Anibal Monsalve Salazar <anibal@debian.org>  Fri, 25 Aug 2006 11:45:07 +1000
++
++nfs-utils (1:1.0.9-8) unstable; urgency=medium
++
++  * In the init scripts, don't attempt to use pid files; the daemons don't
++    leave them, and --make-pidfile gives wrong pid files since all the daemons
++    fork by themselves. Thus, multiple invocations of "start" could leave
++    multiple daemons lying around, which could cause all sorts of problems.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Thu, 17 Aug 2006 17:24:11 +0200
++
++nfs-utils (1:1.0.9-7) unstable; urgency=low
++
++  * New sourceful upload to force rebuild against librpcsecgss3, to get all
++    architectures in sync and make sure rpc.gssd actually has a proper library
++    to link against.
++  * Build-depend against librpcsecgss-dev (>= 0.14-2), since that's when
++    the package name bump happened.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sat, 12 Aug 2006 19:55:35 +0200
++
++nfs-utils (1:1.0.9-6) unstable; urgency=low
++
++  * Enable idmapd by default if we find an /etc/exports file, as NFSv4 exports
++    need idmapd. (See the init script for the complete reasoning). Also start
++    nfs-common on initial installation of nfs-kernel-server, as we don't want
++    to reboot or restart nfs-common manually just to get idmapd working the
++    first time. (Closes: #381366)
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Mon,  7 Aug 2006 21:27:37 +0200
++
++nfs-utils (1:1.0.9-5) unstable; urgency=low
++
++  * Put rpc.svcgssd back into place; removing it was obviously not what
++    upstream intended to do after all. (Closes: #378686)
++    * Add rpc.svcgssd to nfs-kernel-server.install.
++    * Add the svcgssd(8) man page, as well as the rpc.svcgssd(8) symlink.
++    * Add NEED_SVCGSSD and RPCSECGSSDOPTS options to nfs-kernel-server.default.
++    * Start and rpc.svcgssd in the nfs-kernel-server init script. Currently,
++      no autodetection is done; you'll need to enable it manually. (We can't
++      start it regardless, since it bombs out if there is no adequate nfs/*
++      entry in the keytab.)
++  * Remove obsolete RPCGSSDOPTS option from the nfs-kernel-server init script.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Wed, 19 Jul 2006 14:06:33 +0200
++
++nfs-utils (1:1.0.9-4) unstable; urgency=low
++
++  * Remove versioned dependency on coreutils, as we don't use it indirectly,
++    only via ucf (so the dependency should be there). This makes the package
++    somewhat easier to backport to sarge.
++  * Remove the word "Debian" from our patch against the exports(5) man page,
++    as Debian is not the only distribution using these packages.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sun, 16 Jul 2006 01:59:13 +0200
++
++nfs-utils (1:1.0.9-3) unstable; urgency=low
++
++  * Don't automatically assume that the kernel is modular if /sbin/modprobe
++    is available, check for /proc/modules as well; patch from Nicolas
++    Trecourt. (Closes: #377685)
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Thu, 13 Jul 2006 21:39:08 +0200
++
++nfs-utils (1:1.0.9-2) unstable; urgency=low
++
++  * Merge changes from 1.0.9-1 and 1.0.9pre1-4:
++    * Disable mount.nfs once again; it's not ready for regular use according
++      to upstream.
++    * Revert mount options patch to mount.nfs; it's irrelevant as long as we
++      don't install the binary.
++  * Install the new rpcdebug program.
++  * Remove the {mount,umount}.nfs manpages.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sun,  9 Jul 2006 00:16:54 +0200
++
++nfs-utils (1:1.0.9-1) unstable; urgency=high
++
++  * Updated co-mantainer mail address.
++  * New upstream release.
++    - Added 'mount.nfs' utility which can be used as a mount helper
++      to mount nfs filesystems. It does not yet support 'user' mounts.
++    - Makefile/autoconf tidyups
++    - No compiles with no warnings
++    - deleted debian/* at request of debian maintainer
++    - deleted assorted other unused files
++    - mountd can be run multi-threaded for configurations with many hundreds
++      of clients (mountd -t 20).  Default is single-threaded
++    - Support for selection NFS version to be exported, and protocol to
++      use.  This requires kernel patches that should be in linux 2.6.19.
++    - Use 65534 rather than -2 for default anon.  This makes no difference in many
++      cases, but is important in some.
++    - New utility 'rpcdebug' for controlled kernel 'debug' options for nfs and nfsd.
++    - nfsstat reports NFSv4 operation statistics that should be available in
++      linux 2.6.18.
++    - assorted other fixes
++
++ -- Anibal Monsalve Salazar <anibal@debian.org>  Sat, 08 Jul 2006 14:26:40 +1000
++
++nfs-utils (1:1.0.8+1.0.9pre1-4) unstable; urgency=low
++
++  * Back out having separate mount.nfs; this is in line with upstream, who
++    wants to delay this to 1.0.10. 
++    * No longer install {mount,umount}.{nfs,nfs4} to /sbin.
++    * Revert patch applied in -3.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sat,  8 Jul 2006 16:43:38 +0200
++
++nfs-utils (1:1.0.8+1.0.9pre1-3) unstable; urgency=high
++
++  * Add patch from upstream to check for common mount options like "user"
++    or "noauto". (Closes: #376839)
++  * Remove obsolete copying of config.{sub,guess} in debian/rules.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Fri,  7 Jul 2006 21:12:06 +0200
++
++nfs-utils (1:1.0.8+1.0.9pre1-2) unstable; urgency=low
++
++  * Provide LSB dependency information in the nfs-common and nfs-kernel-server
++    init scripts; replaces the obsolete chkconfig info. (Closes: #376976)
++  * Update the long descriptions.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Thu,  6 Jul 2006 19:37:58 +0200
++
++nfs-utils (1:1.0.8+1.0.9pre1-1) unstable; urgency=low
++
++  * New upstream release.
++    * debian/ directory removed from upstream; no need to repack or do ugly
++      hacks in debian/rules anymore.
++    * Obsoletes most Debian-specific patches, as they are already included
++      upstream. For reference, the patches that are still Debian-specific are:
++      * Use 65534 instead of -2 for anonuid, update manpage accordingly.
++      * Debian-specific information in exports man page.
++      * Don't use -rpath for gssd.
++      * Hardcode default mapping in svcgssd. Adjust patch to use uid/gid 
++        65534 instead of -2, for consistency; also remove double error
++        message. 
++      * Spelling fixes in nfsstat, showmount and statd man pages.
++    * Supports options to bind to specific IPs. (Closes: #246939, #312720)
++    * Include mount.nfs and friends, which will over time take over the job of
++      doing NFS mounting from util-linux.
++  * Complete sync with Ubuntu:
++    * Pull in changes to use LSB display functions in init scripts; adapted
++      to give output more like what was already in Debian, to fix a few bugs,
++      and use plain echo in "status" targets, where using LSB functions makes
++      no sense.
++    * Depend on lsb-base from nfs-common and nfs-kernel-server.
++  * Init script updates:
++    * Document "status" option in the nfs-common init script's help message.
++    * Drop "set -e"; it makes error checking wrt. the LSB functions harder.
++    * Drop obsolete "cd /".
++    * Fix syntax errors in "status" target.
++    * In the "status" target, don't check that the output of pidof matches the
++      pidfiles for gssd and idmapd, as they fork after start and thus get a
++      different pid.
++  * Include gss_clnt_send_err and gss_destroy_creds binaries.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Tue,  4 Jul 2006 18:55:51 +0200
++
++nfs-utils (1:1.0.8-10) unstable; urgency=high
++
++  * Added nfs-common dependency on coreutils (>= 5.93-1). The readlink
++    option -e was introduced since version 5.91 of coreutils. Closes:
++    #376285.
++
++ -- Anibal Monsalve Salazar <anibal@debian.org>  Sun, 02 Jul 2006 09:53:16 +1000
++
++nfs-utils (1:1.0.8-9) unstable; urgency=high
++
++  * svcgssd_proc.c: Temporary patch to do default mapping if we get an
++    error while trying to map a gss principal to the appropriate uid/gid.
++    This currently returns hardcoded values. Closes: #376258.
++
++ -- Anibal Monsalve Salazar <anibal@debian.org>  Sat, 01 Jul 2006 22:30:11 +1000
++
++nfs-utils (1:1.0.8-8) unstable; urgency=low
++
++  * Include yet more ucf md5sums for /etc/default/nfs-common and
++    /etc/default/nfs-kernel-server (/etc/exports was already OK); this time,
++    I've gone through the entire 1.0.7 series programmatically, so hopefully
++    there should finally be none left.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Wed, 14 Jun 2006 10:47:23 +0200
++
++nfs-utils (1:1.0.8-7) unstable; urgency=low
++
++  * For some odd reason (ie. human error) this package has branched into two
++    different versions from 1:1.0.8-5 on. This package rejoins the two branches.
++    The changelog from the other 1:1.0.8-5 (which was probably never accepted
++    except as part of 1:1.0.8-6) is repeated for convenience and automated bug
++    closing below:
++  * Patch nfs-common and nfs-kernel-server init scripts to make them more LSB
++    compatible, fixing issues with heartbeat2; based on patches by Kilian
++    CAVALOTTI. (Closes: #371084, #371085)
++    * Add --oknodo to start-stop-daemon in start targets, to make a second
++      "start" invocation return exit status 0.
++    * Add status targets to the two init scripts, with correct output and
++      exit codes.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Thu, 08 Jun 2006 17:31:28 +0200
++
++nfs-utils (1:1.0.8-5) unstable; urgency=low
++
++  * Make nfs-kernel-server depend on at least version 1.0.8 of nfs-common;
++    lots of stuff will break with an upstream version mismatch.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Wed,  7 Jun 2006 01:13:28 +0200
++
++nfs-utils (1:1.0.8-4) unstable; urgency=low
++
++  * Fix a few spelling errors in the man pages; patches from A Costa.
++    (Closes: #370561, #370562, #370563)
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Tue,  6 Jun 2006 11:59:28 +0200
++
++nfs-utils (1:1.0.8-3) unstable; urgency=low
++
++  * The "what the heck, I uploaded an outdated 1:1.0.8-1 release without
++    the pkg-config fix and some other changes" release.
++  * Tweaks to debian/rules:
++    * Drop --sourcedir=debian/tmp from dh_install so we can also install files
++      directly from the debian/ directory.
++    * Minimize direct uses of install; move all the ucf installation into the
++      debhelper .install files.
++    * Remove some obsolete comments.
++  * Remove empty (modulo #DEBHELPER# tokens) nhfsstone.{postinst,prerm}
++    scripts.
++  * Clear out obsolete (pre-sarge) debconf and rc.d purging from postinst
++    script. (Same as in 1:1.0.7-10, but for nfs-kernel-server too, not just
++    nfs-common.) Minor style cleanup.
++  * Include the md5sum for /etc/default/nfs-kernel-server from 1:1.0.7-13, 
++    to make ucf not complain when upgrading from that version.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sat,  3 Jun 2006 11:00:14 +0200
++
++nfs-utils (1:1.0.8-2) unstable; urgency=low
++
++  * Added missing dependency on pkg-config.
++
++ -- Anibal Monsalve Salazar <anibal@debian.org>  Fri, 02 Jun 2006 19:08:11 +1000
++
++nfs-utils (1:1.0.8-1) unstable; urgency=low
++
++  * New upstream version. (Closes: #364902)
++    * Repack without the debian/ directory; remove ugly hacks in
++      debian/rules that as a result are no longer needed. This also makes
++      the permissions in debian/ right.
++    * Forward-port all relevant patches from the old Debian diff.
++    * rpc.svcgssd no longer exists (it's consolidated into rpc.gssd); remove
++      all references to it in from the debian/ directory.
++    * Build-depend on libgssapi-dev and librpcsecgss-dev, as both as now
++      needed to build nfs-utils.
++    * Give DESTDIR instead of install_prefix to "make install" (install_prefix
++      no longer works).
++  * No longer handle gssapi_mech.conf via ucf; it is now managed by the
++    librpcsecgss package. Remove all references to it in debian/rules.
++  * We no longer need to run autoconf as a part of debian/rules; its results
++    are parts of the diff instead, as per usual packaging practices.
++    * Drop the build-dependency on autoconf2.13 and autotools-dev.
++    * No longer rm various autotools-generated files in the clean target.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Thu,  1 Jun 2006 01:59:39 +0200
++
++nfs-utils (1:1.0.7-19) unstable; urgency=low
++
++  * Include the md5sum for /etc/default/nfs-common from 1:1.0.7-15, to
++    make ucf not complain when upgrading from that version. (Closes: #368982)
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sat, 27 May 2006 12:54:50 +0200
++
++nfs-utils (1:1.0.7-18) unstable; urgency=low
++
++  * Make /etc/exports, /etc/default/nfs-{common,kernel-server},
++    /etc/idmapd.conf and /etc/gssapi_mech.conf be managed by ucf
++    instead of being conffiles. (Closes: #353501)
++    * Make directories /usr/share/nfs-{common,kernel-server}/conffiles,
++      and install files in there at debian/rules time. At the same time,
++      install the files with install instead of cp.
++    * Call ucf at postinst time to get the files in.
++    * Correspondingly, call ucf at purge time to remove them as needed (code
++      snippets lifted from autofs).
++    * Make nfs-common and nfs-kernel-server depend on ucf.
++    * Remove the call to dh_installinit -- since it was already not modifying
++      postinst/postrm/prerm scripts due to being called with -n (I must admit
++      I don't know why, but I assume this has a good reason :-) ) and we now
++      install the init script ourself (because we don't want dh_installinit
++      to install our .default files to /etc), it doesn't do anything useful
++      for us.
++    * Include .md5sum files with MD5 checksums of previous defaults shipped,
++      to ease the transition into ucf; at the moment, only checksums from
++      1:1.0.7-17 (the last non-ucf version) and 1:1.0.6-3.1 (the version
++      shipped in sarge) are included, but I think that should actually cover
++      all the defaults shipped in the period between as well.
++    * Install the .md5sum files in debian/rules.
++  * Remove call to dh_installexamples in debian/rules; we don't install any
++    examples.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Mon, 22 May 2006 01:44:33 +0200
++
++nfs-utils (1:1.0.7-17) unstable; urgency=low
++
++  * The umounting of rpc_pipefs is non-critical and will fail if there are
++    any active NFS mounts during, say, a restart. Thus, send its stderr to
++    /dev/null, and ignore its error status.
++  * Build-Depend on perl, as it's used in debian/rules.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sun, 14 May 2006 18:22:19 +0200
++
++nfs-utils (1:1.0.7-16) unstable; urgency=high
++
++  * urgency=high; fixes an RC bug.
++  * If one upgraded from 1:1.0.7-13, /var/lib/nfs might never be set as owned
++    by statd. Bump the version check, so everything before this version gets
++    chowned properly. (Closes: #367009)
++  * Add more detailed explanations and links to the Debian wiki for
++    /etc/defaults/nfs-{common,kernel-server}. (Closes: #366989, #366990)
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sat, 13 May 2006 16:06:08 +0200
++
++nfs-utils (1:1.0.7-15) unstable; urgency=low
++
++  * /var/lib/nfs/state is not a directory; it shouldn't really be mkdir-ed
++    or chowned (unless it already exists, in which case it should be
++    chowned). However, /var/lib/nfs should be owned by statd, so it can
++    create the file there. (Really Closes: #366654)
++  * umount /var/lib/nfs/rpc_pipefs on /etc/init.d/nfs-common stop; not doing
++    so could prevent purging of nfs-common.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Thu, 11 May 2006 12:42:13 +0200
++
++nfs-utils (1:1.0.7-14) unstable; urgency=high
++
++  * urgency=high; fixes RC bugs (or at least, bugs that should have been RC).
++  * Add /var/lib/nfs/state to nfs-common.dirs, since we chown it in the
++    postinst. This would prevent nfs-common from configuring on initial
++    install. (Closes: #366654)
++  * Grep after "init_nf(sd|<tab>)" instead of "init_nfsd" in kallsyms, to work
++    around some odd symbol mangling problems on some alpha kernels.
++    (Closes: #363932)
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Wed, 10 May 2006 22:00:59 +0200
++
++nfs-utils (1:1.0.7-13) unstable; urgency=low
++
++  * Up the Standards-Version to 3.7.2; no changes needed.
++  * Tidy up after the /home/statd mess if there was a chance the user ever
++    had 1:1.0.7-10 installed; based on patch from Oskar Liljeblad.
++    (Closes: #366182)
++  * Fix the version check for the chown-ing of /var/lib/nfs/sm etc.; I
++    forgot to include the epoch, so only new installs ever got statd running
++    as non-root. (Due to this, the version number to test against is of course
++    also bumped.)
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sat,  6 May 2006 01:50:10 +0200
++
++nfs-utils (1:1.0.7-12) unstable; urgency=low
++
++  * Move the home directory again (by request), this time to /var/lib/nfs.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Wed,  3 May 2006 21:27:18 +0200
++
++nfs-utils (1:1.0.7-11) unstable; urgency=low
++
++  * When creating statd user, create it with a home directory of /nonexistant;
++    it doesn't really require a home directory. (Closes: #365514, #365721)
++  * Fix the signal number for USR1 (actually, use the name instead) in
++    nhfsrun. (Closes: #365657)
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Wed,  3 May 2006 19:51:17 +0200
++
++nfs-utils (1:1.0.7-10) unstable; urgency=low
++
++  * Intermediate 1.0.7 release, waiting for librpcsecgss to be uploaded into
++    Debian so we can upload 1.0.8.
++  * Clarify what the NEED_* options in /etc/default/nfs-common mean.
++    (Closes: #364625)
++  * Make /var/lib/nfs/{sm,sm.bak,state,rpc_pipefs} be owned by a new "statd"
++    user (created in postinst), causing rpc.statd to be run as that user
++    instead of root. (Closes: #240689)
++    * Make nfs-common depend on adduser.
++  * Clear out obsolete (pre-sarge) debconf and rc.d purging from postinst
++    script.
++  * Use invoke-rc.d in nfs-common and nfs-kernel-server prerms instead of
++    calling the /etc/init.d script directly; fixes two lintian warnings.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Thu, 27 Apr 2006 00:32:27 +0200
++
++nfs-utils (1:1.0.7-9) unstable; urgency=low
++
++  * When checking for nfsd support in the kernel, check for init_nfsd
++    (which is a function) rather than nfsd_version (which is a variable);
++    kernels compiled without CONFIG_KALLSYMS_ALL=y have only the former.
++    (Closes: #361026)
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Thu,  6 Apr 2006 13:31:48 +0200
++
++nfs-utils (1:1.0.7-8) unstable; urgency=low
++
++  * Don't complain about missing sync/async for a read-only export.
++    (Closes: #265409)
++  * Implement --state-directory-path for rpc.mountd; most code borrowed
++    from rpc.statd. (Closes: #352387)
++    * Update mountd.man accordingly.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Wed,  5 Apr 2006 22:54:09 +0200
++
++nfs-utils (1:1.0.7-7) unstable; urgency=high
++
++  * urgency=high, fixes an RC bug.
++  * Let the init script test for kernel support before trying to start
++    nfs-kernel-server. (Closes: #360420)
++  * Include help on how to activate /etc/exports changes; text from
++    Martin Pool. (Closes: #239286)
++  * Document sync option in exports man page. (Closes: #297135)
++  * Give an example in /etc/exports. (Closes: #345460)
++  * Write a mini-HOWTO on how to get NFSv4 up and running. (Closes: #294468)
++    * Install it in debian/rules.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Wed,  5 Apr 2006 18:15:20 +0200
++
++nfs-utils (1:1.0.7-6) unstable; urgency=low
++
++  * Let the man-page fixup script in debian/rules look for the man pages in
++    the right place.
++  * Modprobe nfs4 along with nfs in the nfs-common init script. Also modprobe
++    rpcsec_gss_krb5 before we start gssd.
++  * Implement autodetection for NEED_IDMAPD and NEED_GSSD, based on /etc/fstab.
++  * Add a note to the top of /etc/defaults/nfs-common that the default is to
++    autodetect.
++  * Move /var/lib/nfs/rpc_pipefs from nfs-kernel-server.dirs to
++    nfs-common.dirs; it's needed by the client as well.
++  * Let dh_install install from debian/tmp/ instead of debian/tmp; it fixes
++    minor aesthetic issues in the build log.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sat,  1 Apr 2006 02:46:53 +0200
++
++nfs-utils (1:1.0.7-5) unstable; urgency=low
++
++  * Non-non-maintainer-upload this time, it seems. :-)
++  * Don't let the init script fail if there wasn't any lockd threads to kill;
++    this could cause the package to fail configuration.
++  * Move to debhelper compatibility level 5.
++    * Use dh_install instead of dh_movefiles (actually a combination was used
++      earlier). Move stuff from *.files accordingly into *.install.
++    * mkdir debian/tmp manually before doing make install, and remove it
++      in the clean target.
++    * Use straight cp -a instead of dh_install for the files that _don't_
++      come from debian/tmp/ (the two /etc files).
++    * Fix the "fixups" part in debian/rules to reflect the behaviour of
++      dh_install compared to dh_movefiles (ie. don't rm lots of stuff in
++      debian/tmp, etc.).
++    * Make a debian/nfs-kernel-server.install listing explicitly the files
++      we want in that package; with dh_movefiles everything from make install
++      was implicitly put there. This has the side effect that the man pages
++      for rpc.gssd and idmap.conf are no longer put in nfs-kernel-server, but
++      in nfs-common, where they should be.
++    * Use dh_installman to install the manpages, to make sure they're in the
++      right place (and move the manpage lists from *.files to *.manpages
++      accordingly). List the rpc.* variants of the manpages in *.links,
++      instead of assuming dh_compress (!) will make them for us. Bonus points
++      for then not including the nonsensical rpc.* variants, such as
++      rpc.idmapd.conf(5).
++    * Don't mv lockd, statd and showmount manually from /usr/sbin to /sbin;
++      let the .install file do it for us.
++    * Remove *.conffiles; debhelper now sets everything in /etc as conffiles
++      automatically.
++    * Extend the debian/rules rm hack to the files we removed in this version
++      (ick).
++    * In debian/control, make nfs-common replace nfs-kernel-server
++      (<< 1:1.0.7-5), since the idmapd manpage switched packages.
++  * Remove old cruft in debian/rules file:
++    * Remove non-used dh_* programs.
++    * Remove obsolete source and diff targets.
++    * Remove SETGCC hack.
++  * Don't set rpath for rpc.gssd and rpc.svcgssd (fixes lintian warnings).
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Tue, 28 Mar 2006 02:57:23 +0200
++
++nfs-utils (1:1.0.7-4) unstable; urgency=low
++
++  * Ack NMU. Thanks Steinar H. Gunderson.
++    Closes: #239230, #245449, #246904, #247473, #248300, #252081,
++    #287026, #294928, #303497, #310940, #323460, #326663, #332047,
++    #337836, #338292, #359024.
++  * Added Steinar H. Gunderson and Daniel Baumann as uploaders.
++  * Added homepage to package descriptions.
++  * Set Standards-Version to 3.6.2.
++  * Fixed outdated-autotools-helper-file.
++
++ -- Anibal Monsalve Salazar <anibal@debian.org>  Mon, 27 Mar 2006 13:22:51 +1100
++
++nfs-utils (1:1.0.7-3.1) unstable; urgency=low
++
++  * Non-maintainer upload.
++  * Set u+w on all files in debian/, so dch etc. actually works.
++  * Add /var/lib/nfs/v4recovery to nfs-kernel-server.dirs. (Closes: #337836).
++  * Add /var/lib/nfs/rpc_pipefs to nfs-kernel-server.dirs. (Closes: #310940).
++  * Fix problems with exportfs -o when there are multiple entries of the same
++    type for the same path that match a given client; patch from Fumihiko
++    Kakuma. (Closes: #245449)
++  * Start nfs-kernel-server even if /etc/exports is empty, as long as it
++    exists; patch from Alexis Huxley. (Closes: #246904) This patch also
++    happens to fix and thus Closes: #338292.
++  * When stopping daemons, do it even if they do not run as root; based on a
++    patch from Andreas Schmidt. (Closes: #247473)
++  * SIGKILL kernel lockd thread on stop, to make the kernel release all its
++    locks; patch from Jeffrey Layton. (Closes: #252081)
++  * Flush the kernel export table on stop; patch from Jeffrey Layton
++    (Closes: #248300).
++  * Change default root-squashed uid from -2 to 65534; the former changes
++    depending of the size of uid_t, and we want it to match the user "nobody"
++    (which has uid 65534). (Closes: #323460)
++  * Remove dependency on debconf, as it's no longer used. Also, don't run
++    dh_installdebconf anymore. (Closes: #332047)
++  * Check for /sbin/modprobe before using it, for non-modular kernels;
++    patch from Vincent Crvt. (Closes: #294928)
++  * Replaced the rather emtpy nhfsstone long description by the one from
++    its manpage. (Closes: #303497)
++  * Don't ship upstream README anymore, as it's not relevant for our users.
++    (Closes: #326663)
++  * Add the ability to start nfs-kernel-server niced; patch from Kimmo
++    Tervinen. (Closes: #287026)
++  * Escape '#' when writing export entries, so they are not mistakenly parsed
++    as comments when re-reading them. (Closes: #239230)
++  * Also Closes: #359024 automatically by recompiling package.
++
++ -- Steinar H. Gunderson <sesse@debian.org>  Sun, 26 Mar 2006 14:57:50 +0200
++
++nfs-utils (1:1.0.7-3) unstable; urgency=medium
++
++  * New maintainer, closes: #303559.
++
++ -- Anibal Monsalve Salazar <anibal@debian.org>  Fri, 08 Apr 2005 11:25:17 +1000
++
++nfs-utils (1:1.0.7-2) unstable; urgency=low
++
++  * Orphaning package.
++  * Upstream CVS sync:
++    > Support "no_acl" export option, for the few specially patched
++      kernels that understand it.  (Closes: #253824)
++    > Fix FTBTS on amd64.  (Closes: #297729)
++    > Update config.{guess,sub}.  (Closes: #300552)
++
++ -- Chip Salzenberg <chip@debian.org>  Thu,  7 Apr 2005 09:07:24 -0400
++
++nfs-utils (1:1.0.7-1) unstable; urgency=medium
++
++  * Acknowledge NMU; thanks to joeyh.  (closes: #287053)
++  * New upstream version:
++    > Add support for NFSv4.
++    > Ignore SIGPIPE, fixing a remote DOS.  Note that the previous
++      NMU already fixed this bug.  (CAN-2004-1014)
++    > At long last, fix "erroneous SM_UNMON" warnings.  (closes: #165744)
++
++ -- Chip Salzenberg <chip@debian.org>  Tue, 11 Jan 2005 23:31:05 -0500
++
++nfs-utils (1:1.0.6-3) unstable; urgency=medium
++
++  * Remove obsolete debconf-related files in debian/rules, because source
++    diffs don't implement removals.  (closes: #239331)
++
++ -- Chip Salzenberg <chip@debian.org>  Wed, 24 Mar 2004 18:09:21 -0500
++
++nfs-utils (1:1.0.6-2) unstable; urgency=medium
++
++  * Upstream CVS sync.
++  * Urgency "medium" to get debconf fix into testing.
++  * Remove debconf warning notes in favor of nfs-kernel-server.NEWS.
++    (closes: #228365)
++  * Make /etc/exports a conffile.  (closes: #224557)
++  * Clean up /var/lib/nfs in postrm.
++  * Test kernel version in init script; all kernels from 2.4 forward
++    have a lockd thread, and don't need rpc.lockd.  Probe older kernels
++    by checking for lockd-related symbols.  When in doubt, go ahead and
++    run rpc.lockd; if it's not needed, it exits.  (closes: #205867)
++  * Don't bother removing nfs-server's init links; it's long dead.
++
++ -- Chip Salzenberg <chip@debian.org>  Thu, 18 Mar 2004 17:06:00 -0500
++
++nfs-utils (1:1.0.6-1) unstable; urgency=low
++
++  * New upstream version:
++    > Workaround glibc bug with large fd rlimits.
++  * Japanese debconf translation from Kenshi Muto <kmuto@debian.org>.
++    (closes: #209370)
++
++ -- Chip Salzenberg <chip@debian.org>  Fri, 12 Sep 2003 12:47:58 -0400
++
++nfs-utils (1:1.0.5-3) unstable; urgency=high
++
++  * Upstream CVS sync:
++    > Fix crash on invalid reverse DNS.  (closes: #209318)
++
++ -- Chip Salzenberg <chip@debian.org>  Tue,  9 Sep 2003 14:02:46 -0400
++
++nfs-utils (1:1.0.5-2) unstable; urgency=low
++
++  * Upstream CVS sync:
++    > Improve support for 2.6.0 /proc interface.
++  * Use po-debconf.  Patch from Andre Luis Lopes <andrelop@ig.com.br>,
++    with improved French from Christian Perrier <bubulle@debian.org>.
++    (closes: #187866, #202196)
++
++ -- Chip Salzenberg <chip@debian.org>  Wed, 20 Aug 2003 17:03:44 -0400
++
++nfs-utils (1:1.0.5-1) unstable; urgency=high
++
++  * New upstream version:
++    > Don't use freed memory.  (closes: #201311, #201598, #201873)
++    > Fix mountd -o arg.  (closes: #197355)
++  
++ -- Chip Salzenberg <chip@debian.org>  Thu, 24 Jul 2003 15:40:12 -0400
++
++nfs-utils (1:1.0.3-2) unstable; urgency=high
++
++  * Upstream CVS sync:
++    > Fix one-byte buffer overflow in logging code.
++
++ -- Chip Salzenberg <chip@debian.org>  Tue, 10 Jun 2003 11:11:56 -0400
++
++nfs-utils (1:1.0.3-1) unstable; urgency=low
++
++  * New upstream version:
++    > Support reading and writing export cache in /proc/rpc/*/channel,
++      as current syscall interface may not survive into 2.6 on all archs.
++
++ -- Chip Salzenberg <chip@debian.org>  Wed, 26 Mar 2003 11:38:52 -0500
++
++nfs-utils (1:1.0.2-2) unstable; urgency=medium
++
++  * Upstream CVS sync:
++    > Fix one-byte buffer overflow with no apparent security implications.
++      (It's a readlink on a path that should be writable only to root.)
++  * Make nfs-{common,kernel-server} depend on sysvinit 2.80-1 for invoke-rc.d.
++  * Make nfs-common depend on debconf (long overdue).
++  * Fix package description to name nfs-user-server as an alternative, rather
++    than "nfs-server" (which no longer exists).
++
++ -- Chip Salzenberg <chip@debian.org>  Wed, 12 Feb 2003 21:27:24 -0500
++
++nfs-utils (1:1.0.2-1) unstable; urgency=high
++
++  * New upstream version:
++    > Allow program stdin to be a non-INET socket.  (closes: #142557)
++  * Start nfs-common after nfs-kernel-server so that the server is running
++    when statd restarts; without this change, a rebooting server may make
++    clients lose mounts.  (This postinst removes bad rc.d links from old
++    packages.)  From Philippe Troin <phil@fifi.org>.  (closes: #160800)
++  * Make init scripts exit with non-zero status when daemons don't start.
++  * Add titles to templates where I forgot them.  (closes: #158489)
++  * Add /etc/default/{nfs-common,nfs-kernel-server} so setting random
++    parameters doesn't require editing init scripts.  (closes: #131539)
++  * Split templates into separate files, and add French templates.
++    (closes: #134630)
++  * Use invoke-rc.d to avoid premature daemon starts.  (closes: 158574)
++  * Change priority of nfs-kernel-server to 'optional'.
++
++ -- Chip Salzenberg <chip@debian.org>  Sun, 15 Sep 2002 22:00:27 -0400
++
++nfs-utils (1:1.0.1-1) unstable; urgency=low
++
++  * New upstream version:
++    > BIG CHANGE: Exports default to "sync", that is, synchronous writes.
++      This is safer but MUCH SLOWER than the old default of "async".
++      All exports should be marked as either "sync" or "async" to avoid a
++      warning from exportfs.
++  * Patches from CVS through 2002-08-26.
++  * Let init script start statd on a specific port.  (closes: #144344)
++  * Fix typo in debconf message about tcpwrappers.  (closes: #128709)
++  * Fix typo in rpc.nfsd(8).  (closes: #152556)
++  * Add Russian templates.  (closes: #136599, #136932)
++
++ -- Chip Salzenberg <chip@debian.org>  Mon, 26 Aug 2002 12:17:57 -0400
++
++nfs-utils (1:1.0-2) unstable; urgency=low
++
++  * Fail an export if its mapping option is unsupported.  (closes: #85678)
++
++ -- Chip Salzenberg <chip@debian.org>  Wed,  2 Jan 2002 15:52:37 -0800
++
++nfs-utils (1:1.0-1) unstable; urgency=medium
++
++  * New upstream version.  (Version number is only change.)
++  * Urgency "medium" so woody users see the pretty new version number.
++    (Yeah, it's shallow... but, doggone it, this is mature code.)
++
++ -- Chip Salzenberg <chip@debian.org>  Wed, 26 Dec 2001 20:21:15 -0800
++
++nfs-utils (1:0.3.3-6) unstable; urgency=high
++
++  * Upstream fixes:
++    > Ignore case when comparing host names.
++    > Use all addresses of multi-homed hosts in export processing.
++    > When reading /proc/fs/nfs/exports, assume noasync and nowgather;
++      older kernels did so, while newer kernels report them explicitly.
++    > Remove man page refs to "hosts_allow(5)".  (closes: #122540)
++    > In exports.5: Emphasize the need for options to immediately follow
++      client names.  Explain that wildcards don't usually work on addresses,
++      but may work when reverse DNS fails. (closes: #118040, #116039)
++
++ -- Chip Salzenberg <chip@debian.org>  Wed, 26 Dec 2001 18:54:35 -0800
++
++nfs-utils (1:0.3.3-5) unstable; urgency=high
++
++  * Keep NFS fully operational during upgrade.  (closes: #76544)
++  * When calling update-rc.d, send stdout to /dev/null, but not stderr.
++
++ -- Chip Salzenberg <chip@debian.org>  Thu, 13 Dec 2001 18:50:47 -0800
++
++nfs-utils (1:0.3.3-4) unstable; urgency=high
++
++  * High priority due to changes in previous version.
++  * Upstream fixes:
++    > Close filehandles in nfsd before spawing kernel threads.  This is a
++      workaround for a kernel bug.  (closes: #121213)
++    > Document that both host names *and* addresses are checked with tcpwrappers.
++      This is a doc update, not a change.  (closes: #108493)
++    > Don't assume that strings starting with digits are IP addresses;
++      host names are allowed to start with digits.  (closes: #68977)
++  * German template for nfs-common.  (closes: #120939)
++
++ -- Chip Salzenberg <chip@debian.org>  Mon, 26 Nov 2001 11:50:43 -0800
++
++nfs-utils (1:0.3.3-3) unstable; urgency=low
++
++  * Upstream fixes:
++    > Accept obsolete mount option "crossmnt" for parsing old xtab files
++      after upgrade.  (closes: #78801)
++    > Put filenames into more error messages.
++  * Stop debconf before starting nfsd to avoid a hang.  Kernel threads
++    like nfsd aren't supposed to inherit open files from the programs that
++    start them, but nfsd does.  See debconf tutorial.  (closes: #115817)
++  * Rebuild with current glibc.  (closes: #119545)
++  * Carefully account for ownership of /var/lib/nfs/*.  (closes: #117258)
++  * Warn about statd using tcpwrappers.  (closes: #92666)
++  * Only warn about mountd's tcpwrappers name change if the old name
++    appears in the tcpwrapper config files.
++  * German template for nfs-kernel-server.  (closes: #117196)
++
++ -- Chip Salzenberg <chip@debian.org>  Wed, 21 Nov 2001 18:30:36 -0800
++
++nfs-utils (1:0.3.3-2) unstable; urgency=high
++
++  * The "Test It Before Release, Stupid" release.
++  * Repair total failure of rpc.mountd.  (closes: #115095)
++
++ -- Chip Salzenberg <chip@debian.org>  Thu, 11 Oct 2001 13:03:45 -0700
++
++nfs-utils (1:0.3.3-1) unstable; urgency=medium
++
++  * The "Life Goes On" release.
++  * New upstream version.  (closes: #113042)
++    > Avoid DNS when unexporting... important for shutdown.
++    > Recognize double-quote and \octal quoting in pathnames.
++    > Print pathnames with \octal quoting as necessary.
++  * Depend on a version of glibc that restores rpcinfo to its rightful
++    place.  (closes: #102400)
++  * Fix pathname in mountd doc.  (closes: #112088)
++  * debian/nfs-kernel-server.postinst: Remove rc.d symlinks to old
++    nfs-server init script, which doesn't realize when it's been removed.
++    (closes: #97099)
++  * Warn users about "rpc.mountd" -> "mountd" in /etc/hosts.{allow,deny}.
++    This marks my first use of debconf!  W00T!  (closes: #92671)
++
++ -- Chip Salzenberg <chip@debian.org>  Mon,  8 Oct 2001 15:04:08 -0700
++
++nfs-utils (1:0.3.2-2) unstable; urgency=low
++
++  * Rebuild with new libc.  (closes: #97252, #97455, #99829, #100317)
++  * Fix typo in nfs-kernel-server init script.  (closes: #100380)
++  * Start all daemons in root directory.
++  
++ -- Chip Salzenberg <chip@debian.org>  Fri, 15 Jun 2001 15:57:18 -0700
++
++nfs-utils (1:0.3.2-1) unstable; urgency=low
++
++  * Upstream changes to statd:
++    > Recognize long options.
++    > On startup, close std{in,out,err}.
++    > Updated man page.
++  * Let debhelper handle doc symlinks.  (closes: #74094)
++  * Rename upstream changelog, per policy.
++  * Get rid of suidregister call.
++
++ -- Chip Salzenberg <chip@debian.org>  Sun,  1 Apr 2001 19:21:26 -0700
++
++nfs-utils (1:0.3.1-1) unstable; urgency=medium
++
++  * New upstream version.
++  * Incorporate (but not all) Bug Party changes by David LaBissoniere
++    <labiss@usit.net>:
++    > Mention upstream source and license in copyright file.  (closes: #79997)
++    > Add Build-Depends for debhelper and libwrap0-dev.  (closes: #84131)
++
++ -- Chip Salzenberg <chip@debian.org>  Mon, 26 Feb 2001 16:51:15 -0800
++
++nfs-utils (1:0.3-2) unstable; urgency=low
++
++  * Upstream:
++    > Don't modify socket buffer sizes.
++
++ -- Chip Salzenberg <chip@debian.org>  Mon, 12 Feb 2001 20:46:22 -0800
++
++nfs-utils (1:0.3-1) unstable; urgency=low
++
++  * New upstream.
++
++ -- Chip Salzenberg <chip@debian.org>  Sun, 28 Jan 2001 18:13:59 -0800
++
++nfs-utils (1:0.2.1-5) unstable; urgency=low
++
++  * Fix statd callback protection ("--secure-statd") to
++     1. work with current kernels as far as possible, and
++     2. allow for Trond's recent NFS patches, which change the
++        static callback RPC procedure.
++  * Store return values of getc and getopt in int variables:
++    they can return EOF, which requires an int. (From NMU)
++  
++ -- Chip Salzenberg <chip@debian.org>  Sat, 20 Jan 2001 20:03:07 -0800
++
++nfs-utils (1:0.2.1-4) unstable; urgency=medium
++
++  * Warn about common errors in /etc/exports.  (closes: #66421)
++  * Fix line numbers in messages about /etc/exports.  (closes: #59734)
++  * Let nhfsstone replace files from old server packages.  (closes: #59261)
++
++ -- Chip Salzenberg <chip@valinux.com>  Sun,  3 Dec 2000 14:41:13 -0800
++
++nfs-utils (1:0.2.1-3) unstable; urgency=low
++
++  * Add portmap dependency. (closes: #75639)
++  * Upstream:
++    > mountd: New option "-n/--no-tcp".
++
++ -- Chip Salzenberg <chip@valinux.com>  Sun, 19 Nov 2000 09:22:19 -0800
++
++nfs-utils (1:0.2.1-2) unstable; urgency=high
++
++  * On shutdown, kill user-mode lockd, not kernel-mode lockd thread.
++  * Big upstream fix:
++     > statd: Repair memory leaks and corruptions.
++  * Other upstream patches:
++     > exportfs: Support CIDR netmasks (e.g. "1.2.3.4/24").
++     > statd: Fix callbacks to local lockd; Be paranoid about IP addresses
++       when doing callbacks to local lockd; Add debugging features; Make
++       logs more readable.
++
++ -- Chip Salzenberg <chip@valinux.com>  Thu,  2 Nov 2000 18:10:36 -0800
++
++nfs-utils (1:0.2.1-1) unstable; urgency=low
++
++  * New upstream w/minor fixes.
++
++ -- Chip Salzenberg <chip@valinux.com>  Mon,  2 Oct 2000 17:32:00 -0700
++
++nfs-utils (1:0.2-1) unstable; urgency=low
++
++  * New upstream version number.
++  * Minor fixes.
++
++ -- Chip Salzenberg <chip@valinux.com>  Tue,  5 Sep 2000 11:30:00 -0700
++
++nfs-utils (1:0.1.9.1-2) unstable; urgency=medium
++
++  * Upstream addition of tcpwrapper support in statd and mountd.
++  * Upstream fixes from H.J. Lu and Neil Brown.
++  * Run exportfs first during startup (again).
++
++ -- Chip Salzenberg <chip@valinux.com>  Sat, 26 Aug 2000 17:30:00 -0700
++
++nfs-utils (1:0.1.9.1-1) frozen unstable; urgency=high
++
++  * New upstream version, fixes more logging errors.
++  * Fix Debian distribution list.
++
++ -- Chip Salzenberg <chip@valinux.com>  Wed,  5 Jul 2000 15:00:00 -0800
++
++nfs-utils (1:0.1.8.2-2) unstable; urgency=high
++
++  * Fix serious logging error in statd.
++
++ -- Chip Salzenberg <chip@valinux.com>  Wed, 28 Jun 2000 23:00:00 -0800
++
++nfs-utils (1:0.1.8.2-1) unstable; urgency=low
++
++  * New upstream version.
++  * During startup, start daemons before running exportfs.
++
++ -- Chip Salzenberg <chip@valinux.com>  Wed, 28 Jun 2000 15:00:00 -0800
++
++nfs-utils (1:0.1.8.1-1) unstable; urgency=medium
++
++  * New upstream version.
++  * Chdir to / before spawning daemons. (closes: #60837, #64857)
++  * Follow policy for init messages. (closes: #59184, #65519)
++
++ -- Chip Salzenberg <chip@valinux.com>  Mon, 12 Jun 2000 22:30:00 -0800
++
++nfs-utils (1:0.1.8-1) unstable; urgency=low
++
++  * New upstream version.
++
++ -- Chip Salzenberg <chip@valinux.com>  Sun,  4 Jun 2000 13:30:00 -0800
++
++nfs-utils (1:0.1.7.1-1) unstable; urgency=medium
++
++  * New upstream version.
++  * Use fewer sockets in mountd by sharing RPC transports,
++    even when it is run without '-p'.
++
++ -- Chip Salzenberg <chip@valinux.com>  Sat, 29 Apr 2000 20:45:00 -0800
++
++nfs-utils (1:0.1.6-3) frozen unstable; urgency=medium
++
++  * Fix kernel server shutdown order: mountd, nfsd, exportfs.
++  * Upstream:  Fix 'mountd -p'.  Use fewer UDP sockets
++    by sharing RPC transports.  Display more mount flags.
++
++ -- Chip Salzenberg <chip@valinux.com>  Mon, 13 Mar 2000 14:45:00 -0800
++
++nfs-utils (1:0.1.6-2) frozen unstable; urgency=medium
++
++  * Split off nhfsstone into its own package, since it has
++    helper scripts and most people won't use it.
++  * Also include nhfsstone's helpers: nhfs{run,nums,graph}.
++  * Install man page for nhfsstone. (closes: #55194)
++  * Always run lockd on non-module kernels. (closes: #57841)
++  * Make init scripts config files. (closes: #55193)
++  * Handle "force-reload" in nfs-common's init script. (ditto)
++  * Fix line numbers in error messages. (closes: #57717)
++  * Write man page for rpc.lockd. (closes: #55192)
++  * Fix typo in exports(5) man page. (closes: #46933)
++  * Add /usr/doc -> /usr/share doc links. (closes: #54983)
++  * Add copyright file. (closes: #55195)
++  * Refresh sources from upstream.
++  * Refine dependencies.
++
++ -- Chip Salzenberg <chip@valinux.com>  Sat, 26 Feb 2000 02:00:00 -0800
++
++nfs-utils (1:0.1.6-1) unstable; urgency=high
++
++  * New upstream version.
++  * Make nfs-kernel-server conflict with and replace knfs.
++
++ -- Chip Salzenberg <chip@valinux.com>  Wed, 12 Jan 2000 19:30:00 -0800
++
++nfs-utils (1:0.1.5-2) unstable; urgency=high
++
++  * Rename packages to "nfs-common" and "nfs-kernel-server".
++    (Previous package names were only temporary anyway.)
++  * Prepend "1:" to version, to override existing nfs-common.
++  * Remove rpc.rquotad -- it's already packaged in "quota".
++
++ -- Chip Salzenberg <chip@valinux.com>  Wed, 29 Dec 1999 17:00:00 -0800
++
++nfs-utils (0.1.5-1) unstable; urgency=medium
++
++  * New upstream version.
++  * Allow for some kernels not requiring rpc.lockd.
++
++ -- Chip Salzenberg <chip@valinux.com>  Sun, 19 Dec 1999 11:40:00 -0800
++
++nfs-utils (0.1.4-1) unstable; urgency=low
++
++  * New upstream version.
++  * Don't disable NFSv3 by default.
++
++ -- Chip Salzenberg <chip@valinux.com>  Fri, 10 Dec 1999 23:00:00 -0800
++
++nfs-utils (0.1.3-2) unstable; urgency=low
++
++  * Conflict with standard NFS packages.
++
++ -- Chip Salzenberg <chip@valinux.com>  Fri,  3 Dec 1999 22:00:00 -0800
++
++nfs-utils (0.1.3-1) unstable; urgency=low
++
++  * New upstream version.
++  * Start following CVS tree at SourceForge.
++
++ -- Chip Salzenberg <chip@valinux.com>  Fri,  3 Dec 1999 20:00:00 -0800
++
+--- nfs-utils-1.0.10.orig/debian/idmapd.conf
++++ nfs-utils-1.0.10/debian/idmapd.conf
+@@ -0,0 +1,10 @@
++[General]
++
++Verbosity = 0
++Pipefs-Directory = /var/lib/nfs/rpc_pipefs
++Domain = localdomain
++
++[Mapping]
++
++Nobody-User = nobody
++Nobody-Group = nogroup
+--- nfs-utils-1.0.10.orig/debian/nfs-common.init
++++ nfs-utils-1.0.10/debian/nfs-common.init
+@@ -0,0 +1,298 @@
++#!/bin/sh
++
++### BEGIN INIT INFO
++# Provides:          nfs-common
++# Required-Start:    $time
++# Required-Stop:     $time
++# Default-Start:     2 3 4 5
++# Default-Stop:      0 1 6
++# Short-Description: NFS support files common to client and server
++# Description:       NFS is a popular protocol for file sharing across
++#		     TCP/IP networks. This service provides various
++#                    support functions for NFS mounts.
++### END INIT INFO
++
++# What is this?
++DESC="NFS common utilities"
++
++# Read config
++DEFAULTFILE=/etc/default/nfs-common
++PREFIX=
++NEED_LOCKD=
++NEED_IDMAPD=
++NEED_GSSD=
++PIPEFS_MOUNTPOINT=/var/lib/nfs/rpc_pipefs
++RPCGSSDOPTS=
++if [ -f $DEFAULTFILE ]; then
++    . $DEFAULTFILE
++fi
++
++. /lib/lsb/init-functions
++
++# Determine whether lockd daemon is required.
++case "$NEED_LOCKD" in
++yes|no)	;;
++*)  case `uname -r` in
++    '' | [01].* | 2.[0123].* )
++	# Older kernels may or may not need a lockd daemon.
++	# We must assume they do, unless we can prove otherwise.
++	# (A false positive here results only in a harmless message.)
++	NEED_LOCKD=yes
++	if test -f /proc/ksyms
++	then
++	    grep -q lockdctl /proc/ksyms || NEED_LOCKD=no
++	fi
++	;;
++
++    *)  # Modern kernels (>= 2.4) start a lockd thread automatically.
++	NEED_LOCKD=no
++	;;
++    esac
++    ;;
++esac
++
++#
++# Parse the fstab file, and determine whether we need idmapd and gssd. (The
++# /etc/defaults settings, if any, will override our autodetection.) This code
++# is partially adapted from the mountnfs.sh script in the sysvinit package.
++#
++AUTO_NEED_IDMAPD=no
++AUTO_NEED_GSSD=no
++
++exec 9<&0 </etc/fstab
++
++while read DEV MTPT FSTYPE OPTS REST
++do
++    if [ "$FSTYPE" = "nfs4" ]; then
++        AUTO_NEED_IDMAPD=yes
++    fi
++    case "$OPTS" in
++        sec=krb5|*,sec=krb5|sec=krb5,*|*,sec=krb5i,*|sec=krb5i|*,sec=krb5i|sec=krb5i,*|*,sec=krb5i,*|sec=krb5p|*,sec=krb5p|sec=krb5p,*|*,sec=krb5p,*)
++	    AUTO_NEED_GSSD=yes
++	;;
++    esac
++done
++
++exec 0<&9 9<&-
++
++#
++# We also need idmapd if we run an NFSv4 server. It's fairly difficult
++# to autodetect whether there are NFSv4 exports or not, and idmapd is not a
++# particularily heavy daemon, so we auto-enable it if we find an /etc/exports
++# file. This does not mean that there are NFSv4 or other mounts active (or
++# even that nfs-kernel-server is installed), but it matches what the "start"
++# condition in nfs-kernel-server's init script does, which has a value in
++# itself.
++#
++if [ -f /etc/exports ]; then
++    AUTO_NEED_IDMAPD=yes
++fi
++
++
++case "$NEED_IDMAPD" in
++    yes|no)	
++        ;;
++    *)
++        NEED_IDMAPD=$AUTO_NEED_IDMAPD
++	;;
++esac
++
++case "$NEED_GSSD" in
++    yes|no)	
++        ;;
++    *)
++        NEED_GSSD=$AUTO_NEED_GSSD
++	;;
++esac
++
++# Exit if required binaries are missing.
++[ -x $PREFIX/sbin/rpc.statd ] || exit 0
++[ -x $PREFIX/sbin/rpc.lockd ] || [ "$NEED_LOCKD"  = no ] || exit 0
++[ -x /usr/sbin/rpc.idmapd   ] || [ "$NEED_IDMAPD" = no ] || exit 0
++[ -x /usr/sbin/rpc.gssd     ] || [ "$NEED_GSSD"   = no ] || exit 0
++
++do_modprobe() {
++    modprobe -q "$1" || true
++}
++
++do_mount() {
++    if ! grep -E -qs "$1\$" /proc/filesystems
++    then
++	return 1
++    fi
++    if ! mountpoint -q "$2"
++    then
++	mount -t "$1" "$1" "$2"
++	return
++    fi
++    return 0
++}
++
++do_umount() {
++    if mountpoint -q "$1"
++    then
++	umount "$1"
++    fi
++    return 0
++}
++
++# See how we were called.
++case "$1" in
++  start)
++	log_daemon_msg "Starting $DESC"
++
++	log_progress_msg "statd"
++	start-stop-daemon --start --oknodo --quiet \
++	    --exec $PREFIX/sbin/rpc.statd -- $STATDOPTS
++	if [ $? != 0 ]; then
++	    log_end_msg $?
++	    exit $?
++	fi
++
++	if [ "$NEED_LOCKD" = yes ]
++	then
++	    log_progress_msg "lockd"
++	    start-stop-daemon --start --oknodo --quiet \
++		--exec $PREFIX/sbin/rpc.lockd
++	    if [ $? != 0 ]; then
++	        log_end_msg $?
++	        exit $?
++            fi
++	fi
++	if [ "$NEED_IDMAPD" = yes ] || [ "$NEED_GSSD" = yes ]
++	then
++	    do_modprobe nfs
++	    do_modprobe nfs4
++	    if do_mount rpc_pipefs $PIPEFS_MOUNTPOINT
++	    then
++	    	if [ "$NEED_IDMAPD" = yes ]
++		then
++	            log_progress_msg "idmapd"
++		    start-stop-daemon --start --oknodo --quiet \
++			    --exec /usr/sbin/rpc.idmapd
++	            if [ $? != 0 ]; then
++        	        log_end_msg $?
++        	        exit $?
++                    fi
++		fi
++		if [ "$NEED_GSSD" = yes ]
++		then
++		    do_modprobe rpcsec_gss_krb5
++	            log_progress_msg "gssd"
++
++	            # we need this available; better to fail now than
++		    # mysteriously on the first mount
++		    if ! grep -q -E '^nfs[	 ]' /etc/services; then
++		    	log_action_end_msg 1 "broken /etc/services, please see /usr/share/doc/nfs-common/README.Debian.nfsv4"
++			exit 1
++		    fi
++
++		    start-stop-daemon --start --oknodo --quiet \
++			    --exec /usr/sbin/rpc.gssd -- $RPCGSSDOPTS
++	            if [ $? != 0 ]; then
++        	        log_end_msg $?
++        	        exit $?
++                    fi
++		fi
++	    fi
++	fi
++	log_end_msg 0
++	;;
++
++  stop)
++	log_daemon_msg "Stopping $DESC"
++
++	if [ "$NEED_GSSD" = yes ]
++	then
++	    log_progress_msg "gssd"
++	    start-stop-daemon --stop --oknodo --quiet \
++		    --name rpc.gssd
++	    if [ $? != 0 ]; then
++                log_end_msg $?
++                exit $?
++            fi
++	fi
++	if [ "$NEED_IDMAPD" = yes ]
++	then
++	    log_progress_msg "idmapd"
++	    start-stop-daemon --stop --oknodo --quiet \
++		--name rpc.idmapd
++	    if [ $? != 0 ]; then
++                log_end_msg $?
++                exit $?
++            fi
++	fi
++	if [ "$NEED_LOCKD" = yes ]
++	then
++	    log_progress_msg "lockd"
++	    start-stop-daemon --stop --oknodo --quiet \
++		--name rpc.lockd
++	    if [ $? != 0 ]; then
++                log_end_msg $?
++                exit $?
++            fi
++	else
++	    pkill -KILL -u root -x lockd || true
++	fi
++	log_progress_msg "statd"
++	start-stop-daemon --stop --oknodo --quiet \
++	    --name rpc.statd
++	if [ $? != 0 ]; then
++            log_end_msg $?
++            exit $?
++        fi
++	do_umount $PIPEFS_MOUNTPOINT 2>/dev/null || true
++	log_end_msg 0
++	;;
++
++  status)
++	if ! pidof rpc.statd >/dev/null
++	then
++	    echo "rpc.statd not running"
++	    exit 3
++	fi
++
++	if [ "$NEED_GSSD" = yes ]
++	then
++            if ! pidof rpc.gssd >/dev/null
++	    then
++		echo "rpc.statd running, but rpc.gssd halted"
++		exit 3
++	    fi
++	fi
++
++	if [ "$NEED_LOCKD" = yes ]
++	then
++	    if ! pidof rpc.lockd >/dev/null
++	    then
++		echo "rpc.statd running, but rpc.lockd halted"
++		exit 3
++	    fi
++	fi
++	    
++	if [ "$NEED_IDMAPD" = yes ]
++	then
++            if ! pidof rpc.idmapd >/dev/null
++	    then
++		echo "rpc.statd running, but rpc.idmapd halted"
++		exit 3
++	    fi
++	fi
++
++	echo "rpc.statd running"
++	exit 0
++	;;
++
++  restart | force-reload)
++	$0 stop
++	sleep 1
++	$0 start
++	;;
++
++  *)
++	log_success_msg "Usage: nfs-common {start|stop|status|restart}"
++	exit 1
++	;;
++esac
++
++exit 0
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.init
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.init
+@@ -0,0 +1,205 @@
++#!/bin/sh
++
++### BEGIN INIT INFO
++# Provides:          nfs-kernel-server
++# Required-Start:    $portmap $time
++# Required-Stop:     $portmap $time
++# Default-Start:     2 3 4 5
++# Default-Stop:      0 1 6
++# Short-Description: Kernel NFS server support
++# Description:       NFS is a popular protocol for file sharing across
++#		     TCP/IP networks. This service provides NFS server
++#                    functionality, which is configured via the
++#                    /etc/exports file.
++### END INIT INFO
++
++# What is this?
++DESC="NFS kernel daemon"
++PREFIX=/usr
++
++# Exit if required binaries are missing.
++[ -x $PREFIX/sbin/rpc.nfsd    ] || exit 0
++[ -x $PREFIX/sbin/rpc.mountd  ] || exit 0
++[ -x $PREFIX/sbin/exportfs    ] || exit 0
++
++# Read config
++DEFAULTFILE=/etc/default/nfs-kernel-server
++RPCNFSDCOUNT=8
++RPCNFSDPRIORITY=0
++RPCMOUNTDOPTS=
++NEED_SVCGSSD=no
++RPCSVCGSSDOPTS=
++PROCNFSD_MOUNTPOINT=/proc/fs/nfsd
++if [ -f $DEFAULTFILE ]; then
++    . $DEFAULTFILE
++fi
++
++. /lib/lsb/init-functions
++
++do_modprobe() {
++    if [ -x /sbin/modprobe -a -f /proc/modules ]
++    then
++        modprobe -q "$1" || true
++    fi
++}
++
++do_mount() {
++    if ! grep -E -qs "$1\$" /proc/filesystems
++    then
++	return 1
++    fi
++    if ! mountpoint -q "$2"
++    then
++	mount -t "$1" "$1" "$2"
++	return
++    fi
++    return 0
++}
++
++# See how we were called.
++case "$1" in
++  start)
++	if [ -f /etc/exports ]
++	then
++		do_modprobe nfsd
++
++		# See if our running kernel supports the NFS kernel server
++		if [ -f /proc/kallsyms ] && ! grep -qE 'init_nf(sd|	)' /proc/kallsyms; then
++			log_warning_msg "Not starting $DESC: no support in current kernel."
++			exit 0
++		fi
++		
++		do_mount nfsd $PROCNFSD_MOUNTPOINT || NEED_SVCGSSD=no
++		log_begin_msg "Exporting directories for $DESC..."
++		$PREFIX/sbin/exportfs -r
++		if [ $? != 0 ]; then
++			log_end_msg $?
++			exit $?
++		fi
++		log_end_msg 0
++
++		log_daemon_msg "Starting $DESC"
++		log_progress_msg "nfsd"
++		start-stop-daemon --start --oknodo --quiet \
++		    --nicelevel $RPCNFSDPRIORITY \
++		    --exec $PREFIX/sbin/rpc.nfsd -- $RPCNFSDCOUNT
++		if [ $? != 0 ]; then
++			log_end_msg $?
++			exit $?
++		fi
++
++		# make sure 127.0.0.1 is a valid source for requests
++		ClearAddr=
++		if [ -f /proc/net/rpc/auth.unix.ip/channel ]
++		then
++		    fgrep -qs 127.0.0.1 /proc/net/rpc/auth.unix.ip/content || {
++			echo "nfsd 127.0.0.1 2147483647 localhost" >/proc/net/rpc/auth.unix.ip/channel
++			ClearAddr=yes
++		    }
++		fi
++
++		$PREFIX/bin/rpcinfo -u localhost nfs 3 >/dev/null 2>&1 ||
++		    RPCMOUNTDOPTS="$RPCMOUNTDOPTS --no-nfs-version 3"
++
++		[ -z "$ClearAddr" ] || echo "nfsd 127.0.0.1 1" >/proc/net/rpc/auth.unix.ip/channel
++	
++	        if [ "$NEED_SVCGSSD" = "yes" ]; then
++			log_progress_msg "svcgssd"
++			start-stop-daemon --start --oknodo --quiet \
++			    --exec $PREFIX/sbin/rpc.svcgssd -- $RPCSVCGSSDOPTS
++			if [ $? != 0 ]; then
++				log_end_msg $?
++				exit $?
++			fi
++		fi
++
++		log_progress_msg "mountd"
++		start-stop-daemon --start --oknodo --quiet \
++		    --exec $PREFIX/sbin/rpc.mountd -- $RPCMOUNTDOPTS
++		if [ $? != 0 ]; then
++			log_end_msg $?
++			exit $?
++		fi
++
++		log_end_msg 0
++	else
++		log_warning_msg "Not starting $DESC: no exports."
++	fi
++	;;
++
++  stop)
++	log_daemon_msg "Stopping $DESC"
++	
++	log_progress_msg "mountd"
++	start-stop-daemon --stop --oknodo --quiet \
++	    --name rpc.mountd --user 0
++	if [ $? != 0 ]; then
++		log_end_msg $?
++		exit $?
++	fi
++	        
++	if [ "$NEED_SVCGSSD" = "yes" ]; then
++		log_progress_msg "svcgssd"
++		start-stop-daemon --stop --oknodo --quiet \
++		    --name rpc.svcgssd --user 0
++		if [ $? != 0 ]; then
++			log_end_msg $?
++			exit $?
++		fi
++	fi
++
++	log_progress_msg "nfsd"
++	start-stop-daemon --stop --oknodo --quiet \
++	    --name nfsd --user 0 --signal 2
++	if [ $? != 0 ]; then
++		log_end_msg $?
++		exit $?
++	fi
++
++	log_end_msg 0
++
++	log_begin_msg "Unexporting directories for $DESC..."
++	$PREFIX/sbin/exportfs -au
++	if [ $? != 0 ]; then
++		log_end_msg $?
++		exit $?
++	fi
++	log_end_msg 0
++
++	if mountpoint -q /proc/nfs/nfsd
++	then
++	    $PREFIX/sbin/exportfs -f
++	fi
++	;;
++
++  status)
++	if pidof nfsd >/dev/null
++	then
++	    echo "nfsd running"
++	    exit 0
++	else
++	    echo "nfsd not running"
++	    exit 3
++	fi
++	;;
++
++  reload | force-reload)
++	log_begin_msg "Re-exporting directories for $DESC..."
++	$PREFIX/sbin/exportfs -r
++	log_end_msg $?
++	exit $?
++	;;
++
++  restart)
++	$0 stop
++	sleep 1
++	$0 start
++	;;
++
++  *)
++	log_success_msg "Usage: nfs-kernel-server {start|stop|status|reload|force-reload|restart}"
++	exit 1
++	;;
++esac
++
++exit 0
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.postinst
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.postinst
+@@ -0,0 +1,23 @@
++#!/bin/sh -e
++
++#DEBHELPER#
++
++case "$1" in
++    configure)
++	ucf --three-way /usr/share/nfs-kernel-server/conffiles/etc.exports /etc/exports
++	ucf --three-way /usr/share/nfs-kernel-server/conffiles/nfs-kernel-server.default /etc/default/nfs-kernel-server
++
++	for f in /var/lib/nfs/etab  \
++		 /var/lib/nfs/rmtab \
++		 /var/lib/nfs/xtab; do
++	    [ -e $f ] || touch $f
++	done
++
++	update-rc.d nfs-kernel-server defaults 20 80 >/dev/null
++    ;;
++esac
++
++act="restart"
++[ "$1:$2" = "configure:" ] && act="start"
++[ "$1:$2" = "configure:" ] && invoke-rc.d nfs-common start
++invoke-rc.d nfs-kernel-server $act
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.default
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.default
+@@ -0,0 +1,18 @@
++# Number of servers to start up
++RPCNFSDCOUNT=8
++
++# Runtime priority of server (see nice(1))
++RPCNFSDPRIORITY=0
++
++# Options for rpc.mountd.
++# If you have a port-based firewall, you might want to set up
++# a fixed port here using the --port option. For more information, 
++# see rpc.mountd(8) or http://wiki.debian.org/?SecuringNFS
++RPCMOUNTDOPTS=
++
++# Do you want to start the svcgssd daemon? It is only required for Kerberos
++# exports. Valid alternatives are "yes" and "no"; the default is "no".
++NEED_SVCGSSD=
++
++# Options for rpc.svcgssd.
++RPCSVCGSSDOPTS=
+--- nfs-utils-1.0.10.orig/debian/README.Debian.nfsv4
++++ nfs-utils-1.0.10/debian/README.Debian.nfsv4
+@@ -0,0 +1,62 @@
++NFSv4 in Debian
++===============
++
++NFSv4 support in Debian is rather new, and not fully supported yet. If you want
++to experiment, make sure you have:
++
++ - a recent 2.6 kernel on both client and server; newer is better. You might even
++   want to use CITI's patch set from http://www.citi.umich.edu/projects/nfsv4/linux/ 
++   on the server, and/or Trond Myklebust's patch set from http://client.linux-nfs.org/ .
++ - a recent enough version of nfs-utils on both client and server (you probably
++   have on at least one of them, since you're reading this file!).
++ - enabled idmapd on both sides (see /etc/default/nfs-common).
++ - The following lines in /etc/services on the client (if not, you will receive
++   the message "broken /etc/services" when starting rpc.gssd; this will usually
++   only happen if you upgrade netbase without letting it replace /etc/services
++   with the new version):
++
++   nfs		2049/tcp			# Network File System
++   nfs		2049/udp			# Network File System
++
++The export structure might be a bit confusing if you're already familiar with
++NFSv2 or NFSv3. The biggest difference is that you will need to export an explicit
++root of your pseudofilesystem, like this /etc/exports fragment:
++
++  /nfs4                   hostname(rw,sync,fsid=0,crossmnt)
++
++(It doesn't need to be named "nfs4".) Then you can mount other volumes under that,
++like:
++
++  /nfs4/music             hostname(rw,sync)
++  /nfs4/movies            hostname(rw,sync)
++
++Then your client can mount shares like this:
++
++  mount -t nfs4 server:/music /mnt/music
++
++Since you might not have everything under one root, you might want /nfs4/* on the
++server to be bind mounts, ie.:
++
++  mount --bind /srv/music /nfs4/music
++
++or in /etc/fstab:
++
++  /srv/music /nfs4/music none bind 0 0
++
++Note that this special export structure might be handled transparently by
++rpc.mountd at some time in the future, in which case you will probably get the
++traditional (NFSv3-style) behaviour if and only if you have no share with
++fsid=0.
++
++If you do not wish to use host-based authentication, you can specify "gss/krb5"
++instead of a hostname to get Kerberos-based authentication instead. For this, 
++you will need an "nfs/hostname@REALM" entry in /etc/krb5.keytab, as well as
++rpc.gssd running on both client and rpc.svcgssd on the server (enable them
++manually in /etc/default/nfs-common and /etc/default/nfs-kernel-server if the
++autodetection fails).
++
++If you use "gss/krb5i", you will also get integrity (ie. authentication), and
++with "gss/krb5p", you'll also get privacy (ie. encryption). Make sure your
++kernel supports this; not all kernels do.
++
++ -- Steinar H. Gunderson <sesse@debian.org>, Wed, 11 Oct 2006 15:18:03 +0200
+--- nfs-utils-1.0.10.orig/debian/nfs-common.install
++++ nfs-utils-1.0.10/debian/nfs-common.install
+@@ -0,0 +1,13 @@
++debian/tmp/usr/sbin/rpc.lockd sbin/
++debian/tmp/usr/sbin/rpc.statd sbin/
++debian/tmp/usr/sbin/showmount sbin/
++debian/tmp/usr/sbin/nfsstat
++debian/tmp/usr/sbin/rpc.gssd
++debian/tmp/usr/sbin/rpc.idmapd
++debian/tmp/usr/sbin/gss_clnt_send_err
++debian/tmp/usr/sbin/gss_destroy_creds
++debian/tmp/usr/sbin/rpcdebug
++debian/idmapd.conf usr/share/nfs-common/conffiles/
++debian/idmapd.conf.md5sum usr/share/nfs-common/conffiles/
++debian/nfs-common.default usr/share/nfs-common/conffiles/
++debian/nfs-common.default.md5sum usr/share/nfs-common/conffiles/
+--- nfs-utils-1.0.10.orig/debian/nfs-common.manpages
++++ nfs-utils-1.0.10/debian/nfs-common.manpages
+@@ -0,0 +1,9 @@
++debian/tmp/usr/share/man/man5/idmapd.conf*
++debian/tmp/usr/share/man/man8/gssd.8
++debian/tmp/usr/share/man/man8/idmapd.8
++debian/tmp/usr/share/man/man8/lockd.8
++debian/tmp/usr/share/man/man8/statd.8
++debian/tmp/usr/share/man/man8/nfsstat*
++debian/tmp/usr/share/man/man8/showmount*
++debian/tmp/usr/share/man/man8/idmapd*
++debian/tmp/usr/share/man/man8/rpcdebug.8
+--- nfs-utils-1.0.10.orig/debian/etc.exports.md5sum
++++ nfs-utils-1.0.10/debian/etc.exports.md5sum
+@@ -0,0 +1,2 @@
++fa071681b8e7f4eff1d6f5c4f43bf1d8  nfs-utils-1.0.6/debian/etc.exports
++d9037825e2fbe4e58d6176e7297830cb  nfs-utils-1.0.7/debian/etc.exports
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.install
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.install
+@@ -0,0 +1,8 @@
++debian/tmp/usr/sbin/exportfs
++debian/tmp/usr/sbin/rpc.mountd
++debian/tmp/usr/sbin/rpc.nfsd
++debian/tmp/usr/sbin/rpc.svcgssd
++debian/nfs-kernel-server.default /usr/share/nfs-kernel-server/conffiles/
++debian/etc.exports /usr/share/nfs-kernel-server/conffiles/
++debian/nfs-kernel-server.default.md5sum /usr/share/nfs-kernel-server/conffiles/
++debian/etc.exports.md5sum /usr/share/nfs-kernel-server/conffiles/
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.manpages
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.manpages
+@@ -0,0 +1,6 @@
++debian/tmp/usr/share/man/man5/exports.5
++debian/tmp/usr/share/man/man7/nfsd.7
++debian/tmp/usr/share/man/man8/mountd.8
++debian/tmp/usr/share/man/man8/exportfs.8
++debian/tmp/usr/share/man/man8/nfsd.8
++debian/tmp/usr/share/man/man8/svcgssd.8
+--- nfs-utils-1.0.10.orig/debian/nfs-common.dirs
++++ nfs-utils-1.0.10/debian/nfs-common.dirs
+@@ -0,0 +1,8 @@
++etc/init.d
++sbin
++usr/sbin
++var/lib/nfs
++var/lib/nfs/sm
++var/lib/nfs/sm.bak
++var/lib/nfs/rpc_pipefs
++usr/share/nfs-common/conffiles
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.links
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.links
+@@ -0,0 +1,3 @@
++/usr/share/man/man8/mountd.8 /usr/share/man/man8/rpc.mountd.8
++/usr/share/man/man8/nfsd.8 /usr/share/man/man8/rpc.nfsd.8
++/usr/share/man/man8/svcgssd.8 /usr/share/man/man8/rpc.svcgssd.8
+--- nfs-utils-1.0.10.orig/debian/nfs-common.default.md5sum
++++ nfs-utils-1.0.10/debian/nfs-common.default.md5sum
+@@ -0,0 +1,7 @@
++9409842759091e981d65a210e3e914cb  nfs-utils-1.0.6/debian/nfs-common.default
++e9765a19f6be408eb8a8afa0ee9677b9  nfs-utils-1.0.7-2/debian/nfs-common.default
++04d838e3d6ce19ac7d0246740128e4a0  nfs-utils-1.0.7-6/debian/nfs-common.default
++e460b95b3b808e55ec7dcba8e605ab14  nfs-utils-1.0.7-10/debian/nfs-common.default
++bf979c79c0eca8c114c5388bf7225b4f  nfs-utils-1.0.7-16/debian/nfs-common.default
++d41d8cd98f00b204e9800998ecf8427e  nfs-utils-1.0.7-18/debian/nfs-common.default
++
+--- nfs-utils-1.0.10.orig/debian/nfs-common.default
++++ nfs-utils-1.0.10/debian/nfs-common.default
+@@ -0,0 +1,20 @@
++# If you do not set values for the NEED_ options, they will be attempted
++# autodetected; this should be sufficient for most people. Valid alternatives
++# for the NEED_ options are "yes" and "no".
++
++# Options for rpc.statd.
++#   Should rpc.statd listen on a specific port? This is especially useful
++#   when you have a port-based firewall. To use a fixed port, set this
++#   this variable to a statd argument like: "--port 4000 --outgoing-port 4001".
++#   For more information, see rpc.statd(8) or http://wiki.debian.org/?SecuringNFS
++STATDOPTS=
++
++# Some kernels need a separate lockd daemon; most don't. Set this if you
++# want to force an explicit choice for some reason.
++NEED_LOCKD=
++
++# Do you want to start the idmapd daemon? It is only needed for NFSv4.
++NEED_IDMAPD=
++
++# Do you want to start the gssd daemon? It is required for Kerberos mounts.
++NEED_GSSD=
+--- nfs-utils-1.0.10.orig/debian/etc.exports
++++ nfs-utils-1.0.10/debian/etc.exports
+@@ -0,0 +1,10 @@
++# /etc/exports: the access control list for filesystems which may be exported
++#		to NFS clients.  See exports(5).
++#
++# Example for NFSv2 and NFSv3:
++# /srv/homes       hostname1(rw,sync) hostname2(ro,sync)
++#
++# Example for NFSv4:
++# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt)
++# /srv/nfs4/homes  gss/krb5i(rw,sync)
++#
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.default.md5sum
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.default.md5sum
+@@ -0,0 +1,4 @@
++226f8fdd37b11c59d73e2f378e22b0d0  nfs-utils-1.0.6/debian/nfs-kernel-server.default
++04755047c69d355d9d103c6f10017ec6  nfs-utils-1.0.7-2/debian/nfs-kernel-server.default
++41cb37d01bbfacaf4bfbe0f62b18284f  nfs-utils-1.0.7-4/debian/nfs-kernel-server.default
++41388b5bb60d7ad1b1281b975dc07ce9  nfs-utils-1.0.7-16/debian/nfs-kernel-server.default
+--- nfs-utils-1.0.10.orig/debian/nfs-common.postinst
++++ nfs-utils-1.0.10/debian/nfs-common.postinst
+@@ -0,0 +1,35 @@
++#!/bin/sh -e
++
++#DEBHELPER#
++
++case "$1" in
++    configure)
++	ucf --three-way /usr/share/nfs-common/conffiles/idmapd.conf /etc/idmapd.conf
++	ucf --three-way /usr/share/nfs-common/conffiles/nfs-common.default /etc/default/nfs-common
++
++	update-rc.d nfs-common defaults 21 79 >/dev/null
++
++	if ! getent passwd statd >/dev/null; then
++	    adduser --system --home /var/lib/nfs --no-create-home statd
++	fi
++	if dpkg --compare-versions "$2" ge 1:1.0.7-10 && dpkg --compare-versions "$2" lt 1:1.0.7-13; then
++            usermod --home /var/lib/nfs statd || true
++            if [ -d /home/statd ]; then
++                rmdir --ignore-fail-on-non-empty /home/statd
++            fi
++	fi
++	if [ "$2" = "" ] || dpkg --compare-versions "$2" lt 1:1.0.7-16; then
++	    chown statd /var/lib/nfs/sm \
++		/var/lib/nfs/sm.bak \
++		/var/lib/nfs/rpc_pipefs \
++		/var/lib/nfs
++            if [ -f /var/lib/nfs/state ]; then
++	        chown statd /var/lib/nfs/state
++            fi
++	fi
++    ;;
++esac
++
++act="restart"
++[ "$1:$2" = "configure:" ] && act="start"
++invoke-rc.d nfs-common $act
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.NEWS
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.NEWS
+@@ -0,0 +1,8 @@
++nfs-utils (1:1.0.1-1) unstable; urgency=low
++
++  * Exports default to "sync", that is, synchronous writes.
++    This is safer but MUCH SLOWER than the old default of "async".
++    All exports should be marked as either "sync" or "async" to
++    avoid a warning from exportfs.
++
++ -- Chip Salzenberg <chip@debian.org>  Mon, 26 Aug 2002 12:17:57 -0400
+--- nfs-utils-1.0.10.orig/debian/nfs-common.postrm
++++ nfs-utils-1.0.10/debian/nfs-common.postrm
+@@ -0,0 +1,24 @@
++#!/bin/sh
++
++#DEBHELPER#
++
++case "$1" in
++    purge)
++	update-rc.d nfs-common remove >/dev/null
++
++	for FILE in /etc/default/nfs-common /etc/idmapd.conf; do
++	    # Taken from the ucf example postrm
++	    for ext in '~' '%' .bak .dpkg-tmp .dpkg-new .dpkg-old .dpkg-dist;  do
++		rm -f $FILE$ext
++	    done
++	    rm -f $FILE
++	    if [ -x /usr/bin/ucf ]; then
++		ucf --purge $FILE
++	    fi
++	done
++
++	rm -f /var/lib/nfs/state    \
++	      /var/lib/nfs/sm/*     \
++	      /var/lib/nfs/sm.bak/*
++	;;
++esac
+--- nfs-utils-1.0.10.orig/debian/copyright
++++ nfs-utils-1.0.10/debian/copyright
+@@ -0,0 +1,11 @@
++This package was debianized by Chip Salzenberg <chip@debian.org> on Fri,  3 Dec 1999 20:00:00 -0800
++
++It was downloaded from http://sourceforge.net/projects/nfs/
++
++View individual source files for respective authors.
++
++
++You are free to distribute this software under the terms of
++the GNU General Public License, version 2 or later.
++On Debian systems, the complete text of the GNU General Public
++License can be found in the file /usr/share/common-licenses/GPL.
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.prerm
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.prerm
+@@ -0,0 +1,19 @@
++#!/bin/sh
++
++#DEBHELPER#
++
++case "$1" in
++    remove|purge)
++	[ -x /etc/init.d/nfs-kernel-server ] &&
++	    invoke-rc.d nfs-kernel-server stop
++	;;
++esac
++
++if [ "$1" != upgrade ]
++then
++    rm -f /var/lib/nfs/etab   \
++          /var/lib/nfs/rmtab  \
++          /var/lib/nfs/xtab
++fi
++
++exit 0
+--- nfs-utils-1.0.10.orig/debian/nfs-common.prerm
++++ nfs-utils-1.0.10/debian/nfs-common.prerm
+@@ -0,0 +1,19 @@
++#!/bin/sh
++
++#DEBHELPER#
++
++case "$1" in
++    remove|purge)
++	[ -x /etc/init.d/nfs-common ] &&
++	    invoke-rc.d nfs-common stop
++	;;
++esac
++
++if [ "$1" != upgrade ]
++then
++    rm -f /var/lib/nfs/sm/*      \
++          /var/lib/nfs/sm.bak/*  \
++          /var/lib/nfs/state
++fi
++
++exit 0
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.postrm
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.postrm
+@@ -0,0 +1,25 @@
++#!/bin/sh
++
++#DEBHELPER#
++
++case "$1" in
++    purge)
++	update-rc.d nfs-kernel-server remove >/dev/null
++
++	for FILE in /etc/default/nfs-kernel-server /etc/exports; do
++	    # Taken from the ucf example postrm
++	    for ext in '~' '%' .bak .dpkg-tmp .dpkg-new .dpkg-old .dpkg-dist;  do
++		rm -f $FILE$ext
++	    done
++	    rm -f $FILE
++	    if [ -x /usr/bin/ucf ]; then
++		ucf --purge $FILE
++	    fi
++	done
++
++	rm -f /var/lib/nfs/etab  \
++              /var/lib/nfs/rmtab \
++              /var/lib/nfs/xtab
++	;;
++esac
++
+--- nfs-utils-1.0.10.orig/debian/nfs-kernel-server.dirs
++++ nfs-utils-1.0.10/debian/nfs-kernel-server.dirs
+@@ -0,0 +1,5 @@
++etc/init.d
++usr/sbin
++var/lib/nfs
++var/lib/nfs/v4recovery
++usr/share/nfs-kernel-server/conffiles
+--- nfs-utils-1.0.10.orig/debian/nhfsstone.dirs
++++ nfs-utils-1.0.10/debian/nhfsstone.dirs
+@@ -0,0 +1 @@
++usr/sbin
+--- nfs-utils-1.0.10.orig/debian/idmapd.conf.md5sum
++++ nfs-utils-1.0.10/debian/idmapd.conf.md5sum
+@@ -0,0 +1 @@
++3e94f238294cc61b047e7ae50115dffc  nfs-utils-1.0.7/debian/idmapd.conf
+--- nfs-utils-1.0.10.orig/debian/nfs-common.links
++++ nfs-utils-1.0.10/debian/nfs-common.links
+@@ -0,0 +1,4 @@
++/usr/share/man/man8/gssd.8 /usr/share/man/man8/rpc.gssd.8
++/usr/share/man/man8/lockd.8 /usr/share/man/man8/rpc.lockd.8
++/usr/share/man/man8/statd.8 /usr/share/man/man8/rpc.statd.8
++/usr/share/man/man8/idmapd.8 /usr/share/man/man8/rpc.idmapd.8
+--- nfs-utils-1.0.10.orig/debian/compat
++++ nfs-utils-1.0.10/debian/compat
+@@ -0,0 +1 @@
++5
+--- nfs-utils-1.0.10.orig/debian/nhfsstone.install
++++ nfs-utils-1.0.10/debian/nhfsstone.install
+@@ -0,0 +1,2 @@
++debian/tmp/usr/sbin/nhfs*
++debian/tmp/usr/share/man/man8/nhfs*

+ 86 - 0
package/nfs-utils/nfs-utils.mk

@@ -0,0 +1,86 @@
+#############################################################
+#
+# nfs-utils
+#
+#############################################################
+NFS_UTILS_VER:=1.0.10
+NFS_UTILS_SOURCE:=nfs-utils-$(NFS_UTILS_VER).tar.gz
+NFS_UTILS_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/nfs/
+NFS_UTILS_CAT:=$(ZCAT)
+NFS_UTILS_DIR:=$(BUILD_DIR)/nfs-utils-$(NFS_UTILS_VER)
+NFS_UTILS_BINARY:=utils/nfsd/nfsd
+NFS_UTILS_TARGET_BINARY:=usr/sbin/rpc.nfsd
+
+$(DL_DIR)/$(NFS_UTILS_SOURCE):
+	 $(WGET) -P $(DL_DIR) $(NFS_UTILS_SITE)/$(NFS_UTILS_SOURCE)
+
+$(NFS_UTILS_DIR)/.unpacked: $(DL_DIR)/$(NFS_UTILS_SOURCE)
+	$(NFS_UTILS_CAT) $(DL_DIR)/$(NFS_UTILS_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+	toolchain/patch-kernel.sh $(NFS_UTILS_DIR) package/nfs-utils/ nfs-utils*.patch
+	toolchain/patch-kernel.sh $(NFS_UTILS_DIR) $(NFS_UTILS_DIR)/debian/ *.patch
+	touch $(NFS_UTILS_DIR)/.unpacked
+
+$(NFS_UTILS_DIR)/.configured: $(NFS_UTILS_DIR)/.unpacked
+	(cd $(NFS_UTILS_DIR); rm -rf config.cache; \
+		$(TARGET_CONFIGURE_OPTS) CC_FOR_BUILD="$(HOSTCC)" \
+		CFLAGS="$(TARGET_CFLAGS)" \
+		LDFLAGS="$(TARGET_LDFLAGS)" \
+		knfsd_cv_bsd_signals=no \
+		./configure \
+		--target=$(GNU_TARGET_NAME) \
+		--host=$(GNU_TARGET_NAME) \
+		--build=$(GNU_HOST_NAME) \
+		--prefix=/usr \
+		--disable-nfsv4 \
+		--disable-gss \
+	);
+	touch $(NFS_UTILS_DIR)/.configured
+
+$(NFS_UTILS_DIR)/$(NFS_UTILS_BINARY): $(NFS_UTILS_DIR)/.configured
+	$(MAKE) CC=$(TARGET_CC) CC_FOR_BUILD="$(HOSTCC)" \
+		RPCGEN=/usr/bin/rpcgen -C $(NFS_UTILS_DIR)
+	touch -c $(NFS_UTILS_DIR)/$(NFS_UTILS_BINARY)
+
+NFS_UTILS_TARGETS_  :=
+NFS_UTILS_TARGETS_y :=	usr/sbin/exportfs usr/sbin/rpc.mountd	\
+			usr/sbin/rpc.nfsd usr/sbin/rpc.statd
+
+NFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPCDEBUG)	+= usr/sbin/rpcdebug
+NFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPC_LOCKD)	+= usr/sbin/rpc.lockd
+NFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPC_RQUOTAD)	+= usr/sbin/rpc.rquotad
+
+$(STAGING_DIR)/.fakeroot.nfs-utils: $(NFS_UTILS_DIR)/$(NFS_UTILS_BINARY)
+	# Use fakeroot to pretend to do 'make install' as root
+	echo "$(MAKE) prefix=$(TARGET_DIR)/usr statedir=$(TARGET_DIR)/var/lib/nfs CC=$(TARGET_CC) -C $(NFS_UTILS_DIR) install" > $@
+	echo "rm -f $(TARGET_DIR)/usr/bin/event_rpcgen.py $(TARGET_DIR)/usr/sbin/nhfs* $(TARGET_DIR)/usr/sbin/nfsstat $(TARGET_DIR)/usr/sbin/showmount" >> $@
+	echo "rm -rf $(TARGET_DIR)/usr/share/man" >> $@
+	echo "$(INSTALL) -m 0755 -D package/nfs-utils/init-nfs $(TARGET_DIR)/etc/init.d/S60nfs" >> $@
+	echo -n "for file in $(NFS_UTILS_TARGETS_) ; do rm -f $(TARGET_DIR)/" >> $@
+	echo -n "\$$" >> $@
+	echo "file; done" >> $@
+	echo "rm -rf $(TARGET_DIR)/var/lib/nfs" >> $@
+
+$(TARGET_DIR)/$(NFS_UTILS_TARGET_BINARY): $(STAGING_DIR)/.fakeroot.nfs-utils
+	touch -c $(TARGET_DIR)/$(NFS_UTILS_TARGET_BINARY)
+
+nfs-utils: uclibc $(TARGET_DIR)/$(NFS_UTILS_TARGET_BINARY)
+
+nfs-utils-clean:
+	rm -f $(TARGET_DIR)/etc/init.d/S60nfs
+	for file in $(NFS_UTILS_TARGETS_y) ; do \
+		rm -f $(TARGET_DIR)/$$file; \
+	done
+	-$(MAKE) -C $(NFS_UTILS_DIR) clean
+	rm -f $(STAGING_DIR)/.fakeroot.nfs-utils
+
+nfs-utils-dirclean:
+	rm -rf $(NFS_UTILS_DIR)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_NFS_UTILS)),y)
+TARGETS+=nfs-utils
+endif