summary refs log tree commit diff
path: root/gnu/packages/openldap.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/openldap.scm')
-rw-r--r--gnu/packages/openldap.scm40
1 files changed, 37 insertions, 3 deletions
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index 0d07571c2c..e8d766e472 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -36,6 +36,7 @@
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -198,14 +199,14 @@ servers from Python programs.")
 (define-public 389-ds-base
   (package
     (name "389-ds-base")
-    (version "1.4.0.13")
+    (version "1.4.0.21")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://releases.pagure.org/389-ds-base/"
                                   "389-ds-base-" version ".tar.bz2"))
               (sha256
                (base32
-                "01dm3zq3w5ami9pwcjbjz8wfbx9krjxybjrgc4wyhrxlzd90ylzj"))))
+                "1qd1ap5d5nxyiq0d19czfwc3h7iwl9lmr5sy7d7xmpr2by59aysr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((srfi srfi-1)
@@ -222,12 +223,43 @@ servers from Python programs.")
                             (assoc-ref %build-inputs "pcre"))
              (string-append "--with-selinux="
                             (assoc-ref %build-inputs "libselinux"))
+             "--localstatedir=/var"
+             "--with-instconfigdir=/etc/dirsrv"
              ;; The Perl scripts are being removed in the 1.4.0 release.
              ;; Building them would require packaging of the outdated Mozilla
              ;; LDAP SDK (instead of OpenLDAP) and PerLDAP.
              "--disable-perl")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-references
+           (lambda _
+             (substitute* "include/ldaputil/certmap.h"
+               (("nss3/cert.h") "nss/cert.h"))
+             (substitute* "src/lib389/lib389/nss_ssl.py"
+               (("'/usr/bin/certutil'")
+                (string-append "'" (which "certutil") "'"))
+               (("'/usr/bin/c_rehash'")
+                (string-append "'" (which "perl") "', '" (which "c_rehash") "'")))
+             #t))
+         (add-after 'unpack 'overwrite-default-locations
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "src/lib389/lib389/paths.py"
+                 (("/usr/share/dirsrv/inf/defaults.inf")
+                  (string-append out "/share/dirsrv/inf/defaults.inf")))
+               ;; This directory can only be specified relative to sysconfdir.  This
+               ;; is used to determine where to look for installed directory
+               ;; servers, so in the absence of a search path it needs to be global.
+               (substitute* "ldap/admin/src/defaults.inf.in"
+                 (("^initconfig_dir =.*")
+                  "initconfig_dir = /etc/dirsrv/registry\n"))
+               ;; This is used to determine where to write certificate files
+               ;; when installing new directory server instances.
+               (substitute* '("src/lib389/lib389/instance/setup.py"
+                              "src/lib389/lib389/instance/remove.py")
+                 (("etc_dirsrv_path = .*")
+                  "etc_dirsrv_path = '/etc/dirsrv/'\n"))
+               #t)))
          (add-after 'unpack 'fix-install-location-of-python-tools
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -286,6 +318,7 @@ servers from Python programs.")
              #t)))))
     (inputs
      `(("bdb" ,bdb)
+       ("cracklib" ,cracklib)
        ("cyrus-sasl" ,cyrus-sasl)
        ("gnutls" ,gnutls)
        ("httpd" ,httpd)
@@ -297,6 +330,7 @@ servers from Python programs.")
        ("net-snmp" ,net-snmp)
        ("nspr" ,nspr)
        ("nss" ,nss)
+       ("nss:bin" ,nss "bin") ; for certutil
        ("openldap" ,openldap)
        ("openssl" ,openssl)             ; #included by net-snmp
        ("pcre" ,pcre)