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