From: Brad House Date: Tue, 9 Dec 2003 18:52:43 +0000 (+0000) Subject: devfsd dietlibc stuff X-Git-Tag: v3.4.10.902~740 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=b2b2e3b34392c395fd1b1bffe54fe189586cfbed;p=genkernel.git devfsd dietlibc stuff git-svn-id: svn+ssh://svn.gentoo.org/var/svnroot/genkernel/trunk@12 67a159dc-881f-0410-a524-ba9dfbe2cb84 --- 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 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 index 0000000..4b02ee5 --- /dev/null +++ b/pkg/devfsd-1.3.25-dietlibc.patch @@ -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 + #include + #include ++#ifndef NO_DLOPEN + #include ++#endif ++#ifndef NO_RPCSVC + #include + #include ++#endif + #include + #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,