about summary refs log tree commit diff
path: root/pkgs/servers/ldap
diff options
context:
space:
mode:
authorners <ners@gmx.ch>2022-10-17 11:04:41 +0200
committerners <ners@gmx.ch>2022-10-19 10:50:14 +0200
commit53580d9f09d24c749c4fce323888bd7df8b4b6b3 (patch)
tree44048ef41c160bbb0a40e4fd334d46c062a40773 /pkgs/servers/ldap
parentcff2660d09984c83a3a2be8ff9a49800e73c4280 (diff)
389-ds-base: 2.0.7 -> 2.3.0
Diffstat (limited to 'pkgs/servers/ldap')
-rw-r--r--pkgs/servers/ldap/389/default.nix184
-rw-r--r--pkgs/servers/ldap/apache-directory-server/default.nix29
2 files changed, 110 insertions, 103 deletions
diff --git a/pkgs/servers/ldap/389/default.nix b/pkgs/servers/ldap/389/default.nix
index 438d7d0e630ff..8a3e91bf0305f 100644
--- a/pkgs/servers/ldap/389/default.nix
+++ b/pkgs/servers/ldap/389/default.nix
@@ -1,144 +1,121 @@
-{ stdenv
-, autoreconfHook
+{ lib
+, stdenv
 , fetchFromGitHub
-, lib
-
-, bzip2
-, cmocka
+, autoconf
+, automake
+, libtool
+, pkg-config
 , cracklib
-, cyrus_sasl
-, db
-, doxygen
-, icu
+, lmdb
+, json_c
+, linux-pam
 , libevent
-, libkrb5
-, lm_sensors
-, net-snmp
 , nspr
 , nss
 , openldap
-, openssl
-, pcre
-, perl
-, perlPackages
-, pkg-config
+, withOpenldap ? true
+, db
+, withBdb ? true
+, cyrus_sasl
+, icu
+, net-snmp
+, withNetSnmp ? true
+, krb5
+, pcre2
 , python3
-, svrcore
+, rustPlatform
+, openssl
+, systemd
+, withSystemd ? stdenv.isLinux
 , zlib
-
-, enablePamPassthru ? true
-, pam
-
-, enableCockpit ? true
 , rsync
-
-, enableDna ? true
-, enableLdapi ? true
-, enableAutobind ? false
-, enableAutoDnSuffix ? false
-, enableBitwise ? true
-, enableAcctPolicy ? true
-, enablePosixWinsync ? true
+, withCockpit ? true
+, withAsan ? false
 }:
 
 stdenv.mkDerivation rec {
   pname = "389-ds-base";
-  version = "2.0.7";
+  version = "2.3.0";
 
   src = fetchFromGitHub {
     owner = "389ds";
     repo = pname;
     rev = "${pname}-${version}";
-    sha256 = "sha256-aM1qo+yHrCFespPWHv2f25ooqQVCIZGaZS43dY6kiC4=";
+    sha256 = "sha256-GnntF0UaufDrgcM6FFFdwxwVoU9Hu2NXTW1A2lTb6T4=";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkg-config doxygen ];
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    sourceRoot = "source/src";
+    name = "${pname}-${version}";
+    hash = "sha256-OJXvNL7STNwvt6EiV2r8zv2ZoUGgNUj7UssAQNLN4KI=";
+  };
+
+  nativeBuildInputs = [
+    autoconf
+    automake
+    libtool
+    pkg-config
+    python3
+    rustPlatform.rust.cargo
+    rustPlatform.rust.rustc
+  ]
+  ++ lib.optional withCockpit rsync;
 
   buildInputs = [
-    bzip2
     cracklib
-    cyrus_sasl
-    db
-    icu
+    lmdb
+    json_c
+    linux-pam
     libevent
-    libkrb5
-    lm_sensors
-    net-snmp
     nspr
     nss
-    openldap
+    cyrus_sasl
+    icu
+    krb5
+    pcre2
     openssl
-    pcre
-    perl
-    python3
-    svrcore
     zlib
-
-    # tests
-    cmocka
-    libevent
-
-    # lib389
-    (python3.withPackages (ps: with ps; [
-      setuptools
-      python-ldap
-      six
-      pyasn1
-      pyasn1-modules
-      python-dateutil
-      argcomplete
-      libselinux
-    ]))
-
-    # logconv.pl
-    perlPackages.DBFile
-    perlPackages.ArchiveTar
   ]
-  ++ lib.optional enableCockpit rsync
-  ++ lib.optional enablePamPassthru pam;
+  ++ lib.optional withSystemd systemd
+  ++ lib.optional withOpenldap openldap
+  ++ lib.optional withBdb db
+  ++ lib.optional withNetSnmp net-snmp;
 
   postPatch = ''
-    substituteInPlace Makefile.am \
-      --replace 's,@perlpath\@,$(perldir),g' 's,@perlpath\@,$(perldir) $(PERLPATH),g'
-
     patchShebangs ./buildnum.py ./ldap/servers/slapd/mkDBErrStrs.py
   '';
 
   preConfigure = ''
-    # Create perl paths for library imports in perl scripts
-    PERLPATH=""
-    for P in $(echo $PERL5LIB | sed 's/:/ /g'); do
-      PERLPATH="$PERLPATH $(echo $P/*/*)"
-    done
-    export PERLPATH
+    ./autogen.sh --prefix="$out"
   '';
 
-  configureFlags =
-    let
-      mkEnable = cond: name: if cond then "--enable-${name}" else "--disable-${name}";
-    in
-    [
-      "--enable-cmocka"
-      "--localstatedir=/var"
-      "--sysconfdir=/etc"
-      "--with-db-inc=${db.dev}/include"
-      "--with-db-lib=${db.out}/lib"
-      "--with-db=yes"
-      "--with-netsnmp-inc=${lib.getDev net-snmp}/include"
-      "--with-netsnmp-lib=${lib.getLib net-snmp}/lib"
-      "--with-netsnmp=yes"
-      "--with-openldap"
+  preBuild = ''
+    mkdir -p ./vendor
+    tar -xzf ${cargoDeps} -C ./vendor --strip-components=1
+  '';
 
-      "${mkEnable enableCockpit "cockpit"}"
-      "${mkEnable enablePamPassthru "pam-passthru"}"
-      "${mkEnable enableDna "dna"}"
-      "${mkEnable enableLdapi "ldapi"}"
-      "${mkEnable enableAutobind "autobind"}"
-      "${mkEnable enableAutoDnSuffix "auto-dn-suffix"}"
-      "${mkEnable enableBitwise "bitwise"}"
-      "${mkEnable enableAcctPolicy "acctpolicy"}"
-      "${mkEnable enablePosixWinsync "posix-winsync"}"
-    ];
+  configureFlags = [
+    "--enable-rust-offline"
+    "--enable-autobind"
+  ]
+  ++ lib.optionals withSystemd [
+    "--with-systemd"
+    "--with-systemdsystemunitdir=${placeholder "out"}/etc/systemd/system"
+  ] ++ lib.optionals withOpenldap [
+    "--with-openldap"
+  ] ++ lib.optionals withBdb [
+    "--with-db-inc=${lib.getDev db}/include"
+    "--with-db-lib=${lib.getLib db}/lib"
+  ] ++ lib.optionals withNetSnmp [
+    "--with-netsnmp-inc=${lib.getDev net-snmp}/include"
+    "--with-netsnmp-lib=${lib.getLib net-snmp}/lib"
+  ] ++ lib.optionals (!withCockpit) [
+    "--disable-cockpit"
+  ] ++ lib.optionals withAsan [
+    "--enable-asan"
+    "--enable-debug"
+  ];
 
   enableParallelBuilding = true;
 
@@ -156,5 +133,6 @@ stdenv.mkDerivation rec {
     description = "Enterprise-class Open Source LDAP server for Linux";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
+    maintainers = [ maintainers.ners ];
   };
 }
diff --git a/pkgs/servers/ldap/apache-directory-server/default.nix b/pkgs/servers/ldap/apache-directory-server/default.nix
new file mode 100644
index 0000000000000..7008e0e40d256
--- /dev/null
+++ b/pkgs/servers/ldap/apache-directory-server/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchzip, jdk11, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "apache-directory-server";
+  version = "2.0.0.AM26";
+
+  src = fetchzip {
+    url = "https://dlcdn.apache.org//directory/apacheds/dist/${version}/apacheds-${version}.zip";
+    sha256 = "sha256-36kDvfSy5rt/3+nivEFTepnIKf6sX0NTgPRm28M+1v4=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/apacheds
+    install -D $src/lib/*.jar $out/share/apacheds
+    classpath=$(jars=($out/share/apacheds/*.jar); IFS=:; echo "''${jars[*]}")
+    makeWrapper ${jdk11}/bin/java $out/bin/apache-directory-server \
+      --add-flags "-classpath $classpath org.apache.directory.server.UberjarMain"
+  '';
+
+  meta = with lib; {
+    description = "An extensible and embeddable directory server";
+    homepage = "https://directory.apache.org/apacheds/";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.ners ];
+  };
+}