Package: e17 Severity: important Tags: patch Justification: fails to build from source
Hello, e17 fails to build on hurd-i386 because it uses the PATH_MAX constant (which is optional according to POSIX and undefined on GNU/Hurd) and the SA_SIGINFO flag for sigaction(), which is unsupported on this platform. I have attached a patch that sets PATH_MAX to 4096 when it's undefined, and makes the use of SA_SIGINFO conditional (e17 does not use the feature at all, actually). diff -urp e17-0.16.999.060/debian/control ../e17-0.16.999.060/debian/control --- e17-0.16.999.060/debian/control 2009-07-04 23:31:25.000000000 +0200 +++ ../e17-0.16.999.060/debian/control 2009-06-24 18:25:25.000000000 +0200 @@ -8,7 +8,7 @@ Build-Depends: debhelper (>= 6), cdbs, l libedje-dev (>= 0.9.9.060), libefreet-dev (>= 0.5.0.060), libecore-dev (>= 0.9.9.060), libedbus-dev (>= 0.5.0.060), libevas-dev (>= 0.9.9.060), libeina-dev (>= 0.0.2.060), - libasound2-dev, libxext-dev, libeet-bin, libpam0g-dev + libasound2-dev [!hurd-i386], libxext-dev, libeet-bin, libpam0g-dev Standards-Version: 3.8.1 Vcs-Git: git://git.debian.org/pkg-e/apps/e.git Vcs-Browser: http://git.debian.org/?p=pkg-e/apps/e.git diff -urp e17-0.16.999.060/doc/Makefile.in ../e17-0.16.999.060/doc/Makefile.in --- e17-0.16.999.060/doc/Makefile.in 2009-04-22 15:15:53.000000000 +0200 diff -urp e17-0.16.999.060/src/bin/e_desklock.c ../e17-0.16.999.060/src/bin/e_desklock.c --- e17-0.16.999.060/src/bin/e_desklock.c 2009-04-10 14:19:10.000000000 +0200 +++ ../e17-0.16.999.060/src/bin/e_desklock.c 2009-06-24 19:15:44.000000000 +0200 @@ -692,7 +692,7 @@ _desklock_auth(char *passwd) struct sigaction action; action.sa_handler = SIG_DFL; - action.sa_flags = SA_ONSTACK | SA_NODEFER | SA_RESETHAND | SA_SIGINFO; + action.sa_flags = SA_ONSTACK | SA_NODEFER | SA_RESETHAND; sigemptyset(&action.sa_mask); sigaction(SIGSEGV, &action, NULL); sigaction(SIGILL, &action, NULL); diff -urp e17-0.16.999.060/src/bin/e_fm_op.h ../e17-0.16.999.060/src/bin/e_fm_op.h --- e17-0.16.999.060/src/bin/e_fm_op.h 2009-02-26 04:13:47.000000000 +0100 +++ ../e17-0.16.999.060/src/bin/e_fm_op.h 2009-06-24 19:29:09.000000000 +0200 @@ -3,6 +3,10 @@ */ #ifdef E_TYPEDEFS +#ifndef PATH_MAX + #define PATH_MAX 4096 +#endif + #define E_FM_OP_DEBUG(...) fprintf(stderr, __VA_ARGS__) #define E_FM_OP_MAGIC 314 diff -urp e17-0.16.999.060/src/bin/e.h ../e17-0.16.999.060/src/bin/e.h --- e17-0.16.999.060/src/bin/e.h 2009-03-18 02:43:07.000000000 +0100 +++ ../e17-0.16.999.060/src/bin/e.h 2009-06-24 18:55:13.000000000 +0200 @@ -18,6 +18,10 @@ #define _FILE_OFFSET_BITS 64 #endif +#ifndef PATH_MAX +#define PATH_MAX 4096 +#endif + #ifdef __linux__ #include <features.h> #endif diff -urp e17-0.16.999.060/src/bin/e_main.c ../e17-0.16.999.060/src/bin/e_main.c --- e17-0.16.999.060/src/bin/e_main.c 2009-04-14 01:48:30.000000000 +0200 +++ ../e17-0.16.999.060/src/bin/e_main.c 2009-06-24 19:18:49.000000000 +0200 @@ -134,6 +134,7 @@ main(int argc, char **argv) char buf[PATH_MAX]; char *s; struct sigaction action; + int sig_flags; double t, tstart; #ifdef TS_DO @@ -156,30 +157,38 @@ main(int argc, char **argv) /* or ability to gdb attach and debug at this point - better than your */ /* wm/desktop vanishing and not knowing what happened */ - action.sa_sigaction = e_sigseg_act; - action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO; +#ifdef SA_SIGINFO + sig_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO; + #define handler sa_handler +#else + sig_flags = SA_NODEFER | SA_RESETHAND; + #define handler sa_sigaction +#endif + + action.handler = e_sigseg_act; + action.sa_flags = sig_flags; sigemptyset(&action.sa_mask); sigaction(SIGSEGV, &action, NULL); - action.sa_sigaction = e_sigill_act; - action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO; + action.handler = e_sigill_act; + action.sa_flags = sig_flags; sigemptyset(&action.sa_mask); sigaction(SIGILL, &action, NULL); - action.sa_sigaction = e_sigfpe_act; - action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO; + action.handler = e_sigfpe_act; + action.sa_flags = sig_flags; sigemptyset(&action.sa_mask); sigaction(SIGFPE, &action, NULL); - action.sa_sigaction = e_sigbus_act; - action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO; + action.handler = e_sigbus_act; + action.sa_flags = sig_flags; sigemptyset(&action.sa_mask); sigaction(SIGBUS, &action, NULL); - action.sa_sigaction = e_sigabrt_act; - action.sa_flags = SA_NODEFER | SA_RESETHAND | SA_SIGINFO; + action.handler = e_sigabrt_act; + action.sa_flags = sig_flags; sigemptyset(&action.sa_mask); sigaction(SIGABRT, &action, NULL); { write(2, "**** FLOATING POINT EXCEPTION ****\n", 35); diff -urp e17-0.16.999.060/src/bin/e_signals.h ../e17-0.16.999.060/src/bin/e_signals.h --- e17-0.16.999.060/src/bin/e_signals.h 2009-02-26 04:13:47.000000000 +0100 +++ ../e17-0.16.999.060/src/bin/e_signals.h 2009-06-24 19:12:54.000000000 +0200 @@ -7,11 +7,17 @@ #ifndef E_SIGNALS_H #define E_SIGNALS_H -EAPI void e_sigseg_act(int x, siginfo_t *info, void *data); -EAPI void e_sigill_act(int x, siginfo_t *info, void *data); -EAPI void e_sigfpe_act(int x, siginfo_t *info, void *data); -EAPI void e_sigbus_act(int x, siginfo_t *info, void *data); -EAPI void e_sigabrt_act(int x, siginfo_t *info, void *data); +#ifdef SA_SIGINFO + #define e_signal_act(sig) e_##sig##_act(int x, siginfo_t *info, void *data) +#else + #define e_signal_act(sig) e_##sig##_act(int x) +#endif + +EAPI void e_signal_act(sigseg); +EAPI void e_signal_act(sigill); +EAPI void e_signal_act(sigfpe); +EAPI void e_signal_act(sigbus); +EAPI void e_signal_act(sigabrt); #endif #endif --- e17-0.16.999.060/src/bin/e_signals.c 2009-03-27 15:21:05.000000000 +0100 +++ ../e17-0.16.999.060/src/bin/e_signals.c 2009-07-04 23:38:58.000000000 +0200 @@ -31,7 +31,7 @@ _e_x_composite_shutdown(void) * with the -rdynamic flag to GCC for any sort of decent output. */ EAPI void -e_sigseg_act(int x, siginfo_t *info, void *data) +e_signal_act(sigseg) { void *array[255]; size_t size; @@ -58,7 +58,7 @@ e_sigseg_act(int x, siginfo_t *info, voi } #else EAPI void -e_sigseg_act(int x, siginfo_t *info, void *data) +e_signal_act(sigseg) { write(2, "**** SEGMENTATION FAULT ****\n", 29); _e_x_composite_shutdown(); @@ -80,7 +80,7 @@ e_sigseg_act(int x, siginfo_t *info, voi #endif EAPI void -e_sigill_act(int x, siginfo_t *info, void *data) +e_signal_act(sigill) { write(2, "**** ILLEGAL INSTRUCTION ****\n", 30); _e_x_composite_shutdown(); @@ -101,7 +101,7 @@ e_sigill_act(int x, siginfo_t *info, voi } EAPI void -e_sigfpe_act(int x, siginfo_t *info, void *data) +e_signal_act(sigfpe) { write(2, "**** FLOATING POINT EXCEPTION ****\n", 35); _e_x_composite_shutdown(); @@ -122,7 +122,7 @@ e_sigfpe_act(int x, siginfo_t *info, voi } EAPI void -e_sigbus_act(int x, siginfo_t *info, void *data) +e_signal_act(sigbus) { write(2, "**** BUS ERROR ****\n", 21); _e_x_composite_shutdown(); @@ -143,7 +143,7 @@ e_sigbus_act(int x, siginfo_t *info, voi } EAPI void -e_sigabrt_act(int x, siginfo_t *info, void *data) +e_signal_act(sigabrt) { write(2, "**** ABORT ****\n", 21); _e_x_composite_shutdown(); -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: hurd-i386 (i686-AT386) Kernel: GNU-Mach 1.3.99/Hurd-0.3 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org