unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] Add cereal + sparsehash
@ 2015-11-26 12:53 Ricardo Wurmus
  2015-11-28 15:42 ` Ludovic Courtès
  2015-11-30 20:06 ` Andreas Enge
  0 siblings, 2 replies; 10+ messages in thread
From: Ricardo Wurmus @ 2015-11-26 12:53 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 419 bytes --]

Hi Guix,

I really thought I had sent these patches to the mailing list before,
but it seems that I actually haven’t.

The first patch adds a new “serialization” module for libraries such as
cereal.

The second patch adds “sparsehash” to the “crypto” module.  It’s
probably not the best module for this package — can you suggest any
other location for a hash table library?

~~ Ricardo


[-- Attachment #2: 0001-gnu-Add-cereal.patch --]
[-- Type: text/x-patch, Size: 4243 bytes --]

From 19a28042f3839ea23aa13f4973172ca46cfde5f0 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
Date: Mon, 9 Nov 2015 14:46:56 +0100
Subject: [PATCH 1/2] gnu: Add cereal.

* gnu/packages/serialization.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
---
 gnu-system.am                  |  1 +
 gnu/packages/serialization.scm | 72 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+)
 create mode 100644 gnu/packages/serialization.scm

diff --git a/gnu-system.am b/gnu-system.am
index ada903e..c4aac12 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -287,6 +287,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/scribus.scm			\
   gnu/packages/sdl.scm				\
   gnu/packages/search.scm			\
+  gnu/packages/serialization.scm		\
   gnu/packages/serveez.scm			\
   gnu/packages/shishi.scm			\
   gnu/packages/skarnet.scm			\
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
new file mode 100644
index 0000000..e7198aa
--- /dev/null
+++ b/gnu/packages/serialization.scm
@@ -0,0 +1,72 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Ricardo Wurmus <rekado@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 serialization)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages doxygen))
+
+(define-public cereal
+  (package
+    (name "cereal")
+    (version "1.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/USCiLab/cereal/archive/v"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "13bvsfzvm7yyp97k20iznq2j14dj3qiczvpq7g8897njw46psq25"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(;; The only included tests are portability tests requiring
+       ;; cross-compilation and boost.  Since we are building cereal on more
+       ;; platforms anyway, there is no compelling reason to build the tests.
+       #:tests? #f
+       #:out-of-source? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+          (lambda _
+            (substitute* "doc/doxygen.in"
+              (("@CMAKE_CURRENT_SOURCE_DIR@") "."))
+            (zero? (system* "doxygen" "doc/doxygen.in"))))
+         (replace 'install
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let* ((out     (assoc-ref outputs "out"))
+                   (doc     (string-append out "/share/cereal/docs"))
+                   (include (string-append out "/include/cereal")))
+              (mkdir-p doc)
+              (mkdir-p include)
+              (copy-recursively "include/cereal" include)
+              (copy-recursively "doc/html" doc))
+            #t)))))
+    (native-inputs
+     `(("doxygen" ,doxygen)))
+    (home-page "http://uscilab.github.io/cereal/")
+    (synopsis "C++11 library for serialization")
+    (description
+     "Cereal is a header-only C++11 serialization library.  Cereal takes
+arbitrary data types and reversibly turns them into different representations,
+such as compact binary encodings, XML, or JSON.")
+    (license license:bsd-3)))
-- 
2.1.0


[-- Attachment #3: 0002-gnu-Add-sparsehash.patch --]
[-- Type: text/x-patch, Size: 2142 bytes --]

From 1f8739407dd3f9715005d55befabf894fa98ee10 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
Date: Tue, 10 Nov 2015 15:41:04 +0100
Subject: [PATCH 2/2] gnu: Add sparsehash.

* gnu/packages/crypto.scm (sparsehash): New variable.
---
 gnu/packages/crypto.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index d3dbd28..08af95f 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 David Thompson <davet@gnu.org>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,3 +43,28 @@
 communication, encryption, decryption, signatures, etc.")
     (license isc)
     (home-page "http://libsodium.org")))
+
+(define-public sparsehash
+  (package
+    (name "sparsehash")
+    (version "2.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/sparsehash/sparsehash/"
+                                  "archive/sparsehash-" version ".tar.gz"))
+              (sha256
+               (base32
+                "133szz0ldwch0kd91l0sa57qsnl020njn622szd9cxrjqyjqds85"))))
+    (build-system gnu-build-system)
+    (synopsis "Memory-efficient hashtable implementations")
+    (description
+     "This library contains several hash-map implementations, similar in API
+to SGI's @code{hash_map} class, but with different performance
+characteristics.  @code{sparse_hash_map} uses very little space overhead, 1-2
+bits per entry.  @code{dense_hash_map} is very fast, particulary on lookup.
+@code{sparse_hash_set} and @code{dense_hash_set} are the set versions of these
+routines.  All these implementation use a hashtable with internal quadratic
+probing.  This method is space-efficient -- there is no pointer overhead --
+and time-efficient for good hash functions.")
+    (home-page "https://github.com/sparsehash/sparsehash")
+    (license bsd-3)))
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] Add cereal + sparsehash
  2015-11-26 12:53 [PATCH] Add cereal + sparsehash Ricardo Wurmus
@ 2015-11-28 15:42 ` Ludovic Courtès
  2015-11-30 13:44   ` Ricardo Wurmus
  2015-11-30 20:06 ` Andreas Enge
  1 sibling, 1 reply; 10+ messages in thread
From: Ludovic Courtès @ 2015-11-28 15:42 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> skribis:

> The first patch adds a new “serialization” module for libraries such as
> cereal.

Maybe protobuf should be moved there?  I don’t know if there are other
candidates.

> The second patch adds “sparsehash” to the “crypto” module.  It’s
> probably not the best module for this package — can you suggest any
> other location for a hash table library?

No idea, this one should be fine.

> From 19a28042f3839ea23aa13f4973172ca46cfde5f0 Mon Sep 17 00:00:00 2001
> From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
> Date: Mon, 9 Nov 2015 14:46:56 +0100
> Subject: [PATCH 1/2] gnu: Add cereal.
>
> * gnu/packages/serialization.scm: New file.
> * gnu-system.am (GNU_SYSTEM_MODULES): Add it.

[...]

> +         (replace 'install
> +          (lambda* (#:key outputs #:allow-other-keys)
> +            (let* ((out     (assoc-ref outputs "out"))
> +                   (doc     (string-append out "/share/cereal/docs"))
> +                   (include (string-append out "/include/cereal")))
> +              (mkdir-p doc)
> +              (mkdir-p include)
> +              (copy-recursively "include/cereal" include)
> +              (copy-recursively "doc/html" doc))

Maybe add a comment about why “make install” isn’t enough.

Otherwise LGTM.

> From 1f8739407dd3f9715005d55befabf894fa98ee10 Mon Sep 17 00:00:00 2001
> From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
> Date: Tue, 10 Nov 2015 15:41:04 +0100
> Subject: [PATCH 2/2] gnu: Add sparsehash.
>
> * gnu/packages/crypto.scm (sparsehash): New variable.

LGTM.

Thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Add cereal + sparsehash
  2015-11-28 15:42 ` Ludovic Courtès
@ 2015-11-30 13:44   ` Ricardo Wurmus
  0 siblings, 0 replies; 10+ messages in thread
From: Ricardo Wurmus @ 2015-11-30 13:44 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel


Ludovic Courtès <ludo@gnu.org> writes:

>> From 19a28042f3839ea23aa13f4973172ca46cfde5f0 Mon Sep 17 00:00:00 2001
>> From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
>> Date: Mon, 9 Nov 2015 14:46:56 +0100
>> Subject: [PATCH 1/2] gnu: Add cereal.
>>
>> * gnu/packages/serialization.scm: New file.
>> * gnu-system.am (GNU_SYSTEM_MODULES): Add it.
>
> [...]
>
>> +         (replace 'install
>> +          (lambda* (#:key outputs #:allow-other-keys)
>> +            (let* ((out     (assoc-ref outputs "out"))
>> +                   (doc     (string-append out "/share/cereal/docs"))
>> +                   (include (string-append out "/include/cereal")))
>> +              (mkdir-p doc)
>> +              (mkdir-p include)
>> +              (copy-recursively "include/cereal" include)
>> +              (copy-recursively "doc/html" doc))
>
> Maybe add a comment about why “make install” isn’t enough.

Okay.  I added a comment explaining that there is no “install” target.

> Otherwise LGTM.
>
>> From 1f8739407dd3f9715005d55befabf894fa98ee10 Mon Sep 17 00:00:00 2001
>> From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
>> Date: Tue, 10 Nov 2015 15:41:04 +0100
>> Subject: [PATCH 2/2] gnu: Add sparsehash.
>>
>> * gnu/packages/crypto.scm (sparsehash): New variable.
>
> LGTM.

Thank you.  I’ll push both in a moment.

~~ Ricardo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Add cereal + sparsehash
  2015-11-26 12:53 [PATCH] Add cereal + sparsehash Ricardo Wurmus
  2015-11-28 15:42 ` Ludovic Courtès
@ 2015-11-30 20:06 ` Andreas Enge
  2015-12-01 10:44   ` Ricardo Wurmus
  1 sibling, 1 reply; 10+ messages in thread
From: Andreas Enge @ 2015-11-30 20:06 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Hello,

sorry for being late, I am still catching up.

On Thu, Nov 26, 2015 at 01:53:25PM +0100, Ricardo Wurmus wrote:
> The second patch adds “sparsehash” to the “crypto” module.  It’s
> probably not the best module for this package — can you suggest any
> other location for a hash table library?

If it is not a cryptographically secure hash, it should go anywhere, but
not to the cryptography module. Both are called by the same name in English,
but are completely different things. Could you move it somewhere else?

Andreas

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Add cereal + sparsehash
  2015-11-30 20:06 ` Andreas Enge
@ 2015-12-01 10:44   ` Ricardo Wurmus
  2015-12-01 21:55     ` Ludovic Courtès
  2015-12-02  8:48     ` Andreas Enge
  0 siblings, 2 replies; 10+ messages in thread
From: Ricardo Wurmus @ 2015-12-01 10:44 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel


Andreas Enge <andreas@enge.fr> writes:

> On Thu, Nov 26, 2015 at 01:53:25PM +0100, Ricardo Wurmus wrote:
>> The second patch adds “sparsehash” to the “crypto” module.  It’s
>> probably not the best module for this package — can you suggest any
>> other location for a hash table library?
>
> If it is not a cryptographically secure hash, it should go anywhere, but
> not to the cryptography module. Both are called by the same name in English,
> but are completely different things. Could you move it somewhere else?

I’d like to do this, but I’m pretty bad at naming things.  How about a
new module “datastructures.scm” where this could comfortably fit in?  Or
is this too vague?  Or should it go in the equally vague “code.scm”
(which actually is for tools operating on source code)?

~~ Ricardo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Add cereal + sparsehash
  2015-12-01 10:44   ` Ricardo Wurmus
@ 2015-12-01 21:55     ` Ludovic Courtès
  2015-12-02  8:48     ` Andreas Enge
  1 sibling, 0 replies; 10+ messages in thread
From: Ludovic Courtès @ 2015-12-01 21:55 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> skribis:

> Andreas Enge <andreas@enge.fr> writes:
>
>> On Thu, Nov 26, 2015 at 01:53:25PM +0100, Ricardo Wurmus wrote:
>>> The second patch adds “sparsehash” to the “crypto” module.  It’s
>>> probably not the best module for this package — can you suggest any
>>> other location for a hash table library?
>>
>> If it is not a cryptographically secure hash, it should go anywhere, but
>> not to the cryptography module. Both are called by the same name in English,
>> but are completely different things. Could you move it somewhere else?
>
> I’d like to do this, but I’m pretty bad at naming things.  How about a
> new module “datastructures.scm” where this could comfortably fit in?  Or
> is this too vague?  Or should it go in the equally vague “code.scm”
> (which actually is for tools operating on source code)?

I see there’s cityhash in textutils.scm and gperf in its own module.
Maybe textutils.scm?  Or next to cereal?

Ludo’.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Add cereal + sparsehash
  2015-12-01 10:44   ` Ricardo Wurmus
  2015-12-01 21:55     ` Ludovic Courtès
@ 2015-12-02  8:48     ` Andreas Enge
  2015-12-10 15:24       ` Ricardo Wurmus
  1 sibling, 1 reply; 10+ messages in thread
From: Andreas Enge @ 2015-12-02  8:48 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

On Tue, Dec 01, 2015 at 11:44:06AM +0100, Ricardo Wurmus wrote:
> I’d like to do this, but I’m pretty bad at naming things.  How about a
> new module “datastructures.scm” where this could comfortably fit in?

I also did not know a good name, so did not suggest anything concrete...
I like your suggestion; we could rename boost.scm to datastructures.scm
and move the hash package there.

What do you think?

Andreas

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Add cereal + sparsehash
  2015-12-02  8:48     ` Andreas Enge
@ 2015-12-10 15:24       ` Ricardo Wurmus
  2015-12-11  9:48         ` Ludovic Courtès
  0 siblings, 1 reply; 10+ messages in thread
From: Ricardo Wurmus @ 2015-12-10 15:24 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel


Andreas Enge <andreas@enge.fr> writes:

> On Tue, Dec 01, 2015 at 11:44:06AM +0100, Ricardo Wurmus wrote:
>> I’d like to do this, but I’m pretty bad at naming things.  How about a
>> new module “datastructures.scm” where this could comfortably fit in?
>
> I also did not know a good name, so did not suggest anything concrete...
> I like your suggestion; we could rename boost.scm to datastructures.scm
> and move the hash package there.
>
> What do you think?

Boost provides not just data structures but seems to be a grab bag of
“generally useful” libraries.  I’d rather leave it alone and create a
new, independent “datastructures” module with “sparsehash” as the first
occupant.

Would that be acceptable?

~~ Ricardo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Add cereal + sparsehash
  2015-12-10 15:24       ` Ricardo Wurmus
@ 2015-12-11  9:48         ` Ludovic Courtès
  2015-12-11 14:59           ` Ricardo Wurmus
  0 siblings, 1 reply; 10+ messages in thread
From: Ludovic Courtès @ 2015-12-11  9:48 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> skribis:

> Andreas Enge <andreas@enge.fr> writes:
>
>> On Tue, Dec 01, 2015 at 11:44:06AM +0100, Ricardo Wurmus wrote:
>>> I’d like to do this, but I’m pretty bad at naming things.  How about a
>>> new module “datastructures.scm” where this could comfortably fit in?
>>
>> I also did not know a good name, so did not suggest anything concrete...
>> I like your suggestion; we could rename boost.scm to datastructures.scm
>> and move the hash package there.
>>
>> What do you think?
>
> Boost provides not just data structures but seems to be a grab bag of
> “generally useful” libraries.  I’d rather leave it alone and create a
> new, independent “datastructures” module with “sparsehash” as the first
> occupant.
>
> Would that be acceptable?

Sure, let’s do that.

Ludo’.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Add cereal + sparsehash
  2015-12-11  9:48         ` Ludovic Courtès
@ 2015-12-11 14:59           ` Ricardo Wurmus
  0 siblings, 0 replies; 10+ messages in thread
From: Ricardo Wurmus @ 2015-12-11 14:59 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel


Ludovic Courtès <ludo@gnu.org> writes:

> Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> skribis:
>
>> Andreas Enge <andreas@enge.fr> writes:
>>
>>> On Tue, Dec 01, 2015 at 11:44:06AM +0100, Ricardo Wurmus wrote:
>>>> I’d like to do this, but I’m pretty bad at naming things.  How about a
>>>> new module “datastructures.scm” where this could comfortably fit in?
>>>
>>> I also did not know a good name, so did not suggest anything concrete...
>>> I like your suggestion; we could rename boost.scm to datastructures.scm
>>> and move the hash package there.
>>>
>>> What do you think?
>>
>> Boost provides not just data structures but seems to be a grab bag of
>> “generally useful” libraries.  I’d rather leave it alone and create a
>> new, independent “datastructures” module with “sparsehash” as the first
>> occupant.
>>
>> Would that be acceptable?
>
> Sure, let’s do that.

Done in f7f55db8f6d049225898d4ebcd7bc1d53623f32d.

~~ Ricardo

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-12-11 15:00 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-26 12:53 [PATCH] Add cereal + sparsehash Ricardo Wurmus
2015-11-28 15:42 ` Ludovic Courtès
2015-11-30 13:44   ` Ricardo Wurmus
2015-11-30 20:06 ` Andreas Enge
2015-12-01 10:44   ` Ricardo Wurmus
2015-12-01 21:55     ` Ludovic Courtès
2015-12-02  8:48     ` Andreas Enge
2015-12-10 15:24       ` Ricardo Wurmus
2015-12-11  9:48         ` Ludovic Courtès
2015-12-11 14:59           ` Ricardo Wurmus

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).