clean the package build process

This commit is contained in:
Jan Vcelak 2012-07-18 18:57:33 +02:00
parent 9eda95bba4
commit 824671e8d7
2 changed files with 140 additions and 133 deletions

View File

@ -0,0 +1,47 @@
Use pkg-config for Mozilla NSS library detection
Author: Jan Vcelak <jvcelak@redhat.com>
---
configure.in | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/configure.in b/configure.in
index f0f8d99..2a9cfb4 100644
--- a/configure.in
+++ b/configure.in
@@ -1223,26 +1223,16 @@ if test $ol_link_tls = no ; then
fi
fi
-dnl NOTE: caller must specify -I/path/to/nspr4 and -I/path/to/nss3
-dnl and -L/path/to/nspr4 libs and -L/path/to/nss3 libs if those libs
-dnl are not in the default system location
if test $ol_link_tls = no ; then
if test $ol_with_tls = moznss || test $ol_with_tls = auto ; then
- have_moznss=no
- AC_CHECK_HEADERS([nssutil.h])
- if test "$ac_cv_header_nssutil_h" = yes ; then
- AC_CHECK_LIB([nss3], [NSS_Initialize],
- [ have_moznss=yes ], [ have_moznss=no ])
- fi
+ PKG_CHECK_MODULES(MOZNSS, [nss nspr], [have_moznss=yes], [have_moznss=no])
- if test "$have_moznss" = yes ; then
+ if test $have_moznss = yes ; then
ol_with_tls=moznss
ol_link_tls=yes
- AC_DEFINE(HAVE_MOZNSS, 1,
- [define if you have MozNSS])
- TLS_LIBS="-lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4"
- else
- AC_MSG_ERROR([MozNSS not found - please specify the location to the NSPR and NSS header files in CPPFLAGS and the location to the NSPR and NSS libraries in LDFLAGS (if not in the system location)])
+ AC_DEFINE(HAVE_MOZNSS, 1, [define if you have MozNSS])
+ TLS_LIBS="$MOZNSS_LIBS"
+ CFLAGS="$CFLAGS $MOZNSS_CFLAGS"
fi
fi
fi
--
1.7.10.4

View File

@ -8,7 +8,7 @@
Name: openldap
Version: 2.4.31
Release: 3%{?dist}
Release: 4%{?dist}
Summary: LDAP support libraries
Group: System Environment/Daemons
License: OpenLDAP
@ -48,13 +48,13 @@ Patch16: openldap-nss-default-cipher-suite-always-selected.patch
Patch17: openldap-nss-multiple-tls-contexts.patch
# Fedora specific patches
Patch100: openldap-fedora-systemd.patch
Patch100: openldap-autoconf-pkgconfig-nss.patch
Patch101: openldap-fedora-systemd.patch
# patches for the evolution library (see README.evolution)
Patch200: openldap-evolution-ntlm.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: autoconf
BuildRequires: cyrus-sasl-devel, nss-devel, krb5-devel, tcp_wrappers-devel, unixODBC-devel
BuildRequires: glibc-devel, libtool, libtool-ltdl-devel, groff, perl
# smbk5pwd overlay:
@ -137,10 +137,16 @@ programs needed for accessing and modifying OpenLDAP directories.
%prep
%setup -q -c -a 0
# setup tree for openldap
pushd openldap-%{version}
# use pkg-config for Mozilla NSS library
%patch100 -p1
AUTOMAKE=/bin/true autoreconf --install --force
# alternative include paths for Mozilla NSS
ln -s %{_includedir}/nss3 include/nss
ln -s %{_includedir}/nspr4 include/nspr
%patch0 -p1
%patch1 -p1
%patch2 -p1
@ -160,14 +166,7 @@ pushd openldap-%{version}
%patch16 -p1
%patch17 -p1
%patch100 -p1
cp %{_datadir}/libtool/config/config.{sub,guess} build/
for subdir in build-servers build-clients ; do
mkdir $subdir
ln -s ../configure $subdir
done
%patch101 -p1
# build smbk5pwd with other overlays
ln -s ../../../contrib/slapd-modules/smbk5pwd/smbk5pwd.c servers/slapd/overlays
@ -181,8 +180,7 @@ done
popd
# setup tree for openldap with evolution-specific patches
# patched static libraries for Evolution
if ! cp -al openldap-%{version} evo-openldap-%{version} ; then
rm -fr evo-openldap-%{version}
cp -a openldap-%{version} evo-openldap-%{version}
@ -193,141 +191,97 @@ popd
%build
libtool='%{_bindir}/libtool'
export tagname=CC
export CPPFLAGS="-I%_includedir/nss3 -I%_includedir/nspr4"
export CFLAGS="$RPM_OPT_FLAGS $CPPFLAGS -fPIC -D_REENTRANT -DLDAP_CONNECTIONLESS -D_GNU_SOURCE -DHAVE_TLS -DHAVE_MOZNSS -DSLAPD_LMHASH"
export NSS_LIBS="-lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4"
export LIBS=""
build() {
# avoid stray dependencies (linker flag --as-needed)
# enable experimental support for LDAP over UDP (LDAP_CONNECTIONLESS)
export CFLAGS="%{optflags} -Wl,--as-needed -DLDAP_CONNECTIONLESS"
pushd openldap-%{version}
%configure \
--with-threads=posix \
\
--enable-local \
--enable-rlookups \
\
--with-tls=no \
--with-cyrus-sasl \
\
--enable-wrappers \
\
--enable-passwd \
\
--enable-debug \
--enable-dynamic \
--enable-syslog \
--enable-proctitle \
--enable-ipv6 \
--enable-local \
\
--enable-slapd \
--enable-dynacl \
--enable-aci \
--enable-cleartext \
--enable-crypt \
--enable-lmpasswd \
--enable-spasswd \
--disable-lmpasswd \
--enable-modules \
--disable-sql \
\
--libexecdir=%{_libdir} \
$@
# allow #include <nss/file.h> and <nspr/file.h>
pushd include
if [ ! -d nss ] ; then
ln -s %{_includedir}/nss3 nss
fi
if [ ! -d nspr ] ; then
ln -s %{_includedir}/nspr4 nspr
fi
popd
make %{_smp_mflags} LIBTOOL="$libtool"
}
# Kerberos support:
# - enabled in server (mainly for password checking)
# - disabled in clients (not needed, to avoid stray dependencies)
# build servers
export LIBS="$NSS_LIBS -lpthread"
pushd openldap-%{version}/build-servers
build \
--enable-slapd \
--enable-bdb \
--enable-dnssrv=mod \
--enable-hdb \
--enable-ldap=mod \
--enable-meta=mod \
--enable-monitor \
--enable-null=mod \
--enable-shell=mod \
--enable-sql=mod \
--enable-mdb=mod \
--enable-modules \
--enable-rewrite \
--enable-rlookups \
--enable-slapi \
--disable-slp \
--enable-wrappers \
\
--enable-backends=mod \
--enable-bdb=yes \
--enable-hdb=yes \
--enable-monitor=yes \
--disable-ndb \
--enable-passwd=mod \
--enable-sock=mod \
--disable-perl \
--enable-relay=mod \
\
--enable-overlays=mod \
--enable-dynacl \
--enable-aci=yes \
--disable-shared \
--disable-dynamic
\
--disable-static \
--enable-shared \
\
--with-cyrus-sasl \
--without-fetch \
--with-threads \
--with-pic \
--with-tls=moznss \
--with-gnu-ld \
\
--libexecdir=%{_libdir}
make %{_smp_mflags}
popd
# build clients
export LIBS="$NSS_LIBS"
pushd openldap-%{version}/build-clients
build \
--disable-slapd \
--enable-shared \
--enable-dynamic \
--without-kerberos \
--with-pic
popd
# build evolution-specific clients
# (specific patch, different installation directory, no shared libraries)
# build patched static library for Evolution
pushd evo-openldap-%{version}
build \
--disable-slapd \
--disable-shared \
--disable-dynamic \
--enable-static \
--without-kerberos \
--with-pic \
%configure \
--enable-debug \
--disable-dynamic \
--disable-syslog \
--disable-proctitle \
--enable-ipv6 \
--disable-local \
\
--disable-slapd \
\
--enable-static \
--disable-shared \
\
--with-cyrus-sasl \
--without-fetch \
--with-threads \
--with-pic \
--with-tls=moznss \
--with-gnu-ld \
\
--includedir=%{evolution_connector_includedir} \
--libdir=%{evolution_connector_libdir}
make %{_smp_mflags}
popd
%install
rm -rf %{buildroot}
libtool='%{_bindir}/libtool'
export tagname=CC
mkdir -p %{buildroot}%{_libdir}/
# install servers
pushd openldap-%{version}/build-servers
make install DESTDIR=%{buildroot} \
libdir=%{_libdir} \
LIBTOOL="$libtool" \
STRIP=""
popd
# install evolution-specific clients (conflicting files will be overwriten by generic version)
# install evolution-specific libraries (conflicting files will be overwriten by generic version)
pushd evo-openldap-%{version}
make install DESTDIR=%{buildroot} \
includedir=%{evolution_connector_includedir} \
libdir=%{evolution_connector_libdir} \
LIBTOOL="$libtool" \
STRIP=""
install -m 644 %SOURCE100 \
%{buildroot}%{evolution_connector_prefix}/
make install DESTDIR=%{buildroot} STRIP=""
install -m 644 %SOURCE100 %{buildroot}%{evolution_connector_prefix}/
popd
# install clients
pushd openldap-%{version}/build-clients
make install DESTDIR=%{buildroot} \
libdir=%{_libdir} \
LIBTOOL="$libtool" \
STRIP=""
pushd openldap-%{version}
make install DESTDIR=%{buildroot} STRIP=""
popd
# setup directories for TLS certificates
@ -402,10 +356,7 @@ chmod 0644 %{buildroot}%{_datadir}/openldap-servers/DB_CONFIG.example
# remove files which we don't want packaged
rm -f %{buildroot}%{_libdir}/*.la
rm -f %{buildroot}%{_libdir}/*.a
rm -f %{buildroot}%{evolution_connector_libdir}/*.la
rm -f %{buildroot}%{evolution_connector_libdir}/*.so*
rm -f %{buildroot}%{_libdir}/openldap/*.a
rm -f %{buildroot}%{_libdir}/openldap/*.so
rm -f %{buildroot}%{_localstatedir}/openldap-data/DB_CONFIG.example
@ -610,6 +561,7 @@ exit 0
%dir %attr(-,ldap,ldap) %{_localstatedir}/run/openldap
%{_unitdir}/slapd.service
%{_datadir}/openldap-servers/
%{_libdir}/libslapi-2.4*.so.*
%{_libdir}/openldap/accesslog*
%{_libdir}/openldap/auditlog*
%{_libdir}/openldap/back_dnssrv*
@ -664,12 +616,20 @@ exit 0
%files devel
%doc openldap-%{version}/doc/drafts openldap-%{version}/doc/rfc
%{_libdir}/libl*.so
%{_libdir}/lib*.so
%{_includedir}/*
%{_mandir}/man3/*
%{evolution_connector_prefix}/
%changelog
* Wed Jul 18 2012 Jan Vcelak <jvcelak@redhat.com> 2.4.31-4
- modify the package build process
+ fix autoconfig files to detect Mozilla NSS library using pkg-config
+ remove compiler flags which are not needed currently
+ build server, client and library together
+ avoid stray dependencies by using --as-needed linker flag
+ enable SLAPI interface in slapd
* Wed Jun 27 2012 Jan Vcelak <jvcelak@redhat.com> 2.4.31-3
- update fix: count constraint broken when using multiple modifications (#795766)
- fix: invalid order of TLS shutdown operations (#808464)