gnu: Add emacs-erlang.
[jackhill/guix/guix.git] / gnu / packages / protobuf.scm
CommitLineData
14d17788
LC
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
8d63ddda
DP
3;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
4;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
c22c803e 5;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
c9ec726c 6;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
14d17788
LC
7;;;
8;;; This file is part of GNU Guix.
9;;;
10;;; GNU Guix is free software; you can redistribute it and/or modify it
11;;; under the terms of the GNU General Public License as published by
12;;; the Free Software Foundation; either version 3 of the License, or (at
13;;; your option) any later version.
14;;;
15;;; GNU Guix is distributed in the hope that it will be useful, but
16;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;;; GNU General Public License for more details.
19;;;
20;;; You should have received a copy of the GNU General Public License
21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23(define-module (gnu packages protobuf)
24 #:use-module (guix packages)
25 #:use-module (guix download)
dc8621a2
TGR
26 #:use-module (guix git-download)
27 #:use-module (guix build-system cmake)
14d17788 28 #:use-module (guix build-system gnu)
8d63ddda 29 #:use-module (guix build-system python)
7e685dee 30 #:use-module ((guix licenses) #:prefix license:)
8d63ddda
DP
31 #:use-module (gnu packages compression)
32 #:use-module (gnu packages gcc)
7d9935b4 33 #:use-module (gnu packages libevent)
bfd07331 34 #:use-module (gnu packages pkg-config)
44d10b1f
RW
35 #:use-module (gnu packages python)
36 #:use-module (gnu packages python-xyz))
14d17788 37
7d9935b4
TGR
38(define-public fstrm
39 (package
40 (name "fstrm")
41 (version "0.3.2")
42 (source
43 (origin
44 (method url-fetch)
45 (uri (string-append "https://dl.farsightsecurity.com/dist/" name "/"
46 name "-" version ".tar.gz"))
47 (sha256
48 (base32
49 "1i9y8a1712aj80p5a1kcp378bnjrg3s2127q7304hklhmjcrjl1d"))))
50 (build-system gnu-build-system)
51 (native-inputs
52 `(("pkg-config" ,pkg-config)))
53 (inputs
54 `(("libevent" ,libevent)))
55 (home-page "https://github.com/farsightsec/fstrm")
56 (synopsis "Implementation of the Frame Streams data transport protocol")
57 (description
58 "fstrm is an optimised implementation of Frame Streams as a C library and
59several tools built on top of it.
60
61@dfn{Frame Streams} is a light-weight, binary-clean protocol that allows for
62the transport of arbitrarily-encoded data payload sequences with minimal
63framing overhead---just four bytes per data frame. It does not specify an
64encoding format for these data frames and can be used with any data
65serialisation format that produces byte sequences, such as Protocol Buffers,
66XML, JSON, MessagePack, YAML, etc.
67
68Frame Streams can be used either as a streaming transport over a reliable byte
69stream socket (TCP sockets, TLS connections, @code{AF_UNIX} sockets, etc.) for
70data in motion, or as a file format for data at rest.")
7e685dee
TGR
71 (license (list license:asl2.0
72 (license:non-copyleft #f "See libmy/argv*")))))
7d9935b4 73
14d17788
LC
74(define-public protobuf
75 (package
76 (name "protobuf")
66e86f26 77 (version "3.5.1")
14d17788
LC
78 (source (origin
79 (method url-fetch)
de30a6e0 80 (uri (string-append "https://github.com/google/protobuf/releases/"
dd12d4aa
RW
81 "download/v" version "/protobuf-cpp-"
82 version ".tar.gz"))
14d17788
LC
83 (sha256
84 (base32
66e86f26 85 "14j0427ykjzrd9a66c2mpk0sjcccjlsx6q8ww6hzwb6sha3vm3f2"))))
14d17788
LC
86 (build-system gnu-build-system)
87 (inputs `(("zlib" ,zlib)))
ffe7eee5
TGR
88 (outputs (list "out"
89 "static")) ; ~12 MiB of .a files
90 (arguments
91 `(#:phases
92 (modify-phases %standard-phases
93 (add-after 'install 'move-static-libraries
94 (lambda* (#:key outputs #:allow-other-keys)
95 ;; Move static libraries to the "static" output.
96 (let* ((out (assoc-ref outputs "out"))
97 (lib (string-append out "/lib"))
98 (static (assoc-ref outputs "static"))
99 (slib (string-append static "/lib")))
100 (mkdir-p slib)
101 (for-each (lambda (file)
102 (install-file file slib)
103 (delete-file file))
104 (find-files lib "\\.a$"))
105 #t))))))
3b0ac795 106 (home-page "https://github.com/google/protobuf")
14d17788
LC
107 (synopsis "Data encoding for remote procedure calls (RPCs)")
108 (description
109 "Protocol Buffers are a way of encoding structured data in an efficient
110yet extensible format. Google uses Protocol Buffers for almost all of its
111internal RPC protocols and file formats.")
7e685dee 112 (license license:bsd-3)))
8d63ddda 113
c22c803e
RW
114(define-public protobuf-next
115 (package (inherit protobuf)
116 (name "protobuf")
117 (version "3.6.1")
118 (source (origin
119 (method url-fetch)
120 (uri (string-append "https://github.com/google/protobuf/releases/"
121 "download/v" version "/protobuf-cpp-"
122 version ".tar.gz"))
123 (sha256
124 (base32
125 "0a955bz59ihrb5wg7dwi12xajdi5pmz4bl0g147rbdwv393jwwxk"))))))
126
fa9ac83e
TGR
127;; XXX Remove this old version when no other packages depend on it.
128(define-public protobuf-2
129 (package (inherit protobuf)
130 (version "2.6.1")
131 (source (origin
132 (method url-fetch)
133 (uri (string-append "https://github.com/google/protobuf/releases/"
134 "download/v" version "/protobuf-"
135 version ".tar.bz2"))
136 (sha256
137 (base32
138 "040rcs9fpv4bslhiy43v7dcrzakz4vwwpyqg4jp8bn24sl95ci7f"))))))
139
bfd07331
RW
140(define-public protobuf-c
141 (package
142 (name "protobuf-c")
4a6785f6 143 (version "1.3.1")
bfd07331
RW
144 (source (origin
145 (method url-fetch)
146 (uri (string-append "https://github.com/protobuf-c/protobuf-c/"
147 "releases/download/v" version
148 "/protobuf-c-" version ".tar.gz"))
149 (sha256
150 (base32
4a6785f6 151 "0rr2kn7804cvhdm6lzz04gz76vy0fzj15dijbr17nv8x34x2sisi"))))
bfd07331
RW
152 (build-system gnu-build-system)
153 (inputs `(("protobuf" ,protobuf)))
154 (native-inputs `(("pkg-config" ,pkg-config)))
155 (home-page "https://github.com/protobuf-c/protobuf-c")
156 (synopsis "Protocol Buffers implementation in C")
157 (description
158 "This is protobuf-c, a C implementation of the Google Protocol Buffers
159data serialization format. It includes @code{libprotobuf-c}, a pure C library
160that implements protobuf encoding and decoding, and @code{protoc-c}, a code
161generator that converts Protocol Buffer @code{.proto} files to C descriptor
162code.")
7e685dee 163 (license license:bsd-2)))
bfd07331 164
dc8621a2
TGR
165(define-public protozero
166 (package
167 (name "protozero")
168 (version "1.6.7")
169 (source
170 (origin
171 (method git-fetch)
172 (uri (git-reference
173 (url "https://github.com/mapbox/protozero.git")
174 (commit (string-append "v" version))))
175 (file-name (git-file-name name version))
176 (sha256
177 (base32 "1ryvn3iwxiaih3mvyy45nbwxnhzfc8vby0xh9m6d6fpakhcpf6s3"))))
178 (build-system cmake-build-system)
179 (home-page "https://github.com/mapbox/protozero")
180 (synopsis "Minimalistic protocol buffer decoder and encoder in C++")
181 (description "Protozero is a minimalistic protocol buffer decoder and
182encoder in C++. The developer using protozero has to manually translate the
183@file{.proto} description into code.")
184 (license (list
185 license:asl2.0 ; for folly
186 license:bsd-2))))
187
8d63ddda
DP
188(define-public python-protobuf
189 (package
190 (name "python-protobuf")
c9ec726c 191 (version "3.5.2")
8d63ddda
DP
192 (source
193 (origin
194 (method url-fetch)
195 (uri (pypi-uri "protobuf" version))
196 (sha256
197 (base32
c9ec726c 198 "1q4b1m55w4gvcbzklbk8iylaii98n4in41k27d94w8ypbwlrm1q9"))))
8d63ddda 199 (build-system python-build-system)
f22efa01 200 (propagated-inputs
8d63ddda
DP
201 `(("python-six" ,python-six)))
202 (home-page "https://github.com/google/protobuf")
203 (synopsis "Protocol buffers is a data interchange format")
204 (description
205 "Protocol buffers are a language-neutral, platform-neutral extensible
206mechanism for serializing structured data.")
7e685dee 207 (license license:bsd-3)))
8d63ddda
DP
208
209(define-public python2-protobuf
5c31f4aa 210 (package-with-python2 python-protobuf))