devfsd dietlibc stuff
authorBrad House <brad_mssw@gentoo.org>
Tue, 9 Dec 2003 18:52:43 +0000 (18:52 +0000)
committerBrad House <brad_mssw@gentoo.org>
Tue, 9 Dec 2003 18:52:43 +0000 (18:52 +0000)
git-svn-id: svn+ssh://svn.gentoo.org/var/svnroot/genkernel/trunk@12 67a159dc-881f-0410-a524-ba9dfbe2cb84

pkg/devfsd-1.3.25-dietlibc-kernel25.tar.bz2 [new file with mode: 0644]
pkg/devfsd-1.3.25-dietlibc.patch [new file with mode: 0644]

diff --git a/pkg/devfsd-1.3.25-dietlibc-kernel25.tar.bz2 b/pkg/devfsd-1.3.25-dietlibc-kernel25.tar.bz2
new file mode 100644 (file)
index 0000000..3d39ed8
Binary files /dev/null and b/pkg/devfsd-1.3.25-dietlibc-kernel25.tar.bz2 differ
diff --git a/pkg/devfsd-1.3.25-dietlibc.patch b/pkg/devfsd-1.3.25-dietlibc.patch
new file mode 100644 (file)
index 0000000..4b02ee5
--- /dev/null
@@ -0,0 +1,225 @@
+diff -ruN devfsd.old/DIETLIBC devfsd/DIETLIBC
+--- devfsd.old/DIETLIBC        1969-12-31 19:00:00.000000000 -0500
++++ devfsd/DIETLIBC    2003-12-09 14:07:52.668863472 -0500
+@@ -0,0 +1,8 @@
++To build using dietlibc, run like this:
++
++CC="diet gcc" make has_dlopen=0 has_rpcsvc=0
++
++It will strip out the stuff that dietlibc doesn't
++support.
++
++
+diff -ruN devfsd.old/GNUmakefile devfsd/GNUmakefile
+--- devfsd.old/GNUmakefile     2003-12-09 12:34:13.000000000 -0500
++++ devfsd/GNUmakefile 2003-12-09 14:04:14.728995368 -0500
+@@ -8,22 +8,34 @@
+ KERNEL_DIR  = /usr/src/linux
+ endif
++has_dlopen := 0
++has_rpcsvc := 0
++
+ nsl_libs := $(wildcard /lib/libnsl.so.*)
++
+ ifneq ($(nsl_libs),)
+-LIBNSL      = $(shell for file in /lib/libnsl.so.[0-9]* ; do echo $$file ; done | sort -t . -n -k 2 | head -1)
++LIBNSL      = $(shell for file in /lib/libnsl.so.[0-9]* ; do echo $$file ; done | sort -t . -n -k 2 | head -n1)
+ DEFINES     += -DLIBNSL="\"$(LIBNSL)\""
+ endif
++ifneq ($(has_dlopen),1)
++DEFINES     += -DNO_DLOPEN
++else
++LIBS        += -ldl
++endif
++
++ifneq ($(has_rpcsvc),1)
++DEFINES     += -DNO_RPCSVC
++endif
+ all:  devfsd rpm.spec
+-
+ OBJECTS = devfsd.o expression.o compat_name.o check_kernel.o
+ CFLAGS = -O2 -I. -I$(KERNEL_DIR)/include -Wall $(CEXTRAS) $(DEFINES)
+ devfsd:       $(OBJECTS)
+-      $(CC) -O2 -o devfsd $(OBJECTS) $(LDFLAGS) -export-dynamic -ldl
++      $(CC) -O2 -o devfsd $(OBJECTS) $(LDFLAGS) -export-dynamic $(LIBS)
+ check_kernel.o: check_kernel.c
+       $(CC) -fomit-frame-pointer -O2 -c $<
+diff -ruN devfsd.old/devfsd.c devfsd/devfsd.c
+--- devfsd.old/devfsd.c        2003-12-09 12:34:13.000000000 -0500
++++ devfsd/devfsd.c    2003-12-09 14:05:45.967125064 -0500
+@@ -282,9 +282,13 @@
+ #include <signal.h>
+ #include <regex.h>
+ #include <errno.h>
++#ifndef NO_DLOPEN
+ #include <dlfcn.h>
++#endif
++#ifndef NO_RPCSVC
+ #include <rpcsvc/ypclnt.h>
+ #include <rpcsvc/yp_prot.h>
++#endif
+ #include <karma.h>
+ #include "devfsd.h"
+ #include "version.h"
+@@ -419,9 +423,15 @@
+ static void read_config_file (CONST char *path, flag optional,
+                             unsigned long *event_mask);
+ static void process_config_line (CONST char *line, unsigned long *event_mask);
++
++#ifndef NO_DLOPEN
+ static void *dlsym_nofail (const char *file, void *handle, char *symbol);
++#endif
++
++#ifndef NO_RPCSVC
+ static int process_yp_line (int instatus, char *inkey, int inkeylen,
+                           char *inval, int invallen, char *indata);
++#endif
+ static void load_libnsl (void);
+ static flag do_servicing (int fd, unsigned long event_mask);
+ static void service_name (const struct devfsd_notify_struct *info);
+@@ -492,9 +502,11 @@
+     {"fd/2", "stderr"},
+     {NULL, NULL},
+ };
++#ifndef NO_RPCSVC
+ static int (*my_yp_all) (char *domain, char *map,
+                        struct ypall_callback *callback); /* = NULL */
+ static int (*my_yp_get_default_domain) (char **domainptr); /* = NULL */
++#endif
+ static struct event_type
+ {
+     unsigned int type;        /*  The DEVFSD_NOTIFY_* value                  */
+@@ -720,6 +732,7 @@
+     [RETURNS] Nothing.
+ */
+ {
++#ifndef NO_RPCSVC
+     if (location[0] == '+')
+     {
+       /*  It's a YP map  */
+@@ -742,7 +755,8 @@
+       SYSLOG (LOG_ERR, "error reading map: \"%s\"\n", location + 1);
+       exit (1);
+     }
+-    read_config_file (location, optional, event_mask);
++#endif
++   read_config_file (location, optional, event_mask);
+ }   /*  End Function read_config   */
+ static void read_config_file (CONST char *path, flag optional,
+@@ -919,6 +933,7 @@
+       }
+       new->u.execute.argv[num_args] = NULL;
+     }
++#ifndef NO_DLOPEN
+     else if ( (strcasecmp (what, "MFUNCTION") == 0) ||
+             (strcasecmp (what, "CFUNCTION") == 0) )
+     {
+@@ -950,6 +965,7 @@
+       }
+       new->u.function.argv[num_args] = NULL;
+     }
++#endif
+     else if (strcasecmp (what, "COPY") == 0)
+     {
+       new->action.what = AC_COPY;
+@@ -1001,6 +1017,7 @@
+     last_config = new;
+ }   /*  End Function process_config_line   */
++#ifndef NO_DLOPEN
+ static void *dlsym_nofail (const char *file, void *handle, char *symbol)
+ {
+     void *result = dlsym (handle, symbol);
+@@ -1011,9 +1028,11 @@
+     }
+     return (result);
+ }   /*  End Function dlsym_nofail  */
++#endif
+ static void load_libnsl (void)
+ {
++#ifndef NO_RPCSVC
+ #ifdef LIBNSL  /*  It comes from a shared object  */
+     void *libnsl_handle;
+@@ -1031,8 +1050,10 @@
+     my_yp_all = yp_all;
+     my_yp_get_default_domain = yp_get_default_domain;
+ #endif
++#endif
+ }   /*  End Function load_libnsl  */
++#ifndef NO_RPCSVC
+ static int process_yp_line (int instatus, char *inkey, int inkeylen,
+                           char *inval, int invallen, char *indata)
+ {
+@@ -1040,6 +1061,7 @@
+     if (invallen > 0) process_config_line (inval, (unsigned long *) indata);
+     return (0);
+ }   /*  End Function process_yp_line  */
++#endif
+ static flag do_servicing (int fd, unsigned long event_mask)
+ /*  [SUMMARY] Service devfs changes until a signal is received.
+@@ -1232,6 +1254,7 @@
+     if (first_time)
+     {
++#ifndef NO_DLOPEN
+       void *lib;
+       first_time = FALSE;
+@@ -1242,7 +1265,10 @@
+       }
+       else if (trace_level > 1)
+           fprintf (stderr, "/lib/modutils.so load failure: %s\n",dlerror() );
+-    }
++#else
++      fprintf(stderr, "dlopen() not supported in this build");
++#endif 
++   }
+     argv[0] = "/sbin/modprobe";
+     argv[1] = "-k";
+     argv[2] = "-C";
+@@ -1746,6 +1772,7 @@
+     }
+     first_config = NULL;
+     last_config = NULL;
++#ifndef NO_DLOPEN
+     for (so_entry = first_so; so_entry != NULL; so_entry = next)
+     {
+       next = so_entry->next;
+@@ -1753,6 +1780,7 @@
+       if (so_entry->handle != RTLD_DEFAULT) dlclose (so_entry->handle);
+       free (so_entry);
+     }
++#endif
+     first_so = NULL;
+ }   /*  End Function free_config  */
+@@ -2055,6 +2083,7 @@
+     [RETURNS] A pointer to the object on success, else NULL.
+ */
+ {
++#ifndef NO_DLOPEN
+     struct shared_object *so;
+     for (so = first_so; so != NULL; so = so->next)
+@@ -2085,6 +2114,9 @@
+     so->next = first_so;
+     first_so = so;
+     return (so);
++#else
++      return(NULL);
++#endif
+ }   /*  End Function get_shared_object  */
+ static flag expand_expression(char *output, unsigned int outsize,