From f9c172ba3aba20e144914971c4d9d0d93a18aec6 Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Mon, 26 Feb 2007 21:23:11 +0000 Subject: [PATCH] - move sasldb auxprop modules into the -lib subpackage, so that we'll pick it up for multilib systems - install config files and init scripts using -p - pull in patch to build with current automake (#229010, Jacek Konieczny and Robert Scheck) - remove prereq on ldconfig: RPM should pick it up based on the -libs scriptlets - pull in patch to correctly detect gsskrb5_register_acceptor_identity (#200892, Mirko Streckenbach) - pull CVS fix for not tripping over extra commas in digest-md5 challenges (#229640) - drop patches which were needed to keep static builds going - remove static build, which is no longer a useful option because not all of our dependencies are available as static libraries - drop gssapi-generic patch due to lack of interest - update the bundled copy of db to 4.5.20 (#229012) - drop dbconverter-2, as we haven't bundled v1 libraries since FC4 --- cyrus-sasl-2.1.17-saslauthd1.patch | 3 +- cyrus-sasl-2.1.18-no_rpath.patch | 2 +- cyrus-sasl-2.1.21-keytab.patch | 39 ++++ cyrus-sasl-2.1.22-automake-1.10.patch | 94 +++++++++ cyrus-sasl-2.1.22-digest-commas.patch | 148 +++++++++++++ cyrus-sasl.spec | 287 ++++++++++++-------------- sources | 2 +- 7 files changed, 413 insertions(+), 162 deletions(-) create mode 100644 cyrus-sasl-2.1.21-keytab.patch create mode 100644 cyrus-sasl-2.1.22-automake-1.10.patch create mode 100644 cyrus-sasl-2.1.22-digest-commas.patch diff --git a/cyrus-sasl-2.1.17-saslauthd1.patch b/cyrus-sasl-2.1.17-saslauthd1.patch index 62cb37c..579a8ba 100644 --- a/cyrus-sasl-2.1.17-saslauthd1.patch +++ b/cyrus-sasl-2.1.17-saslauthd1.patch @@ -1,5 +1,6 @@ "Speak" the saslauthd version 1 protocol if "saslauthd_version" is "1". I -don't think we'll be using this, but here for the sake of completeness. +don't think we'll be using this (the other way around was far more useful), +but here for the sake of completeness. --- cyrus-sasl-2.1.17/lib/checkpw.c 2003-09-09 11:38:13.000000000 -0400 +++ cyrus-sasl-2.1.17/lib/checkpw.c 2004-01-20 16:57:52.000000000 -0500 diff --git a/cyrus-sasl-2.1.18-no_rpath.patch b/cyrus-sasl-2.1.18-no_rpath.patch index 6f84554..f01f7b8 100644 --- a/cyrus-sasl-2.1.18-no_rpath.patch +++ b/cyrus-sasl-2.1.18-no_rpath.patch @@ -1,4 +1,4 @@ ---- cyrus-sasl-2.1.18/cmulocal/cyrus.m4.no_rpath 2004-05-13 14:32:14.341038898 +0200 +--- cyrus-sasl-2.1.18/cmulocal/cyrus.m4 2004-05-13 14:32:14.341038898 +0200 +++ cyrus-sasl-2.1.18/cmulocal/cyrus.m4 2004-05-13 14:34:18.471968788 +0200 @@ -32,14 +32,5 @@ dnl runpath initialization diff --git a/cyrus-sasl-2.1.21-keytab.patch b/cyrus-sasl-2.1.21-keytab.patch new file mode 100644 index 0000000..2bbacaa --- /dev/null +++ b/cyrus-sasl-2.1.21-keytab.patch @@ -0,0 +1,39 @@ +diff -u -r cyrus-sasl-2.1.21-orig/cmulocal/sasl2.m4 cyrus-sasl-2.1.21/cmulocal/sasl2.m4 +--- cyrus-sasl-2.1.21-orig/cmulocal/sasl2.m4 2006-08-01 08:29:59.000000000 +0200 ++++ cyrus-sasl-2.1.21/cmulocal/sasl2.m4 2006-08-01 08:31:32.000000000 +0200 +@@ -257,7 +257,21 @@ + + cmu_save_LIBS="$LIBS" + LIBS="$LIBS $GSSAPIBASE_LIBS" +- AC_CHECK_FUNCS(gsskrb5_register_acceptor_identity) ++ dnl AC_CHECK_FUNCS(gsskrb5_register_acceptor_identity) ++ AC_CHECK_HEADER(gssapi/gssapi_krb5.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_KRB5_H,,[Define if you have the gssapi/gssapi_krb5.h header file])) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++#ifdef HAVE_GSSAPI_H ++#include ++#else ++#include ++#endif ++#ifdef HAVE_GSSAPI_GSSAPI_KRB5_H ++#include ++#endif ++]],[[gsskrb5_register_acceptor_identity("");]]) ++],[AC_DEFINE(HAVE_GSSKRB5_REGISTER_ACCEPTOR_IDENTITY,, ++ [Define if your GSSAPI implimentation defines GSSKRB5_REGISTER_ACCEPTOR_IDENTITY]) ++]) + LIBS="$cmu_save_LIBS" + else + AC_MSG_RESULT([disabled]) +diff -u -r cyrus-sasl-2.1.21-orig/plugins/gssapi.c cyrus-sasl-2.1.21/plugins/gssapi.c +--- cyrus-sasl-2.1.21-orig/plugins/gssapi.c 2004-07-21 16:39:06.000000000 +0200 ++++ cyrus-sasl-2.1.21/plugins/gssapi.c 2006-08-01 08:30:26.000000000 +0200 +@@ -50,6 +50,9 @@ + #else + #include + #endif ++#ifdef HAVE_GSSAPI_GSSAPI_KRB5_H ++#include ++#endif + + #ifdef WIN32 + # include diff --git a/cyrus-sasl-2.1.22-automake-1.10.patch b/cyrus-sasl-2.1.22-automake-1.10.patch new file mode 100644 index 0000000..8cd71c0 --- /dev/null +++ b/cyrus-sasl-2.1.22-automake-1.10.patch @@ -0,0 +1,94 @@ +Re-merged patch by Robert Scheck for cyrus-sasl >= 2.1.22, which was +originally written by Jacek Konieczny and makes cyrus-sasl building +using automake 1.10. + +--- cyrus-sasl-2.1.22/plugins/Makefile.am 2006-05-17 18:46:16.000000000 +0200 ++++ cyrus-sasl-2.1.22/plugins/Makefile.am.am110 2007-02-16 15:42:07.000000000 +0100 +@@ -82,73 +82,73 @@ + libntlm.la libpassdss.la libsasldb.la libsql.la libldapdb.la + + libplain_la_SOURCES = plain.c plain_init.c $(common_sources) +-libplain_la_LDFLAGS = -version-info $(plain_version) ++libplain_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(plain_version) + libplain_la_DEPENDENCIES = $(COMPAT_OBJS) + libplain_la_LIBADD = $(PLAIN_LIBS) $(COMPAT_OBJS) + + libanonymous_la_SOURCES = anonymous.c anonymous_init.c $(common_sources) +-libanonymous_la_LDFLAGS = -version-info $(anonymous_version) ++libanonymous_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(anonymous_version) + libanonymous_la_DEPENDENCIES = $(COMPAT_OBJS) + libanonymous_la_LIBADD = $(COMPAT_OBJS) + + libkerberos4_la_SOURCES = kerberos4.c kerberos4_init.c $(common_sources) +-libkerberos4_la_LDFLAGS = -version-info $(kerberos4_version) ++libkerberos4_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(kerberos4_version) + libkerberos4_la_DEPENDENCIES = $(COMPAT_OBJS) + libkerberos4_la_LIBADD = $(SASL_KRB_LIB) $(LIB_SOCKET) $(COMPAT_OBJS) + + libgssapiv2_la_SOURCES = gssapi.c gssapiv2_init.c $(common_sources) +-libgssapiv2_la_LDFLAGS = -version-info $(gssapiv2_version) ++libgssapiv2_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(gssapiv2_version) + libgssapiv2_la_DEPENDENCIES = $(COMPAT_OBJS) + libgssapiv2_la_LIBADD = $(GSSAPIBASE_LIBS) $(GSSAPI_LIBS) $(LIB_SOCKET) $(COMPAT_OBJS) + + libcrammd5_la_SOURCES = cram.c crammd5_init.c $(common_sources) +-libcrammd5_la_LDFLAGS = -version-info $(crammd5_version) ++libcrammd5_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(crammd5_version) + libcrammd5_la_DEPENDENCIES = $(COMPAT_OBJS) + libcrammd5_la_LIBADD = $(COMPAT_OBJS) + + libdigestmd5_la_SOURCES = digestmd5.c digestmd5_init.c $(common_sources) +-libdigestmd5_la_LDFLAGS = -version-info $(digestmd5_version) ++libdigestmd5_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(digestmd5_version) + libdigestmd5_la_DEPENDENCIES = $(COMPAT_OBJS) + libdigestmd5_la_LIBADD = $(LIB_DES) $(LIB_SOCKET) $(COMPAT_OBJS) + + liblogin_la_SOURCES = login.c login_init.c $(common_sources) +-liblogin_la_LDFLAGS = -version-info $(login_version) ++liblogin_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(login_version) + liblogin_la_DEPENDENCIES = $(COMPAT_OBJS) + liblogin_la_LIBADD = $(PLAIN_LIBS) $(COMPAT_OBJS) + + libsrp_la_SOURCES = srp.c srp_init.c $(common_sources) +-libsrp_la_LDFLAGS = -version-info $(srp_version) ++libsrp_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(srp_version) + libsrp_la_DEPENDENCIES = $(COMPAT_OBJS) + libsrp_la_LIBADD = $(SRP_LIBS) $(COMPAT_OBJS) + + libotp_la_SOURCES = otp.c otp_init.c otp.h $(common_sources) +-libotp_la_LDFLAGS = -version-info $(otp_version) ++libotp_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(otp_version) + libotp_la_DEPENDENCIES = $(COMPAT_OBJS) + libotp_la_LIBADD = $(OTP_LIBS) $(COMPAT_OBJS) + + libntlm_la_SOURCES = ntlm.c ntlm_init.c $(common_sources) +-libntlm_la_LDFLAGS = -version-info $(ntlm_version) ++libntlm_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(ntlm_version) + libntlm_la_DEPENDENCIES = $(COMPAT_OBJS) + libntlm_la_LIBADD = $(NTLM_LIBS) $(COMPAT_OBJS) + + libpassdss_la_SOURCES = passdss.c passdss_init.c $(common_sources) +-libpassdss_la_LDFLAGS = -version-info $(passdss_version) ++libpassdss_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(passdss_version) + libpassdss_la_DEPENDENCIES = $(COMPAT_OBJS) + libpassdss_la_LIBADD = $(PASSDSS_LIBS) $(COMPAT_OBJS) + + # Auxprop Plugins + libsasldb_la_SOURCES = sasldb.c sasldb_init.c $(common_sources) +-libsasldb_la_LDFLAGS = -version-info $(sasldb_version) ++libsasldb_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(sasldb_version) + libsasldb_la_DEPENDENCIES = $(COMPAT_OBJS) + libsasldb_la_LIBADD = ../sasldb/libsasldb.la $(SASL_DB_LIB) $(COMPAT_OBJS) + + libldapdb_la_SOURCES = ldapdb.c ldapdb_init.c $(common_sources) +-libldapdb_la_LDFLAGS = $(LIB_LDAP) -version-info $(ldapdb_version) ++libldapdb_la_LDFLAGS = $(AM_LDFLAGS) $(LIB_LDAP) -version-info $(ldapdb_version) + libldapdb_la_DEPENDENCIES = $(COMPAT_OBJS) + libldapdb_la_LIBADD = $(COMPAT_OBJS) + + libsql_la_SOURCES = sql.c sql_init.c $(common_sources) +-libsql_la_LDFLAGS = $(LIB_MYSQL) $(LIB_PGSQL) $(LIB_SQLITE) -version-info $(sql_version) ++libsql_la_LDFLAGS = $(AM_LDFLAGS) $(LIB_MYSQL) $(LIB_PGSQL) $(LIB_SQLITE) -version-info $(sql_version) + libsql_la_DEPENDENCIES = $(COMPAT_OBJS) + libsql_la_LIBADD = $(COMPAT_OBJS) + diff --git a/cyrus-sasl-2.1.22-digest-commas.patch b/cyrus-sasl-2.1.22-digest-commas.patch new file mode 100644 index 0000000..137f987 --- /dev/null +++ b/cyrus-sasl-2.1.22-digest-commas.patch @@ -0,0 +1,148 @@ +Pulled from CVS, Ident strings removed to let the patch apply pretty cleanly. + +=================================================================== +RCS file: /afs/andrew.cmu.edu/system/cvs/src/sasl/plugins/digestmd5.c,v +retrieving revision 1.183 +retrieving revision 1.184 +diff -u -r1.183 -r1.184 +--- src/sasl/plugins/digestmd5.c 2006/11/27 20:41:55 1.183 ++++ src/sasl/plugins/digestmd5.c 2007/02/14 17:16:14 1.184 +@@ -556,12 +556,17 @@ + return SASL_OK; + } + ++static int is_lws_char (char c) ++{ ++ return (c == ' ' || c == HT || c == CR || c == LF); ++} ++ + static char *skip_lws (char *s) + { + if (!s) return NULL; + + /* skipping spaces: */ +- while (s[0] == ' ' || s[0] == HT || s[0] == CR || s[0] == LF) { ++ while (is_lws_char(s[0])) { + if (s[0] == '\0') break; + s++; + } +@@ -750,17 +755,30 @@ + static void get_pair(char **in, char **name, char **value) + { + char *endpair; +- /* int inQuotes; */ + char *curp = *in; + *name = NULL; + *value = NULL; + + if (curp == NULL) return; +- if (curp[0] == '\0') return; +- +- /* skipping spaces: */ +- curp = skip_lws(curp); +- ++ ++ while (curp[0] != '\0') { ++ /* skipping spaces: */ ++ curp = skip_lws(curp); ++ ++ /* 'LWS "," LWS "," ...' is allowed by the DIGEST-MD5 ABNF */ ++ if (curp[0] == ',') { ++ curp++; ++ } else { ++ break; ++ } ++ } ++ ++ if (curp[0] == '\0') { ++ /* End of the string is not an error */ ++ *name = ""; ++ return; ++ } ++ + *name = curp; + + curp = skip_token(curp,1); +@@ -787,22 +805,24 @@ + endpair = unquote (curp); + if (endpair == NULL) { /* Unbalanced quotes */ + *name = NULL; ++ *value = NULL; + return; + } +- if (endpair[0] != ',') { +- if (endpair[0]!='\0') { +- *endpair++ = '\0'; +- } ++ ++ /* An optional LWS is allowed after the value. Skip it. */ ++ if (is_lws_char (endpair[0])) { ++ /* Remove the trailing LWS from the value */ ++ *endpair++ = '\0'; ++ endpair = skip_lws(endpair); + } +- +- endpair = skip_lws(endpair); +- ++ + /* syntax check: MUST be '\0' or ',' */ + if (endpair[0] == ',') { + endpair[0] = '\0'; + endpair++; /* skipping <,> */ + } else if (endpair[0] != '\0') { + *name = NULL; ++ *value = NULL; + return; + } + +@@ -2090,9 +2110,17 @@ + char *name = NULL, *value = NULL; + get_pair(&in, &name, &value); + +- if (name == NULL) +- break; ++ if (name == NULL) { ++ SETERROR(sparams->utils, ++ "Parse error"); ++ result = SASL_BADAUTH; ++ goto FreeAllMem; ++ } + ++ if (*name == '\0') { ++ break; ++ } ++ + /* Extracting parameters */ + + /* +@@ -3222,10 +3250,14 @@ + /* if parse error */ + if (name == NULL) { + params->utils->seterror(params->utils->conn, 0, "Parse error"); +- result = SASL_FAIL; ++ result = SASL_BADAUTH; + goto FreeAllocatedMem; + } + ++ if (*name == '\0') { ++ break; ++ } ++ + if (strcasecmp(name, "realm") == 0) { + nrealm++; + +@@ -3887,9 +3919,14 @@ + if (name == NULL) { + params->utils->seterror(params->utils->conn, 0, + "DIGEST-MD5 Received Garbage"); ++ result = SASL_BADAUTH; + break; + } + ++ if (*name == '\0') { ++ break; ++ } ++ + if (strcasecmp(name, "rspauth") == 0) { + + if (strcmp(text->response_value, value) != 0) { diff --git a/cyrus-sasl.spec b/cyrus-sasl.spec index 51efb22..24f9490 100644 --- a/cyrus-sasl.spec +++ b/cyrus-sasl.spec @@ -1,15 +1,14 @@ -%define _plugindir %{_libdir}/sasl %define _plugindir2 %{_libdir}/sasl2 -%define db_version 4.3.27 +%define db_version 4.5.20 %define bootstrap_cyrus_sasl 0 -Summary: The Cyrus SASL library. +Summary: The Cyrus SASL library Name: cyrus-sasl Version: 2.1.22 -Release: 5 -License: Freely Distributable +Release: 6 +License: BSD Group: System Environment/Libraries -# Source0 originally comes from ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/, and +# Source0 originally comes from ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/; # make-no-dlcompat-tarball.sh removes the "dlcompat" subdirectory and builds a # new tarball. Source0: cyrus-sasl-%{version}-nodlcompat.tar.gz @@ -21,31 +20,22 @@ Source9: saslauthd.sysconfig Source10: make-no-dlcompat-tarball.sh URL: http://asg.web.cmu.edu/sasl/sasl-library.html Requires: %{name}-lib = %{version}-%{release} -Patch5: cyrus-sasl-2.1.22-gdbm.patch -Patch6: cyrus-sasl-2.1.10-des.patch -Patch7: cyrus-sasl-2.1.20-gssapi-dynamic.patch -Patch9: cyrus-sasl-2.1.17-saslauthd1.patch Patch10: cyrus-sasl-2.1.22-db_bundle.patch Patch11: cyrus-sasl-2.1.18-no_rpath.patch -Patch13: cyrus-sasl-2.1.20-notgnu.patch -Patch14: cyrus-sasl-2.1.20-conflict.patch Patch15: cyrus-sasl-2.1.20-saslauthd.conf-path.patch -Patch16: cyrus-sasl-2.1.22-builddir.patch -Patch18: cyrus-sasl-2.1.21-linksrcs.patch -Patch21: cyrus-sasl-2.1.22-no-static-deps.patch -Patch22: cyrus-sasl-2.1.21-gssapi-generic.patch -Patch23: cyrus-sasl-2.1.19-omit_realm.patch Patch24: cyrus-sasl-2.1.21-sizes.patch Patch25: cyrus-sasl-2.1.22-typo.patch -Patch50: db-4.3.27-initmem.patch -Buildroot: %{_tmppath}/%{name}-root -BuildPrereq: autoconf, automake17, libtool, gdbm-devel, groff -BuildPrereq: krb5-devel >= 1.2.2, openssl-devel, pam-devel, pkgconfig -BuildPrereq: mysql-devel, postgresql-devel, zlib-devel +Patch26: cyrus-sasl-2.1.22-digest-commas.patch +Patch27: cyrus-sasl-2.1.22-automake-1.10.patch +Patch28: cyrus-sasl-2.1.21-keytab.patch +Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: autoconf, automake, libtool, gdbm-devel, groff +BuildRequires: krb5-devel >= 1.2.2, openssl-devel, pam-devel, pkgconfig +BuildRequires: mysql-devel, postgresql-devel, zlib-devel %if ! %{bootstrap_cyrus_sasl} -BuildPrereq: openldap-devel +BuildRequires: openldap-devel %endif -Prereq: /sbin/ldconfig, chkconfig, /sbin/service +Requires(post): chkconfig, /sbin/service %description The %{name} package contains the Cyrus implementation of SASL. @@ -54,7 +44,7 @@ adding authentication support to connection-based protocols. %package lib Group: System Environment/Libraries -Summary: Shared libraries needed by applications which use Cyrus SASL. +Summary: Shared libraries needed by applications which use Cyrus SASL %description lib The %{name}-lib package contains shared libraries which are needed by @@ -63,7 +53,7 @@ applications which use the Cyrus SASL library. %package devel Requires: %{name}-lib = %{version}-%{release} Group: Development/Libraries -Summary: Files needed for developing applications with Cyrus SASL. +Summary: Files needed for developing applications with Cyrus SASL %description devel The %{name}-devel package contains files needed for developing and @@ -72,7 +62,7 @@ compiling applications which use the Cyrus SASL library. %package gssapi Requires: %{name}-lib = %{version}-%{release} Group: System Environment/Libraries -Summary: GSSAPI authentication support for Cyrus SASL. +Summary: GSSAPI authentication support for Cyrus SASL %description gssapi The %{name}-gssapi package contains the Cyrus SASL plugins which @@ -82,7 +72,7 @@ authentication. %package plain Requires: %{name}-lib = %{version}-%{release} Group: System Environment/Libraries -Summary: PLAIN and LOGIN authentication support for Cyrus SASL. +Summary: PLAIN and LOGIN authentication support for Cyrus SASL %description plain The %{name}-plain package contains the Cyrus SASL plugins which support @@ -91,7 +81,7 @@ PLAIN and LOGIN authentication schemes. %package md5 Requires: %{name}-lib = %{version}-%{release} Group: System Environment/Libraries -Summary: CRAM-MD5 and DIGEST-MD5 authentication support for Cyrus SASL. +Summary: CRAM-MD5 and DIGEST-MD5 authentication support for Cyrus SASL %description md5 The %{name}-md5 package contains the Cyrus SASL plugins which support @@ -100,7 +90,7 @@ CRAM-MD5 and DIGEST-MD5 authentication schemes. %package ntlm Requires: %{name}-lib = %{version}-%{release} Group: System Environment/Libraries -Summary: NTLM authentication support for Cyrus SASL. +Summary: NTLM authentication support for Cyrus SASL %description ntlm The %{name}-ntlm package contains the Cyrus SASL plugin which supports @@ -110,7 +100,7 @@ the NTLM authentication scheme. %package sql Requires: %{name}-lib = %{version}-%{release} Group: System Environment/Libraries -Summary: SQL auxprop support for Cyrus SASL. +Summary: SQL auxprop support for Cyrus SASL %description sql The %{name}-sql package contains the Cyrus SASL plugin which supports @@ -120,7 +110,7 @@ using a RDBMS for storing shared secrets. %package ldap Requires: %{name}-lib = %{version}-%{release} Group: System Environment/Libraries -Summary: LDAP auxprop support for Cyrus SASL. +Summary: LDAP auxprop support for Cyrus SASL %description ldap The %{name}-ldap package contains the Cyrus SASL plugin which supports using @@ -128,51 +118,38 @@ a directory server, accessed using LDAP, for storing shared secrets. %prep %setup -q -a 6 - -pushd db-%{db_version} -%patch50 -p2 -b .initmem -popd - -%patch5 -p1 -b .gdbm -%patch6 -p1 -b .des -%patch7 -p1 -b .gssapi-dynamic -#%patch9 -p1 -b .saslauthd1 +chmod -x doc/*.html %patch10 -p1 -b .db_bundle %patch11 -p1 -b .no_rpath -%patch13 -p1 -b .notgnu -%patch14 -p1 -b .conflict %patch15 -p1 -b .path -%patch16 -p1 -b .builddir -%patch18 -p1 -b .linksrcs -%patch21 -p1 -b .no-static-deps -%patch22 -p1 -b .gssapi-generic -#%patch23 -p1 -b .omit_realm %patch24 -p1 -b .sizes %patch25 -p1 -b .typo -# FIXME - this is just weird -rm config/ltconfig config/libtool.m4 +%patch26 -p2 -b .digest-commas +%patch27 -p1 -b .automake-1.10 +%patch28 -p1 -b .keytab + +# FIXME - we remove these files directly so that we can avoid using the -f +# flag, which has a nasty habit of overwriting files like COPYING. +rm -f config/config.guess config/config.sub +rm -f config/ltconfig config/ltmain.sh config/libtool.m4 rm -fr autom4te.cache -libtoolize -f -c -aclocal-1.7 -I config -I cmulocal -automake-1.7 -a -c -f +libtoolize -c +aclocal -I config -I cmulocal +automake -a -c autoheader -autoconf -f +autoconf pushd saslauthd -# FIXME - this is just weird -rm config/ltconfig +rm -f config/config.guess config/config.sub +rm -f config/ltconfig config/ltmain.sh config/libtool.m4 rm -fr autom4te.cache -libtoolize -f -c -aclocal-1.7 -I config -I ../cmulocal -I ../config -automake-1.7 -a -c -f +libtoolize -c +aclocal -I config -I ../cmulocal -I ../config +automake -a -c autoheader -autoconf -f +autoconf popd -mkdir build-static build-shared -ln -s ../configure build-static -ln -s ../configure build-shared - %build CFLAGS="$RPM_OPT_FLAGS -fPIC"; export CFLAGS @@ -180,11 +157,11 @@ CFLAGS="$RPM_OPT_FLAGS -fPIC"; export CFLAGS 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_rh \ - --prefix=${topdir}/db-instroot \ - --includedir=${topdir}/db-instroot/include \ - --libdir=${topdir}/db-instroot/lib + --with-mutex=UNIX/fcntl --disable-shared --enable-static --with-pic \ + --with-uniquename=_cyrus_sasl_sasldb_rh \ + --prefix=${topdir}/db-instroot \ + --includedir=${topdir}/db-instroot/include \ + --libdir=${topdir}/db-instroot/lib make make install popd @@ -192,17 +169,19 @@ popd # Find Kerberos. krb5_prefix=`krb5-config --prefix` if test x$krb5_prefix = x%{_prefix} ; then - krb5_prefix= + krb5_prefix= else - CPPFLAGS="-I${krb5_prefix}/include"; export CPPFLAGS - CFLAGS="-I${krb5_prefix}/include $CFLAGS" - LDFLAGS="-L${krb5_prefix}/%{_lib}"; export LDFLAGS + CPPFLAGS="-I${krb5_prefix}/include"; export CPPFLAGS + CFLAGS="-I${krb5_prefix}/include $CFLAGS" + LDFLAGS="-L${krb5_prefix}/%{_lib}"; export LDFLAGS fi + +# Find OpenSSL. LIBS="-lcrypt"; export LIBS if pkg-config openssl ; then - CPPFLAGS="`pkg-config --cflags-only-I openssl` $CPPFLAGS"; export CPPFLAGS - CFLAGS="`pkg-config --cflags openssl` $CFLAGS"; export CFLAGS - LDFLAGS="`pkg-config --libs-only-L openssl` $LDFLAGS"; export LDFLAGS + CPPFLAGS="`pkg-config --cflags-only-I openssl` $CPPFLAGS"; export CPPFLAGS + CFLAGS="`pkg-config --cflags openssl` $CFLAGS"; export CFLAGS + LDFLAGS="`pkg-config --libs-only-L openssl` $LDFLAGS"; export LDFLAGS fi # Find the SQL libraries used needed by the SQL auxprop plugin. @@ -218,115 +197,84 @@ SQL_LIBS=`eval echo "$SQL_LIBS" | sed -e 's,-[^l][^ ]*,,g'` echo $SQL_LIBS cleanup_flags() { - sed -r -e 's,-D_GNU_SOURCE(=[^[:blank:]]+)?,,g' \ - -e 's,-D_FILE_OFFSET_BITS=[[:digit:]]+,,g' \ - -e 's,-D_LARGEFILE_SOURCE(=[^[:blank:]]+)?,,g' \ - -e 's,[[:blank:]]+, ,g' + sed -r -e 's,-D_GNU_SOURCE(=[^[:blank:]]+)?,,g' \ + -e 's,-D_FILE_OFFSET_BITS=[[:digit:]]+,,g' \ + -e 's,-D_LARGEFILE_SOURCE(=[^[:blank:]]+)?,,g' \ + -e 's,[[:blank:]]+, ,g' } CFLAGS=`echo $CFLAGS $SQL_CFLAGS | cleanup_flags`; export CFLAGS CPPFLAGS=`echo $CPPFLAGS $SQL_CFLAGS | cleanup_flags`; export CPPFLAGS LDFLAGS=`echo $LDFLAGS $SQL_LDFLAGS | cleanup_flags`; export LDFLAGS -build() { -pushd build-$1 -shift %configure \ - --enable-shared --enable-static \ - --disable-java \ - --with-plugindir=%{_plugindir2} \ - --with-configdir=%{_plugindir2}:%{_sysconfdir}/sasl2 \ - --disable-krb4 \ - --enable-gssapi${krb5_prefix:+=${krb5_prefix}} \ - --with-gss_impl=mit \ - --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-ldap \ - --with-devrandom=/dev/urandom \ - --enable-anon \ - --enable-cram \ - --enable-digest \ - --enable-ntlm \ - --enable-plain \ - --enable-login \ - --disable-otp \ - --enable-ldapdb \ - --enable-sql --with-mysql=%{_prefix} --with-pgsql=%{_prefix} \ - --without-sqlite \ - "$@" - # --enable-auth-sasldb -- EXPERIMENTAL + --enable-shared --disable-static \ + --disable-java \ + --with-plugindir=%{_plugindir2} \ + --with-configdir=%{_plugindir2}:%{_sysconfdir}/sasl2 \ + --disable-krb4 \ + --enable-gssapi${krb5_prefix:+=${krb5_prefix}} \ + --with-gss_impl=mit \ + --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-ldap \ + --with-devrandom=/dev/urandom \ + --enable-anon \ + --enable-cram \ + --enable-digest \ + --enable-ntlm \ + --enable-plain \ + --enable-login \ + --disable-otp \ + --enable-ldapdb \ + --enable-sql --with-mysql=%{_prefix} --with-pgsql=%{_prefix} \ + --without-sqlite \ + "$@" + # --enable-auth-sasldb -- EXPERIMENTAL make sasldir=%{_plugindir2} make -C saslauthd testsaslauthd make -C sample -popd -} -# Build the static library without sql or ldapdb auxprop support. Hopefully -# the only users of the static library will be clients, which don't use auxprop -# functionality anyway. -build static --enable-static --disable-ldapdb --disable-shared --disable-sql -# Build the shared library with all that good stuff. -build shared --enable-static --enable-shared - -# Merge our static libdb in with libsasl, because we won't be installing it. -pushd build-static/lib -ar x ${topdir}/db-instroot/lib/libdb.a -ar cru libsasl2.a `ar t ${topdir}/db-instroot/lib/libdb.a` -tagname=CC ../libtool --mode=link %{__cc} -o sasl2-static-mechlist -I../../include $CFLAGS $RPM_SOURCE_DIR/sasl-mechlist.c $LDFLAGS ./libsasl2.la -popd - -# Build small programs to list the available mechanisms, because I need them. -pushd 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 +# Build a small program to list the available mechanisms, because I need it. +pushd lib +../libtool --tag=CC --mode=link %{__cc} -o sasl2-shared-mechlist -I../include $CFLAGS %{SOURCE7} $LDFLAGS ./libsasl2.la %install test "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT -pushd build-shared make install DESTDIR=$RPM_BUILD_ROOT sasldir=%{_plugindir2} -cd ../build-static -make install DESTDIR=$RPM_BUILD_ROOT sasldir=%{_plugindir2} -cd ../build-shared make install DESTDIR=$RPM_BUILD_ROOT sasldir=%{_plugindir2} -C plugins -install -m755 -d $RPM_BUILD_ROOT%{_bindir} -libtool --mode=install \ +install -m755 -d $RPM_BUILD_ROOT%{_bindir} +./libtool --tag=CC --mode=install \ install -m755 sample/client $RPM_BUILD_ROOT%{_bindir}/sasl2-sample-client -libtool --mode=install \ +./libtool --tag=CC --mode=install \ install -m755 sample/server $RPM_BUILD_ROOT%{_bindir}/sasl2-sample-server -libtool --mode=install \ +./libtool --tag=CC --mode=install \ install -m755 saslauthd/testsaslauthd $RPM_BUILD_ROOT%{_sbindir}/testsaslauthd -libtool --mode=install \ -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 -popd +install -m644 -p 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 the init script for saslauthd and the init script's config file. install -m755 -d $RPM_BUILD_ROOT/etc/rc.d/init.d $RPM_BUILD_ROOT/etc/sysconfig -install -m755 $RPM_SOURCE_DIR/saslauthd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/saslauthd -install -m644 $RPM_SOURCE_DIR/saslauthd.sysconfig $RPM_BUILD_ROOT/etc/sysconfig/saslauthd +install -m755 -p %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/saslauthd +install -m644 -p %{SOURCE9} $RPM_BUILD_ROOT/etc/sysconfig/saslauthd # Install the config dirs if they're not already there. install -m755 -d $RPM_BUILD_ROOT/%{_sysconfdir}/sasl2 install -m755 -d $RPM_BUILD_ROOT/%{_plugindir2} # Provide an easy way to query the list of available mechanisms. -libtool --mode=install \ -install -m755 build-static/lib/sasl2-static-mechlist \ -$RPM_BUILD_ROOT%{_sbindir}/ -libtool --mode=install \ -install -m755 build-shared/lib/sasl2-shared-mechlist \ -$RPM_BUILD_ROOT%{_sbindir}/ +./libtool --tag=CC --mode=install \ +install -m755 lib/sasl2-shared-mechlist $RPM_BUILD_ROOT/%{_sbindir}/ # Remove unpackaged files from the buildroot. rm -f $RPM_BUILD_ROOT%{_libdir}/sasl2/libotp.* @@ -342,12 +290,13 @@ test "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT %preun if [ $1 -eq 0 ] ; then - /sbin/chkconfig --del saslauthd + /sbin/service saslauthd stop 2>&1 > /dev/null + /sbin/chkconfig --del saslauthd fi %postun if [ $1 -ne 0 ] ; then - /sbin/service saslauthd condrestart 2>&1 > /dev/null + /sbin/service saslauthd condrestart 2>&1 > /dev/null fi %post lib -p /sbin/ldconfig @@ -357,13 +306,8 @@ fi %defattr(-,root,root) %doc saslauthd/LDAP_SASLAUTHD %dir %{_plugindir2}/ -%{_plugindir2}/*sasldb*.so* -%{_plugindir2}/*sasldb*.la %{_mandir}/man8/* -%{_sbindir}/dbconverter-2 %{_sbindir}/pluginviewer -%{_sbindir}/saslpasswd2 -%{_sbindir}/sasldblistusers2 %{_sbindir}/saslauthd %{_sbindir}/testsaslauthd %config(noreplace) /etc/sysconfig/saslauthd @@ -378,6 +322,10 @@ fi %dir %{_plugindir2}/ %{_plugindir2}/*anonymous*.so* %{_plugindir2}/*anonymous*.la +%{_plugindir2}/*sasldb*.so* +%{_plugindir2}/*sasldb*.la +%{_sbindir}/saslpasswd2 +%{_sbindir}/sasldblistusers2 %files plain %defattr(-,root,root) @@ -419,13 +367,34 @@ fi %{_bindir}/sasl2-sample-client %{_bindir}/sasl2-sample-server %{_includedir}/* -%{_libdir}/libsasl*.a %{_libdir}/libsasl*.*so %{_mandir}/man3/* -%{_sbindir}/sasl2-static-mechlist %{_sbindir}/sasl2-shared-mechlist %changelog +* Mon Feb 26 2007 Nalin Dahyabhai 2.1.22-6 +- install config files and init scripts using -p +- pull in patch to build with current automake (#229010, Jacek Konieczny + and Robert Scheck) +- remove prereq on ldconfig, RPM should pick it up based on the -libs + scriptlets +- pull in patch to correctly detect gsskrb5_register_acceptor_identity + (#200892, Mirko Streckenbach) +- move sasldb auxprop modules into the -lib subpackage, so that we'll pick + it up for multilib systems + +* Thu Feb 22 2007 Nalin Dahyabhai +- pull CVS fix for not tripping over extra commas in digest-md5 + challenges (#229640) + +* Fri Feb 16 2007 Nalin Dahyabhai +- remove static build, which is no longer a useful option because not all of + our dependencies are available as static libraries +- drop patches which were needed to keep static builds going +- drop gssapi-generic patch due to lack of interest +- update the bundled copy of db to 4.5.20 (#229012) +- drop dbconverter-2, as we haven't bundled v1 libraries since FC4 + * Tue Dec 5 2006 Nalin Dahyabhai 2.1.22-5 - rebuild - add 'authentication' or 'auxprop' to summaries for plugin packages to diff --git a/sources b/sources index f3ebea8..84b62df 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ c5c56c86a1397443d3b75b6864cb630d cyrus-sasl-2.1.22-nodlcompat.tar.gz -fcc481d52c3b80e20a328f8c0cb042bd db-4.3.27.tar.gz +b0f1c777708cb8e9d37fb47e7ed3312d db-4.5.20.tar.gz