##
## openldap.spec -- OpenPKG RPM Package Specification
## Copyright (c) 2000-2005 OpenPKG Foundation e.V.
## Copyright (c) 2000-2005 Ralf S. Engelschall
##
## Permission to use, copy, modify, and distribute this software for
## any purpose with or without fee is hereby granted, provided that
## the above copyright notice and this permission notice appear in all
## copies.
##
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
## SUCH DAMAGE.
##
# package information
Name: openldap
Summary: Lightweight Directory Access Protocol (LDAP) Toolkit
URL: http://www.openldap.org/
Vendor: OpenLDAP Project
Packager: OpenPKG
Distribution: OpenPKG
Class: BASE
Group: Database
License: GPL
Version: 2.3.12
Release: 20051119
# package options
%option with_fsl yes
%option with_crypt yes
%option with_sasl no
%option with_perl no
# list of sources
Source0: ftp://ftp.openldap.org/pub/openldap/openldap-release/openldap-%{version}.tgz
Source1: rc.openldap
Source2: fsl.openldap
Source3: openldap.pc
Patch0: openldap.patch
# build information
Prefix: %{l_prefix}
BuildRoot: %{l_buildroot}
BuildPreReq: OpenPKG, openpkg >= 20050615, make, gcc
PreReq: OpenPKG, openpkg >= 20050615
BuildPreReq: readline, openssl, db >= 4.2, pth
PreReq: readline, openssl, db >= 4.2, pth
%if "%{with_fsl}" == "yes"
BuildPreReq: fsl >= 1.2.0
PreReq: fsl >= 1.2.0
%endif
%if "%{with_sasl}" == "yes"
BuildPreReq: sasl
PreReq: sasl
%endif
AutoReq: no
AutoReqProv: no
%description
OpenLDAP is an open source implementation of the Lightweight
Directory Access Protocol (LDAP). The suite includes libraries
implementing the LDAP protocol plus a stand-alone LDAP server
slapd(8) and a stand-alone LDAP replication server slurpd(8).
%track
prog openldap = {
version = %{version}
url = ftp://ftp.openldap.org/pub/openldap/openldap-release/
regex = openldap-(__VER__)\.tgz
}
%prep
%setup -q
%patch -p0
%build
# configure toolkit
# (1. use hard-links)
# (2. make sure our Berkeley-DB is picked up first)
%{l_shtool} subst \
-e 's;ln -s;ln;g' \
-e 's;-ldb42;-ldb;g' \
-e 's;-ldb43;-ldb;g' \
-e 's;;"db.h";g' \
configure
%if "%{with_sasl}" == "yes"
# hard-code use of SASL2 library
( echo "ac_cv_lib_sasl2_sasl_client_init=yes"
) >config.cache
cf="%{l_cppflags sasl}"
%else
cf="%{l_cppflags}"
%endif
LOCLIBS=""
case "%{l_platform -t}" in
*-sunos* )
LOCLIBS="-lrt"
;;
esac
CC="%{l_cc}" \
CFLAGS="%{l_cflags -O} `%{l_prefix}/bin/pth-config --cflags`" \
CPPFLAGS="$cf -I`%{l_prefix}/bin/pth-config --includedir`" \
LDFLAGS="%{l_ldflags} `%{l_prefix}/bin/pth-config --ldflags` %{l_fsl_ldflags}" \
LIBS="`%{l_prefix}/bin/pth-config --libs` %{l_fsl_libs} $LOCLIBS" \
./configure \
--cache-file=./config.cache \
--prefix=%{l_prefix} \
--libexecdir=%{l_prefix}/libexec/openldap \
--localstatedir=%{l_prefix}/var/openldap \
--enable-syslog \
--with-readline \
--with-tls \
%if "%{with_sasl}" == "yes"
--with-cyrus-sasl \
--enable-spasswd \
%else
--without-cyrus-sasl \
--disable-spasswd \
%endif
%if "%{with_crypt}" == "yes"
--enable-crypt \
%endif
--disable-dynamic \
--disable-shared \
--disable-modules \
--enable-rewrite \
--enable-ldbm \
--with-ldbm-module=static \
--with-ldbm-api=berkeley \
--with-ldbm-type=btree \
--enable-bdb \
--with-bdb-module=static \
--enable-hdb \
--with-hdb-module=static \
--enable-ldap \
--with-ldap-module=static \
--enable-meta \
--with-meta-module=static \
--enable-monitor \
--with-monitor-module=static \
--enable-dnssrv \
--with-dnssrv-module=static \
--enable-null \
--with-null-module=static \
--enable-shell \
--with-shell-module=static \
%if "%{with_perl}" == "yes"
--enable-perl \
--with-perl-module=static \
%endif
--with-dyngroup \
--with-proxycache \
--with-threads=pth \
--enable-slurpd
# build toolkit
%{l_make} %{l_mflags} depend
%{l_make} %{l_mflags}
%install
# install toolkit
rm -rf $RPM_BUILD_ROOT
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/var/openldap
%{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
# post adjustment: remove extra files
rm -f $RPM_BUILD_ROOT%{l_prefix}/etc/openldap/*.default
rm -f $RPM_BUILD_ROOT%{l_prefix}/etc/openldap/*/*.default
# post adjustment: enable and correct slurpd.pid (slapd.pid as a precaution, too)
%{l_shtool} subst \
-e 's;^[ #]*\(pidfile \).*$;\1 %{l_prefix}/var/openldap/run/slapd.pid;' \
-e 's;^[ #]*\(replica-pidfile \).*$;\1 %{l_prefix}/var/openldap/run/slurpd.pid;' \
$RPM_BUILD_ROOT%{l_prefix}/etc/openldap/slapd.conf
# post adjustment: remove OSSP fsl dependency from libtool files
%{l_shtool} subst \
-e 's;-lfsl *;;' \
$RPM_BUILD_ROOT%{l_prefix}/lib/*.la
# install run-command script
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
%{l_shtool} install -c -m 755 %{l_value -s -a} \
%{SOURCE rc.openldap} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
# install OSSP fsl configuration
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/etc/fsl
%{l_shtool} install -c -m 644 %{l_value -s -a} \
%{SOURCE fsl.openldap} \
$RPM_BUILD_ROOT%{l_prefix}/etc/fsl/
# install pkg-config configuration
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig
libs="-lldap -llber"
%if "%{with_sasl}" == "yes"
libs="$libs -lsasl2"
%endif
%{l_shtool} install -c -m 644 %{l_value -s -a} \
-e 's;@version@;%{version};' \
-e "s;@libs@;$libs;" \
%{SOURCE openldap.pc} \
$RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig/
# determine installation files
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
%{l_files_std} \
'%not %dir %{l_prefix}/etc/fsl' \
'%not %dir %{l_prefix}/lib/pkgconfig' \
'%config %{l_prefix}/etc/fsl/fsl.openldap' \
'%config %{l_prefix}/etc/openldap/*.conf'
%files -f files
%clean
rm -rf $RPM_BUILD_ROOT
%pre
# before upgrade, save status and stop service
[ $1 -eq 2 ] || exit 0
eval `%{l_rc} openldap status 2>/dev/null | tee %{l_tmpfile}`
%{l_rc} openldap stop 2>/dev/null
exit 0
%post
[ $1 -eq 2 ] || exit 0
# after upgrade, restore status
{ eval `cat %{l_tmpfile}`; rm -f %{l_tmpfile}; true; } >/dev/null 2>&1
[ ".$openldap_active" = .yes ] && %{l_rc} openldap start
exit 0
%preun
# before erase, stop service and remove log files
[ $1 -eq 0 ] || exit 0
%{l_rc} openldap stop 2>/dev/null
rm -f $RPM_INSTALL_PREFIX/var/openldap/openldap.log* >/dev/null 2>&1 || true
exit 0