summaryrefslogtreecommitdiff
path: root/gnu/packages/datastructures.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/datastructures.scm')
-rw-r--r--gnu/packages/datastructures.scm70
1 files changed, 65 insertions, 5 deletions
diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm
index b996a537cf..3203f91608 100644
--- a/gnu/packages/datastructures.scm
+++ b/gnu/packages/datastructures.scm
@@ -2,7 +2,8 @@
;;; Copyright © 2015, 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
-;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,6 +23,7 @@
(define-module (gnu packages datastructures)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages boost)
#:use-module (gnu packages perl)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
@@ -82,7 +84,7 @@ library.")
(define-public sparsehash
(package
(name "sparsehash")
- (version "2.0.3")
+ (version "2.0.4")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -91,7 +93,7 @@ library.")
(file-name (git-file-name name version))
(sha256
(base32
- "0m3f0cnpnpf6aak52wn8xbrrdw8p0yhq8csgc8nlvf9zp8c402na"))))
+ "1pf1cjvcjdmb9cd6gcazz64x0cd2ndpwh6ql2hqpypjv725xwxy7"))))
(build-system gnu-build-system)
(synopsis "Memory-efficient hashtable implementations")
(description
@@ -234,14 +236,34 @@ to the structure and choosing one or more fields to act as the key.")
"0m542xpys54bni29zibgrfpgpd0zgyny4h131virxsanixsbz52z")))))))
(build-system cmake-build-system)
(arguments
- '(#:phases
+ `(#:phases
(modify-phases %standard-phases
(add-after 'install 'install-static-library
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(copy-file "lib/libsdsl_static.a"
(string-append out "/lib/libsdsl.a")))
- #t)))))
+ #t))
+ (add-after 'install 'install-pkgconfig-file
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib")))
+ (mkdir-p (string-append lib "/pkgconfig"))
+ (with-output-to-file (string-append lib "/pkgconfig/sdsl-lite.pc")
+ (lambda _
+ (format #t "prefix=~a~@
+ exec_prefix=${prefix}~@
+ libdir=${exec_prefix}/lib~@
+ includedir=${prefix}/include~@
+ ~@
+ ~@
+ Name: sdsl~@
+ Version: ~a~@
+ Description: SDSL: Succinct Data Structure Library~@
+ Libs: -L${libdir} -lsdsl -ldivsufsort -ldivsufsort64~@
+ Cflags: -I${includedir}~%"
+ out ,version)))
+ #t))))))
(native-inputs
`(("libdivsufsort" ,libdivsufsort)))
(home-page "https://github.com/simongog/sdsl-lite")
@@ -284,3 +306,41 @@ Burrows-Wheeler transformed string from a given string over a constant-size
alphabet. The algorithm runs in O(n log n) worst-case time using only 5n+O(1)
bytes of memory space, where n is the length of the string.")
(license license:expat)))
+
+(define-public robin-map
+ (package
+ (name "robin-map")
+ (version "0.6.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Tessil/robin-map")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1li70vwsksva9c4yly90hjafgqfixi1g6d52qq9p6r60vqc4pkjj"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("boost" ,boost))) ; needed for tests
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (mkdir "tests")
+ (with-directory-excursion "tests"
+ (invoke "cmake" "../../source/tests")
+ (invoke "cmake" "--build" ".")
+ (invoke "./tsl_robin_map_tests")))))))
+ (home-page "https://github.com/Tessil/robin-map")
+ (synopsis "C++ implementation of a fast hash map and hash set")
+ (description "The robin-map library is a C++ implementation of a fast hash
+map and hash set using open-addressing and linear robin hood hashing with
+backward shift deletion to resolve collisions.
+
+Four classes are provided: tsl::robin_map, tsl::robin_set, tsl::robin_pg_map
+and tsl::robin_pg_set. The first two are faster and use a power of two growth
+policy, the last two use a prime growth policy instead and are able to cope
+better with a poor hash function.")
+ (license license:expat)))