From 8548ba5847417eabe14aa08fa9861f91743bd3a1 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 16 Dec 2022 15:34:31 +0100 Subject: [PATCH] gnu: Add python-tbb. * gnu/packages/tbb.scm (python-tbb): New variable. --- gnu/packages/tbb.scm | 45 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm index 4ce7c1cf49..f22282264c 100644 --- a/gnu/packages/tbb.scm +++ b/gnu/packages/tbb.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016 Ricardo Wurmus +;;; Copyright © 2015, 2016, 2022 Ricardo Wurmus ;;; Copyright © 2016 Nikita ;;; Copyright © 2019 Tobias Geerinckx-Rice ;;; Copyright © 2021 Guillaume Le Vaillant @@ -23,11 +23,14 @@ (define-module (gnu packages tbb) #:use-module (guix packages) #:use-module (guix licenses) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) - #:use-module (gnu packages)) + #:use-module (gnu packages) + #:use-module (gnu packages python) + #:use-module (gnu packages swig)) (define-public tbb (package @@ -56,6 +59,44 @@ (define-public tbb tasks, synchronization primitives, atomic operations, and more.") (license asl2.0))) +(define-public python-tbb + (package + (inherit tbb) + (name "python-tbb") + (arguments + (list + #:configure-flags + #~(list "-DTBB_STRICT=OFF" + "-DTBB4PY_BUILD=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-python-install-directory + (lambda _ + (substitute* "python/CMakeLists.txt" + (("\\$\\{PYTHON_BUILD_WORK_DIR\\}/build") + #$output)) + (substitute* "python/setup.py" + (("extra_link_args=tbb_flag,") + (string-append "extra_link_args=['-Wl,-rpath=" + #$(this-package-input "tbb") "/lib" + "', '-Wl,-rpath=" #$output "/lib'] + tbb_flag,"))))) + (replace 'build + (lambda _ + (setenv "PYTHONHASHSEED" "0") + (setenv "PYTHONDONTWRITEBYTECODE" "1") + (invoke "make" "python_build"))) + ;; The 'build phase already installs the modules + (replace 'install + (lambda _ + (with-directory-excursion "python/rml" + (invoke "make" "install")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "ctest" "-R" "python_test" "--output-on-failure"))))))) + (inputs (list python tbb)) + (native-inputs (list swig)))) + (define-public tbb-2020 (package (name "tbb")