Glenn Burkhardt
Sun, 08 Jun 2003 18:12:15 -0700
Attached is a patch for the problems I found with Solaris 8 and Mandrake 9.1 I've been trying to get a GNU Savannah login, but it looks like they are down tonight. It turns out that there are two database packages available with the Mandrake distribution that support 'ndbm' calls: db1 (derived from Berkeley code), and GNU gdbm. I've used the gdbm versions of the ndbm calls for years, with no trouble. I can't remember which one got linked in with nmh when I built it last year. I think that it's a safe bet that either will work. The 'configure.in' script will test for libdbm.a, libdb1.a, and libgdbm.a, in that order, and pull 'ndbm.h' from /usr/include/db1 or /usr/include/gdbm. I've chosen to remove diversion of standard error to /dev/null for the "broken vi" test, so Solaris systems with 'vim' installed don't hang. Since the variables used in the definition of MAN1, et al, in man/Makefile don't get changed after the definition, I don't believe that there's any harm in changing ":=" to "=", which allows the makefile to work with Solaris make and GNU make. The patch gets applied with "patch -b -p1 < misc-build.patch", so man/Makefile.in gets changed, not the top level Makefile.in. So if you could, please apply these patches and make an RC2 for folks to try out. Thanks.
*** old/uip/slocal.c 2002-07-02 18:09:15.000000000 -0400
--- ./uip/slocal.c 2003-06-08 19:18:08.000000000 -0400
***************
*** 52,59 ****
--- 52,63 ----
#ifdef HAVE_DB1_NDBM_H
#include <db1/ndbm.h>
#else
+ #ifdef HAVE_GDBM_NDBM_H
+ #include <gdbm/ndbm.h>
+ #else
#include <ndbm.h>
#endif
+ #endif
#include <utmp.h>
*** old/config.h.in 2002-07-03 10:52:01.000000000 -0400
--- ./config.h.in 2003-06-08 19:30:24.000000000 -0400
***************
*** 279,284 ****
--- 279,287 ----
/* Define if your system has db1/ndbm.h instead of ndbm.h (ppclinux) */
#undef HAVE_DB1_NDBM_H
+ /* Define if your system has gdbm/ndbm.h instead of ndbm.h */
+ #undef HAVE_GDBM_NDBM_H
+
/* Define to the header containing the declaration of initgroups() on your
system, if any. AIX 4.[13], SunOS 4.1.3, and ULTRIX 4.2A have the function
in libc but don't have a declaration anywhere. */
*** old/man/Makefile.in 2001-01-19 16:22:08.000000000 -0500
--- ./man/Makefile.in 2003-06-08 19:10:46.000000000 -0400
***************
*** 71,79 ****
MAN8SRC = ap. conflict. dp. fmtdump. \
install-mh. mh-mts. post.
! MAN1 := $(MAN1SRC:.=.$(manext1))
! MAN5 := $(MAN5SRC:.=.$(manext5))
! MAN8 := $(MAN8SRC:.=.$(manext8))
# Since vmh is not built or distributed, neither should vmh.1 be
# MANEXTRA = vmh.
--- 71,79 ----
MAN8SRC = ap. conflict. dp. fmtdump. \
install-mh. mh-mts. post.
! MAN1 = $(MAN1SRC:.=.$(manext1))
! MAN5 = $(MAN5SRC:.=.$(manext5))
! MAN8 = $(MAN8SRC:.=.$(manext8))
# Since vmh is not built or distributed, neither should vmh.1 be
# MANEXTRA = vmh.
*** ./old/configure.in 2002-07-03 10:15:29.000000000 -0400
--- ./configure.in 2003-06-08 20:29:32.000000000 -0400
***************
*** 364,370 ****
dnl Check for broken vi
AC_CACHE_CHECK(for broken vi, nmh_cv_attvibug,
[if echo 'r /nonexist-file
! q' | ex > /dev/null 2>&1
then
nmh_cv_attvibug=no
else
--- 364,370 ----
dnl Check for broken vi
AC_CACHE_CHECK(for broken vi, nmh_cv_attvibug,
[if echo 'r /nonexist-file
! q' | ex > /dev/null
then
nmh_cv_attvibug=no
else
***************
*** 553,564 ****
dnl Checks for ndbm
AC_CHECK_FUNC(dbm_open, ,
AC_CHECK_LIB(ndbm, dbm_open, ,
! AC_CHECK_LIB(dbm, dbm_open)))
dnl ----------------
dnl CHECK FOR NDBM.H
dnl ----------------
! AC_CHECK_HEADERS(db1/ndbm.h)
dnl ----------------
dnl CHECK FOR HESIOD
--- 553,567 ----
dnl Checks for ndbm
AC_CHECK_FUNC(dbm_open, ,
AC_CHECK_LIB(ndbm, dbm_open, ,
! AC_CHECK_LIB(dbm, dbm_open, ,
! AC_CHECK_LIB(db1, dbm_open, ,
! AC_CHECK_LIB(gdbm, dbm_open)))))
dnl ----------------
dnl CHECK FOR NDBM.H
dnl ----------------
! AC_CHECK_HEADERS(db1/ndbm.h, ,
! AC_CHECK_HEADERS(gdbm/ndbm.h))
dnl ----------------
dnl CHECK FOR HESIOD