Author: drazzib Date: 2010-11-21 19:08:26 +0000 (Sun, 21 Nov 2010) New Revision: 13088
Removed: trunk/commons-daemon/debian/patches/jsvc_reopen_usr1.diff trunk/commons-daemon/debian/patches/syslog.diff Modified: trunk/commons-daemon/debian/changelog trunk/commons-daemon/debian/patches/hurd_support.diff trunk/commons-daemon/debian/patches/libgcj_PR31700.diff trunk/commons-daemon/debian/patches/series Log: * New upstream release. - d/patches/syslog.diff: merged upstream. - d/patches/jsvc_reopen_usr1.diff: merged upstream. - d/patches/hurd_support.diff: use "gnu" instead of "hurd". Modified: trunk/commons-daemon/debian/changelog =================================================================== --- trunk/commons-daemon/debian/changelog 2010-11-21 18:48:30 UTC (rev 13087) +++ trunk/commons-daemon/debian/changelog 2010-11-21 19:08:26 UTC (rev 13088) @@ -1,5 +1,14 @@ -commons-daemon (1.0.3-2) unstable; urgency=low +commons-daemon (1.0.4-1) unstable; urgency=low + * New upstream release. + - d/patches/syslog.diff: merged upstream. + - d/patches/jsvc_reopen_usr1.diff: merged upstream. + - d/patches/hurd_support.diff: use "gnu" instead of "hurd". + + -- Damien Raude-Morvan <[email protected]> Sun, 21 Nov 2010 18:05:41 +0100 + +commons-daemon (1.0.3-2) UNRELEASED; urgency=low + * d/patches/jsvc_reopen_usr1.diff: Make jsvc reopen log files on SIGUSR1 (Closes: #460183). Modified: trunk/commons-daemon/debian/patches/hurd_support.diff =================================================================== --- trunk/commons-daemon/debian/patches/hurd_support.diff 2010-11-21 18:48:30 UTC (rev 13087) +++ trunk/commons-daemon/debian/patches/hurd_support.diff 2010-11-21 19:08:26 UTC (rev 13088) @@ -7,8 +7,8 @@ supported_os="kfreebsd-gnu" LIBS="$LIBS -ldl -lpthread" ;; -+ hurd*) -+ CFLAGS="$CFLAGS -pthread" ++ gnu*) ++ CFLAGS="$CFLAGS -DOS_HURD -DDSO_DLFCN -pthread " + supported_os="hurd-gnu" + LIBS="$LIBS -ldl -lpthread" + ;; Deleted: trunk/commons-daemon/debian/patches/jsvc_reopen_usr1.diff =================================================================== --- trunk/commons-daemon/debian/patches/jsvc_reopen_usr1.diff 2010-11-21 18:48:30 UTC (rev 13087) +++ trunk/commons-daemon/debian/patches/jsvc_reopen_usr1.diff 2010-11-21 19:08:26 UTC (rev 13088) @@ -1,70 +0,0 @@ -Description: make jsvc reopen log files on SIGUSR1 - Used to handle logrotate. -Bug: http://bugs.debian.org/460183 -Author: Damien Raude-Morvan <[email protected]> -Last-Update: 2010-08-31 -Forwared: yes, https://issues.apache.org/jira/browse/DAEMON-95 - ---- a/src/native/unix/native/jsvc-unix.c -+++ b/src/native/unix/native/jsvc-unix.c -@@ -54,10 +54,14 @@ - pid_t logger_pid=0; /* the logger process pid */ - static bool stopping = false; - static bool doreload = false; -+static bool doreopen = false; - static void (*handler_int) (int) = NULL; -+static void (*handler_usr1) (int) = NULL; - static void (*handler_hup) (int) = NULL; - static void (*handler_trm) (int) = NULL; - -+static void set_output(char *outfile, char *errfile, bool redirectstdin, -+ char *procname); - static int run_controller(arg_data *args, home_data *data, uid_t uid, - gid_t gid); - -@@ -119,6 +123,10 @@ - doreload = true; - } - break; -+ case SIGUSR1: -+ log_debug("Caught SIGUSR1: Reopening logs"); -+ doreopen = true; -+ break; - default: - log_debug("Caught unknown signal %d", sig); - break; -@@ -359,6 +367,7 @@ - case SIGTERM: - case SIGINT: - case SIGHUP: -+ case SIGUSR1: - log_debug("Forwarding signal %d to process %d", sig, controlled); - kill(controlled, sig); - signal(sig, controller); -@@ -693,6 +702,7 @@ - - /* Install signal handlers */ - handler_hup = signal_set(SIGHUP, handler); -+ handler_usr1 = signal_set(SIGUSR1, handler); - handler_trm = signal_set(SIGTERM, handler); - handler_int = signal_set(SIGINT, handler); - controlled = getpid(); -@@ -707,6 +717,10 @@ - /* pause() is not threadsafe */ - sleep(60); - #endif -+ if(doreopen) { -+ doreopen = false; -+ set_output(args->outfile, args->errfile, args->redirectstdin, args->procname); -+ } - } - remove_tmp_file(args); - log_debug("Shutdown or reload requested: exiting"); -@@ -1028,6 +1042,7 @@ - SetTerm(cygwincontroller); - #endif - signal(SIGHUP, controller); -+ signal(SIGUSR1, controller); - signal(SIGTERM, controller); - signal(SIGINT, controller); - Modified: trunk/commons-daemon/debian/patches/libgcj_PR31700.diff =================================================================== --- trunk/commons-daemon/debian/patches/libgcj_PR31700.diff 2010-11-21 18:48:30 UTC (rev 13087) +++ trunk/commons-daemon/debian/patches/libgcj_PR31700.diff 2010-11-21 19:08:26 UTC (rev 13088) @@ -4,12 +4,12 @@ Last-Update: 2010-07-28 --- a/src/native/unix/native/java.c +++ b/src/native/unix/native/java.c -@@ -224,7 +224,7 @@ +@@ -227,7 +227,7 @@ return false; } #endif - arg.ignoreUnrecognized = FALSE; + arg.ignoreUnrecognized = JNI_TRUE; - arg.nOptions = args->onum; - arg.nOptions++; /* Add abort code */ + arg.nOptions = args->onum + 4; /* pid, ppid and abort */ opt = (JavaVMOption *) malloc(arg.nOptions * sizeof(JavaVMOption)); + for (x = 0; x < args->onum; x++) { Modified: trunk/commons-daemon/debian/patches/series =================================================================== --- trunk/commons-daemon/debian/patches/series 2010-11-21 18:48:30 UTC (rev 13087) +++ trunk/commons-daemon/debian/patches/series 2010-11-21 19:08:26 UTC (rev 13088) @@ -5,5 +5,3 @@ hppa_support.diff arm_support.diff hurd_support.diff -syslog.diff -jsvc_reopen_usr1.diff Deleted: trunk/commons-daemon/debian/patches/syslog.diff =================================================================== --- trunk/commons-daemon/debian/patches/syslog.diff 2010-11-21 18:48:30 UTC (rev 13087) +++ trunk/commons-daemon/debian/patches/syslog.diff 2010-11-21 19:08:26 UTC (rev 13088) @@ -1,313 +0,0 @@ -Description: support for redirecting stdout to syslog - Unclutter debug and error output by not - including timestamp and PID. This is superfluous for syslog logging, and - can be readily added by an external filter otherwise. - Document SYSLOG usage -Bug: http://bugs.debian.org/402878 -Author: Marcus Better <[email protected]> -Last-Update: 2010-07-28 -Forwared: yes, https://issues.apache.org/jira/browse/DAEMON-80 ---- a/src/native/unix/native/debug.c -+++ b/src/native/unix/native/debug.c -@@ -23,6 +23,12 @@ - /* Wether debug is enabled or not */ - bool log_debug_flag = false; - -+/* Wether SYSLOG logging (for stderr) is enable or not. */ -+bool log_stderr_syslog_flag; -+ -+/* Wether SYSLOG logging (for stdout) is enable or not. */ -+bool log_stdout_syslog_flag; -+ - /* The name of the jsvc binary. */ - char *log_prog = "jsvc"; - -@@ -39,12 +45,13 @@ - if (fmt == NULL) - return; - -- now = time(NULL); -- nowtm = localtime(&now); -- strftime(buff, sizeof(buff), "%d/%m/%Y %T", nowtm); -- - va_start(ap, fmt); -- fprintf(stderr, "%s %d %s debug: ", buff, getpid(), log_prog); -+ if (log_stderr_syslog_flag != false) { -+ now = time(NULL); -+ nowtm = localtime(&now); -+ strftime(buff, sizeof(buff), "%d/%m/%Y %T", nowtm); -+ fprintf(stderr, "%s %d %s debug: ", buff, getpid(), log_prog); -+ } - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - fflush(stderr); -@@ -62,12 +69,13 @@ - if (fmt == NULL) - return; - -- now = time(NULL); -- nowtm = localtime(&now); -- strftime(buff, sizeof(buff), "%d/%m/%Y %T", nowtm); -- - va_start(ap, fmt); -- fprintf(stderr, "%s %d %s error: ", buff, getpid(), log_prog); -+ if (log_stderr_syslog_flag != false) { -+ now = time(NULL); -+ nowtm = localtime(&now); -+ strftime(buff, sizeof(buff), "%d/%m/%Y %T", nowtm); -+ fprintf(stderr, "%s %d %s error: ", buff, getpid(), log_prog); -+ } - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - fflush(stderr); ---- a/src/native/unix/native/jsvc-unix.c -+++ b/src/native/unix/native/jsvc-unix.c -@@ -24,8 +24,11 @@ - #include <sys/wait.h> - #include <fcntl.h> - #include <stdio.h> -+#include <string.h> - #include <pwd.h> - #include <grp.h> -+#include <syslog.h> -+#include <errno.h> - #ifdef OS_LINUX - #include <sys/prctl.h> - #include <sys/syscall.h> -@@ -48,12 +51,16 @@ - static mode_t envmask; /* mask to create the files */ - - pid_t controlled = 0; /* the child process pid */ -+pid_t logger_pid=0; /* the logger process pid */ - static bool stopping = false; - static bool doreload = false; - static void (*handler_int) (int) = NULL; - static void (*handler_hup) (int) = NULL; - static void (*handler_trm) (int) = NULL; - -+static int run_controller(arg_data *args, home_data *data, uid_t uid, -+ gid_t gid); -+ - #ifdef OS_CYGWIN - /* - * File locking routine -@@ -741,11 +748,63 @@ - return freopen(outfile, mode, stream); - } - -+#define LOGBUF_SIZE 1024 -+ -+/* Read from file descriptors. Log to syslog. */ -+static int logger_child(int out_fd, int err_fd, char *procname) -+{ -+ fd_set rfds; -+ struct timeval tv; -+ int retval, n; -+ char buf[LOGBUF_SIZE]; -+ -+ if (out_fd > err_fd) { -+ n = out_fd + 1; -+ } else { -+ n = err_fd + 1; -+ } -+ -+ openlog(procname, LOG_PID, LOG_DAEMON); -+ -+ while (1) { -+ FD_ZERO(&rfds); -+ FD_SET(out_fd, &rfds); -+ FD_SET(err_fd, &rfds); -+ tv.tv_sec = 60; -+ tv.tv_usec = 0; -+ retval = select(n, &rfds, NULL, NULL, &tv); -+ if (retval == -1) -+ syslog(LOG_ERR, "select: %s", strerror(errno)); -+ else if (retval) { -+ if (FD_ISSET(out_fd, &rfds)) { -+ ssize_t n = read(out_fd, buf, LOGBUF_SIZE-1); -+ if (n < 0) { -+ syslog(LOG_ERR, "read: %s", strerror(errno)); -+ } else if (n > 0 && buf[0] != '\n') { -+ buf[n] = 0; -+ syslog(LOG_INFO, "%s", buf); -+ } -+ } -+ if (FD_ISSET(err_fd, &rfds)) { -+ ssize_t n = read(err_fd, buf, LOGBUF_SIZE-1); -+ if (n < 0) { -+ syslog(LOG_ERR, "read: %s", strerror(errno)); -+ } else if (n > 0 && buf[0] != '\n') { -+ buf[n] = 0; -+ syslog(LOG_ERR, "%s", buf); -+ } -+ } -+ } -+ } -+} -+ - /** - * Redirect stdin, stdout, stderr. - */ --static void set_output(char *outfile, char *errfile, bool redirectstdin) -+static void set_output(char *outfile, char *errfile, bool redirectstdin, char *procname) - { -+ int out_pipe[2] = {0, 0}, err_pipe[2] = {0, 0}, fork_needed = 0; -+ - if (redirectstdin == true) { - freopen("/dev/null", "r", stdin); - } -@@ -760,11 +819,31 @@ - if (strcmp(outfile, "&2") == 0 && strcmp(errfile, "&1") == 0) { - outfile = "/dev/null"; - } -- if (strcmp(outfile, "&2") != 0) { -+ if (strcmp(outfile, "SYSLOG") == 0) { -+ freopen("/dev/null", "a", stdout); -+ /* Send stdout to syslog through a logger process */ -+ if (pipe(out_pipe) == -1) { -+ log_error("cannot create stdout pipe: %s", -+ strerror(errno)); -+ } else { -+ fork_needed = 1; -+ log_stdout_syslog_flag = true; -+ } -+ } else if (strcmp(outfile, "&2") != 0) { - loc_freopen(outfile, "a", stdout); - } - -- if (strcmp(errfile, "&1") != 0) { -+ if (strcmp(errfile, "SYSLOG") == 0) { -+ freopen("/dev/null", "a", stderr); -+ /* Send stderr to syslog through a logger process */ -+ if (pipe(err_pipe) == -1) { -+ log_error("cannot create stderr pipe: %s", -+ strerror(errno)); -+ } else { -+ fork_needed = 1; -+ log_stderr_syslog_flag = true; -+ } -+ } else if (strcmp(errfile, "&1") != 0) { - loc_freopen(errfile, "a", stderr); - } - else { -@@ -775,17 +854,43 @@ - close(1); - dup(2); - } -+ -+ if (fork_needed) { -+ pid_t pid = fork(); -+ if (pid == -1) { -+ log_error("cannot create logger process: %s", strerror(errno)); -+ } else { -+ if (pid) { -+ logger_pid = pid; -+ if (out_pipe[0] != 0) { -+ close(out_pipe[0]); -+ if (dup2(out_pipe[1], 1) == -1) { -+ log_error("cannot redirect stdout to pipe for syslog: %s", -+ strerror(errno)); -+ } -+ } -+ if (err_pipe[0] != 0) { -+ close(err_pipe[0]); -+ if (dup2(err_pipe[1], 2) == -1) { -+ log_error("cannot redirect stderr to pipe for syslog: %s", -+ strerror(errno)); -+ } -+ } -+ } else { -+ exit(logger_child(out_pipe[0], err_pipe[0], procname)); -+ } -+ } -+ } - } - - int main(int argc, char *argv[]) - { - arg_data *args = NULL; - home_data *data = NULL; -- int status = 0; - pid_t pid = 0; - uid_t uid = 0; - gid_t gid = 0; -- time_t laststart; -+ int res; - - /* Parse command line arguments */ - args = arguments(argc, argv); -@@ -890,11 +995,27 @@ - } - - envmask = umask(0077); -- set_output(args->outfile, args->errfile, args->redirectstdin); -+ set_output(args->outfile, args->errfile, args->redirectstdin, args->procname); -+ -+ res = run_controller(args, data, uid, gid); -+ if (logger_pid != 0) { -+ kill(logger_pid, SIGTERM); -+ } -+ -+ return res; -+} -+ -+static int run_controller(arg_data *args, home_data *data, uid_t uid, -+ gid_t gid) -+{ -+ pid_t pid=0; -+ - - /* We have to fork: this process will become the controller and the other - will be the child */ - while ((pid = fork()) != -1) { -+ time_t laststart; -+ int status=0; - /* We forked (again), if this is the child, we go on normally */ - if (pid == 0) - exit(child(args, data, uid, gid)); -@@ -975,4 +1096,3 @@ - log_debug("Killing self with TERM signal"); - kill(controlled, SIGTERM); - } -- ---- a/src/native/unix/man/jsvc.1.xml -+++ b/src/native/unix/man/jsvc.1.xml -@@ -146,15 +146,19 @@ - <varlistentry> - <term><option>-outfile</option> /full/path/to/file</term> - <listitem> -- <para>Location for output from stdout (defaults to /dev/null). Use -- the value '&2' to simulate '1>&2'</para> -+ <para>Location for output from stdout (defaults to -+ /dev/null). Use the value '&2' to simulate -+ '1>&2', or 'SYSLOG' to send output to the system -+ log.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><option>-errfile</option> /full/path/to/file</term> - <listitem> -- <para>Location for output from stderr (defaults to /dev/null). Use -- the value '&1' to simulate '2>&1'</para> -+ <para>Location for output from stderr (defaults to -+ /dev/null). Use the value '&1' to simulate -+ '2>&1', or 'SYSLOG' to send output to the system -+ log.</para> - </listitem> - </varlistentry> - <varlistentry> ---- a/src/native/unix/native/debug.h -+++ b/src/native/unix/native/debug.h -@@ -26,6 +26,12 @@ - */ - extern bool log_debug_flag; - -+/* Wether SYSLOG logging (for stderr) is enable or not. */ -+extern bool log_stderr_syslog_flag; -+ -+/* Wether SYSLOG logging (for stdout) is enable or not. */ -+extern bool log_stdout_syslog_flag; -+ - /** - * The name of the jsvc binary. - */ _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/mailman/listinfo/pkg-java-commits

