[pkg-java] r12834 - in trunk/commons-daemon/debian: . patches
Damien Raude-Morvan
drazzib at alioth.debian.org
Wed Jul 28 12:59:47 UTC 2010
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 <drazzib at 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.Salinger at 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 <marcus at 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 <konqueror at gmx.de>
+Author: Marcus Better <marcus at 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 <iwamatsu at nigauri.org>
-Author: Damien Raude-Morvan <drazzib at 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 <iwamatsu at nigauri.org>
+Author: Damien Raude-Morvan <drazzib at 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 <marcus at 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>
More information about the pkg-java-commits
mailing list