Hi,

I looked into the build problems and with the attached patch I can 
successfully build the package and even the test complete successfully.
The main problem is with heap_block in alloc.h, which causes all following 
structures to be misaligned.
The other problem is that the configure script doesn't configure the fault 
handler correctly, the m68k check is too late and CFG_FAULT already has 
been set fault-posix.h.
The rest are a few more touch instructions to avoid calling the auto 
stuff (even until now the build still tried to call automake and 
autoheader).

bye, Roman
diff -ur gnu-smalltalk-2.1.8.org/debian/rules gnu-smalltalk-2.1.8/debian/rules
--- gnu-smalltalk-2.1.8.org/debian/rules        2006-10-16 17:50:47.000000000 
+0200
+++ gnu-smalltalk-2.1.8/debian/rules    2006-10-16 19:27:02.000000000 +0200
@@ -49,8 +49,14 @@
 configure: configure-stamp
 configure-stamp:
        dh_testdir
+       touch sigsegv/aclocal.m4 && \
+       touch sigsegv/Makefile.in && \
+       touch sigsegv/config.h.in && \
+       touch sigsegv/configure && \
        touch configure.ac && \
        touch aclocal.m4 && \
+       touch Makefile.in && \
+       touch config.h.in && \
        touch configure
        # Package does not ship with these
        # Get them from autotools-dev
diff -ur gnu-smalltalk-2.1.8.org/libgst/alloc.h 
gnu-smalltalk-2.1.8/libgst/alloc.h
--- gnu-smalltalk-2.1.8.org/libgst/alloc.h      2003-05-27 19:41:15.000000000 
+0200
+++ gnu-smalltalk-2.1.8/libgst/alloc.h  2006-10-16 18:59:24.000000000 +0200
@@ -43,6 +43,7 @@
   size_t size;                  /* Size of objects in this block */
   unsigned mmap_block : 1;      /* Whether the block was mmap-ed */
   unsigned user : 1;
+  unsigned pad : 30;
   union {
     struct {
       int nr;                   /* Nr of objects in block */
diff -ur gnu-smalltalk-2.1.8.org/sigsegv/configure 
gnu-smalltalk-2.1.8/sigsegv/configure
--- gnu-smalltalk-2.1.8.org/sigsegv/configure   2003-12-19 17:08:45.000000000 
+0100
+++ gnu-smalltalk-2.1.8/sigsegv/configure       2006-10-16 19:04:01.000000000 
+0200
@@ -21125,7 +21125,7 @@
 
     if test "$cross_compiling" = yes; then
   case "$host" in
-
+         m68k-*-linux*) sv_cv_fault_linux_m68k=yes ;;
          *)
            cat >conftest.$ac_ext <<_ACEOF
 
@@ -23111,6 +23111,12 @@
       esac
       FAULT_CONTEXT='struct sigcontext'
     fi
+    if test "$CFG_FAULT" = fault-none.h && test "$sv_cv_fault_linux_m68k" = 
yes; then
+      case "$host_cpu" in
+        m68*) CFG_FAULT=fault-linux-m68k.h ;;
+      esac
+      FAULT_CONTEXT='struct sigcontext'
+    fi
     if test "$CFG_FAULT" = fault-none.h && test "$sv_cv_fault_linux_powerpc" = 
yes; then
       case "$host_cpu" in
         powerpc* | rs6000) CFG_FAULT=fault-linux-powerpc.h ;;
@@ -23187,14 +23193,6 @@
         FAULT_CONTEXT_INCLUDE='#include <ucontext.h>'
       fi
     fi
-                    if test "$CFG_FAULT" = fault-none.h && test 
"$sv_cv_fault_linux_m68k" = yes; then
-      case "$host_cpu" in
-        m68*)
-          CFG_FAULT=fault-linux-m68k.h
-          FAULT_CONTEXT='struct sigcontext'
-          ;;
-      esac
-    fi
     if test "$CFG_FAULT" = fault-none.h; then
       sv_cv_have_sigsegv_recovery=no
                         case "$host_os" in
diff -ur gnu-smalltalk-2.1.8.org/sigsegv/configure.in 
gnu-smalltalk-2.1.8/sigsegv/configure.in
--- gnu-smalltalk-2.1.8.org/sigsegv/configure.in        2003-12-19 
17:01:08.000000000 +0100
+++ gnu-smalltalk-2.1.8/sigsegv/configure.in    2006-10-16 18:59:25.000000000 
+0200
@@ -154,7 +154,7 @@
       [((unsigned long *) &more) [21]])
   
     dnl FIXME: Put in some more known values into the third argument.
-    SV_TRY_FAULT([Linux/m68k], sv_cv_fault_linux_m68k, [],
+    SV_TRY_FAULT([Linux/m68k], sv_cv_fault_linux_m68k, [m68k-*-linux*],
       [#include <asm/sigcontext.h>
     #include "$srcdir/src/fault-linux-m68k.c"],
       [int sig, int code, struct sigcontext *scp],
@@ -278,6 +278,12 @@
       esac
       FAULT_CONTEXT='struct sigcontext'
     fi
+    if test "$CFG_FAULT" = fault-none.h && test "$sv_cv_fault_linux_m68k" = 
yes; then
+      case "$host_cpu" in
+        m68*) CFG_FAULT=fault-linux-m68k.h ;;
+      esac
+      FAULT_CONTEXT='struct sigcontext'
+    fi
     if test "$CFG_FAULT" = fault-none.h && test "$sv_cv_fault_linux_powerpc" = 
yes; then
       case "$host_cpu" in
         powerpc* | rs6000) CFG_FAULT=fault-linux-powerpc.h ;;
@@ -354,18 +360,6 @@
         FAULT_CONTEXT_INCLUDE='#include <ucontext.h>'
       fi
     fi
-    dnl
-    dnl Next, the cases where there is a hairy CPU dependent way to get the
-    dnl fault address.
-    dnl
-    if test "$CFG_FAULT" = fault-none.h && test "$sv_cv_fault_linux_m68k" = 
yes; then
-      case "$host_cpu" in
-        m68*)
-          CFG_FAULT=fault-linux-m68k.h
-          FAULT_CONTEXT='struct sigcontext'
-          ;;
-      esac
-    fi
     if test "$CFG_FAULT" = fault-none.h; then
       sv_cv_have_sigsegv_recovery=no
       dnl

Reply via email to