summary refs log tree commit diff
path: root/pkgs/development/libraries/tbb
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-08-04 10:43:07 +0000
committerAlyssa Ross <hi@alyssa.is>2021-08-04 10:43:07 +0000
commit62614cbef7da005c1eda8c9400160f6bcd6546b8 (patch)
treec2630f69080637987b68acb1ee8676d2681fe304 /pkgs/development/libraries/tbb
parentd9c82ed3044c72cecf01c6ea042489d30914577c (diff)
parente24069138dfec3ef94f211f1da005bb5395adc11 (diff)
downloadnixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.gz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.bz2
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.lz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.xz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.zst
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.zip
Merge branch 'nixpkgs-update' into master
Diffstat (limited to 'pkgs/development/libraries/tbb')
-rw-r--r--pkgs/development/libraries/tbb/default.nix69
-rw-r--r--pkgs/development/libraries/tbb/glibc-struct-mallinfo.patch43
2 files changed, 56 insertions, 56 deletions
diff --git a/pkgs/development/libraries/tbb/default.nix b/pkgs/development/libraries/tbb/default.nix
index 18f9e541acd..7aef5ba7476 100644
--- a/pkgs/development/libraries/tbb/default.nix
+++ b/pkgs/development/libraries/tbb/default.nix
@@ -1,31 +1,74 @@
-{ stdenv, fetchFromGitHub, compiler ? if stdenv.cc.isClang then "clang" else null, stdver ? null }:
+{ lib
+, stdenv
+, fetchurl
+, fetchFromGitHub
+, fixDarwinDylibNames
+}:
 
-with stdenv.lib; stdenv.mkDerivation rec {
+stdenv.mkDerivation rec {
   pname = "tbb";
-  version = "2019_U9";
+  version = "2020.3";
 
   src = fetchFromGitHub {
-    owner = "01org";
-    repo = "tbb";
-    rev = version;
-    sha256 = "1a39nflw7b2n51jfp3fdprnkpgzaspzww1dckfvaigflfli9s8rj";
+    owner = "oneapi-src";
+    repo = "oneTBB";
+    rev = "v${version}";
+    sha256 = "prO2O5hd+Wz5iA0vfrqmyHFr0Ptzk64so5KpSpvuKmU=";
   };
 
-  makeFlags = optional (compiler != null) "compiler=${compiler}"
-    ++ optional (stdver != null) "stdver=${stdver}";
+  patches = [
+    # Fixes build with Musl.
+    (fetchurl {
+      url = "https://github.com/openembedded/meta-openembedded/raw/39185eb1d1615e919e3ae14ae63b8ed7d3e5d83f/meta-oe/recipes-support/tbb/tbb/GLIBC-PREREQ-is-not-defined-on-musl.patch";
+      sha256 = "gUfXQ9OZQ82qD6brgauBCsKdjLvyHafMc18B+KxZoYs=";
+    })
 
-  patches = stdenv.lib.optional stdenv.hostPlatform.isMusl ./glibc-struct-mallinfo.patch;
+    # Fixes build with Musl.
+    (fetchurl {
+      url = "https://github.com/openembedded/meta-openembedded/raw/39185eb1d1615e919e3ae14ae63b8ed7d3e5d83f/meta-oe/recipes-support/tbb/tbb/0001-mallinfo-is-glibc-specific-API-mark-it-so.patch";
+      sha256 = "fhorfqO1hHKZ61uq+yTR7eQ8KYdyLwpM3K7WpwJpV74=";
+    })
+  ];
+
+  nativeBuildInputs = lib.optionals stdenv.isDarwin [
+    fixDarwinDylibNames
+  ];
+
+  makeFlags = lib.optionals stdenv.cc.isClang [
+    "compiler=clang"
+  ];
+
+  enableParallelBuilding = true;
 
   installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/lib
     cp "build/"*release*"/"*${stdenv.hostPlatform.extensions.sharedLibrary}* $out/lib/
     mv include $out/
     rm $out/include/index.html
+
+    runHook postInstall
   '';
 
-  enableParallelBuilding = true;
+  postInstall = let
+    pcTemplate = fetchurl {
+      url = "https://github.com/oneapi-src/oneTBB/raw/master/integration/pkg-config/tbb.pc.in";
+      sha256 = "2pCad9txSpNbzac0vp/VY3x7HNySaYkbH3Rx8LK53pI=";
+    };
+  in ''
+    # Generate pkg-config file based on upstream template.
+    # It should not be necessary with tbb after 2021.2.
+    mkdir -p "$out/lib/pkgconfig"
+    substitute "${pcTemplate}" "$out/lib/pkgconfig/tbb.pc" \
+      --subst-var-by CMAKE_INSTALL_PREFIX "$out" \
+      --subst-var-by CMAKE_INSTALL_LIBDIR "lib" \
+      --subst-var-by CMAKE_INSTALL_INCLUDEDIR "include" \
+      --subst-var-by TBB_VERSION "${version}" \
+      --subst-var-by TBB_LIB_NAME "tbb"
+  '';
 
-  meta = {
+  meta = with lib; {
     description = "Intel Thread Building Blocks C++ Library";
     homepage = "http://threadingbuildingblocks.org/";
     license = licenses.asl20;
@@ -37,7 +80,7 @@ with stdenv.lib; stdenv.mkDerivation rec {
       represents a higher-level, task-based parallelism that abstracts platform
       details and threading mechanisms for scalability and performance.
     '';
-    platforms = with platforms; linux ++ darwin;
+    platforms = platforms.unix;
     maintainers = with maintainers; [ thoughtpolice dizfer ];
   };
 }
diff --git a/pkgs/development/libraries/tbb/glibc-struct-mallinfo.patch b/pkgs/development/libraries/tbb/glibc-struct-mallinfo.patch
deleted file mode 100644
index 64056ecb146..00000000000
--- a/pkgs/development/libraries/tbb/glibc-struct-mallinfo.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From b577153a10c98f4e13405dc93ea2ab1a7b990e07 Mon Sep 17 00:00:00 2001
-From: David Huffman <storedbox+alpine@outlook.com>
-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 <stddef.h>
- 
-+// 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 <https://www.gnu.org/licenses>.
-+//
-+// 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
-