diff --git a/pkgs/development/libraries/tbb/default.nix b/pkgs/development/libraries/tbb/default.nix index 13b1970866e7..182fbb35d499 100644 --- a/pkgs/development/libraries/tbb/default.nix +++ b/pkgs/development/libraries/tbb/default.nix @@ -16,6 +16,8 @@ with stdenv.lib; stdenv.mkDerivation rec { optional (stdver != null) "stdver=${stdver}" ); + patches = stdenv.lib.optional stdenv.hostPlatform.isMusl ./glibc-struct-mallinfo.patch; + installPhase = '' mkdir -p $out/{lib,share/doc} cp "build/"*release*"/"*${stdenv.hostPlatform.extensions.sharedLibrary}* $out/lib/ diff --git a/pkgs/development/libraries/tbb/glibc-struct-mallinfo.patch b/pkgs/development/libraries/tbb/glibc-struct-mallinfo.patch new file mode 100644 index 000000000000..64056ecb1462 --- /dev/null +++ b/pkgs/development/libraries/tbb/glibc-struct-mallinfo.patch @@ -0,0 +1,43 @@ +From b577153a10c98f4e13405dc93ea2ab1a7b990e07 Mon Sep 17 00:00:00 2001 +From: David Huffman +Date: Wed, 6 Jan 2016 07:09:30 -0500 +Subject: [PATCH] hard-code glibc's definition of struct mallinfo + +--- + src/tbbmalloc/proxy.h | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/src/tbbmalloc/proxy.h b/src/tbbmalloc/proxy.h +index 781cadc..e1ea1ae 100644 +--- a/src/tbbmalloc/proxy.h ++++ b/src/tbbmalloc/proxy.h +@@ -32,6 +32,26 @@ + + #include + ++// The following definition was taken from /usr/include/malloc.h as provided by ++// the glibc-devel-2.19-17.4.x86_64 package on openSUSE Leap 42.1; it is ++// made available under the GNU Lesser General Public License v2.1 or later. ++// See . ++// ++// Copyright (C) 1996-2014 Free Software Foundation, Inc. ++struct mallinfo ++{ ++ int arena; /* non-mmapped space allocated from system */ ++ int ordblks; /* number of free chunks */ ++ int smblks; /* number of fastbin blocks */ ++ int hblks; /* number of mmapped regions */ ++ int hblkhd; /* space in mmapped regions */ ++ int usmblks; /* maximum total allocated space */ ++ int fsmblks; /* space available in freed fastbin blocks */ ++ int uordblks; /* total allocated space */ ++ int fordblks; /* total free space */ ++ int keepcost; /* top-most, releasable (via malloc_trim) space */ ++}; ++ + extern "C" { + void * scalable_malloc(size_t size); + void * scalable_calloc(size_t nobj, size_t size); +-- +2.6.2 +