From eb2d1017f4063d50e3783241a2903994ce35bae4 Mon Sep 17 00:00:00 2001 From: cvsdist Date: Sep 09 2004 04:05:41 +0000 Subject: auto-import changelog data from cyrus-sasl-2.1.17-1.src.rpm Wed Jan 07 2004 Nalin Dahyabhai 2.1.17-1 - forcibly disable otp and sql plugins at compile-time Fri Dec 19 2003 Nalin Dahyabhai - update to 2.1.17, forcing the gssapi plugin to be shared now, as before - use a bundled libdb (#112215) - build static-with-all-plugins and normal-shared libsasl versions - add sasl2-{shared,static}-mechlist for very basic sanity checking - make inclusion of sasl1 stuffs conditional, because it's so going away Sat Dec 13 2003 Jeff Johnson 2.1.15-7 - rebuild against db-4.2.52. --- diff --git a/.cvsignore b/.cvsignore index 280f6ab..cbc6b6d 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,3 @@ cyrus-sasl-1.5.28.tar.gz -cyrus-sasl-2.1.15.tar.gz +cyrus-sasl-2.1.17.tar.gz +db-4.2.52.tar.gz diff --git a/cyrus-sasl.spec b/cyrus-sasl.spec index f70cb76..40acb0b 100644 --- a/cyrus-sasl.spec +++ b/cyrus-sasl.spec @@ -1,34 +1,45 @@ %define cs1_version 1.5.28 %define _plugindir %{_libdir}/sasl %define _plugindir2 %{_libdir}/sasl2 +%define db_version 4.2.52 + +# Version 1 support. We provide the library and plugins for the vanishingly +# small number of applications which still need them. Mutt, this means you. +%define includev1 1 Summary: The Cyrus SASL library. Name: cyrus-sasl -Version: 2.1.15 -Release: 6 +Version: 2.1.17 +Release: 1 License: Freely Distributable Group: System Environment/Libraries Source0: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-%{version}.tar.gz Source1: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-%{version}.tar.gz.sig +%if %{includev1} Source2: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-%{cs1_version}.tar.gz Source3: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-%{cs1_version}.tar.gz.sig +%endif Source4: saslauthd.init Source5: README.RPM +Source6: http://www.sleepycat.com/download/snapshot/db-%{db_version}.tar.gz +Source7: sasl-mechlist.c URL: http://asg.web.cmu.edu/sasl/sasl-library.html +%if %{includev1} Patch0: cyrus-sasl-1.5.24-rpath.patch Patch1: cyrus-sasl-1.5.28-autoconf25.patch Patch2: cyrus-sasl-1.5.28-automake17.patch -Patch3: cyrus-sasl-2.1.7-gdbm.patch -Patch4: cyrus-sasl-2.1.10-des.patch -Patch5: cyrus-sasl-2.1.14-automake17.patch -Patch6: cyrus-sasl-2.1.13-rpath.patch -Patch7: cyrus-sasl-2.1.15-libtool15.patch -Patch8: cyrus-sasl-2.1.14-plugin.patch +Patch3: cyrus-sasl-1.5.28-automake18.patch +%endif +Patch4: cyrus-sasl-2.1.7-gdbm.patch +Patch5: cyrus-sasl-2.1.10-des.patch +Patch6: cyrus-sasl-2.1.17-gssapi-dynamic.patch +Patch7: cyrus-sasl-2.1.17-db42.patch Buildroot: %{_tmppath}/%{name}-root -BuildPrereq: autoconf213, automake15, libtool -# Note: berkeley db for sasl2, gdbm for sasl1. -BuildPrereq: db4-devel, gdbm-devel, krb5-devel >= 1.2, openssl-devel, pam-devel -BuildPrereq: pkgconfig +%if %{includev1} +BuildPrereq: gdbm-devel +%endif +BuildPrereq: autoconf, automake, libtool +BuildPrereq: krb5-devel >= 1.2, openssl-devel, pam-devel, pkgconfig Prereq: /sbin/ldconfig, chkconfig, /sbin/service %description @@ -74,29 +85,38 @@ The %{name}-md5 package contains the Cyrus SASL plugins which support CRAM-MD5 and DIGEST-MD5 authentication schemes. %prep -%setup -q -c -a 2 +%if %{includev1} +%setup -q -c -a 2 -a 6 +%else +%setup -q -c -a 6 +%endif + +%if %{includev1} pushd cyrus-sasl-%{cs1_version} %patch0 -p1 -b .rpath %patch1 -p1 -b .autoconf25 %patch2 -p1 -b .automake17 +%patch3 -p1 -b .automake18 +rm config/ltconfig libtoolize -f -c aclocal -I config -I cmulocal automake -a -c -f autoheader autoconf -f popd +%endif pushd cyrus-sasl-%{version} -%patch3 -p1 -b .gdbm -%patch4 -p1 -b .des -%patch5 -p1 -b .automake17 -%patch6 -p1 -b .rpath -%patch7 -p1 -b .libtool15 -%patch8 -p1 -b .plugin -ln -s ../plugins/plugin_common.c lib/ -# Remove the mismatching AC_PROG_LIBTOOL definition and its ltconfig. -> acinclude.m4 -rm config/ltconfig +for buildtype in static shared ; do + mkdir build-${buildtype} + ln -s ../configure build-${buildtype} +done +%patch4 -p1 -b .gdbm +%patch5 -p1 -b .des +%patch6 -p1 -b .gssapi-dynamic +%patch7 -p1 -b .db42 +# FIXME - this is just weird +rm config/ltconfig acinclude.m4 libtoolize -f -c aclocal -I config -I cmulocal automake -a -c -f @@ -104,6 +124,7 @@ autoheader autoconf -f pushd saslauthd +# FIXME - this is just weird rm config/ltconfig libtoolize -f -c aclocal -I config -I ../cmulocal -I ../config @@ -113,11 +134,13 @@ autoconf -f popd popd +%if %{includev1} # Sort of merge the docs. mkdir cyrus-sasl-%{version}/%{cs1_version} mkdir cyrus-sasl-%{version}/%{cs1_version}-devel cp %{name}-%{cs1_version}/{AUTHORS,COPYING,NEWS,README,doc/*.html} cyrus-sasl-%{version}/%{cs1_version} cp %{name}-%{cs1_version}/doc/*.txt cyrus-sasl-%{version}/%{cs1_version}-devel + # Remove duplicate RFCs. pushd cyrus-sasl-%{version}/%{cs1_version}-devel for file in * ; do @@ -126,17 +149,35 @@ for file in * ; do fi done popd +%endif %build -krb5_prefix=`krb5-config --prefix` +CFLAGS="$RPM_OPT_FLAGS -fPIC"; export CFLAGS + +# Bundling copy of Berkeley DB, for sasldb. +topdir=`pwd` +pushd db-%{db_version}/build_unix +../dist/configure \ + --with-mutex=UNIX/fcntl --disable-shared --enable-static --with-pic \ + --with-uniquename=_cyrus_sasl_sasldb_rhl \ + --prefix=${topdir}/db-instroot \ + --includedir=${topdir}/db-instroot/include \ + --libdir=${topdir}/db-instroot/lib +make +make install +popd + +# Find Kerberos. if test x$krb5_prefix = x%{_prefix} ; then krb5_prefix= else CPPFLAGS="-I${krb5_prefix}/include"; export CPPFLAGS - CFLAGS="-I${krb5_prefix}/include $RPM_OPT_FLAGS"; export CFLAGS + CFLAGS="-I${krb5_prefix}/include $CFLAGS" LDFLAGS="-L${krb5_prefix}/%{_lib}"; export LDFLAGS fi +LIBS="-lcrypt"; export LIBS +%if %{includev1} pushd cyrus-sasl-%{cs1_version} %configure \ --enable-static --enable-staticdlopen --with-pic --enable-shared \ @@ -152,41 +193,78 @@ pushd cyrus-sasl-%{cs1_version} --enable-login make sasldir=%{_plugindir} popd - -pushd cyrus-sasl-%{version} -LIBS="-lcrypt"; export LIBS +%endif + +# Version 2. If built statically, the plugins are part of the library itself, +# and if built shared in the same instance, in the shared library, too, so we +# build twice. Yay. +for buildtype in static shared ; do +pushd cyrus-sasl-%{version}/build-${buildtype} +build_static= +build_shared= +eval build_${buildtype}=yes +# We patch configure.in, so we regenerate configure, but the generated version +# doesn't cache whether or not it can build shared libraries, so configure gets +# confused. Aaargh. +ac_cv_can_build_shared=yes +export ac_cv_can_build_shared %configure \ - --enable-static --with-pic --enable-shared --disable-java \ + --disable-shared --disable-static --enable-${buildtype} \ + --disable-java \ --with-plugindir=%{_plugindir2} \ --disable-krb4 \ --enable-gssapi${krb5_prefix:+=${krb5_prefix}} \ --with-rc4 \ --with-dblib=berkeley \ + --with-bdb-incdir=${topdir}/db-instroot/include \ + --with-bdb-libdir=${topdir}/db-instroot/lib \ --with-saslauthd=/var/run/saslauthd --without-pwcheck \ --with-devrandom=/dev/urandom \ --enable-anon \ --enable-cram \ --enable-digest \ --enable-plain \ - --enable-login + --enable-login \ + --disable-otp \ + --disable-sql # --enable-auth-sasldb -- EXPERIMENTAL make sasldir=%{_plugindir2} make -C saslauthd testsaslauthd popd +done + +# Merge our static libdb in with libsasl, because we won't be installing it. +pushd cyrus-sasl-%{version}/build-static/lib +ar x ${topdir}/db-instroot/lib/libdb.a +ar cru libsasl2.a `ar t ${topdir}/db-instroot/lib/libdb.a` + +# Build small programs to list the available mechanisms, because I need them. +%{__cc} -o sasl2-static-mechlist -I../../include $CFLAGS $RPM_SOURCE_DIR/sasl-mechlist.c $LDFLAGS ./libsasl2.a -lssl -lgssapi_krb5 +popd +pushd cyrus-sasl-%{version}/build-shared/lib +tagname=CC ../libtool --mode=link %{__cc} -o sasl2-shared-mechlist -I../../include $CFLAGS $RPM_SOURCE_DIR/sasl-mechlist.c $LDFLAGS ./libsasl2.la +popd %install test "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT + +%if %{includev1} pushd cyrus-sasl-%{cs1_version} -%makeinstall sasldir=$RPM_BUILD_ROOT/%{_plugindir} +make install DESTDIR=$RPM_BUILD_ROOT sasldir=%{_plugindir} install -m755 -d $RPM_BUILD_ROOT%{_bindir} libtool --mode=install \ install -m755 sample/client $RPM_BUILD_ROOT%{_bindir}/sasl-sample-client libtool --mode=install \ install -m755 sample/server $RPM_BUILD_ROOT%{_bindir}/sasl-sample-server popd +%endif -pushd cyrus-sasl-%{version} -%makeinstall sasldir=$RPM_BUILD_ROOT/%{_plugindir2} +pushd cyrus-sasl-%{version}/build-static +make install DESTDIR=$RPM_BUILD_ROOT sasldir=%{_plugindir2} -C lib +popd + +pushd cyrus-sasl-%{version}/build-shared +make install DESTDIR=$RPM_BUILD_ROOT sasldir=%{_plugindir2} install -m755 -d $RPM_BUILD_ROOT%{_bindir} libtool --mode=install \ @@ -201,14 +279,25 @@ install -m755 utils/dbconverter-2 $RPM_BUILD_ROOT%{_sbindir}/dbconverter-2 # Install the saslauthd mdoc page in the expected location. Sure, it's not # really a man page, but groff seems to be able to cope with it. install -m755 -d $RPM_BUILD_ROOT%{_mandir}/man8/ -install -m644 saslauthd/saslauthd.mdoc $RPM_BUILD_ROOT%{_mandir}/man8/saslauthd.8 +install -m644 ../saslauthd/saslauthd.mdoc $RPM_BUILD_ROOT%{_mandir}/man8/saslauthd.8 # Create the saslauthd listening directory. install -m755 -d $RPM_BUILD_ROOT/var/run/saslauthd + +# Install the init script. install -m755 -d $RPM_BUILD_ROOT/etc/rc.d/init.d install -m755 $RPM_SOURCE_DIR/saslauthd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/saslauthd + popd +# Figure out an easy way to query the list of available mechanisms. +libtool --mode=install \ +install -m755 cyrus-sasl-%{version}/build-shared/lib/sasl2-shared-mechlist \ +$RPM_BUILD_ROOT%{_sbindir}/ +libtool --mode=install \ +install -m755 cyrus-sasl-%{version}/build-static/lib/sasl2-static-mechlist \ +$RPM_BUILD_ROOT%{_sbindir}/ + # Remove unpackaged files from the buildroot. rm -f $RPM_BUILD_ROOT%{_libdir}/sasl2/libotp.* rm -f $RPM_BUILD_ROOT%{_mandir}/cat8/saslauthd.8 @@ -233,22 +322,30 @@ fi %files %defattr(-,root,root) +%if %{includev1} %doc %{name}-%{version}/%{cs1_version} +%endif %doc %{name}-%{version}/{AUTHORS,COPYING,NEWS,README,doc/*.html} %doc $RPM_SOURCE_DIR/README.RPM %{_libdir}/libsasl*.so.* +%if %{includev1} %dir %{_plugindir}/ +%endif %dir %{_plugindir2}/ +%if %{includev1} %{_plugindir}/*anonymous*.so* %{_plugindir}/*anonymous*.la +%endif %{_plugindir2}/*anonymous*.so* %{_plugindir2}/*anonymous*.la %{_plugindir2}/*sasldb*.so* %{_plugindir2}/*sasldb*.la %{_mandir}/man8/* %{_sbindir}/dbconverter-2 +%if %{includev1} %{_sbindir}/saslpasswd %{_sbindir}/sasldblistusers +%endif %{_sbindir}/saslpasswd2 %{_sbindir}/sasldblistusers2 %{_sbindir}/saslauthd @@ -258,10 +355,12 @@ fi %files plain %defattr(-,root,root) +%if %{includev1} %{_plugindir}/*plain*.so* %{_plugindir}/*plain*.la %{_plugindir}/*login*.so* %{_plugindir}/*login*.la +%endif %{_plugindir2}/*plain*.so* %{_plugindir2}/*plain*.la %{_plugindir2}/*login*.so* @@ -269,10 +368,12 @@ fi %files md5 %defattr(-,root,root) +%if %{includev1} %{_plugindir}/*crammd5*.so* %{_plugindir}/*crammd5*.la %{_plugindir}/*digestmd5*.so* %{_plugindir}/*digestmd5*.la +%endif %{_plugindir2}/*crammd5*.so* %{_plugindir2}/*crammd5*.la %{_plugindir2}/*digestmd5*.so* @@ -280,28 +381,37 @@ fi %files gssapi %defattr(-,root,root) +%if %{includev1} %{_plugindir}/*gssapi*.so* %{_plugindir}/*gssapi*.la +%endif %{_plugindir2}/*gssapi*.so* %{_plugindir2}/*gssapi*.la %files devel %defattr(-,root,root) +%if %{includev1} %doc %{name}-%{version}/%{cs1_version}-devel +%endif %doc %{name}-%{version}/doc/*.txt +%if %{includev1} %{_bindir}/sasl-sample-client %{_bindir}/sasl-sample-server +%endif %{_bindir}/sasl2-sample-client %{_bindir}/sasl2-sample-server %{_includedir}/* %{_libdir}/libsasl*.*a %{_libdir}/libsasl*.*so +%if %{includev1} %{_plugindir}/*anonymous*.a %{_plugindir}/*crammd5*.a %{_plugindir}/*digestmd5*.a %{_plugindir}/*gssapi*.a %{_plugindir}/*login*.a %{_plugindir}/*plain*.a +%endif +%if 0 %{_plugindir2}/*anonymous*.a %{_plugindir2}/*crammd5*.a %{_plugindir2}/*digestmd5*.a @@ -309,12 +419,30 @@ fi %{_plugindir2}/*login*.a %{_plugindir2}/*plain*.a %{_plugindir2}/*sasldb*.a +%endif %{_mandir}/man3/* +%{_sbindir}/sasl2-static-mechlist +%{_sbindir}/sasl2-shared-mechlist # -# TODO: enable ntlm +# TODO: enable ldap for saslauthd once it moves out of experimental status +# TODO: enable ntlm if it ever moves out of unsupported status, maybe sooner +# TODO: enable sql if the time comes when the soname doesn't change too often # %changelog +* Wed Jan 7 2004 Nalin Dahyabhai 2.1.17-1 +- forcibly disable otp and sql plugins at compile-time + +* Fri Dec 19 2003 Nalin Dahyabhai +- update to 2.1.17, forcing the gssapi plugin to be shared now, as before +- use a bundled libdb (#112215) +- build static-with-all-plugins and normal-shared libsasl versions +- add sasl2-{shared,static}-mechlist for very basic sanity checking +- make inclusion of sasl1 stuffs conditional, because it's so going away + +* Sat Dec 13 2003 Jeff Johnson 2.1.15-7 +- rebuild against db-4.2.52. + * Thu Oct 23 2003 Nalin Dahyabhai 2.1.15-6 - use /dev/urandom instead of /dev/random for SASL2 (docs indicate that this is safe if you aren't using OTP or SRP, and we build neither); SASL1 appears to @@ -327,6 +455,9 @@ fi - install saslauthd's mdoc page instead of the pre-formatted man page, which would get formatted again +* Thu Sep 25 2003 Jeff Johnson 2.1.15-5 +- rebuild against db-4.2.42. + * Mon Sep 15 2003 Nalin Dahyabhai - include testsaslauthd - note in the README that the saslauthd protocol is different for v1 and v2, diff --git a/sasl-mechlist.c b/sasl-mechlist.c new file mode 100644 index 0000000..8acdfcb --- /dev/null +++ b/sasl-mechlist.c @@ -0,0 +1,97 @@ +#include "sasl.h" +#include +#include +#include + +static int +my_getopt(void *context, const char *plugin_name, + const char *option, const char **result, unsigned *len) +{ + if (result) { + *result = NULL; +#if 0 + fprintf(stderr, "Getopt plugin=%s%s%s/option=%s%s%s -> ", + plugin_name ? "\"" : "", + plugin_name ? plugin_name : "(null)", + plugin_name ? "\"" : "", + option ? "\"" : "", + option ? option : "(null)", + option ? "\"" : ""); + fprintf(stderr, "'%s'.\n", *result ? *result : ""); +#endif + } + if (len) { + *len = 0; + } + return 0; +} + +int +main(int argc, char **argv) +{ + int ret, i; + const char *mechs, **globals; + sasl_callback_t callbacks[] = { + {SASL_CB_GETOPT, my_getopt, NULL}, + {SASL_CB_LIST_END}, + }; + sasl_conn_t *connection; + char hostname[512]; + + if ((argc > 1) && (argv[1][0] == '-')) { + fprintf(stderr, "Usage: %s [appname [hostname] ]\n", argv[0]); + return 0; + } + + ret = sasl_server_init(callbacks, argc > 1 ? argv[1] : "sasl-mechlist"); + if (ret != SASL_OK) { + fprintf(stderr, "Error in sasl_server_init(): %s\n", + sasl_errstring(ret, NULL, NULL)); + } + + connection = NULL; + strcpy(hostname, "localhost"); + gethostname(hostname, sizeof(hostname)); + ret = sasl_server_new(argc > 2 ? argv[2] : "host", + hostname, + NULL, + NULL, + NULL, + callbacks, + 0, + &connection); + if (ret != SASL_OK) { + fprintf(stderr, "Error in sasl_server_new(): %s\n", + sasl_errstring(ret, NULL, NULL)); + } + + ret = sasl_listmech(connection, + getenv("USER") ? getenv("USER") : "root", + "Available mechanisms: ", + ",", + "\n", + &mechs, + NULL, + NULL); + if (ret != SASL_OK) { + fprintf(stderr, "Error in sasl_listmechs(): %s\n", + sasl_errstring(ret, NULL, NULL)); + } else { + fprintf(stdout, "%s", mechs); + } + + globals = sasl_global_listmech(); + for (i = 0; (globals != NULL) && (globals[i] != NULL); i++) { + if (i == 0) { + fprintf(stdout, "Library supports: "); + } + fprintf(stdout, "%s", globals[i]); + if (globals[i + 1] != NULL) { + fprintf(stdout, ","); + } else { + fprintf(stdout, "\n"); + } + } + + return 0; +} diff --git a/sources b/sources index 520677e..2c700d8 100644 --- a/sources +++ b/sources @@ -1,2 +1,3 @@ 60710be040801e9aff7353563b636518 cyrus-sasl-1.5.28.tar.gz -82c7f82a777b7bc10cc1ef68fb8e2a37 cyrus-sasl-2.1.15.tar.gz +4add6be2f194dc51aafc64193a1dd77b cyrus-sasl-2.1.17.tar.gz +cbc77517c9278cdb47613ce8cb55779f db-4.2.52.tar.gz