diff options
Diffstat (limited to 'pkgs/servers/samba/4.x.nix')
-rw-r--r-- | pkgs/servers/samba/4.x.nix | 57 |
1 files changed, 34 insertions, 23 deletions
diff --git a/pkgs/servers/samba/4.x.nix b/pkgs/servers/samba/4.x.nix index 2e8f8a67fd42..ee14ec6443bf 100644 --- a/pkgs/servers/samba/4.x.nix +++ b/pkgs/servers/samba/4.x.nix @@ -1,11 +1,11 @@ { lib, stdenv, fetchurl, python, pkgconfig, perl, libxslt, docbook_xsl -, docbook_xml_dtd_42, docbook_xml_dtd_45, readline, talloc, ntdb, tdb, tevent -, ldb, popt, iniparser, libbsd, libarchive, libiconv, gettext -, kerberos, zlib, openldap, cups, pam, avahi, acl, libaio, fam, libceph, glusterfs +, fetchpatch +, docbook_xml_dtd_42, docbook_xml_dtd_45, readline, talloc +, popt, iniparser, libbsd, libarchive, libiconv, gettext +, krb5Full, zlib, openldap, cups, pam, avahi, acl, libaio, fam, libceph, glusterfs , gnutls, libgcrypt, libgpgerror , ncurses, libunwind, libibverbs, librdmacm, systemd -, enableKerberos ? false , enableInfiniband ? false , enableLDAP ? false , enablePrinting ? false @@ -14,30 +14,39 @@ , enableRegedit ? true , enableCephFS ? false , enableGlusterFS ? false +, enableAcl ? (!stdenv.isDarwin) +, enablePam ? (!stdenv.isDarwin) }: with lib; stdenv.mkDerivation rec { - name = "samba-4.3.0"; + name = "samba-${version}"; + version = "4.7.6"; src = fetchurl { url = "mirror://samba/pub/samba/stable/${name}.tar.gz"; - sha256 = "0qyvmjl8p8fnyhibwivhxxkm67nxxaj4lp35jni9l7gcknrbdnyq"; + sha256 = "0vkxqp3wh7bpn1fd45lznmrpn2ma1fq75yq28vi08rggr07y7v8y"; }; + outputs = [ "out" "dev" "man" ]; + patches = [ ./4.x-no-persistent-install.patch - ./4.x-fix-ctdb-deps.patch + ./patch-source3__libads__kerberos_keytab.c.patch + ./4.x-no-persistent-install-dynconfig.patch + (fetchpatch { + url = "https://patch-diff.githubusercontent.com/raw/samba-team/samba/pull/107.patch"; + sha256 = "0r6q34vjj0bdzmcbnrkad9rww58k4krbwicv4gs1g3dj49skpvd6"; + }) ]; buildInputs = [ python pkgconfig perl libxslt docbook_xsl docbook_xml_dtd_42 /* - docbook_xml_dtd_45 */ readline talloc ntdb tdb tevent ldb popt iniparser - libbsd libarchive zlib acl fam libiconv gettext libunwind + docbook_xml_dtd_45 */ readline talloc popt iniparser + libbsd libarchive zlib fam libiconv gettext libunwind krb5Full ] - ++ optionals stdenv.isLinux [ libaio pam systemd ] - ++ optional enableKerberos kerberos + ++ optionals stdenv.isLinux [ libaio systemd ] ++ optionals (enableInfiniband && stdenv.isLinux) [ libibverbs librdmacm ] ++ optional enableLDAP openldap ++ optional (enablePrinting && stdenv.isLinux) cups @@ -45,7 +54,9 @@ stdenv.mkDerivation rec { ++ optional enableDomainController gnutls ++ optional enableRegedit ncurses ++ optional (enableCephFS && stdenv.isLinux) libceph - ++ optional (enableGlusterFS && stdenv.isLinux) glusterfs; + ++ optional (enableGlusterFS && stdenv.isLinux) glusterfs + ++ optional enableAcl acl + ++ optional enablePam pam; postPatch = '' # Removes absolute paths in scripts @@ -58,23 +69,23 @@ stdenv.mkDerivation rec { configureFlags = [ "--with-static-modules=NONE" "--with-shared-modules=ALL" + "--with-system-mitkrb5" + "--with-system-mitkdc" "${krb5Full}" "--enable-fhs" "--sysconfdir=/etc" "--localstatedir=/var" - "--bundled-libraries=${if enableKerberos && kerberos != null && - kerberos.implementation == "heimdal" then "NONE" else "com_err"}" - "--private-libraries=NONE" - "--builtin-libraries=replace" ] - ++ optional (enableKerberos && kerberos != null && - kerberos.implementation == "krb5") "--with-system-mitkrb5" ++ optional (!enableDomainController) "--without-ad-dc" - ++ optionals (!enableLDAP) [ "--without-ldap" "--without-ads" ]; - - enableParallelBuilding = true; + ++ optionals (!enableLDAP) [ "--without-ldap" "--without-ads" ] + ++ optional (!enableAcl) "--without-acl-support" + ++ optional (!enablePam) "--without-pam"; - stripAllList = [ "bin" "sbin" ]; + # To build in parallel. + buildPhase = "python buildtools/bin/waf build -j $NIX_BUILD_CORES"; + # Some libraries don't have /lib/samba in RPATH but need it. + # Use find -type f -executable -exec echo {} \; -exec sh -c 'ldd {} | grep "not found"' \; + # Looks like a bug in installer scripts. postFixup = '' export SAMBA_LIBS="$(find $out -type f -name \*.so -exec dirname {} \; | sort | uniq)" read -r -d "" SCRIPT << EOF || true @@ -85,7 +96,7 @@ stdenv.mkDerivation rec { patchelf --set-rpath "\$ALL_LIBS" "\$BIN" 2>/dev/null || exit $?; patchelf --shrink-rpath "\$BIN"; EOF - find $out -type f -exec $SHELL -c "$SCRIPT" \; + find $out -type f -name \*.so -exec $SHELL -c "$SCRIPT" \; ''; meta = with stdenv.lib; { |