[Fwd: Bug#388242: cyrus-imapd-2.2: FTBFS on GNU/kFreeBSD]
Sven Mueller
cyrus at incase.de
Mon Sep 25 14:16:37 EDT 2006
Hi.
I'm one of the Debian package maintainers for cyrus-imapd. We received a
report at http://bugs.debian.org/388242 that cyrus-imapd fails to build
on the kfreebsd port of Debian. Problem seems to be that sys/exec.h
exports PS_STRINGS, but that this macro is only usable while compiling
the kernel. To be more precise, it exports
#define PS_STRINGS (USRSTACK - sizeof(struct ps_strings))
But USRSTACK is only defined for kernel builds. He (Petr Salinger)
initially proposed to use:
==========================================================
--- cyrus-imapd-2.2-2.2.13/configure.in
+++ cyrus-imapd-2.2-2.2.13/configure.in
@@ -300,7 +284,7 @@
AC_CACHE_VAL(cyrus_cv_sys_psstrings, AC_TRY_CPP([
#include <machine/vmparam.h>
#include <sys/exec.h>
-#ifndef PS_STRINGS
+#if !defined(PS_STRINGS) || defined (__GLIBC__)
#include </nonexistent>
#endif],cyrus_cv_sys_psstrings=yes,cyrus_cv_sys_psstrings=no))
if test $cyrus_cv_sys_psstrings = yes; then
==========================================================
to fix it, but I objected since the test for __GLIBC__ to be defined
seemed too broad. After this objection, Petr proposed to use this
snippet instead of the above patch to test wether PS_STRINGS should be used:
==========================================================
if test "$spt_type" = ""; then
AC_MSG_CHECKING(for PS_STRINGS)
AC_CACHE_VAL(cyrus_cv_sys_psstrings, AC_COMPILE_IFELSE([
#include <machine/vmparam.h>
#include <sys/exec.h>
void *p = PS_STRINGS;
],cyrus_cv_sys_psstrings=yes,cyrus_cv_sys_psstrings=no))
if test $cyrus_cv_sys_psstrings = yes; then
spt_type=SPT_PSSTRINGS
fi
AC_MSG_RESULT($cyrus_cv_sys_psstrings)
fi
==========================================================
This seems to work fine on Linux and as Petr proposed this, I think he
also tested it on GNU/kFreeBSD (i.e. a FreeBSD with GNU userspace
instead of the normal portage system). I have no way to check this on
other systems.
Comments?
Suggestions for other ways to fix it?
I attached the patch I applied to configure.in.
Regards,
Sven
PS: Please keep 388242 at bugs.debian.org Cc'ed
PPS: I would have sent this to the andrew bugzilla, but I'm still unable
to create an account there.
-------------- next part --------------
diff -urNad cyrus-imapd-2.2.13/configure.in /tmp/dpep.6LRag9/cyrus-imapd-2.2.13/configure.in
--- cyrus-imapd-2.2.13/configure.in 2006-09-25 20:13:04.000000000 +0200
+++ /tmp/dpep.6LRag9/cyrus-imapd-2.2.13/configure.in 2006-09-25 20:13:06.102258297 +0200
@@ -297,16 +297,15 @@
fi
if test "$spt_type" = ""; then
AC_MSG_CHECKING(for PS_STRINGS)
- AC_CACHE_VAL(cyrus_cv_sys_psstrings, AC_TRY_CPP([
+AC_CACHE_VAL(cyrus_cv_sys_psstrings, AC_COMPILE_IFELSE([
#include <machine/vmparam.h>
#include <sys/exec.h>
-#ifndef PS_STRINGS
-#include </nonexistent>
-#endif],cyrus_cv_sys_psstrings=yes,cyrus_cv_sys_psstrings=no))
- if test $cyrus_cv_sys_psstrings = yes; then
- spt_type=SPT_PSSTRINGS
- fi
- AC_MSG_RESULT($cyrus_cv_sys_psstrings)
+void *p = PS_STRINGS;
+],cyrus_cv_sys_psstrings=yes,cyrus_cv_sys_psstrings=no))
+ if test $cyrus_cv_sys_psstrings = yes; then
+ spt_type=SPT_PSSTRINGS
+ fi
+ AC_MSG_RESULT($cyrus_cv_sys_psstrings)
fi
if test "$spt_type" = ""; then
AC_MSG_CHECKING(for SCO)
More information about the Cyrus-devel
mailing list