blob: 1e7104b400ff129c043b7a5734910139e8ea040d [file] [log] [blame]
# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Ray Donnelly <mingw.android@gmail.com>
# Contributor: Renato Silva <br.renatosilva@gmail.com>
# There's an ugliness issue in cyrus-sasl's build system.
# It builds libsasl2.dll with some compat objects, somehow
# gotten from saslauthd/Makefile.am?! but these files -
# getaddrinfo.c, getnameinfo.c (and one that doesn't ever
# get built, snprintf.c) depend on ws2_32 on Windows.
# The plugins need these objects too, so they are LN_S'ed
# as COMPAT_OBJS and that's added to plugins/Makefile.am:
# lib{plain,anonymous,kerberos4...}_la_{DEPENDENCIES,LIBADD}
# .. problem with doing it this way is that the ws2_32
# (encoded into LIB_SOCKET) dependency needs to be specified
# repeatedly for each one ..
# Instead these compat objects should be linked into a
# convenience libtool library (.a compiled with -fPIC) that
# carries the ws2_32 dependency with it, and this libtool
# library should be added as a dependency to each of the
# plugins. I've not fixed this because I've not got enough
# libtool experience to do it yet so instead 12-MinGW-w64..patch
# adds LIB_SOCKET all over the place in plugins/Makefile.am
_realname=cyrus-sasl
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=2.1.27
pkgrel=2
pkgdesc="Cyrus Simple Authentication Service Layer (SASL) library"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
url="https://www.cyrusimap.org/sasl/"
license=('custom')
depends=("${MINGW_PACKAGE_PREFIX}-gdbm"
"${MINGW_PACKAGE_PREFIX}-openssl"
"${MINGW_PACKAGE_PREFIX}-sqlite3")
options=('emptydirs' 'strip' '!makeflags')
source=(https://github.com/cyrusimap/${_realname}/releases/download/${_realname}-${pkgver}/${_realname}-${pkgver}.tar.gz{,.sig}
02-exeext.patch
03-fix-plugins.patch
04-manpage-paths.patch
14-MinGW-w64-add-LIBSASL_API-to-function-definitions.patch
15-MinGW-w64-define-LIBSASL_EXPORTS_eq_1-for-sasldb.patch
16-MinGW-w64-define-WIN32_LEAN_AND_MEAN-avoiding-handle_t-redef.patch
19-paths-relocation.patch
20-mingw-tchar.patch
21-fix-getopt-guard.patch
22-autoconf-prevent-full-path-resolution.patch)
sha256sums=('26866b1549b00ffd020f188a43c258017fa1c382b3ddadd8201536f72efb05d5'
'SKIP'
'0d0220f721b07f821e14f00c04250c2243620301200f825e7f0532b581d63a7d'
'62fca7407d288e021fac6fed47d8a94ef2775c257ddcb79071428fe7719485f5'
'b8bedacab5fc992eb2afd259ce2e898291d2bec685030108be3f51e6ce30977c'
'795196a9db0c8155d59c08dcbb0df15dfe7bb4eb47b30df511649573ac59b39f'
'148c2062d22011f731ad93fb603cde9c519e73322c89add0408772c434c6bf17'
'e101e1bd3ee03650e89e05c18d5f699d2f69aecc4f7aac4b11db2d1755783c5c'
'5baa235667ee597a52120a48bc2acf15471ac3e096affdff5c644fb1b68f5568'
'57b1b40017fa2a3fb189deedc01959673ed96cc01e088fd85ae0d59e1e13f25f'
'f51412367d893cb4c2e4ee2ec76a6a641abaaf6d3086af93a9b579a8d0ce26c5'
'8cca4435b2d8bc5c04490bd16092bc9c5fcf3eb5c113778674b8393342302c65')
validpgpkeys=('829F339F8C296FE80F409D93E3D7C118C7B9F46A') # Partha Susarla <mail@spartha.org>
prepare() {
cd ${srcdir}/${_realname}-${pkgver}
patch -p1 -i ${srcdir}/02-exeext.patch
patch -p1 -i ${srcdir}/03-fix-plugins.patch
patch -p1 -i ${srcdir}/04-manpage-paths.patch
patch -p1 -i ${srcdir}/14-MinGW-w64-add-LIBSASL_API-to-function-definitions.patch
patch -p1 -i ${srcdir}/15-MinGW-w64-define-LIBSASL_EXPORTS_eq_1-for-sasldb.patch
patch -p1 -i ${srcdir}/16-MinGW-w64-define-WIN32_LEAN_AND_MEAN-avoiding-handle_t-redef.patch
patch -p1 -i ${srcdir}/19-paths-relocation.patch
patch -p1 -i ${srcdir}/20-mingw-tchar.patch
patch -p1 -i ${srcdir}/21-fix-getopt-guard.patch
# Partially revert upstream b017b437bef7b329097945172b8516d434754d41 commit.
patch -p1 -i ${srcdir}/22-autoconf-prevent-full-path-resolution.patch
# For clang
sed -i "s/-fPIC //g" common/Makefile.am sasldb/Makefile.am
autoreconf -fiv
cp -f ${srcdir}/${_realname}-${pkgver}/win32/include/md5global.h ${srcdir}/${_realname}-${pkgver}/include/md5global.h
}
build() {
[[ -d ${srcdir}/build-${CARCH} ]] && rm -rf ${srcdir}/build-${CARCH}
mkdir -p "${srcdir}/build-${CARCH}"
cd "${srcdir}/build-${CARCH}"
# Useful ref:
# https://fedorapeople.org/cgit/elmarco/public_git/mingw32-cyrus-sasl.git/tree/mingw32-cyrus-sasl.spec
# --oldincludedir=${MINGW_PREFIX}/include is so that /usr/include isn't added by default.
# --enable-sql seems to have problems with <mysql.h> not existing, I thought it would be a part of sqlite.
# --enable-sql
# --without-saslauthd because it needs sockaddr_un.
# We disable OpenSSL (--without-openssl --without-des) so that applications
# with licenses incompatible with OpenSSL (such as GPL applications) do not
# end up linked with OpenSSL if they use and redistribute Cyrus SASL outside
# MSYS2. See these links:
#
# * https://www.openssl.org/support/faq.html#LEGAL2
# * https://en.wikipedia.org/wiki/OpenSSL#Licensing
../${_realname}-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--build=${MINGW_CHOST} \
--host=${MINGW_CHOST} \
--with-configdir=${MINGW_PREFIX}/etc/sasl2:${MINGW_PREFIX}/etc/sasl:${MINGW_PREFIX}/lib/sasl2 \
--with-plugindir=${MINGW_PREFIX}/lib/sasl2 \
--disable-static --enable-shared \
--with-sqlite3=${MINGW_PREFIX} \
--disable-ldapdb \
--oldincludedir=${MINGW_PREFIX}/include \
--without-saslauthd \
--without-pwcheck \
--without-des \
--without-authdaemond \
--with-dblib=gdbm \
--disable-sample
make
}
package() {
local _plugindir=${MINGW_PREFIX}/lib/sasl2
cd "${srcdir}/build-${CARCH}"
make DESTDIR="${pkgdir}" install sasldir=${_plugindir}
install -Dm644 ${srcdir}/${_realname}-${pkgver}/COPYING "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING"
}