about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/talloc
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/talloc')
-rw-r--r--nixpkgs/pkgs/development/libraries/talloc/default.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/talloc/default.nix b/nixpkgs/pkgs/development/libraries/talloc/default.nix
new file mode 100644
index 000000000000..27705c578584
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/talloc/default.nix
@@ -0,0 +1,65 @@
+{ lib, stdenv
+, fetchurl
+, python3
+, pkg-config
+, readline
+, libxslt
+, docbook-xsl-nons
+, docbook_xml_dtd_42
+, fixDarwinDylibNames
+, wafHook
+}:
+
+stdenv.mkDerivation (rec {
+  pname = "talloc";
+  version = "2.3.2";
+
+  src = fetchurl {
+    url = "mirror://samba/talloc/${pname}-${version}.tar.gz";
+    sha256 = "sha256-J6A++Z44TXeRJN91XesinNF2H5Reym0gDoz9m/Upe9c=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    fixDarwinDylibNames
+    python3
+    wafHook
+    docbook-xsl-nons
+    docbook_xml_dtd_42
+  ];
+
+  buildInputs = [
+    python3
+    readline
+    libxslt
+  ];
+
+  wafPath = "buildtools/bin/waf";
+
+  wafConfigureFlags = [
+    "--enable-talloc-compat1"
+    "--bundled-libraries=NONE"
+    "--builtin-libraries=replace"
+  ];
+
+  # this must not be exported before the ConfigurePhase otherwise waf whines
+  preBuild = lib.optionalString stdenv.hostPlatform.isMusl ''
+    export NIX_CFLAGS_LINK="-no-pie -shared";
+  '';
+
+  postInstall = ''
+    ${stdenv.cc.targetPrefix}ar q $out/lib/libtalloc.a bin/default/talloc.c.[0-9]*.o
+  '';
+
+  meta = with lib; {
+    description = "Hierarchical pool based memory allocator with destructors";
+    homepage = "https://tdb.samba.org/";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+  };
+} // lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform) {
+  # python-config from build Python gives incorrect values when cross-compiling.
+  # If python-config is not found, the build falls back to using the sysconfig
+  # module, which works correctly when cross-compiling.
+  PYTHON_CONFIG = "/invalid";
+})