Author: drazzib Date: 2010-07-28 12:59:44 +0000 (Wed, 28 Jul 2010) New Revision: 12834
Added: trunk/commons-daemon/debian/patches/arm_support.diff trunk/commons-daemon/debian/patches/hppa_support.diff trunk/commons-daemon/debian/patches/kfreebsd_support.diff trunk/commons-daemon/debian/patches/libgcj_PR31700.diff trunk/commons-daemon/debian/patches/old_capabilities.diff trunk/commons-daemon/debian/patches/powerpcspe_support.diff trunk/commons-daemon/debian/patches/sh4_support.diff trunk/commons-daemon/debian/patches/syslog.diff Removed: trunk/commons-daemon/debian/patches/sh4-support.diff Modified: trunk/commons-daemon/debian/changelog trunk/commons-daemon/debian/patches/series Log: * Re-add missing patches (lost during merge of new upstream release): - debian/patches/syslog.diff: Support for logging to syslog. - debian/patches/old_capabilities.diff: Work with older Linux capabilities. - debian/patches/libgcj_PR31700.diff: Bug in GCJ handling of -X options. - debian/patches/*_support.diff: Support for other Debian architectures. Modified: trunk/commons-daemon/debian/changelog =================================================================== --- trunk/commons-daemon/debian/changelog 2010-07-28 12:57:48 UTC (rev 12833) +++ trunk/commons-daemon/debian/changelog 2010-07-28 12:59:44 UTC (rev 12834) @@ -1,3 +1,13 @@ +commons-daemon (1.0.2-2) unstable; urgency=low + + * Re-add missing patches (lost during merge of new upstream release): + - debian/patches/syslog.diff: Support for logging to syslog. + - debian/patches/old_capabilities.diff: Work with older Linux capabilities. + - debian/patches/libgcj_PR31700.diff: Bug in GCJ handling of -X options. + - debian/patches/*_support.diff: Support for other Debian architectures. + + -- Damien Raude-Morvan <draz...@debian.org> Wed, 28 Jul 2010 14:59:18 +0200 + commons-daemon (1.0.2-1) unstable; urgency=low [ Thierry Carrez ] Added: trunk/commons-daemon/debian/patches/arm_support.diff =================================================================== --- trunk/commons-daemon/debian/patches/arm_support.diff (rev 0) +++ trunk/commons-daemon/debian/patches/arm_support.diff 2010-07-28 12:59:44 UTC (rev 12834) @@ -0,0 +1,14 @@ +Description: Add support for ARM/ARMel arch +Last-Update: 2010-07-28 +--- a/src/native/unix/support/apsupport.m4 ++++ b/src/native/unix/support/apsupport.m4 +@@ -80,6 +80,9 @@ + ;; + esac + case $host_cpu in ++ arm*) ++ CFLAGS="$CFLAGS -DCPU=\\\"$host_cpu\\\"" ++ HOST_CPU=$host_cpu;; + powerpc*) + CFLAGS="$CFLAGS -DCPU=\\\"$host_cpu\\\"" + HOST_CPU=$host_cpu;; Added: trunk/commons-daemon/debian/patches/hppa_support.diff =================================================================== --- trunk/commons-daemon/debian/patches/hppa_support.diff (rev 0) +++ trunk/commons-daemon/debian/patches/hppa_support.diff 2010-07-28 12:59:44 UTC (rev 12834) @@ -0,0 +1,22 @@ +Description: Fix support for HPPA arch +Last-Update: 2010-07-28 +--- a/src/native/unix/support/apsupport.m4 ++++ b/src/native/unix/support/apsupport.m4 +@@ -107,14 +107,9 @@ + CFLAGS="$CFLAGS -DCPU=\\\"alpha\\\"" + supported_os="alpha" + HOST_CPU=alpha;; +- hppa2.0w) +- CFLAGS="$CFLAGS -DCPU=\\\"PA_RISC2.0W\\\"" +- supported_os="hp-ux" +- HOST_CPU=PA_RISC2.0W;; +- hppa2.0) +- CFLAGS="$CFLAGS -DCPU=\\\"PA_RISC2.0\\\"" +- supported_os="hp-ux" +- HOST_CPU=PA_RISC2.0;; ++ hppa) ++ CFLAGS="$CFLAGS -DCPU=\\\"$host_cpu\\\"" ++ HOST_CPU=$host_cpu;; + mipsel) + CFLAGS="$CFLAGS -DCPU=\\\"mipsel\\\"" + supported_os="mipsel" Added: trunk/commons-daemon/debian/patches/kfreebsd_support.diff =================================================================== --- trunk/commons-daemon/debian/patches/kfreebsd_support.diff (rev 0) +++ trunk/commons-daemon/debian/patches/kfreebsd_support.diff 2010-07-28 12:59:44 UTC (rev 12834) @@ -0,0 +1,18 @@ +Description: Add support for kFreeBSD/GNU arch +Bug: http://bugs.debian.org/498376 +Author: Petr Salinger <petr.salin...@seznam.cz> +Last-Update: 2010-07-28 +--- a/src/native/unix/support/apsupport.m4 ++++ b/src/native/unix/support/apsupport.m4 +@@ -69,6 +69,11 @@ + CFLAGS="$CFLAGS -DOS_AIX -DDSO_DLFCN" + LDFLAGS="$LDFLAGS -ldl" + ;; ++ kfreebsd*-gnu) ++ CFLAGS="$CFLAGS -DOS_BSD -DDSO_DLFCN -pthread" ++ supported_os="kfreebsd-gnu" ++ LIBS="$LIBS -ldl -lpthread" ++ ;; + *) + AC_MSG_RESULT([failed]) + AC_MSG_ERROR([Unsupported operating system "$host_os"]) Added: trunk/commons-daemon/debian/patches/libgcj_PR31700.diff =================================================================== --- trunk/commons-daemon/debian/patches/libgcj_PR31700.diff (rev 0) +++ trunk/commons-daemon/debian/patches/libgcj_PR31700.diff 2010-07-28 12:59:44 UTC (rev 12834) @@ -0,0 +1,15 @@ +Description: Workaround for libgcj/PR31700 in handling -X options. +Bug: vendor, http://gcc.gnu.org/PR31700 +Author: Marcus Better <mar...@better.se> +Last-Update: 2010-07-28 +--- a/src/native/unix/native/java.c ++++ b/src/native/unix/native/java.c +@@ -201,7 +201,7 @@ + return(false); + } + #endif +- arg.ignoreUnrecognized=FALSE; ++ arg.ignoreUnrecognized=JNI_TRUE; + arg.nOptions=args->onum; + arg.nOptions++; /* Add abort code */ + opt=(JavaVMOption *)malloc(arg.nOptions*sizeof(JavaVMOption)); Added: trunk/commons-daemon/debian/patches/old_capabilities.diff =================================================================== --- trunk/commons-daemon/debian/patches/old_capabilities.diff (rev 0) +++ trunk/commons-daemon/debian/patches/old_capabilities.diff 2010-07-28 12:59:44 UTC (rev 12834) @@ -0,0 +1,27 @@ +Description: Patch to handle old capabilities version in jsvc-unix.c + Print a useful error message if capabilities module is missing. +Bug: http://bugs.debian.org/412690 +Bug: http://bugs.debian.org/412478 +Author: Mickael Kock <konque...@gmx.de> +Author: Marcus Better <mar...@better.se> +Last-Update: 2010-07-28 +--- a/src/native/unix/native/jsvc-unix.c ++++ b/src/native/unix/native/jsvc-unix.c +@@ -171,14 +171,15 @@ + struct __user_cap_data_struct cap; + + memset(&caphead, 0, sizeof caphead); +- caphead.version = _LINUX_CAPABILITY_VERSION; ++ caphead.version = 0x19980330; + caphead.pid = 0; + memset(&cap, 0, sizeof cap); + cap.effective = caps; + cap.permitted = caps; + cap.inheritable = caps; + if (syscall(__NR_capset, &caphead, &cap) < 0) { +- log_error("syscall failed in set_caps"); ++ log_error("set_caps: failed to set capabilities"); ++ log_error("check that your kernel supports capabilities"); + return(-1); + } + return(0); Added: trunk/commons-daemon/debian/patches/powerpcspe_support.diff =================================================================== --- trunk/commons-daemon/debian/patches/powerpcspe_support.diff (rev 0) +++ trunk/commons-daemon/debian/patches/powerpcspe_support.diff 2010-07-28 12:59:44 UTC (rev 12834) @@ -0,0 +1,13 @@ +Description: Add support for powerpcspe arch +Last-Update: 2010-07-28 +--- a/src/native/unix/support/apsupport.m4 ++++ b/src/native/unix/support/apsupport.m4 +@@ -80,7 +80,7 @@ + ;; + esac + case $host_cpu in +- powerpc) ++ powerpc*) + CFLAGS="$CFLAGS -DCPU=\\\"$host_cpu\\\"" + HOST_CPU=$host_cpu;; + sparc*) Modified: trunk/commons-daemon/debian/patches/series =================================================================== --- trunk/commons-daemon/debian/patches/series 2010-07-28 12:57:48 UTC (rev 12833) +++ trunk/commons-daemon/debian/patches/series 2010-07-28 12:59:44 UTC (rev 12834) @@ -1 +1,8 @@ -sh4-support.diff +old_capabilities.diff +libgcj_PR31700.diff +sh4_support.diff +kfreebsd_support.diff +powerpcspe_support.diff +hppa_support.diff +arm_support.diff +syslog.diff Deleted: trunk/commons-daemon/debian/patches/sh4-support.diff =================================================================== --- trunk/commons-daemon/debian/patches/sh4-support.diff 2010-07-28 12:57:48 UTC (rev 12833) +++ trunk/commons-daemon/debian/patches/sh4-support.diff 2010-07-28 12:59:44 UTC (rev 12834) @@ -1,18 +0,0 @@ -Description: support Renesas SH4 -Bug: http://bugs.debian.org/564166 -Author: Nobuhiro Iwamatsu <iwama...@nigauri.org> -Author: Damien Raude-Morvan <draz...@debian.org> -Last-Update: 2010-07-27 -Forwarded: no ---- a/src/native/unix/support/apsupport.m4 -+++ b/src/native/unix/support/apsupport.m4 -@@ -122,6 +122,9 @@ - CFLAGS="$CFLAGS -DCPU=\\\"s390\\\"" - supported_os="s390" - HOST_CPU=s390;; -+ sh*) -+ CFLAGS="$CFLAGS -DCPU=\\\"$host_cpu\\\"" -+ HOST_CPU=$host_cpu;; - *) - AC_MSG_RESULT([failed]) - AC_MSG_ERROR([Unsupported CPU architecture "$host_cpu"]);; Copied: trunk/commons-daemon/debian/patches/sh4_support.diff (from rev 12828, trunk/commons-daemon/debian/patches/sh4-support.diff) =================================================================== --- trunk/commons-daemon/debian/patches/sh4_support.diff (rev 0) +++ trunk/commons-daemon/debian/patches/sh4_support.diff 2010-07-28 12:59:44 UTC (rev 12834) @@ -0,0 +1,18 @@ +Description: support Renesas SH4 +Bug: http://bugs.debian.org/564166 +Author: Nobuhiro Iwamatsu <iwama...@nigauri.org> +Author: Damien Raude-Morvan <draz...@debian.org> +Last-Update: 2010-07-27 +Forwarded: no +--- a/src/native/unix/support/apsupport.m4 ++++ b/src/native/unix/support/apsupport.m4 +@@ -122,6 +122,9 @@ + CFLAGS="$CFLAGS -DCPU=\\\"s390\\\"" + supported_os="s390" + HOST_CPU=s390;; ++ sh*) ++ CFLAGS="$CFLAGS -DCPU=\\\"$host_cpu\\\"" ++ HOST_CPU=$host_cpu;; + *) + AC_MSG_RESULT([failed]) + AC_MSG_ERROR([Unsupported CPU architecture "$host_cpu"]);; Added: trunk/commons-daemon/debian/patches/syslog.diff =================================================================== --- trunk/commons-daemon/debian/patches/syslog.diff (rev 0) +++ trunk/commons-daemon/debian/patches/syslog.diff 2010-07-28 12:59:44 UTC (rev 12834) @@ -0,0 +1,334 @@ +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 <mar...@better.se> +Last-Update: 2010-07-28 +Forwared: no +--- a/src/native/unix/native/debug.c ++++ b/src/native/unix/native/debug.c +@@ -15,10 +15,8 @@ + limitations under the License. + */ + /* @version $Id: debug.c 480469 2006-11-29 08:22:04Z bayard $ */ ++#include <stdio.h> + #include "jsvc.h" +-#include <sys/types.h> +-#include <unistd.h> +-#include <time.h> + + /* Wether debug is enabled or not */ + bool log_debug_flag = false; +@@ -29,19 +27,9 @@ + /* Dump a debug message to stderr */ + void log_debug(const char *fmt, ...) { + va_list ap; +- time_t now; +- struct tm *nowtm; +- char buff[80]; + + if (log_debug_flag==false) return; +- 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); + vfprintf(stderr,fmt,ap); + fprintf(stderr,"\n"); + fflush(stderr); +@@ -51,21 +39,11 @@ + /* Dump an error message to stderr */ + void log_error(const char *fmt, ...) { + va_list ap; +- time_t now; +- struct tm *nowtm; +- char buff[80]; + + 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); + vfprintf(stderr,fmt,ap); + fprintf(stderr,"\n"); + fflush(stderr); + va_end(ap); + } +- +--- 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> +@@ -45,12 +48,17 @@ + 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 +@@ -625,10 +633,62 @@ + 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); + } +@@ -643,12 +703,30 @@ + if(strcmp(outfile, "&2") == 0 && strcmp(errfile,"&1") == 0) { + outfile="/dev/null"; + } +- if(strcmp(outfile, "&2") != 0) { +- loc_freopen(outfile, "a", stdout); ++ 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; ++ } ++ } else if (strcmp(outfile, "&2") != 0) { ++ loc_freopen(outfile, "a", stdout); + } + +- if(strcmp(errfile,"&1") != 0) { +- loc_freopen(errfile, "a", stderr); ++ 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; ++ } ++ } else if (strcmp(errfile, "&1") != 0) { ++ loc_freopen(errfile, "a", stderr); + } else { + close(2); + dup(1); +@@ -657,16 +735,42 @@ + 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); +@@ -689,7 +793,7 @@ + return(0); + } + +-#ifdef OS_LINUX ++#if OS_LINUX + /* On some UNIX operating systems, we need to REPLACE this current + process image with another one (thru execve) to allow the correct + loading of VMs (notably this is for Linux). Set, replace, and go. */ +@@ -763,24 +867,39 @@ + } + + 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)); + laststart = time(NULL); + + /* We are in the controller, we have to forward all interesting signals + to the child, and wait for it to die */ +- controlled=pid; ++ controlled = pid; + #ifdef OS_CYGWIN + SetTerm(cygwincontroller); + #endif +- signal(SIGHUP,controller); +- signal(SIGTERM,controller); +- signal(SIGINT,controller); ++ signal(SIGHUP, controller); ++ signal(SIGTERM, controller); ++ signal(SIGINT, controller); + + while (waitpid(pid,&status,0)!=pid); + +@@ -830,7 +949,6 @@ + /* Got out of the loop? A fork() failed then. */ + log_error("Cannot decouple controller/child processes"); + return(1); +- + } + + void main_reload(void) { +@@ -842,4 +960,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> _______________________________________________ pkg-java-commits mailing list pkg-java-comm...@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/pkg-java-commits