summaryrefslogtreecommitdiffstats
path: root/pkgs/servers/samba/4.x.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers/samba/4.x.nix')
-rw-r--r--pkgs/servers/samba/4.x.nix29
1 files changed, 18 insertions, 11 deletions
diff --git a/pkgs/servers/samba/4.x.nix b/pkgs/servers/samba/4.x.nix
index 46867aa19e7f..df235abe98c4 100644
--- a/pkgs/servers/samba/4.x.nix
+++ b/pkgs/servers/samba/4.x.nix
@@ -18,7 +18,6 @@
, zlib
, liburing
, gnutls
-, libunwind
, systemd
, samba
, jansson
@@ -41,6 +40,7 @@
, enableCephFS ? false, ceph
, enableGlusterFS ? false, glusterfs, libuuid
, enableAcl ? (!stdenv.isDarwin), acl
+, enableLibunwind ? (!stdenv.isDarwin), libunwind
, enablePam ? (!stdenv.isDarwin), pam
}:
@@ -75,11 +75,12 @@ stdenv.mkDerivation rec {
perl.pkgs.ParseYapp
perl.pkgs.JSON
libxslt
- buildPackages.stdenv.cc
docbook_xsl
docbook_xml_dtd_45
cmocka
rpcsvc-proto
+ ] ++ optionals stdenv.isLinux [
+ buildPackages.stdenv.cc
] ++ optional (stdenv.buildPlatform != stdenv.hostPlatform) samba # asn1_compile/compile_et
++ optionals stdenv.isDarwin [
fixDarwinDylibNames
@@ -98,7 +99,6 @@ stdenv.mkDerivation rec {
libbsd
libarchive
zlib
- libunwind
gnutls
libtasn1
tdb
@@ -113,6 +113,7 @@ stdenv.mkDerivation rec {
++ optional (enableCephFS && stdenv.isLinux) (lib.getDev ceph)
++ optionals (enableGlusterFS && stdenv.isLinux) [ glusterfs libuuid ]
++ optional enableAcl acl
+ ++ optional enableLibunwind libunwind
++ optional enablePam pam;
postPatch = ''
@@ -133,7 +134,6 @@ stdenv.mkDerivation rec {
wafConfigureFlags = [
"--with-static-modules=NONE"
"--with-shared-modules=ALL"
- "--with-libunwind"
"--enable-fhs"
"--sysconfdir=/etc"
"--localstatedir=/var"
@@ -143,7 +143,8 @@ stdenv.mkDerivation rec {
++ optionals (!enableLDAP) [
"--without-ldap"
"--without-ads"
- ] ++ optional enableProfiling "--with-profiling-data"
+ ] ++ optional enableLibunwind "--with-libunwind"
+ ++ optional enableProfiling "--with-profiling-data"
++ optional (!enableAcl) "--without-acl-support"
++ optional (!enablePam) "--without-pam"
++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
@@ -175,16 +176,25 @@ stdenv.mkDerivation rec {
# 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 -regex '.*\.so\(\..*\)?' -exec dirname {} \; | sort | uniq)"
+ export SAMBA_LIBS="$(find $out -type f -regex '.*\${stdenv.hostPlatform.extensions.sharedLibrary}\(\..*\)?' -exec dirname {} \; | sort | uniq)"
read -r -d "" SCRIPT << EOF || true
[ -z "\$SAMBA_LIBS" ] && exit 1;
BIN='{}';
+ '' + lib.optionalString stdenv.isLinux ''
OLD_LIBS="\$(patchelf --print-rpath "\$BIN" 2>/dev/null | tr ':' '\n')";
ALL_LIBS="\$(echo -e "\$SAMBA_LIBS\n\$OLD_LIBS" | sort | uniq | tr '\n' ':')";
patchelf --set-rpath "\$ALL_LIBS" "\$BIN" 2>/dev/null || exit $?;
patchelf --shrink-rpath "\$BIN";
+ '' + lib.optionalString stdenv.isDarwin ''
+ install_name_tool -id \$BIN \$BIN
+ for old_rpath in \$(otool -L \$BIN | grep /private/tmp/ | awk '{print \$1}'); do
+ new_rpath=\$(find \$SAMBA_LIBS -name \$(basename \$old_rpath) | head -n 1)
+ install_name_tool -change \$old_rpath \$new_rpath \$BIN
+ done
+ '' + ''
EOF
- find $out -type f -regex '.*\.so\(\..*\)?' -exec $SHELL -c "$SCRIPT" \;
+ find $out -type f -regex '.*\${stdenv.hostPlatform.extensions.sharedLibrary}\(\..*\)?' -exec $SHELL -c "$SCRIPT" \;
+ find $out/bin -type f -exec $SHELL -c "$SCRIPT" \;
# Fix PYTHONPATH for some tools
wrapPythonPrograms
@@ -209,10 +219,7 @@ stdenv.mkDerivation rec {
description = "The standard Windows interoperability suite of programs for Linux and Unix";
license = licenses.gpl3;
platforms = platforms.unix;
- # N.B. enableGlusterFS does not build
- # TODO: darwin support needs newer SDK for "_futimens" and "_utimensat"
- # see https://github.com/NixOS/nixpkgs/issues/101229
- broken = stdenv.isDarwin || enableGlusterFS;
+ broken = enableGlusterFS;
maintainers = with maintainers; [ aneeshusa ];
};
}