1
0
mirror of https://git.yoctoproject.org/poky synced 2026-07-15 15:37:03 +00:00

Major layout change to the packages directory

Having one monolithic packages directory makes it hard to find things
and is generally overwhelming. This commit splits it into several
logical sections roughly based on function, recipes.txt gives more
information about the classifications used.

The opportunity is also used to switch from "packages" to "recipes"
as used in OpenEmbedded as the term "packages" can be confusing to
people and has many different meanings.

Not all recipes have been classified yet, this is just a first pass
at separating things out. Some packages are moved to meta-extras as
they're no longer actively used or maintained.

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
Richard Purdie
2010-08-27 15:14:24 +01:00
parent da49de6885
commit 29d6678fd5
2534 changed files with 19 additions and 206 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,68 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/Makefile.in 2002/11/07 16:56:07 1.1
+++ nfs-server/Makefile.in 2002/11/07 17:08:41
@@ -74,10 +74,10 @@
bindir = $(exec_prefix)/sbin
#vardir = $(install_prefix)/var/lib/nfs
-infodir = $(prefix)/info
-man5dir = $(prefix)/man/man5
+infodir = $(prefix)/share/info
+man5dir = $(prefix)/share/man/man5
man5ext = .5
-man8dir = $(prefix)/man/man8
+man8dir = $(prefix)/share/man/man8
man8ext = .8
# Prefix to be prepended to each installed RPC program, normally `rpc.'.
@@ -145,37 +145,37 @@
.PHONY: install installdirs
install: $(DAEMONS) $(CLIENTS) installdirs
@for prog in $(DAEMONS) $(CLIENTS); do \
- echo "installing $$prog in $(bindir)"; \
- $(INSTALL_PROGRAM) $$prog $(bindir)/$$prog; \
+ echo "installing $$prog in $(DESTDIR)$(bindir)"; \
+ $(INSTALL_PROGRAM) $$prog $(DESTDIR)$(bindir)/$$prog; \
done
@for manp in $(MANPAGES5); do \
- echo "installing $$manp$(man5ext) in $(man5dir)"; \
+ echo "installing $$manp$(man5ext) in $(DESTDIR)$(man5dir)"; \
$(INSTALL_DATA) $(srcdir)/$$manp.man \
- $(man5dir)/$$manp$(man5ext); \
+ $(DESTDIR)$(man5dir)/$$manp$(man5ext); \
done
@for manp in $(MANPAGES8p); do \
- echo "installing $$manp$(man8ext) in $(man8dir)"; \
+ echo "installing $$manp$(man8ext) in $(DESTDIR)$(man8dir)"; \
$(INSTALL_DATA) $(srcdir)/$$manp.man \
- $(man8dir)/$$manp$(man8ext); \
+ $(DESTDIR)$(man8dir)/$$manp$(man8ext); \
if [ 'x$(rpcprefix)' != 'x' ]; then \
rm -f $(man8dir)/$(rpcprefix)$$manp$(man8ext); \
ln -s $$manp$(man8ext) \
- $(man8dir)/$(rpcprefix)$$manp$(man8ext); \
+ $(DESTDIR)$(man8dir)/$(rpcprefix)$$manp$(man8ext); \
fi; \
done
@for manp in $(MANPAGES8); do \
- echo "installing $$manp$(man8ext) in $(man8dir)"; \
+ echo "installing $$manp$(man8ext) in $(DESTDIR)$(man8dir)"; \
$(INSTALL_DATA) $(srcdir)/$$manp.man \
- $(man8dir)/$$manp$(man8ext); \
+ $(DESTDIR)$(man8dir)/$$manp$(man8ext); \
done
@if [ -n "$(DEVTAB_FILE)" -a ! -f "$(DEVTAB_FILE)" ]; then \
echo "Initializing $(DEVTAB_FILE)"; \
- $(INSTALL) -m 755 -d `dirname $(DEVTAB_FILE)`; \
- echo "# Device mapping for unfsd" > "$(DEVTAB_FILE)"; \
+ $(INSTALL) -m 755 -d `dirname $(DESTDIR)$(DEVTAB_FILE)`; \
+ echo "# Device mapping for unfsd" > $(DESTDIR)"$(DEVTAB_FILE)"; \
fi
installdirs:
- ${srcdir}/mkinstalldirs $(bindir) $(man5dir) $(man8dir)
+ ${srcdir}/mkinstalldirs $(DESTDIR)$(bindir) $(DESTDIR)$(man5dir) $(DESTDIR)$(man8dir)
$(rpcprefix)mountd: $(MOUNTD_OBJS) libnfs.a
$(CC) $(LDFLAGS) -o $@ $(MOUNTD_OBJS) $(LIBS)
@@ -0,0 +1,28 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/exports.man 2002/11/07 17:15:59 1.1
+++ nfs-server/exports.man 2002/11/07 17:17:19
@@ -110,6 +110,14 @@
.TP
.IR link_absolute
Leave all symbolic link as they are. This is the default operation.
+.SS Anonymous Entries
+.PP
+Entries where hosts are not specified are known as anonymous entries. They
+have different default settings compared to normal entries. The differences
+include
+.IR all_squash ,
+.IR no_secure ", and"
+.IR ro .
.SS User ID Mapping
.PP
.I nfsd
@@ -231,7 +239,7 @@
# Mapping for client foobar:
# remote local
uid 0-99 - # squash these
-uid 100-500 1000 # map 100-500 to 1000-1500
+uid 100-500 1000 # map 100-500 to 1000-1400
gid 0-49 - # squash these
gid 50-100 700 # map 50-100 to 700-750
.fi
@@ -0,0 +1,48 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/failsafe.c 2002/11/07 17:12:46 1.1
+++ nfs-server/failsafe.c 2002/11/07 17:15:16
@@ -10,8 +10,12 @@
#include "logging.h"
#include "signals.h"
#include <sys/wait.h>
+#ifdef HAVE_STRSIGNAL
+#include <string.h>
+#else
static const char * get_signame(int signo);
+#endif
void
failsafe(int level, int ncopies)
@@ -111,9 +115,17 @@
pid, running? "Continue" : "Exit");
} else {
Dprintf(L_WARNING, "failsafe: "
+#ifdef HAVE_STRSIGNAL
+ "child %d terminated by: %s. "
+#else
"child %d terminated by %s. "
+#endif
"Restarting.",
+#ifdef HAVE_STRSIGNAL
+ pid, strsignal(signo));
+#else
pid, get_signame(signo));
+#endif
child = -1; /* Restart */
}
} else if (WIFEXITED(status)) {
@@ -159,6 +171,7 @@
/* NOP */
}
+#ifndef HAVE_STRSIGNAL
static const char *
get_signame(int signo)
{
@@ -199,3 +212,4 @@
sprintf(namebuf, "signal #%d", signo);
return namebuf;
}
+#endif
@@ -0,0 +1,29 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/system.h 2002/11/07 17:10:47 1.1
+++ nfs-server/system.h 2002/11/07 17:11:53
@@ -66,20 +66,16 @@
# include <grp.h> /* for setgroups */
#endif
-#ifdef TIME_WITH_SYS_TIME
+#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# include <time.h>
-#else /* not TIME_WITH_SYS_TIME */
-# ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else /* not HAVE_SYS_TIME_H */
-# include <time.h>
+#else /* not HAVE_SYS_TIME_H */
+# include <time.h>
struct timeval {
long tv_sec;
long tv_usec;
};
-# endif /* not HAVE_SYS_TIME_H */
-#endif /* not TIME_WITH_SYS_TIME */
+#endif /* not HAVE_SYS_TIME_H */
#ifdef HAVE_SYS_FILE_H
# include <sys/file.h>
#endif
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,78 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/auth.c
+++ nfs-server/auth.c 2002/11/08 12:49:13
@@ -595,7 +595,6 @@
cp->clnt_addr.s_addr = INADDR_ANY;
cp->flags = 0;
cp->m = NULL;
- cp->umap = NULL;
if (hname == NULL) {
if (anonymous_client != NULL) {
@@ -1200,10 +1199,9 @@
free (mp->path);
if (mp->o.clnt_nisdomain)
free(mp->o.clnt_nisdomain);
+ if (mp->umap)
+ ugid_free_map(mp->umap);
free (mp);
- }
- if (cp->umap != NULL) {
- ugid_free_map(cp->umap);
}
free (cp);
}
--- nfs-server/auth.h
+++ nfs-server/auth.h 2002/11/08 12:50:24
@@ -66,6 +66,11 @@
char * path;
nfs_options o;
dev_t mount_dev;
+ /*
+ * This is the uid/gid map.
+ * See ugid_map.c for details
+ */
+ struct ugid_map * umap;
/* Original NFS client */
struct nfs_client * origin;
} nfs_mount;
@@ -77,12 +82,6 @@
char * clnt_name;
unsigned short flags;
nfs_mount * m;
-
- /*
- * This is the uid/gid map.
- * See ugid_map.c for details
- */
- struct ugid_map * umap;
} nfs_client;
#define AUTH_CLNT_WILDCARD 0x0001
--- nfs-server/ugid_map.c
+++ nfs-server/ugid_map.c 2002/11/08 12:49:14
@@ -401,12 +401,11 @@
static ugid_map *
ugid_get_map(nfs_mount *mountp)
{
- nfs_client *clientp = mountp->client;
struct ugid_map *umap;
unsigned int how;
- if (clientp->umap == NULL) {
- clientp->umap = umap = (ugid_map *) xmalloc(sizeof(ugid_map));
+ if (mountp->umap == NULL) {
+ mountp->umap = umap = (ugid_map *) xmalloc(sizeof(ugid_map));
memset(umap, 0, sizeof(ugid_map));
for (how = 0; how < 4; how++) {
@@ -415,7 +414,7 @@
}
}
- return clientp->umap;
+ return mountp->umap;
}
static void
@@ -0,0 +1,13 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/configure.in 2002/11/08 14:24:55 1.1
+++ nfs-server/configure.in 2002/11/08 14:25:27
@@ -98,7 +98,7 @@
fi
if test "$enable_ugid_dynamic" = yes; then
AC_DEFINE(ENABLE_UGID_DAEMON)
- UGIDD_PROG=\${rpcprefix}.ugidd
+ UGIDD_PROG=\${rpcprefix}ugidd
UGIDD_MAN=ugidd
fi
if test "$enable_ugid_nis" = yes; then
@@ -0,0 +1,15 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/nfsd.c
+++ nfs-server/nfsd.c
@@ -1133,8 +1133,8 @@
}
}
- if (ncopies > 1)
- read_only = 1;
+ /* if (ncopies > 1)
+ read_only = 1; */
/*
* We first fork off a child and detach from tty
@@ -0,0 +1,30 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/configure.in
+++ nfs-server/configure.in
@@ -81,7 +81,7 @@
AC_CHECK_LIB(rpc, main)
AC_CHECK_LIB(crypt, main)
AC_CHECK_LIB(nys, main)
-AC_HAVE_FUNCS(getcwd seteuid setreuid getdtablesize setgroups lchown setsid setfsuid setfsgid innetgr quotactl authdes_getucred)
+AC_HAVE_FUNCS(getcwd seteuid setreuid getdtablesize setgroups lchown setsid setfsuid setfsgid innetgr quotactl authdes_getucred realpath)
AC_AUTHDES_GETUCRED
AC_BROKEN_SETFSUID
AC_MOUNTLIST
--- nfs-server/realpath.c
+++ nfs-server/realpath.c
@@ -53,6 +53,8 @@
#define MAX_READLINKS 32
+#ifndef HAVE_REALPATH
+
#ifdef __STDC__
char *realpath(const char *path, char resolved_path [])
#else
@@ -173,3 +175,5 @@
strcpy (resolved_path, got_path);
return resolved_path;
}
+
+#endif /* HAVE_REALPATH */
@@ -0,0 +1,13 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/Makefile.in
+++ nfs-server/Makefile.in
@@ -225,7 +225,7 @@
$(RPCGEN) -l -o $@ $?
nfs_prot_xdr.o: nfs_prot_xdr.c
- $(COMPILE) $(RPC_WARNFLAGS) -c nfs_prot_xdr.c
+ $(COMPILE) $(RPC_WARNFLAGS) -fno-strict-aliasing -c nfs_prot_xdr.c
mount_xdr.o: mount_xdr.c
$(COMPILE) $(RPC_WARNFLAGS) -c mount_xdr.c
mount_svc.o: mount_svc.c
@@ -0,0 +1,13 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/Makefile.in.xx 2006-01-12 12:43:09.000000000 +0100
+++ nfs-server/Makefile.in 2006-01-12 12:43:10.000000000 +0100
@@ -64,7 +64,7 @@
NFSD_DEFS =
CFLAGS = @CFLAGS@
-LDFLAGS = @LDFLAGS@ -s
+LDFLAGS = @LDFLAGS@
WARNFLAGS = @WARNFLAGS@
RPC_WARNFLAGS = @RPC_WARNFLAGS@
TRANSPORTFLAGS = @RPCGEN_I@ -s udp -s tcp
@@ -0,0 +1,32 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/mountd.c 2006/01/12 14:00:13 1.13
+++ nfs-server/mountd.c 2006/01/12 14:37:35
@@ -76,7 +76,7 @@
0
};
-char argbuf[MNTPATHLEN + 1];
+char argbuf[PATH_MAX + 1];
char *auth_file = NULL;
static char *program_name;
int need_reinit = 0;
@@ -97,6 +97,9 @@
/*
* MOUNT
* This is what the whole protocol is all about
+ *
+ * Note: librpc gets us MNTPATHLEN length strings, but realpath
+ * needs a PATH_MAX length output buffer.
*/
fhstatus *
mountproc_mnt_1_svc(dirpath *argp, struct svc_req *rqstp)
@@ -105,7 +108,7 @@
struct stat stbuf;
nfs_client *cp;
nfs_mount *mp;
- char nargbuf[MNTPATHLEN + 1];
+ char nargbuf[PATH_MAX + 1];
int saved_errno = 0;
#ifdef WANT_LOG_MOUNTS
struct in_addr addr;
@@ -0,0 +1,12 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/mountd.c
+++ nfs-server/mountd.c
@@ -278,6 +278,7 @@
|| (mp = auth_path(cp, rqstp, dir)) == NULL
|| mp->o.noaccess) {
#ifdef WANT_LOG_MOUNTS
+ addr = svc_getcaller(rqstp->rq_xprt)->sin_addr;
Dprintf(L_WARNING, "Blocked attempt of %s to pathconf(%s)\n",
inet_ntoa(addr), dir);
#endif /* WANT_LOG_MOUNTS */
@@ -0,0 +1,26 @@
# Patch origin: nfs-server source RPM from openSUSE 10.3
--- nfs-server/setattr.c.orig 2006-07-28 16:38:26.000000000 +0200
+++ nfs-server/setattr.c 2006-07-28 16:42:28.000000000 +0200
@@ -97,7 +97,20 @@
tvp[1].tv_sec = s->st_mtime;
tvp[1].tv_usec = 0;
}
- if (efs_utimes(path, tvp) < 0)
+ if (m_secs != IGNORE_TIME && attr->mtime.useconds == 1000000) {
+ /*
+ * from kernel/fs/nfsd/nfsxdr.c:
+ * Passing the invalid value useconds=1000000 for mtime
+ * is a Sun convention for "set both mtime and atime to
+ * current server time". It's needed to make permissions
+ * checks for the "touch" program across v2 mounts to
+ * Solaris and Irix boxes work correctly. See description of
+ * sattr in section 6.1 of "NFS Illustrated" by
+ * Brent Callaghan, Addison-Wesley, ISBN 0-201-32750-5
+ */
+ if (utime(path, (struct utimbuf *)0) < 0)
+ goto failure;
+ } else if (efs_utimes(path, tvp) < 0)
goto failure;
}
}
@@ -0,0 +1,14 @@
# Makefile fix for staging to work correctly.
# Scott Garman <scott.a.garman@intel.com>
--- nfs-server-2.2beta47/Makefile.in.orig 2010-08-03 20:55:05.000000000 -0700
+++ nfs-server-2.2beta47/Makefile.in 2010-08-03 20:55:42.000000000 -0700
@@ -69,7 +69,7 @@
RPC_WARNFLAGS = @RPC_WARNFLAGS@
TRANSPORTFLAGS = @RPCGEN_I@ -s udp -s tcp
-prefix = $(install_prefix)/usr
+prefix = @prefix@
exec_prefix = $(prefix)
bindir = $(exec_prefix)/sbin
@@ -0,0 +1,258 @@
# Add the ability to choose alternate RPC ports at runtime and disable
# security so that it can run as a userland process
# Patch origin: Wind River
Index: nfs-server-2.2beta47/auth_init.c
===================================================================
--- nfs-server-2.2beta47.orig/auth_init.c
+++ nfs-server-2.2beta47/auth_init.c
@@ -409,6 +409,7 @@ auth_init(char *fname)
fname = EXPORTSFILE;
auth_file = fname; /* Save for re-initialization */
+#ifdef ROOT_LEVEL_SECURITY
/* Check protection of exports file. */
switch(iCheckAccess(auth_file, EXPORTSOWNERUID, EXPORTSOWNERGID)) {
case FACCESSWRITABLE:
@@ -424,6 +425,7 @@ auth_init(char *fname)
Dprintf(L_ERROR, "exiting because of security violation.\n");
exit(1);
}
+#endif
if ((ef = fopen(fname, "r")) == NULL) {
Dprintf(L_ERROR, "Could not open exports file %s: %s\n",
Index: nfs-server-2.2beta47/nfsd.c
===================================================================
--- nfs-server-2.2beta47.orig/nfsd.c
+++ nfs-server-2.2beta47/nfsd.c
@@ -46,6 +46,7 @@ static char pathbuf_1[NFS_MAXPATHLEN + N
extern char version[];
static char *program_name;
+static int nfs_prog = NFS_PROGRAM;
/*
* Option table
@@ -60,6 +61,7 @@ static struct option longopts[] = {
{ "help", 0, 0, 'h' },
{ "log-transfers", 0, 0, 'l' },
{ "allow-non-root", 0, 0, 'n' },
+ { "prog", required_argument, 0, 'g' },
{ "port", required_argument, 0, 'P' },
{ "promiscuous", 0, 0, 'p' },
{ "re-export", 0, 0, 'r' },
@@ -73,9 +75,10 @@ static struct option longopts[] = {
{ "udp-only", 0, 0, OPT_NOTCP },
{ "loopback-only", 0, 0, OPT_LOOPBACK },
{ "hashed-inodes", 0, 0, 'I' },
+ { "nfs-pid", required_argument, 0, 'N' },
{ NULL, 0, 0, 0 }
};
-static const char * shortopts = "a:d:Ff:hlnP:prR:tvz::";
+static const char * shortopts = "a:d:Ff:g:hlnN:P:prR:tvz::";
/*
* Table of supported versions
@@ -1003,6 +1006,8 @@ main(int argc, char **argv)
int failsafe_level = 0;
int c;
int i, ncopies = 1;
+ char *nfs_pid_file = NULL;
+
program_name = argv[0];
chdir("/");
@@ -1026,9 +1031,15 @@ main(int argc, char **argv)
case 'f':
auth_file = optarg;
break;
+ case 'g':
+ nfs_prog = atoi(optarg);
+ break;
case 'l':
log_transfers = 1;
break;
+ case 'N':
+ nfs_pid_file = strdup(optarg);
+ break;
case 'n':
allow_non_root = 1;
break;
@@ -1114,7 +1125,7 @@ main(int argc, char **argv)
log_open("nfsd", foreground);
/* Initialize RPC stuff */
- rpc_init("nfsd", NFS_PROGRAM, nfsd_versions, nfs_dispatch,
+ rpc_init("nfsd", nfs_prog, nfsd_versions, nfs_dispatch,
nfsport, NFS_MAXDATA);
if (_rpcpmstart) {
@@ -1145,7 +1156,10 @@ main(int argc, char **argv)
/* Initialize the AUTH module. */
auth_init(auth_file);
- setpidpath(_PATH_NFSD_PIDFILE);
+ if (nfs_pid_file == 0)
+ nfs_pid_file = _PATH_NFSD_PIDFILE;
+ setpidpath(nfs_pid_file);
+
if (failsafe_level == 0) {
/* Start multiple copies of the server */
writepid(getpid(), 1);
@@ -1215,9 +1229,11 @@ usage(FILE *fp, int n)
fprintf(fp,
"Usage: %s [-Fhnpv] [-d kind] [-f exports-file] [-P port] [--version]\n"
" [--debug kind] [--exports-file=file] [--port port]\n"
+" [--prog alternate_rpc_port_nubmer]\n"
" [--allow-non-root] [--promiscuous] [--version] [--foreground]\n"
" [--re-export] [--log-transfers] [--public-root path]\n"
" [--no-spoof-trace] [--no-cross-mounts] [--hashed-inodes] [--help]\n"
+" [--nfs-pid file]\n"
, program_name);
exit(n);
}
@@ -1234,7 +1250,7 @@ sigterm(int sig)
static void
terminate(void)
{
- rpc_exit(NFS_PROGRAM, nfsd_versions);
+ rpc_exit(nfs_prog, nfsd_versions);
efs_shutdown();
}
Index: nfs-server-2.2beta47/mountd.c
===================================================================
--- nfs-server-2.2beta47.orig/mountd.c
+++ nfs-server-2.2beta47/mountd.c
@@ -42,6 +42,7 @@ int hashed_inodes; /* dummy */
static void usage(FILE *, int);
static void terminate(void);
static RETSIGTYPE sigterm(int sig);
+int mount_prog = MOUNTPROG;
/*
* Option table for mountd
@@ -55,6 +56,7 @@ static struct option longopts[] =
{ "help", 0, 0, 'h' },
{ "allow-non-root", 0, 0, 'n' },
{ "port", required_argument, 0, 'P' },
+ { "prog", required_argument, 0, 'g' },
{ "promiscous", 0, 0, 'p' },
{ "re-export", 0, 0, 'r' },
{ "no-spoof-trace", 0, 0, 't' },
@@ -63,9 +65,11 @@ static struct option longopts[] =
{ "no-cross-mounts", 0, 0, 'x' },
{ "no-tcp", 0, 0, OPT_NOTCP },
{ "loopback-only", 0, 0, OPT_LOOPBACK },
+ { "mount-pid", required_argument, 0, 'N' },
+ { "rmtab", required_argument, 0, 'R' },
{ NULL, 0, 0, 0 }
};
-static const char * shortopts = "Fd:f:hnpP:rtvz::";
+static const char * shortopts = "Fd:f:g:hnN:pP:rRtvz::";
/*
* Table of supported versions
@@ -318,6 +322,7 @@ main(int argc, char **argv)
int failsafe_level = 0;
int port = 0;
int c;
+ char *mount_pid_file = NULL;
program_name = argv[0];
@@ -340,9 +345,15 @@ main(int argc, char **argv)
case 'f':
auth_file = optarg;
break;
+ case 'g':
+ mount_prog = port = atoi(optarg);
+ break;
case 'n':
allow_non_root = 1;
break;
+ case 'N':
+ mount_pid_file = strdup(optarg);
+ break;
case 'P':
port = atoi(optarg);
if (port <= 0 || port > 65535) {
@@ -354,6 +365,9 @@ main(int argc, char **argv)
case 'p':
promiscuous = 1;
break;
+ case 'R':
+ _PATH_RMTAB = strdup(optarg);
+ break;
case 'r':
re_export = 1;
break;
@@ -401,7 +415,7 @@ main(int argc, char **argv)
log_open("mountd", foreground);
/* Create services and register with portmapper */
- rpc_init("mountd", MOUNTPROG, mountd_versions, mount_dispatch, port, 0);
+ rpc_init("mountd", mount_prog, mountd_versions, mount_dispatch, port, 0);
if (_rpcpmstart) {
/* Always foreground mode */
@@ -422,7 +436,9 @@ main(int argc, char **argv)
auth_init(auth_file);
/* Write pidfile */
- setpidpath(_PATH_MOUNTD_PIDFILE);
+ if (mount_pid_file == 0)
+ mount_pid_file = _PATH_MOUNTD_PIDFILE;
+ setpidpath(mount_pid_file);
writepid(getpid(), 1);
/* Failsafe mode */
@@ -453,7 +469,9 @@ usage(FILE *fp, int n)
program_name);
fprintf(fp, " [--debug kind] [--help] [--allow-non-root]\n");
fprintf(fp, " [--promiscuous] [--version] [--port portnum]\n");
+ fprintf(fp, " [--prog alternate_rpc_port_nubmer]\n");
fprintf(fp, " [--exports-file=file] [--no-cross-mounts]\n");
+ fprintf(fp, " [--mount-pid file] [--rmtab file]\n");
exit(n);
}
@@ -467,7 +485,7 @@ sigterm(int sig)
static void
terminate(void)
{
- rpc_exit(MOUNTPROG, mountd_versions);
+ rpc_exit(mount_prog, mountd_versions);
}
RETSIGTYPE
Index: nfs-server-2.2beta47/rmtab.c
===================================================================
--- nfs-server-2.2beta47.orig/rmtab.c
+++ nfs-server-2.2beta47/rmtab.c
@@ -14,6 +14,8 @@ static char * rmtab_gethost(struct svc_r
static int rmtab_insert(char *, char *);
static void rmtab_file(char);
+char *_PATH_RMTAB = _PATH_RMTAB_VAL;
+
/*
* global top to linklist
*/
Index: nfs-server-2.2beta47/rmtab.h
===================================================================
--- nfs-server-2.2beta47.orig/rmtab.h
+++ nfs-server-2.2beta47/rmtab.h
@@ -11,8 +11,9 @@
* Location of rmtab file. /etc/rmtab is the standard on most systems.
*/
#include <paths.h>
-#ifndef _PATH_RMTAB
-#define _PATH_RMTAB "/etc/rmtab"
+extern char *_PATH_RMTAB;
+#ifndef _PATH_RMTAB_VAL
+#define _PATH_RMTAB_VAL "/etc/rmtab"
#endif
extern void rmtab_add_client(dirpath, struct svc_req *);
@@ -0,0 +1,20 @@
# Remove the requirement to link with libwrap
# Patch origin: Wind River
Index: nfs-server-2.2beta47/haccess.c
===================================================================
--- nfs-server-2.2beta47.orig/haccess.c 1999-04-08 08:47:19.000000000 -0400
+++ nfs-server-2.2beta47/haccess.c 2006-08-07 17:05:31.868221639 -0400
@@ -79,8 +79,12 @@
clients[hash] = hp;
hp->clnt_addr = addr;
+#ifdef USE_TCP_WRAPPERS
hp->status = hosts_ctl(rpcprog, "unknown",
inet_ntoa(addr), "root");
+#else
+ hp->status = 1;
+#endif
nrhosts++;
}
@@ -0,0 +1,125 @@
# Write a pid file before forking
# Patch origin: Wind River
Index: nfs-server-2.2beta47/daemon.c
===================================================================
--- nfs-server-2.2beta47.orig/daemon.c
+++ nfs-server-2.2beta47/daemon.c
@@ -15,6 +15,19 @@
static const char * pidfilename = 0;
static const char * get_signame(int signo);
+void
+writepid(pid_t pid, int clear)
+{
+ FILE *fp;
+
+ fp = fopen(pidfilename, clear? "w" : "a");
+ if (fp == NULL)
+ Dprintf(L_FATAL, "Unable to open %s: %m", pidfilename);
+ fprintf(fp, "%d\n", pid);
+ fclose(fp);
+ return;
+}
+
/*
* Do the Crawley Thing
*/
@@ -33,8 +46,10 @@ daemonize(void)
Dprintf(L_FATAL, "unable to fork: %s", strerror(errno));
/* Parent process: exit */
- if (c > 0)
+ if (c > 0) {
+ writepid(c, 1);
exit(0);
+ }
/* Do the session stuff */
close(0);
@@ -60,19 +75,6 @@ setpidpath(const char *filename)
}
void
-writepid(pid_t pid, int clear)
-{
- FILE *fp;
-
- fp = fopen(pidfilename, clear? "w" : "a");
- if (fp == NULL)
- Dprintf(L_FATAL, "Unable to open %s: %m", pidfilename);
- fprintf(fp, "%d\n", pid);
- fclose(fp);
- return;
-}
-
-void
failsafe(int level, int ncopies)
{
int *servers, running, child, i;
Index: nfs-server-2.2beta47/mountd.c
===================================================================
--- nfs-server-2.2beta47.orig/mountd.c
+++ nfs-server-2.2beta47/mountd.c
@@ -425,9 +425,6 @@ main(int argc, char **argv)
background_logging();
}
- /* Become a daemon */
- if (!foreground)
- daemonize();
/* Initialize the FH module. */
fh_init();
@@ -435,11 +432,15 @@ main(int argc, char **argv)
/* Initialize the AUTH module. */
auth_init(auth_file);
- /* Write pidfile */
if (mount_pid_file == 0)
mount_pid_file = _PATH_MOUNTD_PIDFILE;
setpidpath(mount_pid_file);
- writepid(getpid(), 1);
+
+ /* Become a daemon */
+ if (!foreground)
+ daemonize();
+ else
+ writepid(getpid(), 1);
/* Failsafe mode */
if (failsafe_level)
Index: nfs-server-2.2beta47/nfsd.c
===================================================================
--- nfs-server-2.2beta47.orig/nfsd.c
+++ nfs-server-2.2beta47/nfsd.c
@@ -1147,11 +1147,6 @@ main(int argc, char **argv)
/* if (ncopies > 1)
read_only = 1; */
- /*
- * We first fork off a child and detach from tty
- */
- if (!foreground)
- daemonize();
/* Initialize the AUTH module. */
auth_init(auth_file);
@@ -1160,9 +1155,16 @@ main(int argc, char **argv)
nfs_pid_file = _PATH_NFSD_PIDFILE;
setpidpath(nfs_pid_file);
+ /*
+ * We first fork off a child and detach from tty
+ */
+ if (!foreground)
+ daemonize();
+ else
+ writepid(getpid(), 1);
+
if (failsafe_level == 0) {
/* Start multiple copies of the server */
- writepid(getpid(), 1);
for (i = 1; i < ncopies; i++) {
pid_t pid;
@@ -0,0 +1,18 @@
# Fix a problem with chmod attributes when using no_squash_all
# Patch origin: Wind River
---
setattr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/setattr.c
+++ b/setattr.c
@@ -115,7 +115,7 @@ nfsstat setattr(char *path, sattr *attr,
}
}
- if (flags & SATTR_CHMOD) {
+ if (flags & SATTR_CHMOD && attr->mode != -1) {
unsigned int mode = attr->mode;
/* If setuid is not allowed, silently squash them */
@@ -0,0 +1,20 @@
# Remove libwrap linkage
# Patch origin: Wind River
---
configure.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/configure.in
+++ b/configure.in
@@ -86,8 +86,8 @@ AC_AUTHDES_GETUCRED
AC_BROKEN_SETFSUID
AC_MOUNTLIST
AC_FSUSAGE
-AC_CHECK_LIB(wrap, main)
-AC_LIBWRAP_BUG
+dnl AC_CHECK_LIB(wrap, main)
+dnl AC_LIBWRAP_BUG
AC_BSD_SIGNALS
dnl **************************************************************
@@ -0,0 +1,61 @@
# Force socket fds to close on exec when used in conjunction with pseudo
# Patch origin: Wind River
---
nfsd.c | 8 ++++++++
rpcmisc.c | 9 +++++++++
ugidd.c | 8 ++++++++
3 files changed, 25 insertions(+)
--- a/nfsd.c
+++ b/nfsd.c
@@ -630,6 +630,14 @@ nfsd_nfsproc_create_2(createargs *argp,
if (S_ISSOCK(argp->attributes.mode)) {
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
return(nfs_errno());
+ /* if there is a pseudo exec mark the socket to be
+ * closed automatically
+ */
+ {
+ long f_flags;
+ f_flags = fcntl(s, F_GETFD);
+ f_flags = fcntl(s, F_SETFD, f_flags | FD_CLOEXEC);
+ }
sa.sun_family = AF_UNIX;
strncpy(sa.sun_path, pathbuf, sizeof(sa.sun_path));
sa.sun_path[sizeof(sa.sun_path)-1] = '\0';
--- a/rpcmisc.c
+++ b/rpcmisc.c
@@ -197,6 +197,15 @@ makesock(int port, int proto, int socksz
Dprintf(L_FATAL, "Could not make a %s socket: %s\n",
prot_name, strerror(errno));
+ /* if there is a pseudo exec mark the socket to be
+ * closed automatically
+ */
+ {
+ long f_flags;
+ f_flags = fcntl(s, F_GETFD);
+ f_flags = fcntl(s, F_SETFD, f_flags | FD_CLOEXEC);
+ }
+ fcntl(s, FD_CLOEXEC, 1);
memset((char *) &sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
--- a/ugidd.c
+++ b/ugidd.c
@@ -195,6 +195,14 @@ authenticate_1_svc(argp, rqstp)
destaddr.sin_port = htons(*argp);
if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
goto bad;
+ /* if there is a pseudo exec mark the socket to be
+ * closed automatically
+ */
+ {
+ long f_flags;
+ f_flags = fcntl(s, F_GETFD);
+ f_flags = fcntl(s, F_SETFD, f_flags | FD_CLOEXEC);
+ }
setsockopt(s, SOL_SOCKET, SO_LINGER, 0, 0);
bzero((char *) &sendaddr, sizeof sendaddr);
/* find a reserved port */
@@ -0,0 +1,71 @@
DESCRIPTION = "Userspace NFS server"
SECTION = "console/network"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
PR = "r0"
SRC_URI = "ftp://linux.mathematik.tu-darmstadt.de/pub/linux/oldstuff/people/okir/nfs-server-${PV}.tar.gz \
file://001-2.2b47-2.2b51.patch \
file://002-destdir.patch \
file://003-manpages.patch \
file://004-strsignal.patch \
file://005-sys-time.patch \
file://006-reiserfs.patch \
file://007-map.patch \
file://008-configure.patch \
file://009-multirw.patch \
file://010-realpath.patch \
file://011-fno-strict-aliasing.patch \
file://012-nostrip.patch \
file://013-mntpathlen.patch \
file://014-uninitialized.patch \
file://015-setattr.patch \
file://016-makefile.in.patch \
file://017-wrs-dynamic-rpc.patch \
file://018-remove-tcp-wrappers.patch \
file://019-pid-before-fork.patch \
file://020-undefined-chmod-fix.patch \
file://021-nolibwrap.patch \
file://022-add-close-on-exec-descriptors.patch \
"
SRC_URI[md5sum] = "79a29fe9f79b2f3241d4915767b8c511"
SRC_URI[sha256sum] = "7eeaf3cf0b9d96167a5ba03bf1046e39b4585de1339a55b285e673c06ba415cb"
S = "${WORKDIR}/nfs-server-${PV}/"
inherit autotools
BBCLASSEXTEND = "native nativesdk"
CFLAGS = "-fPIE -fstack-protector-all"
LDFLAGS = "-pie"
EXTRA_OECONF = "--enable-ugid-dynamic \
--enable-ugid-nis \
--enable-host-access \
--with-exports-uid=0 \
--with-exports-gid=0 \
--enable-mount-logging \
--with-devtab=${DESTDIR}${base_prefix}/var/lib/nfs/devtab \
"
do_configure_prepend () {
# Remove pregenerated xdr functions. They use long
# instead of u32, which produces incorrect code on
# 64-bit architectures:
rm -f *_xdr.c
mv aclocal.m4 acinclude.m4
}
# This recipe is intended for -native and -nativesdk builds only,
# not target installs:
python __anonymous () {
import re
pn = bb.data.getVar("PN", d, 1)
if not pn.endswith('-native') and not pn.endswith('-nativesdk'):
raise bb.parse.SkipPackage("unfs-server is intended for native/nativesdk builds only")
}