gnu: facter: Update to 4.0.33.
[jackhill/guix/guix.git] / gnu / packages / openldap.scm
index 368a953..14bf874 100644 (file)
@@ -1,9 +1,12 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2019 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>
+;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
+;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages nss)
+  #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -47,8 +51,9 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
   #:use-module (gnu packages)
-  #:use-module ((guix licenses) #:select (openldap2.8 lgpl2.1+ gpl3+ psfl))
+  #:use-module ((guix licenses) #:select (openldap2.8 lgpl2.1+ gpl3+ psfl expat))
   #:use-module (guix packages)
+  #:use-module (guix utils)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python))
@@ -56,7 +61,8 @@
 (define-public openldap
   (package
    (name "openldap")
-   (version "2.4.46")
+   (replacement openldap-2.4.50)
+   (version "2.4.49")
    (source (origin
             (method url-fetch)
 
                         "openldap-release/openldap-" version ".tgz")))
             (sha256
              (base32
-              "0bab1km8f2nan1x0zgwliknbxg0zlf2pafxrr867kblrdfwdr44s"))))
+              "0vp524rsngdcykf6ki7vprsyg7gj8z7hszg8xwxz50219fa1gcg3"))))
    (build-system gnu-build-system)
    (inputs `(("bdb" ,bdb-5.3)
              ("cyrus-sasl" ,cyrus-sasl)
              ("gnutls" ,gnutls)
-             ("groff" ,groff)
-             ("icu4c" ,icu4c)
              ("libgcrypt" ,libgcrypt)
              ("zlib" ,zlib)))
-   (native-inputs `(("libtool" ,libtool)))
+   (native-inputs `(("libtool" ,libtool)
+                    ("groff" ,groff)
+                    ("bdb" ,bdb-5.3)))
    (arguments
     `(#:tests? #f
-      #:configure-flags '("--disable-static")
+      #:configure-flags
+      '("--disable-static"
+        ,@(if (%current-target-system)
+              '("--with-yielding_select=yes"
+                "ac_cv_func_memcmp_working=yes")
+              '()))
+      ;; Disable install stripping as it breaks cross-compiling.
+      #:make-flags '("STRIP=")
       #:phases
       (modify-phases %standard-phases
+        ,@(if (%current-target-system)
+              '((add-before 'configure 'fix-cross-gcc
+                  (lambda* (#:key target #:allow-other-keys)
+                    (setenv "CC" (string-append target "-gcc"))
+                    #t)))
+              '())
         (add-after 'install 'patch-sasl-path
           ;; Give -L arguments for cyrus-sasl to avoid propagation.
           (lambda* (#:key inputs outputs #:allow-other-keys)
    (license openldap2.8)
    (home-page "https://www.openldap.org/")))
 
+(define openldap-2.4.50
+  (package
+    (inherit openldap)
+    (version "2.4.50")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.openldap.org/software/download/"
+                                  "OpenLDAP/openldap-release/openldap-" version
+                                  ".tgz"))
+              (sha256
+               (base32
+                "1f46nlfwmys110j36sifm7ah8m8f3s10c3vaiikmmigmifapvdaw"))))))
+
 (define-public nss-pam-ldapd
   (package
     (name "nss-pam-ldapd")
-    (version "0.9.10")
+    (version "0.9.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://arthurdejong.org/nss-pam-ldapd/"
                                   "nss-pam-ldapd-" version ".tar.gz"))
               (sha256
                (base32
-                "1cqamcr6qpgwxijlr6kg7jspjamjra8w0haan0qssn0yxn95d7c0"))))
+                "1dna3r0q6sjhhlkhcp8x2zkslrd4y7701kk6fl5r940sdph1pmyh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
      `(("linux-pam" ,linux-pam)
        ("openldap" ,openldap)
        ("mit-krb5" ,mit-krb5)
-       ("python" ,python-2)))
+       ("python" ,python)))
     (home-page "https://arthurdejong.org/nss-pam-ldapd")
     (synopsis "NSS and PAM modules for LDAP")
     (description "nss-pam-ldapd provides a @dfn{Name Service Switch} (NSS)
@@ -198,19 +230,23 @@ 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)
                   (guix build gnu-build-system)
+                  ((guix build python-build-system)
+                   #:select (python-version))
                   (guix build utils))
+       #:imported-modules ((guix build python-build-system)
+                           ,@%gnu-build-system-modules)
        #:configure-flags
        (list (string-append "--with-db="
                             (assoc-ref %build-inputs "bdb"))
@@ -222,25 +258,49 @@ 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"))
-                    (get-python-version
-                     ;; FIXME: copied from python-build-system
-                     (lambda (python)
-                       (let* ((version     (last (string-split python #\-)))
-                              (components  (string-split version #\.))
-                              (major+minor (take components 2)))
-                         (string-join major+minor "."))))
                     (pythondir (string-append
                                 out "/lib/python"
-                                (get-python-version (assoc-ref inputs "python"))
+                                (python-version (assoc-ref inputs "python"))
                                 "/site-packages/")))
                ;; Install directory must be on PYTHONPATH.
                (setenv "PYTHONPATH"
@@ -286,6 +346,7 @@ servers from Python programs.")
              #t)))))
     (inputs
      `(("bdb" ,bdb)
+       ("cracklib" ,cracklib)
        ("cyrus-sasl" ,cyrus-sasl)
        ("gnutls" ,gnutls)
        ("httpd" ,httpd)
@@ -297,6 +358,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)
@@ -336,3 +398,30 @@ Other features include:
 @end enumerate\n")
     ;; GPLv3+ with OpenSSL linking exception.
     (license gpl3+)))
+
+(define-public python-bonsai
+  (package
+    (name "python-bonsai")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "bonsai" version))
+       (sha256
+        (base32
+         "013bl6h1m3f7vg1lk89d4vi28wbf31zdcs4f9g8css7ngx63v6px"))))
+    (build-system python-build-system)
+    (inputs
+     `(("mit-krb5" ,mit-krb5)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("openldap" ,openldap)))
+    ;; disabling tests, since they require docker and extensive setup
+    (arguments `(#:tests? #f))
+    (home-page "https://github.com/noirello/bonsai")
+    (synopsis "Access LDAP directory servers from Python")
+    (description
+     "This is a module for handling LDAP operations in Python.  LDAP entries
+are mapped to a special Python case-insensitive dictionary, tracking the
+changes of the dictionary to modify the entry on the server easily.")
+    (license expat)))
+