[commons-daemon] 23/52: Imported Debian patch 1.0.2-2
Tony Mancill
tmancill at moszumanska.debian.org
Wed Nov 12 05:31:30 UTC 2014
This is an automated email from the git hooks/post-receive script.
tmancill pushed a commit to branch master
in repository commons-daemon.
commit b2e13cbb7846105c09a35a8dd5cddd8ff597191f
Author: Damien Raude-Morvan <drazzib at debian.org>
Date: Wed Jul 28 14:59:18 2010 +0200
Imported Debian patch 1.0.2-2
---
debian/changelog | 10 +
debian/patches/arm_support.diff | 14 +
debian/patches/hppa_support.diff | 22 ++
debian/patches/kfreebsd_support.diff | 18 ++
debian/patches/libgcj_PR31700.diff | 15 +
debian/patches/old_capabilities.diff | 27 ++
debian/patches/powerpcspe_support.diff | 13 +
debian/patches/series | 9 +-
.../patches/{sh4-support.diff => sh4_support.diff} | 0
debian/patches/syslog.diff | 334 +++++++++++++++++++++
10 files changed, 461 insertions(+), 1 deletion(-)
diff --git a/debian/changelog b/debian/changelog
index 6dd2edf..2226a28 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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 ]
diff --git a/debian/patches/arm_support.diff b/debian/patches/arm_support.diff
new file mode 100644
index 0000000..8bbe7e7
--- /dev/null
+++ b/debian/patches/arm_support.diff
@@ -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;;
diff --git a/debian/patches/hppa_support.diff b/debian/patches/hppa_support.diff
new file mode 100644
index 0000000..3818bbf
--- /dev/null
+++ b/debian/patches/hppa_support.diff
@@ -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"
diff --git a/debian/patches/kfreebsd_support.diff b/debian/patches/kfreebsd_support.diff
new file mode 100644
index 0000000..44e3bd9
--- /dev/null
+++ b/debian/patches/kfreebsd_support.diff
@@ -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"])
diff --git a/debian/patches/libgcj_PR31700.diff b/debian/patches/libgcj_PR31700.diff
new file mode 100644
index 0000000..36942a6
--- /dev/null
+++ b/debian/patches/libgcj_PR31700.diff
@@ -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));
diff --git a/debian/patches/old_capabilities.diff b/debian/patches/old_capabilities.diff
new file mode 100644
index 0000000..11e4486
--- /dev/null
+++ b/debian/patches/old_capabilities.diff
@@ -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);
diff --git a/debian/patches/powerpcspe_support.diff b/debian/patches/powerpcspe_support.diff
new file mode 100644
index 0000000..f0c9e74
--- /dev/null
+++ b/debian/patches/powerpcspe_support.diff
@@ -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*)
diff --git a/debian/patches/series b/debian/patches/series
index a4197af..56d307c 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -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
diff --git a/debian/patches/sh4-support.diff b/debian/patches/sh4_support.diff
similarity index 100%
rename from debian/patches/sh4-support.diff
rename to debian/patches/sh4_support.diff
diff --git a/debian/patches/syslog.diff b/debian/patches/syslog.diff
new file mode 100644
index 0000000..4e8dd43
--- /dev/null
+++ b/debian/patches/syslog.diff
@@ -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>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/commons-daemon.git
More information about the pkg-java-commits
mailing list