diff mbox

gnu: Add capnproto.

Message ID 87vayv635l.fsf@ike.i-did-not-set--mail-host-address--so-tickle-me
State New
Headers show

Commit Message

Marius Bakke Aug. 20, 2016, 12:22 p.m. UTC
Leo Famulari <leo@famulari.name> writes:

> On Fri, Aug 19, 2016 at 06:06:24PM -0400, Leo Famulari wrote:
>> On Sun, Aug 14, 2016 at 07:16:22PM +0100, Marius Bakke wrote:
>> > Leo Famulari <leo@famulari.name> writes:
>> > 
>> > > On Sat, Aug 13, 2016 at 07:48:36PM +0100, Marius Bakke wrote:
>> > >> Note that it bundles googletest; I tried unbundling but it proved
>> > >> difficult. gtest will no longer be used from the 0.6 release so I did
>> > >> not think a comment was necessary.
>> > >
>> > > I am cc-ing Lukas with my reply, since he added our googletest package.
>> > > Maybe he has some insight.
>> > The problem is that their autotools system expects to build gtest as
>> > well, so there are references all over. See:
>> > https://github.com/sandstorm-io/capnproto/blob/release-0.5.3/c%2B%2B/Makefile.am
>> > and also configure.ac. It would have to be patched out, which seems
>> > excessive for a 4MB build dependency.
>> 
>> In my opinion, it's generally not about the size of the bundled
>> dependency. Rather, it's about the opacity of the dependency graph of
>> the application that does the bundling. The worst case would be
>> something like a bundled OpenSSL, for example.
>> 
>> In this case, Debian has accepted the bundled gtest [0], which makes me
>> wonder if my understanding of gtest is incorrect. Perhaps it is designed
>> to be bundled?

It comes bundled more often than not, but decoupling generally works out
of the box, as it's just linked to as with any library AFAICT:

https://github.com/google/googletest/blob/master/googletest/docs/Primer.md

If it was any other library, or if it wasn't dropped in current git, I
would have gone through the effort of purging it.

> In any case, since Debian accepted it, I'm willing to accept it as well,
> unless somebody objects.
>
> But the patch has gone stale due to other changes in serialization.scm.
> Marius, will you send an updated patch?

New patch below. Thanks!

Comments

Leo Famulari Aug. 23, 2016, 4 p.m. UTC | #1
On Sat, Aug 20, 2016 at 01:22:30PM +0100, Marius Bakke wrote:
> Subject: [PATCH] gnu: Add capnproto.
> 
> * gnu/packages/serialization.scm (capnproto): New variable.

Thanks, pushed as 557d3328!

By the way, I noticed some other distros include a man page for
capnproto. Can you look into doing something similar for us?
Marius Bakke Aug. 23, 2016, 6:30 p.m. UTC | #2
Leo Famulari <leo@famulari.name> writes:

> On Sat, Aug 20, 2016 at 01:22:30PM +0100, Marius Bakke wrote:
>> Subject: [PATCH] gnu: Add capnproto.
>> 
>> * gnu/packages/serialization.scm (capnproto): New variable.
>
> Thanks, pushed as 557d3328!

Cheers!

> By the way, I noticed some other distros include a man page for
> capnproto. Can you look into doing something similar for us?

Nice find! I guess we can pull the one from Debian. From capnp.1.xml:

      <para>This manual page was written for the Debian system
        (and may be used by others).</para>

Not sure how to add it though, are there other packages with multiple
sources that can be used as reference?

Also, Gentoo apparently decouples gtest by two `sed` commands and
triggering `autoreconf`. I will try that too.

Thanks!
Marius
Leo Famulari Aug. 23, 2016, 6:40 p.m. UTC | #3
On Tue, Aug 23, 2016 at 07:30:10PM +0100, Marius Bakke wrote:
> Leo Famulari <leo@famulari.name> writes:
> > By the way, I noticed some other distros include a man page for
> > capnproto. Can you look into doing something similar for us?
> 
> Nice find! I guess we can pull the one from Debian. From capnp.1.xml:
> 
>       <para>This manual page was written for the Debian system
>         (and may be used by others).</para>
> 
> Not sure how to add it though, are there other packages with multiple
> sources that can be used as reference?

Yes, check the Git package definition for an example of pulling sources
from multiple locations. The git-manpages are distributed as a separate
tarball, and fetched directly from (native-inputs).

Although, I'm not sure how much I like downloading the man page from
Debian. There's nothing explicitly  wrong with it, but I'd rather not
pepper our package definitions with references to random files scattered
across the internet. Other opinions requested on this subject :)

I had hoped the documentation could be built from the capnproto source
or downloading from the capnproto project.

Maybe capnproto can be convinced to adopt Debian's manpage.

> Also, Gentoo apparently decouples gtest by two `sed` commands and
> triggering `autoreconf`. I will try that too.

Great, I look forward to hearing the results!
diff mbox

Patch

From 6e73e7c85a044d1da176534ed8ff046431afe617 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Fri, 12 Aug 2016 13:42:16 +0100
Subject: [PATCH] gnu: Add capnproto.

* gnu/packages/serialization.scm (capnproto): New variable.
---
 gnu/packages/serialization.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index c3ce5c5..4a3278f 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -2,6 +2,7 @@ 
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
+;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -170,3 +171,32 @@  including serialization and deserialization to and from strings.  It can also
 preserve existing comment in unserialization/serialization steps, making
 it a convenient format to store user input files.")
     (license license:expat)))
+
+(define-public capnproto
+  (package
+    (name "capnproto")
+    (version "0.5.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://capnproto.org/capnproto-c++-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1yvaadhgakskqq5wpv53hd6fc3pp17mrdldw4i5cvgck4iwprcfd"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'do-not-require-/etc/services
+           (lambda _
+             ;; Workaround for test that tries to resolve port name from
+             ;; /etc/services, which is not present in build environment.
+             (substitute* "src/kj/async-io-test.c++" ((":http") ":80"))
+             #t)))))
+    (home-page "https://capnproto.org")
+    (synopsis "Capability-based RPC and serialization system")
+    (description
+     "Cap'n Proto is a very fast data interchange format and capability-based
+RPC system.  Think JSON, except binary.  Or think Protocol Buffers, except faster.")
+    (license license:expat)))
-- 
2.9.2