[glibc] - Run nscd in the foreground w/ syslogging, fix systemd config (#770869)

Jeffrey Law law at fedoraproject.org
Fri Feb 3 20:42:55 UTC 2012


commit af740e08c93fcdf5addc4a72e5cd6143b300fb23
Author: Jeff Law <law at redhat.com>
Date:   Fri Feb 3 13:42:46 2012 -0700

    - Run nscd in the foreground w/ syslogging, fix systemd config (#770869)

 glibc-rh770869.patch |  121 ++++++++++++++++++++++++++++++++++++++++++++++++++
 glibc.spec           |    8 +++-
 2 files changed, 127 insertions(+), 2 deletions(-)
---
diff --git a/glibc-rh770869.patch b/glibc-rh770869.patch
new file mode 100644
index 0000000..f9c3a3b
--- /dev/null
+++ b/glibc-rh770869.patch
@@ -0,0 +1,121 @@
+diff -rup a/fedora/nscd.service b/fedora/nscd.service
+--- a/fedora/nscd.service	2011-10-19 05:04:41.000000000 -0600
++++ b/fedora/nscd.service	2012-02-03 13:40:37.070063851 -0700
+@@ -3,16 +3,15 @@ Description=Name Service Cache Daemon
+ After=syslog.target
+ 
+ [Service]
+-Type=forking
+ EnvironmentFile=-/etc/sysconfig/nscd
+-ExecStart=/usr/sbin/nscd $NSCD_OPTIONS
++ExecStart=/usr/sbin/nscd --foreground $NSCD_OPTIONS
+ ExecStop=/usr/sbin/nscd --shutdown
+ ExecReload=/usr/sbin/nscd -i passwd
+ ExecReload=/usr/sbin/nscd -i group
+ ExecReload=/usr/sbin/nscd -i hosts
+-ExecReload=/usr/sbin/nscd -i service
++ExecReload=/usr/sbin/nscd -i services
++ExecReload=/usr/sbin/nscd -i netgroup
+ Restart=always
+-PIDFile=/run/nscd/nscd.pid
+ 
+ [Install]
+ WantedBy=multi-user.target
+diff -rup a/nscd/nscd.c b/nscd/nscd.c
+--- a/nscd/nscd.c	2012-01-01 05:16:32.000000000 -0700
++++ b/nscd/nscd.c	2012-02-03 13:07:50.509740586 -0700
+@@ -72,7 +72,12 @@ thread_info_t thread_info;
+ int do_shutdown;
+ int disabled_passwd;
+ int disabled_group;
+-int go_background = 1;
++
++/* Default is to daemonize.  Set to 1 to run in foreground in
++   debugging mode, or negative to run in foreground but otherwise
++   behave like a daemon, i.e., detach from terminal and use
++   syslog.  */
++static int run_in_foreground = 0;
+ 
+ static const char *conffile = _PATH_NSCDCONF;
+ 
+@@ -104,6 +109,8 @@ static const struct argp_option options[
+     N_("Read configuration data from NAME") },
+   { "debug", 'd', NULL, 0,
+     N_("Do not fork and display messages on the current tty") },
++  { "foreground", 'F', NULL, 0,
++    N_("Do not fork, but otherwise behave like a deamon") },
+   { "nthreads", 't', N_("NUMBER"), 0, N_("Start NUMBER threads") },
+   { "shutdown", 'K', NULL, 0, N_("Shut the server down") },
+   { "statistics", 'g', NULL, 0, N_("Print current configuration statistics") },
+@@ -174,16 +181,22 @@ main (int argc, char **argv)
+   /* Determine page size.  */
+   pagesize_m1 = getpagesize () - 1;
+ 
+-  /* Behave like a daemon.  */
+-  if (go_background)
++  if (run_in_foreground <= 0)
+     {
+       int i;
++      pid_t pid;
+ 
+-      pid_t pid = fork ();
+-      if (pid == -1)
+-	error (EXIT_FAILURE, errno, _("cannot fork"));
+-      if (pid != 0)
+-	exit (0);
++      /* Behave like a daemon.  */
++      if (!run_in_foreground)
++	{
++	  pid = fork ();
++	  if (pid == -1)
++	    error (EXIT_FAILURE, errno, _("cannot fork"));
++	  if (pid != 0)
++	    exit (0);
++	}
++      else
++	fprintf (stderr, _("further output sent to syslog\n"));
+ 
+       int nullfd = open (_PATH_DEVNULL, O_RDWR);
+       if (nullfd != -1)
+@@ -234,11 +247,14 @@ main (int argc, char **argv)
+ 	for (i = min_close_fd; i < getdtablesize (); i++)
+ 	  close (i);
+ 
+-      pid = fork ();
+-      if (pid == -1)
+-	error (EXIT_FAILURE, errno, _("cannot fork"));
+-      if (pid != 0)
+-	exit (0);
++      if (!run_in_foreground)
++	{
++	  pid = fork ();
++	  if (pid == -1)
++	    error (EXIT_FAILURE, errno, _("cannot fork"));
++	  if (pid != 0)
++	    exit (0);
++	}
+ 
+       setsid ();
+ 
+@@ -260,7 +276,7 @@ main (int argc, char **argv)
+       signal (SIGTSTP, SIG_IGN);
+     }
+   else
+-    /* In foreground mode we are not paranoid.  */
++    /* In debug mode we are not paranoid.  */
+     paranoia = 0;
+ 
+   signal (SIGINT, termination_handler);
+@@ -309,7 +325,11 @@ parse_opt (int key, char *arg, struct ar
+     {
+     case 'd':
+       ++debug_level;
+-      go_background = 0;
++      run_in_foreground = 1;
++      break;
++
++    case 'F':
++      run_in_foreground = -1;
+       break;
+ 
+     case 'f':
diff --git a/glibc.spec b/glibc.spec
index 28d5626..0cde08a 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -28,7 +28,7 @@
 Summary: The GNU libc libraries
 Name: glibc
 Version: %{glibcversion}
-Release: 10%{?dist}
+Release: 11%{?dist}
 # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
 # Things that are linked directly into dynamically linked programs
 # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional
@@ -72,6 +72,8 @@ Patch18: %{name}-rh657588.patch
 Patch19: %{name}-rh787201.patch
 # Sent upstream, awaiting feedback
 Patch20: %{name}-rh741105.patch
+# Sent upstream, awaiting feedback
+Patch21: %{name}-rh770869.patch
 
 Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Obsoletes: glibc-profile < 2.4
@@ -310,6 +312,7 @@ rm -rf %{glibcportsdir}
 %patch18 -p1
 %patch19 -p1
 %patch20 -p1
+%patch21 -p1
 
 # A lot of programs still misuse memcpy when they have to use
 # memmove. The memcpy implementation below is not tolerant at
@@ -1162,7 +1165,8 @@ rm -f *.filelist*
 %endif
 
 %changelog
-* Fri Feb 3 2012 Jeff Law <law at redhat.com> - 2.15-10
+* Fri Feb 3 2012 Jeff Law <law at redhat.com> - 2.15-11
+  - Run nscd in the foreground w/ syslogging, fix systemd config (#770869)
   - Avoid mapping past end of shared object (#741105)
   - Turn off -mno-minimal-toc on PPC (#787201)
   - Remove hunk from glibc-rh657588.patch that didn't belong


More information about the scm-commits mailing list