aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2022, 2024 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2022, 2023 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(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 python)
  #:use-module (gnu packages swig))

(define-public tbb
  (package
    (name "tbb")
    (version "2021.6.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/oneapi-src/oneTBB")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "039v4jmnkkxs7haxrfmk9j57vfbrwlhjynlm5byfaqddv4cbsy0p"))
              (patches (search-patches "tbb-other-arches.patch"))))
    (build-system cmake-build-system)
    (arguments
     `(#:configure-flags
       '(,@(if (or (target-riscv64?)
                   (target-ppc32?))
               '("-DTBB_TEST_LINK_FLAGS=-latomic")
               `())
         ,@(if (or (target-arm32?)
                   (target-ppc32?))
               '("-DTBB_TEST_COMPILE_FLAGS=-DTBB_TEST_LOW_WORKLOAD")
               `())
         "-DTBB_STRICT=OFF") ;; Don't fail on warnings
       #:phases
       (modify-phases %standard-phases
         ,@(cond
            ((target-arm32?)
             `((add-after 'unpack 'adjust-test-suite
                 (lambda _
                   (substitute* "test/CMakeLists.txt"
                     ;; Bus error, skipped on mips.
                     ((".*test_malloc_pools.*") ""))))))
            ((target-ppc32?)
             `((add-after 'unpack 'adjust-test-suite
                 (lambda _
                   (substitute* "test/CMakeLists.txt"
                     ;; These tests hang forever.
                     ((".*test_function_node.*") "")
                     ((".*test_multifunction_node.*") "")
                     ((".*test_async_node.*") ""))))))
            (else '())))))
    (home-page "https://www.threadingbuildingblocks.org")
    (synopsis "C++ library for parallel programming")
    (description
     "Threading Building Blocks (TBB) is a C++ runtime library that abstracts
the low-level threading details necessary for optimal multi-core performance.
It uses common C++ templates and coding style to eliminate tedious threading
implementation work.  It provides parallel loop constructs, asynchronous
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)
                (("install --prefix.*-f" m)
                 (string-append m " --root=/")))
              (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")
    (version "2020.3")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/01org/tbb")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0r9axsdlmacjlcnax4vkzg86nwf8lsx7wbqdi3wnryaxk0xvdcx6"))
              (modules '((guix build utils)))
              (snippet
               '(begin
                  (substitute* "build/common.inc"
                    (("export tbb_build_prefix.+$")
                     "export tbb_build_prefix?=guix\n"))

                  ;; Don't capture the build time and kernel version.
                  (substitute* "build/version_info_linux.sh"
                    (("uname -srv") "uname -s")
                    (("`date -u`") "01 Jan 1970"))

                  (substitute* "build/linux.inc"
                    (("os_kernel_version:=.*")
                     "os_kernel_version:=5\n")
                    (("os_version:=.*")
                     "os_version:=1\n"))))))
    (outputs '("out" "doc"))
    (build-system gnu-build-system)
    (arguments
     `(#:test-target "test"
       #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
                                         (assoc-ref %outputs "out") "/lib")
                          "CFLAGS=-fuse-ld=gold")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'fail-on-test-errors
           (lambda _
             (substitute* "Makefile"
               (("-\\$\\(MAKE") "$(MAKE"))))
         (replace 'configure
           (lambda* (#:key outputs #:allow-other-keys)
             (substitute* "build/linux.gcc.inc"
               (("LIB_LINK_FLAGS =")
                (string-append "LIB_LINK_FLAGS = -Wl,-rpath="
                               (assoc-ref outputs "out") "/lib")))))
         (replace 'install
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((doc      (string-append
                               (assoc-ref outputs "doc") "/doc"))
                    (examples (string-append doc "/examples"))
                    (lib      (string-append
                               (assoc-ref outputs "out") "/lib"))
                    (include  (string-append
                               (assoc-ref outputs "out") "/include")))
               (mkdir-p lib)
               (for-each
                (lambda (f)
                  (copy-file f
                             (string-append lib "/"
                                            (basename f))))
                (find-files "build/guix_release" "\\.so"))
               (copy-recursively "doc" doc)
               (copy-recursively "examples" examples)
               (copy-recursively "include" include)))))))
    (native-inputs
     ;; XXX: For some reason, since commit "gnu: binutils: Absorb
     ;; binutils-next", the build of just this version of TBB crashes during
     ;; tests.  Workaround it by linking the binaries with ld.gold.
     (list (module-ref (resolve-interface
                        '(gnu packages commencement))
                       'ld-gold-wrapper)))
    (home-page "https://www.threadingbuildingblocks.org")
    (synopsis "C++ library for parallel programming")
    (description
     "Threading Building Blocks (TBB) is a C++ runtime library that abstracts
the low-level threading details necessary for optimal multi-core performance.
It uses common C++ templates and coding style to eliminate tedious threading
implementation work.  It provides parallel loop constructs, asynchronous
tasks, synchronization primitives, atomic operations, and more.")
    (license asl2.0)))
'>gnu: ndctl: Update to 69....* gnu/packages/disk.scm (ndctl): Update to 69. Tobias Geerinckx-Rice 2020-08-24gnu: python-parted: Update to 3.11.6....* gnu/packages/disk.scm (python-parted): Update to 3.11.6. (python2-parted): Drop unsupported Python 2 variant. Tobias Geerinckx-Rice 2020-08-06gnu: Add hddtemp....* gnu/packages/disk.scm (hddtemp): New variable. Pierre Neidhardt 2020-07-26gnu: libblockdev: Update to 2.24....* gnu/packages/disk.scm (libblockdev): Update to 2.24. Tobias Geerinckx-Rice 2020-07-15gnu: gparted: Use the Glib-or-GTK build system....Fixes <https://issues.guix.gnu.org/38544>. * gnu/packages/disk.scm (gparted)[build-system]: Use glib-or-gtk-build-system. Tobias Geerinckx-Rice 2020-07-12gnu: Remove ".git" from "https://github/…/….git"....Until now, 'lookup-origin' and thus 'lookup-origin-revision' in (guix swh) would sometimes return #f for these because the ".git" URLs are redirects to the non-".git" URLs. Consequently, 'guix lint -c archival' would keep saying "scheduled Software Heritage archival"; likewise, the fallback download code would fail. * gnu/packages/ada.scm, gnu/packages/admin.scm, gnu/packages/aidc.scm, gnu/packages/algebra.scm, gnu/packages/android.scm, gnu/packages/animation.scm, gnu/packages/arcan.scm, gnu/packages/assembly.scm, gnu/packages/audio.scm, gnu/packages/authentication.scm, gnu/packages/avr.scm, gnu/packages/axoloti.scm, gnu/packages/backup.scm, gnu/packages/bash.scm, gnu/packages/benchmark.scm, gnu/packages/bioconductor.scm, gnu/packages/bioinformatics.scm, gnu/packages/bittorrent.scm, gnu/packages/boost.scm, gnu/packages/build-tools.scm, gnu/packages/c.scm, gnu/packages/calendar.scm, gnu/packages/cdrom.scm, gnu/packages/check.scm, gnu/packages/chemistry.scm, gnu/packages/chez.scm, gnu/packages/clojure.scm, gnu/packages/code.scm, gnu/packages/compression.scm, gnu/packages/compton.scm, gnu/packages/coq.scm, gnu/packages/cpp.scm, gnu/packages/cran.scm, gnu/packages/crypto.scm, gnu/packages/curl.scm, gnu/packages/databases.scm, gnu/packages/datastructures.scm, gnu/packages/debug.scm, gnu/packages/disk.scm, gnu/packages/distributed.scm, gnu/packages/django.scm, gnu/packages/dlang.scm, gnu/packages/dns.scm, gnu/packages/docker.scm, gnu/packages/education.scm, gnu/packages/efi.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/embedded.scm, gnu/packages/emulators.scm, gnu/packages/engineering.scm, gnu/packages/erlang.scm, gnu/packages/fabric-management.scm, gnu/packages/file-systems.scm, gnu/packages/finance.scm, gnu/packages/firmware.scm, gnu/packages/flashing-tools.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/fpga.scm, gnu/packages/game-development.scm, gnu/packages/games.scm, gnu/packages/genealogy.scm, gnu/packages/genimage.scm, gnu/packages/geo.scm, gnu/packages/gimp.scm, gnu/packages/gl.scm, gnu/packages/gnome-xyz.scm, gnu/packages/gnome.scm, gnu/packages/gnuzilla.scm, gnu/packages/golang.scm, gnu/packages/gpodder.scm, gnu/packages/graph.scm, gnu/packages/graphics.scm, gnu/packages/graphviz.scm, gnu/packages/groff.scm, gnu/packages/groovy.scm, gnu/packages/gtk.scm, gnu/packages/guile-xyz.scm, gnu/packages/guile.scm, gnu/packages/hardware.scm, gnu/packages/haskell-apps.scm, gnu/packages/haskell-xyz.scm, gnu/packages/hexedit.scm, gnu/packages/i2p.scm, gnu/packages/ibus.scm, gnu/packages/image-processing.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/ipfs.scm, gnu/packages/java-graphics.scm, gnu/packages/java-maths.scm, gnu/packages/java.scm, gnu/packages/javascript.scm, gnu/packages/jrnl.scm, gnu/packages/julia.scm, gnu/packages/jupyter.scm, gnu/packages/kodi.scm, gnu/packages/language.scm, gnu/packages/lego.scm, gnu/packages/less.scm, gnu/packages/libusb.scm, gnu/packages/linux.scm, gnu/packages/lirc.scm, gnu/packages/lisp-xyz.scm, gnu/packages/llvm.scm, gnu/packages/logging.scm, gnu/packages/lolcode.scm, gnu/packages/lua.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/machine-learning.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/maths.scm, gnu/packages/maven.scm, gnu/packages/mes.scm, gnu/packages/messaging.scm, gnu/packages/monitoring.scm, gnu/packages/mpd.scm, gnu/packages/music.scm, gnu/packages/networking.scm, gnu/packages/node-xyz.scm, gnu/packages/ocaml.scm, gnu/packages/ocr.scm, gnu/packages/onc-rpc.scm, gnu/packages/opencl.scm, gnu/packages/opencog.scm, gnu/packages/pantheon.scm, gnu/packages/password-utils.scm, gnu/packages/patchutils.scm, gnu/packages/pdf.scm, gnu/packages/perl6.scm, gnu/packages/phabricator.scm, gnu/packages/popt.scm, gnu/packages/printers.scm, gnu/packages/prolog.scm, gnu/packages/protobuf.scm, gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/qt.scm, gnu/packages/radio.scm, gnu/packages/rails.scm, gnu/packages/rdf.scm, gnu/packages/rednotebook.scm, gnu/packages/rpc.scm, gnu/packages/rsync.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/screen.scm, gnu/packages/security-token.scm, gnu/packages/selinux.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/shellutils.scm, gnu/packages/simh.scm, gnu/packages/sml.scm, gnu/packages/ssh.scm, gnu/packages/statistics.scm, gnu/packages/stenography.scm, gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/synergy.scm, gnu/packages/telephony.scm, gnu/packages/terminals.scm, gnu/packages/tex.scm, gnu/packages/texinfo.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tmux.scm, gnu/packages/tor.scm, gnu/packages/toys.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/virtualization.scm, gnu/packages/vlang.scm, gnu/packages/vnc.scm, gnu/packages/vpn.scm, gnu/packages/web-browsers.scm, gnu/packages/web.scm, gnu/packages/wireservice.scm, gnu/packages/wm.scm, gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, tests/lint.scm: Remove trailing ".git" from 'git-reference' URL. Ludovic Courtès 2020-07-01gnu: rmlint: Update to 2.10.1....* gnu/packages/disk.scm (rmlint): Update to 2.10.1. Tobias Geerinckx-Rice 2020-05-14gnu: libblockdev: Set default configuration directory....Fix error from 'udisks': “Failed to get contents of the config dir (/etc/libblockdev/conf.d/)Error opening directory "/etc/libblockdev/conf.d/": No such file or directory.” * gnu/packages/disk.scm (libblockdev)[arguments]: Add phase 'patch-configuration-directory'. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Brice Waegeneire 2020-05-14gnu: libblockdev: Appease guix lint....* gnu/packages/disk.scm (libblockdev)[inputs]: Move gobject-introspection to ... [native-inputs]: ... here. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Brice Waegeneire 2020-05-13gnu: fsarchiver: Move to (gnu packages file-systems)....* gnu/packages/disk.scm (fsarchiver): Move this variable… * gnu/packages/file-systems.scm (fsarchiver): …here. Tobias Geerinckx-Rice 2020-05-11gnu: xfe: Fix few more FHS directories....* gnu/packages/disk.scm (xfe): Fix /bin and /share paths in st/config.h and src/xfedefs.h, respectively. Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr> Raghav Gururajan 2020-05-08Merge branch 'core-updates'Marius Bakke 2020-05-08gnu: Add fsarchiver....* gnu/packages/disk.scm (fsarchiver): New variable. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-05-06Merge branch 'master' into core-updatesMarius Bakke 2020-05-06gnu: xfe: Fix hard-coded FHS directories....* gnu/packages/disk.scm (xfe): [arguments]: Remove phase `patch-xfe-paths'. Add phases `patch-bin-dirs' and `patch-share-dirs'. [inputs]: Add `bash', `coreutils', `file' and `findutils'. Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr> Raghav Gururajan 2020-05-02Merge branch 'master' into core-updatesMarius Bakke 2020-05-01gnu: xfe: Use a mirror:// URL....* gnu/packages/disk.scm (xfe)[source]: Use a mirror://sourceforge URL. Nicolas Goaziou 2020-05-01gnu: xfe: Fix configuration and icons....* gnu/packages/disk.scm (xfe)[arguments]<#:make-flags>: Remove BASH_COMPLETION_DIR. [arguments]<#:phases>[patch-xferc-path]: Remove phase. [arguments]<#:phases>[patch-xfe-paths]: New phase. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-05-01gnu: udevil: Fix loading of setuid-programs....* gnu/packages/disk.scm (udevil)[arguments]<#:configure-flags>: Add "--with-mount-prog", "--with-umount-prog", "--with-losetup-prog", "--with-setfacl-prog". [arguments]<#:phases>[patch-udevil-reference]: New phase. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-04-23Merge branch 'master' into core-updates... Conflicts: etc/news.scm gnu/local.mk gnu/packages/bootloaders.scm gnu/packages/linphone.scm gnu/packages/linux.scm gnu/packages/tls.scm gnu/system.scm Marius Bakke 2020-04-23gnu: Add udevil....* gnu/packages/disk.scm (udevil): New variable. Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr> Raghav Gururajan 2020-04-13Merge branch 'master' into core-updatesMarius Bakke 2020-04-13gnu: ndctl: Update to 68....* gnu/packages/disk.scm (ndctl): Update to 68. Tobias Geerinckx-Rice 2020-04-11Merge branch 'master' into core-updatesMarius Bakke 2020-04-09gnu: Add xfe....* gnu/packages/disk.scm (xfe): New variable. Raghav Gururajan 2020-04-08Merge branch 'master' into core-updates... Conflicts: etc/news.scm gnu/local.mk gnu/packages/check.scm gnu/packages/cross-base.scm gnu/packages/gimp.scm gnu/packages/java.scm gnu/packages/mail.scm gnu/packages/sdl.scm gnu/packages/texinfo.scm gnu/packages/tls.scm gnu/packages/version-control.scm Marius Bakke 2020-04-04gnu: gparted: Make some inputs native....* gnu/packages/disk.scm (gparted)[inputs]: Move yelp-tools from here... [native-inputs]: ...to here. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Vincent Legoll 2020-03-14Merge branch 'master' into core-updatesMarius Bakke 2020-03-13gnu: sdparm: Update to 1.11....* gnu/packages/disk.scm (sdparm): Update to 1.11. [source]: Hard-code name. Tobias Geerinckx-Rice 2020-03-12gnu: gptfdisk: Use HTTPS home page....* gnu/packages/disk.scm (gptfdisk)[home-page]: Use HTTPS. Tobias Geerinckx-Rice 2020-03-04Merge branch 'master' into core-updatesMarius Bakke 2020-03-04gnu: ddrescue: Update to 1.25....* gnu/packages/disk.scm (ddrescue): Update to 1.25. Efraim Flashner 2020-03-03gnu: gptfdisk: Update to 1.0.5....* gnu/packages/disk.scm (gptfdisk): Update to 1.0.5. [source]: Hard-code NAME. [arguments]: Add ‘fix-include-directory’ phase. Tobias Geerinckx-Rice