From 46e208ffa9fffc3057df7a698f2124b3998a24ac Mon Sep 17 00:00:00 2001 From: Eduardo Chappa Date: Mon, 25 Nov 2019 11:08:46 -0700 Subject: * Add lnpno port to imap/src/osdep/unix/Makefile to account for ports that do not need/want to build using pam. Add more robustness to the configure process, to add -lcrypt to the build flags when --with-bundled-tools=no is given. --- configure | 132 ++++++++++++++++++++++++++++++++++--------- configure.ac | 49 +++++++++++----- imap/Makefile | 12 ++-- imap/src/osdep/unix/Makefile | 11 +++- pith/pine.hlp | 2 +- 5 files changed, 158 insertions(+), 48 deletions(-) diff --git a/configure b/configure index 269eff8..77843ac 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac Rev:27 by chappa@washington.edu. +# From configure.ac Rev:28 by chappa@washington.edu. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for alpine 2.21.99999. # @@ -830,7 +830,6 @@ with_libiconv_prefix with_libintl_prefix enable_dmalloc with_dmalloc_dir -with_bundled_tools with_date_stamp with_host_stamp with_ps_cmd @@ -934,6 +933,7 @@ with_supplied_regex with_pthread with_system_mail_directory with_c_client_target +with_bundled_tools with_ipv6 with_ntlm ' @@ -1607,8 +1607,6 @@ Optional Packages: --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-dmalloc-dir=DIR Root of dmalloc lib/include path - --with-bundled-tools Build additional tools (mtest, imapd, etc.) Default: - --with-bundled-tools=no --with-date-stamp=DATE Set this as the date this program was built. Default: output of `date` --with-host-stamp=HOST Set name of computer for compilation. Default: @@ -1784,6 +1782,8 @@ Optional Packages: Directory where local mail is delivered --with-c-client-target=TARGET IMAP build target (see imap/Makefile) + --with-bundled-tools Build additional tools (mtest, imapd, etc.) Default: + --with-bundled-tools=no --without-ipv6 Disable IPv6, primarily to work around resolver problems --without-ntlm Disable NTLM client support @@ -15218,18 +15218,6 @@ $as_echo "#define ENABLE_DMALLOC 1" >>confdefs.h fi -alpine_c_client_bundled="no" - -# Check whether --with-bundled-tools was given. -if test "${with_bundled_tools+set}" = set; then : - withval=$with_bundled_tools; - if test "x$withval" = "xyes" ; then - alpine_c_client_bundled="" - fi - -fi - - ALPINE_datestamp=`date` # Check whether --with-date-stamp was given. @@ -17879,6 +17867,18 @@ fi +alpine_c_client_bundled="no" + +# Check whether --with-bundled-tools was given. +if test "${with_bundled_tools+set}" = set; then : + withval=$with_bundled_tools; + if test "x$withval" = "xyes" ; then + alpine_c_client_bundled="" + fi + +fi + + alpine_PAM="none" case "$host" in @@ -17920,9 +17920,10 @@ case "$host" in alpine_PAM="yes" else systype="LNX" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_start in -lpam" >&5 -$as_echo_n "checking for pam_start in -lpam... " >&6; } -if ${ac_cv_lib_pam_pam_start+:} false; then : + if test -z "$alpine_c_client_bundled" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for am_start in -lpam" >&5 +$as_echo_n "checking for am_start in -lpam... " >&6; } +if ${ac_cv_lib_pam_am_start+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -17936,27 +17937,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char pam_start (); +char am_start (); int main () { -return pam_start (); +return am_start (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pam_pam_start=yes + ac_cv_lib_pam_am_start=yes else - ac_cv_lib_pam_pam_start=no + ac_cv_lib_pam_am_start=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_start" >&5 -$as_echo "$ac_cv_lib_pam_pam_start" >&6; } -if test "x$ac_cv_lib_pam_pam_start" = xyes; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_am_start" >&5 +$as_echo "$ac_cv_lib_pam_am_start" >&6; } +if test "x$ac_cv_lib_pam_am_start" = xyes; then : alpine_c_client_target="lnp" alpine_PAM="yes" @@ -17971,6 +17972,13 @@ else fi + else + if test -f /etc/shadow ; then + alpine_c_client_target="slx" + else + alpine_c_client_target="lnx" + fi + fi fi ;; *-apple-darwin*) @@ -17991,7 +17999,8 @@ $as_echo "#define APPLEKEYCHAIN 1" >>confdefs.h ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_start in -lpam" >&5 + if test -z "$alpine_c_client_bundled" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_start in -lpam" >&5 $as_echo_n "checking for pam_start in -lpam... " >&6; } if ${ac_cv_lib_pam_pam_start+:} false; then : $as_echo_n "(cached) " >&6 @@ -18061,6 +18070,9 @@ else fi + else + alpine_c_client_target="osx" + fi ;; *-*-solaris*) if test x$GCC = "xyes" ; then @@ -19229,6 +19241,72 @@ fi fi fi fi + +if test -n "$alpine_c_client_bundled" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 +$as_echo_n "checking for library containing crypt... " >&6; } +if ${ac_cv_search_crypt+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char crypt (); +int +main () +{ +return crypt (); + ; + return 0; +} +_ACEOF +for ac_lib in '' crypt; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_crypt=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_crypt+:} false; then : + break +fi +done +if ${ac_cv_search_crypt+:} false; then : + +else + ac_cv_search_crypt=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5 +$as_echo "$ac_cv_search_crypt" >&6; } +ac_res=$ac_cv_search_crypt +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + LIBS="$LIBS -lcrypt" + +else + + as_fn_error $? "crypt library not found." "$LINENO" 5 + +fi + +fi + C_CLIENT_BUNDLED=$alpine_c_client_bundled diff --git a/configure.ac b/configure.ac index d6e1e70..fab7aaa 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ dnl */ AC_PREREQ([2.69]) -AC_REVISION([Rev:27 by chappa@washington.edu]) +AC_REVISION([Rev:28 by chappa@washington.edu]) dnl Alpine Version Number is in $srcdir/VERSION AC_INIT([alpine],[m4_esyscmd(tr -d \\n < VERSION)],[chappa@washington.edu]) @@ -85,16 +85,6 @@ if test x$enable_dmalloc = "xyes" ; then AC_DEFINE(ENABLE_DMALLOC, 1, [Define enable dmalloc debugging]) fi -dnl Do not build bundled tools (Default) -alpine_c_client_bundled="no" -AC_ARG_WITH(bundled-tools, - AS_HELP_STRING([--with-bundled-tools],[ Build additional tools (mtest, imapd, etc.) Default: --with-bundled-tools=no]), - [ - if test "x$withval" = "xyes" ; then - alpine_c_client_bundled="" - fi - ]) - dnl set date and hostname ALPINE_datestamp=`date` AC_ARG_WITH(date-stamp, @@ -1184,6 +1174,16 @@ AC_ARG_WITH(c-client-target, ]) +dnl Do not build bundled tools (Default) +alpine_c_client_bundled="no" +AC_ARG_WITH(bundled-tools, + AS_HELP_STRING([--with-bundled-tools],[ Build additional tools (mtest, imapd, etc.) Default: --with-bundled-tools=no]), + [ + if test "x$withval" = "xyes" ; then + alpine_c_client_bundled="" + fi + ]) + dnl Assume PAM is *not* required and only set the systems that need it. alpine_PAM="none" @@ -1230,7 +1230,8 @@ case "$host" in alpine_PAM="yes" else systype="LNX" - AC_CHECK_LIB(pam, pam_start, + if test -z "$alpine_c_client_bundled" ; then + AC_CHECK_LIB(pam, am_start, [ alpine_c_client_target="lnp" alpine_PAM="yes" @@ -1242,6 +1243,13 @@ case "$host" in alpine_c_client_target="lnx" fi ]) + else + if test -f /etc/shadow ; then + alpine_c_client_target="slx" + else + alpine_c_client_target="lnx" + fi + fi fi ;; *-apple-darwin*) @@ -1259,7 +1267,8 @@ case "$host" in AC_DEFINE([APPLEKEYCHAIN], [1], [Use Apple OS X key chain for credential caching]) ;; esac - AC_CHECK_LIB(pam, pam_start, + if test -z "$alpine_c_client_bundled" ; then + AC_CHECK_LIB(pam, pam_start, [ AC_CHECK_HEADER([security/pam_appl.h], [ @@ -1280,6 +1289,9 @@ case "$host" in [ alpine_c_client_target="osx" ]) + else + alpine_c_client_target="osx" + fi ;; *-*-solaris*) if test x$GCC = "xyes" ; then @@ -1656,6 +1668,17 @@ if test -z "$alpine_c_client_bundled" ; then fi fi fi + +if test -n "$alpine_c_client_bundled" ; then + AC_SEARCH_LIBS(crypt,crypt, + [ + LIBS="$LIBS -lcrypt" + ], + [ + AC_MSG_ERROR([crypt library not found.]) + ]) +fi + AC_SUBST([C_CLIENT_BUNDLED], $alpine_c_client_bundled) dnl provide KRB5 support? diff --git a/imap/Makefile b/imap/Makefile index 9e6a332..52ce378 100644 --- a/imap/Makefile +++ b/imap/Makefile @@ -353,11 +353,11 @@ gcs: an SPECIALS="SSLINCLUDE=/opt/csw/include/openssl SSLLIB=/opt/csw/lib SSLCERTS=/opt/csw/ssl/certs SSLKEYS=/opt/csw/ssl/certs" ldb: an - $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ + $(BUILD) BUILDTYPE=lnp$(BUNDLED) IP=$(IP6) \ SPECIALS="GSSINCLUDE=/usr/include GSSLIB=/usr/lib MAILSPOOL=/var/mail" lfd: an - $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ + $(BUILD) BUILDTYPE=lnp$(BUNDLED) IP=$(IP6) \ SPECIALS="GSSDIR=/usr/kerberos" ln8: an @@ -370,17 +370,17 @@ ln8: an lr5: an $(TOUCH) ip6 - $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ + $(BUILD) BUILDTYPE=lnp$(BUNDLED) IP=$(IP6) \ SPECIALS="GSSDIR=/usr/kerberos" lmd: an - $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ + $(BUILD) BUILDTYPE=lnp$(BUNDLED) IP=$(IP6) \ SPECIALS="GSSINCLUDE=/usr/include GSSLIB=/usr/lib" # RHEL3 definitely has the IPv6 bug lrh: lrhok an - $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ + $(BUILD) BUILDTYPE=lnp$(BUNDLED) IP=$(IP6) \ SPECIALS="GSSDIR=/usr/kerberos" lrhok: @@ -404,7 +404,7 @@ lrhwarn: @echo % make lr5 lsu: an - $(BUILD) BUILDTYPE=lnp IP=$(IP6) \ + $(BUILD) BUILDTYPE=lnp$(BUNDLED) IP=$(IP6) \ SPECIALS="GSSDIR=/usr/kerberos" # iToy does not have Kerberos or PAM. It doesn't have a diff --git a/imap/src/osdep/unix/Makefile b/imap/src/osdep/unix/Makefile index a94040c..c4e1411 100644 --- a/imap/src/osdep/unix/Makefile +++ b/imap/src/osdep/unix/Makefile @@ -33,7 +33,7 @@ EXTRADRIVERS=mbox PASSWDTYPE=std SSLTYPE=nopwd IP=4 - +BUNDLED= # The optimization level here for GCC ports is set here for a reason. It's # to get you to read this text. @@ -494,6 +494,15 @@ isc: # Interactive BASELDFLAGS="-linet -lnsl_s -lgen -lx -lsec -liberty" \ RANLIB=true +lnpno: # Linux disable support Pluggable Authentication modules + $(BUILD) `$(CAT) SPECIALS` OS=slx \ + SIGTYPE=psx CRXTYPE=nfs \ + SPOOLDIR=/var/spool \ + ACTIVEFILE=/var/lib/news/active \ + RSHPATH=/usr/bin/rsh \ + BASECFLAGS="$(GCCCFLAGS)" \ + BASELDFLAGS="-lcrypt" + lnp: # Linux Pluggable Authentication modules $(BUILD) `$(CAT) SPECIALS` OS=slx \ SIGTYPE=psx CHECKPW=pam CRXTYPE=nfs \ diff --git a/pith/pine.hlp b/pith/pine.hlp index a101e9f..9a4ab92 100644 --- a/pith/pine.hlp +++ b/pith/pine.hlp @@ -140,7 +140,7 @@ with help text for the config screen and the composer that didn't have any reasonable place to be called from. Dummy change to get revision in pine.hlp ============= h_revision ================= -Alpine Commit 377 2019-11-23 22:02:58 +Alpine Commit 378 2019-11-25 11:08:40 ============= h_news ================= -- cgit v1.2.3-54-g00ecf