[Pkg-e-devel] Bug#535773: ecore: FTBFS on hurd-i386

Manuel Menal mmenal at hurdfr.org
Sat Jul 4 21:25:02 UTC 2009


Package: ecore
Severity: important
Tags: patch
Justification: fails to build from source

Hi,

ecore uses the SA_SIGINFO flag for sigaction(), which is not implemented on GNU/Hurd.
It does not use the feature itself though. I have attached a patch that makes the use
of SA_SIGINFO conditional.

This patch also disable building libecore-fb-svn-01 on GNU/Hurd, as it's not supported.
Unfortunately, Architecture: !hurd-i386 (or Architecture: linux-any...) is not supported
yet, so I have included the output of type-handling -n hurd. You might want to do
otherwise.

Manuel Menal

diff -urp ecore-0.9.9.060/debian/control ../ecore-0.9.9.060/debian/control
--- ecore-0.9.9.060/debian/control	2009-07-04 22:23:53.000000000 +0200
+++ ../ecore-0.9.9.060/debian/control	2009-07-04 22:47:18.000000000 +0200
@@ -61,7 +61,7 @@ Description: Ecore Evas Wrapper Library
  This package contains the Ecore Evas wrapper functions.
 
 Package: libecore-fb-svn-01
-Architecture: any
+Architecture: darwin-alpha freebsd-alpha kfreebsd-alpha knetbsd-alpha kopensolaris-alpha alpha netbsd-alpha openbsd-alpha solaris-alpha darwin-amd64 freebsd-amd64 kfreebsd-amd64 knetbsd-amd64 kopensolaris-amd64 amd64 netbsd-amd64 openbsd-amd64 solaris-amd64 darwin-arm freebsd-arm kfreebsd-arm knetbsd-arm kopensolaris-arm arm netbsd-arm openbsd-arm solaris-arm darwin-armeb freebsd-armeb kfreebsd-armeb knetbsd-armeb kopensolaris-armeb armeb netbsd-armeb openbsd-armeb solaris-armeb armel darwin-avr32 freebsd-avr32 kfreebsd-avr32 knetbsd-avr32 kopensolaris-avr32 avr32 netbsd-avr32 openbsd-avr32 solaris-avr32 darwin-hppa freebsd-hppa kfreebsd-hppa knetbsd-hppa kopensolaris-hppa hppa netbsd-hppa openbsd-hppa solaris-hppa darwin-i386 freebsd-i386 kfreebsd-i386 knetbsd-i386 kopensolaris-i386 i386 netbsd-i386 openbsd-i386 solaris-i386 darwin-ia64 freebsd-ia64 kfreebsd-ia64 knetbsd-ia64 kopensolaris-ia64 ia64 netbsd-ia64 openbsd-ia64 solaris-ia64 lpia darwin-m32r freebsd-m32r kfreebsd
 -m32r knetbsd-m32r kopensolaris-m32r m32r netbsd-m32r openbsd-m32r solaris-m32r darwin-m68k freebsd-m68k kfreebsd-m68k knetbsd-m68k kopensolaris-m68k m68k netbsd-m68k openbsd-m68k solaris-m68k darwin-mips freebsd-mips kfreebsd-mips knetbsd-mips kopensolaris-mips mips netbsd-mips openbsd-mips solaris-mips darwin-mipsel freebsd-mipsel kfreebsd-mipsel knetbsd-mipsel kopensolaris-mipsel mipsel netbsd-mipsel openbsd-mipsel solaris-mipsel darwin-powerpc freebsd-powerpc kfreebsd-powerpc knetbsd-powerpc kopensolaris-powerpc powerpc netbsd-powerpc openbsd-powerpc solaris-powerpc darwin-ppc64 freebsd-ppc64 kfreebsd-ppc64 knetbsd-ppc64 kopensolaris-ppc64 ppc64 netbsd-ppc64 openbsd-ppc64 solaris-ppc64 darwin-s390 freebsd-s390 kfreebsd-s390 knetbsd-s390 kopensolaris-s390 s390 netbsd-s390 openbsd-s390 solaris-s390 darwin-s390x freebsd-s390x kfreebsd-s390x knetbsd-s390x kopensolaris-s390x s390x netbsd-s390x openbsd-s390x solaris-s390x darwin-sh3 freebsd-sh3 kfreebsd-sh3 knetbsd-sh3 kopenso
 laris-sh3 sh3 netbsd-sh3 openbsd-sh3 solaris-sh3 darwin-sh3eb freebsd-sh3eb kfreebsd-sh3eb knetbsd-sh3eb kopensolaris-sh3eb sh3eb netbsd-sh3eb openbsd-sh3eb solaris-sh3eb darwin-sh4 freebsd-sh4 kfreebsd-sh4 knetbsd-sh4 kopensolaris-sh4 sh4 netbsd-sh4 openbsd-sh4 solaris-sh4 darwin-sh4eb freebsd-sh4eb kfreebsd-sh4eb knetbsd-sh4eb kopensolaris-sh4eb sh4eb netbsd-sh4eb openbsd-sh4eb solaris-sh4eb darwin-sparc freebsd-sparc kfreebsd-sparc knetbsd-sparc kopensolaris-sparc sparc netbsd-sparc openbsd-sparc solaris-sparc
 Depends: ${misc:Depends}, ${shlibs:Depends}
 Description: Ecore frame buffer system functions
  This is the core event abstraction layer and X abstraction layer that makes
@@ -166,7 +166,7 @@ Depends: ${misc:Depends}, libecore-svn-0
          libecore-con-svn-01 (= ${binary:Version}),
          libecore-config-svn-01 (= ${binary:Version}),
          libecore-evas-svn-01 (= ${binary:Version}),
-         libecore-fb-svn-01 (= ${binary:Version}),
+         libecore-fb-svn-01 (= ${binary:Version}) [!hurd-i386],
          libecore-file-svn-01 (= ${binary:Version}),
          libecore-imf-svn-01 (= ${binary:Version}),
          libecore-ipc-svn-01 (= ${binary:Version}),
diff -urp ecore-0.9.9.060/debian/libecore-dev.install ../ecore-0.9.9.060/debian/libecore-dev.install
--- ecore-0.9.9.060/debian/libecore-dev.install	2009-07-04 22:23:53.000000000 +0200
+++ ../ecore-0.9.9.060/debian/libecore-dev.install	2009-07-04 22:46:46.000000000 +0200
@@ -4,7 +4,6 @@ debian/tmp/usr/lib/libecore.so
 debian/tmp/usr/lib/libecore_config.so
 debian/tmp/usr/lib/libecore_con.so
 debian/tmp/usr/lib/libecore_evas.so
-debian/tmp/usr/lib/libecore_fb.so
 debian/tmp/usr/lib/libecore_file.so
 debian/tmp/usr/lib/libecore_imf_evas.so
 debian/tmp/usr/lib/libecore_imf.so
diff -urp ecore-0.9.9.060/debian/libecore-dev.install.linux ../ecore-0.9.9.060/debian/libecore-dev.install.linux
--- ecore-0.9.9.060/debian/libecore-dev.install.linux	1970-01-01 01:00:00.000000000 +0100
+++ ../ecore-0.9.9.060/debian/libecore-dev.install.linux	2009-07-04 22:46:50.000000000 +0200
@@ -0,0 +1,1 @@
+debian/tmp/usr/lib/libecore_fb.so
diff -urp ecore-0.9.9.060/src/lib/ecore/ecore_signal.c ../ecore-0.9.9.060/src/lib/ecore/ecore_signal.c
--- ecore-0.9.9.060/src/lib/ecore/ecore_signal.c	2009-02-01 00:08:15.000000000 +0100
+++ ../ecore-0.9.9.060/src/lib/ecore/ecore_signal.c	2009-06-22 19:17:27.000000000 +0200
@@ -23,23 +23,29 @@
 /* valgrind in some versions/setups uses SIGRT's... hmmm */
 #undef SIGRTMIN
 
+#ifdef SA_SIGACTION
 typedef void (*Signal_Handler)(int sig, siginfo_t *si, void *foo);
+  #define _ecore_signal_callback(signame) _ecore_signal_callback_##signame(int sig __UNUSED__, siginfo_ *si, void *foo __UNUSED__)
+#else
+typedef void (*Signal_Handler)(int sig);
+  #define _ecore_signal_callback(signame) _ecore_signal_callback_##signame(int sig)
+#endif
 
 static void _ecore_signal_callback_set(int sig, Signal_Handler func);
-static void _ecore_signal_callback_ignore(int sig, siginfo_t *si, void *foo);
-static void _ecore_signal_callback_sigchld(int sig, siginfo_t *si, void *foo);
-static void _ecore_signal_callback_sigusr1(int sig, siginfo_t *si, void *foo);
-static void _ecore_signal_callback_sigusr2(int sig, siginfo_t *si, void *foo);
-static void _ecore_signal_callback_sighup(int sig, siginfo_t *si, void *foo);
-static void _ecore_signal_callback_sigquit(int sig, siginfo_t *si, void *foo);
-static void _ecore_signal_callback_sigint(int sig, siginfo_t *si, void *foo);
-static void _ecore_signal_callback_sigterm(int sig, siginfo_t *si, void *foo);
+static void _ecore_signal_callback(ignore);
+static void _ecore_signal_callback(sigchld);
+static void _ecore_signal_callback(sigusr1);
+static void _ecore_signal_callback(sigusr2);
+static void _ecore_signal_callback(sighup);
+static void _ecore_signal_callback(sigquit);
+static void _ecore_signal_callback(sigint);
+static void _ecore_signal_callback(sigterm);
 #ifdef SIGPWR
-static void _ecore_signal_callback_sigpwr(int sig, siginfo_t *si, void *foo);
+static void _ecore_signal_callback(sigpwr);
 #endif
 
 #ifdef SIGRTMIN
-static void _ecore_signal_callback_sigrt(int sig, siginfo_t *si, void *foo);
+static void _ecore_signal_callback(sigrt);
 #endif
 
 static int _ecore_signal_exe_exit_delay(void *data);
@@ -447,28 +453,38 @@ _ecore_signal_callback_set(int sig, Sign
 {
    struct sigaction  sa;
 
+#ifdef SA_SIGINFO
    sa.sa_sigaction = func;
    sa.sa_flags = SA_RESTART | SA_SIGINFO;
+#else
+   sa.sa_handler = func;
+   sa.sa_flags = SA_RESTART;
+#endif
    sigemptyset(&sa.sa_mask);
    sigaction(sig, &sa, NULL);
 }
 
+
 static void
-_ecore_signal_callback_ignore(int sig __UNUSED__, siginfo_t *si __UNUSED__, void *foo __UNUSED__)
+_ecore_signal_callback(ignore)
 {
 }
 
 static void
-_ecore_signal_callback_sigchld(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+_ecore_signal_callback(sigchld)
 {
    volatile sig_atomic_t n;
    n = sigchld_count;
    if (n < MAXSIGQ)
      {
+#ifdef SA_SIGACTION
 	if (si)
 	  sigchld_info[n] = *si;
 	else
 	  sigchld_info[n].si_signo = 0;
+#else
+        sigchld_info[n].si_signo = sig;
+#endif
      }
 
    sigchld_count++;
@@ -476,96 +492,120 @@ _ecore_signal_callback_sigchld(int sig _
 }
 
 static void
-_ecore_signal_callback_sigusr1(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+_ecore_signal_callback(sigusr1)
 {
    volatile sig_atomic_t n;
    n = sigchld_count;
    if (n < MAXSIGQ)
      {
+#ifdef SA_SIGACTION
 	if (si)
 	  sigusr1_info[n] = *si;
 	else
 	  sigusr1_info[n].si_signo = 0;
+#else
+        sigusr1_info[n].si_signo = sig;
+#endif
      }
    sigusr1_count++;
    sig_count++;
 }
 
 static void
-_ecore_signal_callback_sigusr2(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+_ecore_signal_callback(sigusr2)
 {
    volatile sig_atomic_t n;
    n = sigchld_count;
    if (n < MAXSIGQ)
      {
+#ifdef SA_SIGACTION
 	if (si)
 	  sigusr2_info[n] = *si;
 	else
 	  sigusr2_info[n].si_signo = 0;
+#else
+        sigusr2_info[n].si_signo = sig;
+#endif
      }
    sigusr2_count++;
    sig_count++;
 }
 
 static void
-_ecore_signal_callback_sighup(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+_ecore_signal_callback(sighup)
 {
    volatile sig_atomic_t n;
    n = sigchld_count;
    if (n < MAXSIGQ)
      {
+#ifdef SA_SIGACTION
 	if (si)
 	  sighup_info[n] = *si;
 	else
 	  sighup_info[n].si_signo = 0;
+#else
+        sighup_info[n].si_signo = sig;
+#endif
      }
    sighup_count++;
    sig_count++;
 }
 
 static void
-_ecore_signal_callback_sigquit(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+_ecore_signal_callback(sigquit)
 {
    volatile sig_atomic_t n;
    n = sigchld_count;
    if (n < MAXSIGQ)
      {
+#ifdef SA_SIGACTION
 	if (si)
 	  sigquit_info[n] = *si;
 	else
 	  sigquit_info[n].si_signo = 0;
+#else
+        sigquit_info[n].si_signo = sig;
+#endif
      }
    sigquit_count++;
    sig_count++;
 }
 
 static void
-_ecore_signal_callback_sigint(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+_ecore_signal_callback(sigint)
 {
    volatile sig_atomic_t n;
    n = sigchld_count;
    if (n < MAXSIGQ)
      {
+#ifdef SA_SIGACTIOn
 	if (si)
 	  sigint_info[n] = *si;
 	else
 	  sigint_info[n].si_signo = 0;
+#else
+        sigint_info[n].si_signo = sig;
+#endif
      }
    sigint_count++;
    sig_count++;
 }
 
 static void
-_ecore_signal_callback_sigterm(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+_ecore_signal_callback(sigterm)
 {
    volatile sig_atomic_t n;
    n = sigchld_count;
    if (n < MAXSIGQ)
      {
+#ifdef SA_SIGACTION
 	if (si)
 	  sigterm_info[n] = *si;
 	else
 	  sigterm_info[n].si_signo = 0;
+#else
+        sigterm_info[n].si_signo = sig;
+#endif
      }
    sigterm_count++;
    sig_count++;
@@ -573,16 +613,20 @@ _ecore_signal_callback_sigterm(int sig _
 
 #ifdef SIGPWR
 static void
-_ecore_signal_callback_sigpwr(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+_ecore_signal_callback(sigpwr)
 {
    volatile sig_atomic_t n;
    n = sigchld_count;
    if (n < MAXSIGQ)
      {
+#ifdef SA_SIGACTION
 	if (si)
 	  sigpwr_info[n] = *si;
 	else
 	  sigpwr_info[n].si_signo = 0;
+#else
+        sigpwr_info[n].si_signo = sig;
+#endif
      }
    sigpwr_count++;
    sig_count++;
@@ -591,16 +635,20 @@ _ecore_signal_callback_sigpwr(int sig __
 
 #ifdef SIGRTMIN
 static void
-_ecore_signal_callback_sigrt(int sig, siginfo_t *si, void *foo __UNUSED__)
+_ecore_signal_callback(sigrt)
 {
    volatile sig_atomic_t n;
    n = sigchld_count;
    if (n < MAXSIGQ)
      {
+#ifdef SA_SIGACTION
 	if (si)
 	  sigrt_info[n][sig - SIGRTMIN] = *si;
 	else
 	  sigrt_info[n][sig - SIGRTMIN].si_signo = 0;
+#else
+        sigrt_info[n][sig - SIGRTMIN].si_signo = sig;
+#endif
      }
    sigrt_count[sig - SIGRTMIN]++;
    sig_count++;
-- 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





More information about the Pkg-e-devel mailing list