Browse Source

new package: openldap24 2.4.5 (Lightweight Directory Access Protocol (LDAP) Toolkit)

Ralf S. Engelschall 18 years ago
parent
commit
98f6900691
5 changed files with 419 additions and 0 deletions
  1. 16 0
      openldap24/fsl.openldap
  2. 10 0
      openldap24/openldap.pc
  3. 40 0
      openldap24/openldap24.patch
  4. 274 0
      openldap24/openldap24.spec
  5. 79 0
      openldap24/rc.openldap

+ 16 - 0
openldap24/fsl.openldap

@@ -0,0 +1,16 @@
+##
+##  fsl.openldap -- OSSP fsl configuration
+##
+
+ident (slap.*|slurp.*)/.+ q{
+    prefix(
+        prefix="%b %d %H:%M:%S %N <%L> $1[%P]: "
+    )
+    -> {
+        debug: file(
+            path="@l_prefix@/var/openldap/openldap.log",
+            perm=0644
+        )
+    }
+};
+

+ 10 - 0
openldap24/openldap.pc

@@ -0,0 +1,10 @@
+prefix=@l_prefix@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: openldap
+Description: OpenLDAP Libraries
+Version: @version@
+Libs: -L${libdir} @libs@
+Cflags: -I${includedir}

+ 40 - 0
openldap24/openldap24.patch

@@ -0,0 +1,40 @@
+Index: servers/slapd/slapd.conf
+--- servers/slapd/slapd.conf.orig	2004-06-18 04:49:08 +0200
++++ servers/slapd/slapd.conf	2005-06-18 12:26:38 +0200
+@@ -65,3 +65,19 @@
+ directory	%LOCALSTATEDIR%/openldap-data
+ # Indices to maintain
+ index	objectClass	eq
++
++#######################################################################
++# replication via slurpd(8)
++#######################################################################
++
++# master server configuration
++#replogfile      %LOCALSTATEDIR%/openldap-slurp
++#replica-pidfile %LOCALSTATEDIR%/slurpd.pid
++#replica         host=slave.example.com:389
++#                binddn="cn=admin,dc=example,dc=org"
++#                bindmethod=simple credentials=secret
++
++# slave server(s) configuration
++#updatedn        "cn=admin,dc=example,dc=org"
++#updateref       ldap://master.example.org
++
+Index: include/ac/fdset.h
+--- include/ac/fdset.h.orig	2005-01-20 19:03:49 +0100
++++ include/ac/fdset.h	2005-10-07 10:07:52 +0200
+@@ -22,6 +22,13 @@
+ #ifndef _AC_FDSET_H
+ #define _AC_FDSET_H
+ 
++#if defined(HAVE_SYS_TYPES_H)
++#include <sys/types.h>
++#endif
++#if defined(HAVE_SYS_SELECT_H)
++#include <sys/select.h>
++#endif
++
+ #if !defined( OPENLDAP_FD_SETSIZE ) && !defined( FD_SETSIZE )
+ #  define OPENLDAP_FD_SETSIZE 4096
+ #endif

+ 274 - 0
openldap24/openldap24.spec

@@ -0,0 +1,274 @@
+##
+##  openldap24.spec -- OpenPKG RPM Package Specification
+##  Copyright (c) 2000-2007 OpenPKG Foundation e.V. <http://openpkg.net/>
+##  Copyright (c) 2000-2007 Ralf S. Engelschall <http://engelschall.com/>
+##
+##  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:         openldap24
+Summary:      Lightweight Directory Access Protocol (LDAP) Toolkit
+URL:          http://www.openldap.org/
+Vendor:       OpenLDAP Project
+Packager:     OpenPKG Foundation e.V.
+Distribution: OpenPKG Community
+Class:        EVAL
+Group:        LDAP
+License:      GPL
+Version:      2.4.5
+Release:      20070905
+
+#   package options
+%option       with_fsl      yes
+%option       with_crypt    yes
+%option       with_overlays yes
+%option       with_sasl     no
+%option       with_perl     no
+%option       with_odbc     no
+
+#   list of sources
+Source0:      ftp://ftp.openldap.org/pub/openldap/openldap-test/openldap-%{version}beta.tgz
+Source1:      rc.openldap
+Source2:      fsl.openldap
+Source3:      openldap.pc
+Patch0:       openldap24.patch
+
+#   build information
+Prefix:       %{l_prefix}
+BuildRoot:    %{l_buildroot}
+BuildPreReq:  OpenPKG, openpkg >= 20060823, make, gcc
+PreReq:       OpenPKG, openpkg >= 20060823
+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
+%if "%{with_odbc}" == "yes"
+BuildPreReq:  ODBC
+PreReq:       ODBC
+%endif
+AutoReq:      no
+AutoReqProv:  no
+Provides:     openldap
+Conflicts:    openldap
+
+%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).
+
+    THIS IS AN EXPERIMENTAL VERSION! DO NOT USE FOR PRODUCTION!
+
+%track
+    prog openldap = {
+        version   = %{version}
+        url       = ftp://ftp.openldap.org/pub/openldap/openldap-test/
+        regex     = openldap-(__VER__)beta\.tgz
+    }
+
+%prep
+    %setup -q -n openldap-%{version}beta
+    %patch -p0
+    %{l_shtool} subst \
+        -e 's;-ldb-4\.[1-9];-ldb;g' \
+        -e 's;-ldb-4-[1-9];-ldb;g' \
+        -e 's;-ldb-4[1-9];-ldb;g' \
+        -e 's;-ldb-4;-ldb;g' \
+        configure
+
+%build
+    #   configuration: standard build flags
+    export CC="%{l_cc}"
+    export CFLAGS="%{l_cflags -O}"
+    export CPPFLAGS="%{l_cppflags}"
+    export LDFLAGS="%{l_ldflags}"
+    export LIBS=""
+    export ARGS=""
+    ARGS="$ARGS --prefix=%{l_prefix}"
+    ARGS="$ARGS --libexecdir=%{l_prefix}/libexec/openldap"
+    ARGS="$ARGS --localstatedir=%{l_prefix}/var/openldap"
+    ARGS="$ARGS --enable-syslog"
+    ARGS="$ARGS --with-readline"
+    ARGS="$ARGS --with-tls"
+    ARGS="$ARGS --without-fetch"
+    ARGS="$ARGS --disable-dynamic"
+    ARGS="$ARGS --disable-shared"
+    ARGS="$ARGS --disable-modules"
+    ARGS="$ARGS --enable-ldbm"
+    ARGS="$ARGS --enable-ldbm-api=berkeley"
+    ARGS="$ARGS --enable-ldbm-type=btree"
+    ARGS="$ARGS --enable-bdb"
+    ARGS="$ARGS --enable-rewrite"
+    ARGS="$ARGS --enable-hdb"
+    ARGS="$ARGS --enable-ldap"
+    ARGS="$ARGS --enable-meta"
+    ARGS="$ARGS --enable-monitor"
+    ARGS="$ARGS --enable-dnssrv"
+    ARGS="$ARGS --enable-null"
+    ARGS="$ARGS --enable-shell"
+    ARGS="$ARGS --with-proxycache"
+    ARGS="$ARGS --enable-slurpd"
+
+    #   configuration: force to use OSSP fsl
+    LDFLAGS="$LDFLAGS %{l_fsl_ldflags}"
+    LIBS="$LIBS %{l_fsl_libs}"
+
+    #   configuration: force to use GNU pth
+    CFLAGS="$CFLAGS `%{l_prefix}/bin/pth-config --cflags`"
+    CPPFLAGS="$CPPFLAGS -I`%{l_prefix}/bin/pth-config --includedir`"
+    LDFLAGS="$LDFLAGS `%{l_prefix}/bin/pth-config --ldflags`"
+    LIBS="`%{l_prefix}/bin/pth-config --libs` $LIBS"
+    ARGS="$ARGS --with-threads=pth"
+
+    #   configuration: optional overlay support
+%if "%{with_overlays}" == "yes"
+    ARGS="$ARGS --enable-overlays=yes"
+%endif
+
+    #   configuration: optional SASL support
+%if "%{with_sasl}" == "yes"
+    ( echo "ac_cv_lib_sasl2_sasl_client_init=yes"
+    ) >config.cache
+    CPPFLAGS="%{l_cppflags sasl} $CPPFLAGS"
+    ARGS="$ARGS --with-cyrus-sasl --enable-spasswd"
+%else
+    ARGS="$ARGS --without-cyrus-sasl --disable-spasswd"
+%endif
+
+    #   configuration: optional crypt(3) support
+%if "%{with_crypt}" == "yes"
+    ARGS="$ARGS --enable-crypt"
+%endif
+
+    #   configuration: optional Perl support
+%if "%{with_perl}" == "yes"
+    ARGS="$ARGS --enable-perl"
+%endif
+
+    #   configuration: optional ODBC-based RDBMS support
+%if "%{with_odbc}" == "yes"
+    ARGS="$ARGS --enable-sql"
+%endif
+
+    #   configuration: special platform support
+    case "%{l_platform -t}" in
+        *-sunos* ) CFLAGS="$CFLAGS -D_AVL_H"; LIBS="$LIBS -lrt" ;;
+    esac
+
+    #   configuration: use hard-links and make sure our Berkeley-DB is picked up first
+    %{l_shtool} subst \
+        -e 's;ln -s;ln;g' \
+        -e 's;-ldb4[234];%{l_prefix}/lib/libdb.a;g' \
+        -e 's;<db\.h>;"db.h";g' \
+        configure
+
+    #   configuration
+    ./configure --cache-file=./config.cache $ARGS
+
+    #   build toolkit
+    %{l_make} %{l_mflags} depend
+    %{l_make} %{l_mflags}
+
+%install
+    #   install toolkit
+    rm -rf $RPM_BUILD_ROOT
+    %{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} \
+        '%config %{l_prefix}/etc/fsl/fsl.openldap' \
+        '%config %{l_prefix}/etc/openldap/*.conf' \
+        '%config %{l_prefix}/etc/openldap/schema/*.schema' \
+        '%config %{l_prefix}/etc/openldap/schema/*.ldif'
+
+%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
+    #   after upgrade, restore status
+    [ $1 -eq 2 ] || exit 0
+    { 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
+

+ 79 - 0
openldap24/rc.openldap

@@ -0,0 +1,79 @@
+#!@l_prefix@/bin/openpkg rc
+##
+##  rc.openldap -- Run-Commands
+##
+
+%config
+    openldap_enable="$openpkg_rc_def"
+    openldap_flags=""
+    openldap_url="ldap://127.0.0.1:389/"
+    openldap_log_prolog="true"
+    openldap_log_epilog="true"
+    openldap_log_numfiles="10"
+    openldap_log_minsize="1M"
+    openldap_log_complevel="9"
+
+%common
+    openldap_slapd_cfgfile="@l_prefix@/etc/openldap/slapd.conf"
+    openldap_slapd_pidfile="@l_prefix@/var/openldap/run/slapd.pid"
+    openldap_slurpd_pidfile="@l_prefix@/var/openldap/run/slurpd.pid"
+    openldap_slapd_signal () {
+        [ -f $openldap_slapd_pidfile ] && kill -$1 `cat $openldap_slapd_pidfile`
+    }
+    openldap_slurpd_signal () {
+        [ -f $openldap_slurpd_pidfile ] && kill -$1 `cat $openldap_slurpd_pidfile`
+    }
+    openldap_slurpd_needed () {
+        [ ".`grep '^replogfile' $openldap_slapd_cfgfile`" != . ] && return 0
+        return 1
+    }
+
+%status -u @l_susr@ -o
+    openldap_usable="unknown"
+    openldap_active="no"
+    rcService openldap enable yes && \
+        openldap_slapd_signal 0 && openldap_active="yes"
+    rcService openldap enable yes && openldap_slurpd_needed && \
+        openldap_slurpd_signal 0 && openldap_active="yes"
+    echo "openldap_enable=\"$openldap_enable\""
+    echo "openldap_usable=\"$openldap_usable\""
+    echo "openldap_active=\"$openldap_active\""
+
+%start -p 300 -u @l_susr@
+    rcService openldap enable yes || exit 0
+    openldap_slapd_signal 0
+    if [ $? -ne 0 ]; then
+        flags="$openldap_flags"
+        echo $flags | grep -- -h >/dev/null
+        if [ $? -ne 0 -a ".$openldap_url" != . ]; then
+            flags="$flags -h \"$openldap_url\""
+        fi
+        eval @l_prefix@/libexec/openldap/slapd $flags || exit $?
+    fi
+    openldap_slurpd_needed || exit 0
+    openldap_slurpd_signal 0
+    if [ $? -ne 0 ]; then
+        @l_prefix@/libexec/openldap/slurpd || exit $?
+    fi
+
+%stop -p 700 -u @l_susr@
+    rcService openldap enable yes || exit 0
+    rcService openldap active no  && exit 0
+    openldap_slapd_signal INT
+    openldap_slurpd_signal INT
+    sleep 2
+
+%restart -u @l_susr@
+    rcService openldap enable yes || exit 0
+    rcService openldap active no  && exit 0
+    rc openldap stop start
+
+%daily -u @l_susr@
+    rcService openldap enable yes || exit 0
+    shtool rotate -f \
+        -n ${openldap_log_numfiles} -s ${openldap_log_minsize} -d \
+        -z ${openldap_log_complevel} -m 644 -o @l_susr@ -g @l_mgrp@ \
+        -P "${openldap_log_prolog}" \
+        -E "${openldap_log_epilog}; rc openldap restart" \
+        @l_prefix@/var/openldap/openldap.log
+