Ludovic Courtès writes: >> - should the examples be included per default or should they go into a >> separate "doc" output together with the /doc directory? Together they >> take up about 10MB. > > I would put them in “doc”.
Okay. There's now a "doc" output for /doc/ and /doc/examples/. >> + (alist-cons-before >> + 'build 'set-build-path >> + (lambda _ >> + (substitute* "build/common.inc" >> + (("export tbb_build_prefix.+$") >> + "export tbb_build_prefix?=guix\n"))) > > Rather put this in ‘snippet’ (I think Mark made this comment on IRC.) Done. >> + (synopsis "The Threading Building Blocks library abstracts low-level >> +threading details") > > What about “C++ library for parallel programming” instead? Sounds good. Changed. >> + (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. >> + >> +TBB requires fewer lines of code to achieve parallelism than other threading >> +models. The applications you write are portable across platforms. Since >> the >> +library is also inherently scalable, no code maintenance is required as more >> +processor cores become available.") > > I would indeed remove the 2nd paragraph, and perhaps add something like > “It provides parallel loop constructs, asynchronous tasks, > synchronization primitives, atomic operations, and more.” Done. >> + ;; GPL2 with exceptions > > Rather: “GPLv2 with run-time exception: > <https://www.threadingbuildingblocks.org/licensing#runtime-exception>”. Done. Attached is the updated patch. ~~ Ricardo
>From 8acd14a15924cf23a0a4ba7582d66c26b2245799 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus <ricardo.wur...@mdc-berlin.de> Date: Mon, 26 Jan 2015 16:12:31 +0100 Subject: [PATCH] gnu: Add Threading Building Blocks. * gnu/packages/tbb.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/tbb.scm | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 gnu/packages/tbb.scm diff --git a/gnu-system.am b/gnu-system.am index ea03c79..6e6e221 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -254,6 +254,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/stalonetray.scm \ gnu/packages/swig.scm \ gnu/packages/synergy.scm \ + gnu/packages/tbb.scm \ gnu/packages/tcl.scm \ gnu/packages/tcsh.scm \ gnu/packages/telephony.scm \ diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm new file mode 100644 index 0000000..42670d7 --- /dev/null +++ b/gnu/packages/tbb.scm @@ -0,0 +1,83 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus <rek...@elephly.net> +;;; +;;; 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 download) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module (gnu packages)) + +(define-public tbb + (package + (name "tbb") + (version "4.3.2") + (source (origin + (method url-fetch) + (uri (string-append + "https://www.threadingbuildingblocks.org/sites/default" + "/files/software_releases/source/" + "tbb43_20141204oss_src.tgz")) + (sha256 + (base32 + "0jsczl99jfgj47kj7c4sd4fk7v3rbaiax1ng9ypykz1hh0lrrsws")) + (modules '((guix build utils))) + (snippet + '(substitute* "build/common.inc" + (("export tbb_build_prefix.+$") + "export tbb_build_prefix?=guix\n"))))) + (outputs '("out" "doc")) + (build-system gnu-build-system) + (arguments + `(#:test-target "test" + #:phases (alist-delete + 'configure + (alist-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) + #t)) + %standard-phases)))) + (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.") + ;; GPLv2 with run-time exception: + ;; <https://www.threadingbuildingblocks.org/licensing#runtime-exception> + (license gpl2))) -- 1.9.3