gnu: Add eclib.
[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>
1eeae57b 5;;; Copyright © 2017, 2018, 2019 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)
d78bfd27 30 #:use-module (guix build-system emacs)
7e685dee 31 #:use-module ((guix licenses) #:prefix license:)
8d63ddda
DP
32 #:use-module (gnu packages compression)
33 #:use-module (gnu packages gcc)
7d9935b4 34 #:use-module (gnu packages libevent)
bfd07331 35 #:use-module (gnu packages pkg-config)
44d10b1f
RW
36 #:use-module (gnu packages python)
37 #:use-module (gnu packages python-xyz))
14d17788 38
7d9935b4
TGR
39(define-public fstrm
40 (package
41 (name "fstrm")
42 (version "0.3.2")
43 (source
44 (origin
45 (method url-fetch)
46 (uri (string-append "https://dl.farsightsecurity.com/dist/" name "/"
47 name "-" version ".tar.gz"))
48 (sha256
49 (base32
50 "1i9y8a1712aj80p5a1kcp378bnjrg3s2127q7304hklhmjcrjl1d"))))
51 (build-system gnu-build-system)
52 (native-inputs
53 `(("pkg-config" ,pkg-config)))
54 (inputs
55 `(("libevent" ,libevent)))
56 (home-page "https://github.com/farsightsec/fstrm")
57 (synopsis "Implementation of the Frame Streams data transport protocol")
58 (description
59 "fstrm is an optimised implementation of Frame Streams as a C library and
60several tools built on top of it.
61
62@dfn{Frame Streams} is a light-weight, binary-clean protocol that allows for
63the transport of arbitrarily-encoded data payload sequences with minimal
64framing overhead---just four bytes per data frame. It does not specify an
65encoding format for these data frames and can be used with any data
66serialisation format that produces byte sequences, such as Protocol Buffers,
67XML, JSON, MessagePack, YAML, etc.
68
69Frame Streams can be used either as a streaming transport over a reliable byte
70stream socket (TCP sockets, TLS connections, @code{AF_UNIX} sockets, etc.) for
71data in motion, or as a file format for data at rest.")
7e685dee
TGR
72 (license (list license:asl2.0
73 (license:non-copyleft #f "See libmy/argv*")))))
7d9935b4 74
14d17788
LC
75(define-public protobuf
76 (package
77 (name "protobuf")
66e86f26 78 (version "3.5.1")
14d17788
LC
79 (source (origin
80 (method url-fetch)
de30a6e0 81 (uri (string-append "https://github.com/google/protobuf/releases/"
dd12d4aa
RW
82 "download/v" version "/protobuf-cpp-"
83 version ".tar.gz"))
14d17788
LC
84 (sha256
85 (base32
66e86f26 86 "14j0427ykjzrd9a66c2mpk0sjcccjlsx6q8ww6hzwb6sha3vm3f2"))))
14d17788
LC
87 (build-system gnu-build-system)
88 (inputs `(("zlib" ,zlib)))
ffe7eee5
TGR
89 (outputs (list "out"
90 "static")) ; ~12 MiB of .a files
91 (arguments
92 `(#:phases
93 (modify-phases %standard-phases
94 (add-after 'install 'move-static-libraries
95 (lambda* (#:key outputs #:allow-other-keys)
96 ;; Move static libraries to the "static" output.
97 (let* ((out (assoc-ref outputs "out"))
98 (lib (string-append out "/lib"))
99 (static (assoc-ref outputs "static"))
100 (slib (string-append static "/lib")))
101 (mkdir-p slib)
102 (for-each (lambda (file)
103 (install-file file slib)
104 (delete-file file))
105 (find-files lib "\\.a$"))
106 #t))))))
3b0ac795 107 (home-page "https://github.com/google/protobuf")
14d17788
LC
108 (synopsis "Data encoding for remote procedure calls (RPCs)")
109 (description
110 "Protocol Buffers are a way of encoding structured data in an efficient
111yet extensible format. Google uses Protocol Buffers for almost all of its
112internal RPC protocols and file formats.")
7e685dee 113 (license license:bsd-3)))
8d63ddda 114
c22c803e
RW
115(define-public protobuf-next
116 (package (inherit protobuf)
117 (name "protobuf")
118 (version "3.6.1")
119 (source (origin
120 (method url-fetch)
121 (uri (string-append "https://github.com/google/protobuf/releases/"
122 "download/v" version "/protobuf-cpp-"
123 version ".tar.gz"))
124 (sha256
125 (base32
126 "0a955bz59ihrb5wg7dwi12xajdi5pmz4bl0g147rbdwv393jwwxk"))))))
127
fa9ac83e
TGR
128;; XXX Remove this old version when no other packages depend on it.
129(define-public protobuf-2
130 (package (inherit protobuf)
131 (version "2.6.1")
132 (source (origin
133 (method url-fetch)
134 (uri (string-append "https://github.com/google/protobuf/releases/"
135 "download/v" version "/protobuf-"
136 version ".tar.bz2"))
137 (sha256
138 (base32
139 "040rcs9fpv4bslhiy43v7dcrzakz4vwwpyqg4jp8bn24sl95ci7f"))))))
140
bfd07331
RW
141(define-public protobuf-c
142 (package
143 (name "protobuf-c")
4a6785f6 144 (version "1.3.1")
bfd07331
RW
145 (source (origin
146 (method url-fetch)
147 (uri (string-append "https://github.com/protobuf-c/protobuf-c/"
148 "releases/download/v" version
149 "/protobuf-c-" version ".tar.gz"))
150 (sha256
151 (base32
4a6785f6 152 "0rr2kn7804cvhdm6lzz04gz76vy0fzj15dijbr17nv8x34x2sisi"))))
bfd07331
RW
153 (build-system gnu-build-system)
154 (inputs `(("protobuf" ,protobuf)))
155 (native-inputs `(("pkg-config" ,pkg-config)))
156 (home-page "https://github.com/protobuf-c/protobuf-c")
157 (synopsis "Protocol Buffers implementation in C")
158 (description
159 "This is protobuf-c, a C implementation of the Google Protocol Buffers
160data serialization format. It includes @code{libprotobuf-c}, a pure C library
161that implements protobuf encoding and decoding, and @code{protoc-c}, a code
162generator that converts Protocol Buffer @code{.proto} files to C descriptor
163code.")
7e685dee 164 (license license:bsd-2)))
bfd07331 165
dc8621a2
TGR
166(define-public protozero
167 (package
168 (name "protozero")
169 (version "1.6.7")
170 (source
171 (origin
172 (method git-fetch)
173 (uri (git-reference
174 (url "https://github.com/mapbox/protozero.git")
175 (commit (string-append "v" version))))
176 (file-name (git-file-name name version))
177 (sha256
178 (base32 "1ryvn3iwxiaih3mvyy45nbwxnhzfc8vby0xh9m6d6fpakhcpf6s3"))))
179 (build-system cmake-build-system)
180 (home-page "https://github.com/mapbox/protozero")
181 (synopsis "Minimalistic protocol buffer decoder and encoder in C++")
182 (description "Protozero is a minimalistic protocol buffer decoder and
183encoder in C++. The developer using protozero has to manually translate the
184@file{.proto} description into code.")
185 (license (list
186 license:asl2.0 ; for folly
187 license:bsd-2))))
188
8d63ddda
DP
189(define-public python-protobuf
190 (package
191 (name "python-protobuf")
c9ec726c 192 (version "3.5.2")
8d63ddda
DP
193 (source
194 (origin
195 (method url-fetch)
196 (uri (pypi-uri "protobuf" version))
197 (sha256
198 (base32
c9ec726c 199 "1q4b1m55w4gvcbzklbk8iylaii98n4in41k27d94w8ypbwlrm1q9"))))
8d63ddda 200 (build-system python-build-system)
f22efa01 201 (propagated-inputs
8d63ddda
DP
202 `(("python-six" ,python-six)))
203 (home-page "https://github.com/google/protobuf")
204 (synopsis "Protocol buffers is a data interchange format")
205 (description
206 "Protocol buffers are a language-neutral, platform-neutral extensible
207mechanism for serializing structured data.")
7e685dee 208 (license license:bsd-3)))
8d63ddda
DP
209
210(define-public python2-protobuf
5c31f4aa 211 (package-with-python2 python-protobuf))
d78bfd27 212
1eeae57b
RW
213(define-public python-protobuf-next
214 (package (inherit python-protobuf)
215 (name "python-protobuf")
216 (version (package-version protobuf-next) )
217 (source
218 (origin
219 (method url-fetch)
220 (uri (pypi-uri "protobuf" version))
221 (sha256
222 (base32
223 "04bqb12smlckzmgkj6vgmpbr3cby0n6726cmz33bqr7kn1vb728l"))))))
224
d78bfd27
CZ
225(define-public emacs-protobuf-mode
226 (package
227 (name "emacs-protobuf-mode")
228 (version (package-version protobuf))
229 (source (package-source protobuf))
230 (build-system emacs-build-system)
231 (arguments
232 `(#:phases
233 (modify-phases %standard-phases
234 (add-before 'set-emacs-load-path 'change-working-directory
235 (lambda _ (chdir "editors") #t)))))
236 (home-page "https://github.com/protocolbuffers/protobuf")
237 (synopsis "Protocol buffers major mode for Emacs")
238 (description
239 "This package provides an Emacs major mode for editing Protocol Buffer
240source files.")
241 (license license:bsd-3)))