gnu: Add python-mypy-protobuf.
[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>
f8a6ae18 5;;; Copyright © 2017, 2018, 2019, 2022 Ricardo Wurmus <rekado@elephly.net>
599d0190 6;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
07fdfb9e 7;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
ba4d96d2 8;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
a90cf896 9;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
53bbbfb7 10;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
14d17788
LC
11;;;
12;;; This file is part of GNU Guix.
13;;;
14;;; GNU Guix is free software; you can redistribute it and/or modify it
15;;; under the terms of the GNU General Public License as published by
16;;; the Free Software Foundation; either version 3 of the License, or (at
17;;; your option) any later version.
18;;;
19;;; GNU Guix is distributed in the hope that it will be useful, but
20;;; WITHOUT ANY WARRANTY; without even the implied warranty of
21;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22;;; GNU General Public License for more details.
23;;;
24;;; You should have received a copy of the GNU General Public License
25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26
27(define-module (gnu packages protobuf)
59d79767 28 #:use-module (guix gexp)
14d17788
LC
29 #:use-module (guix packages)
30 #:use-module (guix download)
dc8621a2
TGR
31 #:use-module (guix git-download)
32 #:use-module (guix build-system cmake)
14d17788 33 #:use-module (guix build-system gnu)
8d63ddda 34 #:use-module (guix build-system python)
d78bfd27 35 #:use-module (guix build-system emacs)
d59c84f5 36 #:use-module (guix build-system ruby)
7e685dee 37 #:use-module ((guix licenses) #:prefix license:)
6f1784fa 38 #:use-module (guix utils)
5eb16865 39 #:use-module (gnu packages build-tools)
8d63ddda 40 #:use-module (gnu packages compression)
6f1784fa 41 #:use-module (gnu packages check)
8d63ddda 42 #:use-module (gnu packages gcc)
7d9935b4 43 #:use-module (gnu packages libevent)
bfd07331 44 #:use-module (gnu packages pkg-config)
44d10b1f 45 #:use-module (gnu packages python)
13bb41f8 46 #:use-module (gnu packages python-build)
6f1784fa 47 #:use-module (gnu packages python-check)
d59c84f5 48 #:use-module (gnu packages python-xyz)
1a7fb20e 49 #:use-module (gnu packages rpc)
d59c84f5 50 #:use-module (gnu packages ruby))
14d17788 51
7d9935b4
TGR
52(define-public fstrm
53 (package
54 (name "fstrm")
b167c54e 55 (version "0.6.1")
7d9935b4
TGR
56 (source
57 (origin
58 (method url-fetch)
b167c54e
TGR
59 (uri (string-append "https://dl.farsightsecurity.com/dist/fstrm/"
60 "fstrm-" version ".tar.gz"))
7d9935b4 61 (sha256
b167c54e 62 (base32 "13q9iz5fpp607zvk0i39158fvvjciz4y5k14rly94b9ak0gar95w"))))
7d9935b4 63 (build-system gnu-build-system)
59d79767
TGR
64 (arguments
65 (list #:configure-flags
66 #~(list "--disable-static")))
7d9935b4 67 (native-inputs
8394619b 68 (list pkg-config))
7d9935b4 69 (inputs
8394619b 70 (list libevent))
7d9935b4
TGR
71 (home-page "https://github.com/farsightsec/fstrm")
72 (synopsis "Implementation of the Frame Streams data transport protocol")
73 (description
74 "fstrm is an optimised implementation of Frame Streams as a C library and
75several tools built on top of it.
76
77@dfn{Frame Streams} is a light-weight, binary-clean protocol that allows for
78the transport of arbitrarily-encoded data payload sequences with minimal
79framing overhead---just four bytes per data frame. It does not specify an
80encoding format for these data frames and can be used with any data
81serialisation format that produces byte sequences, such as Protocol Buffers,
82XML, JSON, MessagePack, YAML, etc.
83
84Frame Streams can be used either as a streaming transport over a reliable byte
85stream socket (TCP sockets, TLS connections, @code{AF_UNIX} sockets, etc.) for
86data in motion, or as a file format for data at rest.")
069d6a3f
TGR
87 (license (list license:expat ; the combined work
88 license:hpnd)))) ; libmy/argv*
7d9935b4 89
14d17788
LC
90(define-public protobuf
91 (package
92 (name "protobuf")
0ce685c6 93 (version "3.17.3")
14d17788
LC
94 (source (origin
95 (method url-fetch)
de30a6e0 96 (uri (string-append "https://github.com/google/protobuf/releases/"
dd12d4aa
RW
97 "download/v" version "/protobuf-cpp-"
98 version ".tar.gz"))
14d17788
LC
99 (sha256
100 (base32
0ce685c6 101 "1jzqrklhj9grs6xbddyb5dyxfbgbgbyhl5zig8ml50wb22gwkkji"))))
14d17788 102 (build-system gnu-build-system)
8394619b 103 (inputs (list zlib))
ffe7eee5
TGR
104 (outputs (list "out"
105 "static")) ; ~12 MiB of .a files
106 (arguments
107 `(#:phases
108 (modify-phases %standard-phases
0ce685c6
MC
109 (add-after 'unpack 'disable-broken-tests
110 ;; The following tests fail on 32 bit architectures such as
111 ;; i686-linux.
112 (lambda _
113 (let-syntax ((disable-tests
114 (syntax-rules ()
115 ((_ file test ...)
116 (substitute* file
117 ((test name)
118 (string-append "DISABLED_" name)) ...)))))
119 ;; See: https://github.com/protocolbuffers/protobuf/issues/8460.
120 (disable-tests "src/google/protobuf/any_test.cc"
121 "TestPackFromSerializationExceedsSizeLimit")
122 ;; See: https://github.com/protocolbuffers/protobuf/issues/8459.
123 (disable-tests "src/google/protobuf/arena_unittest.cc"
124 "SpaceAllocated_and_Used"
125 "BlockSizeSmallerThanAllocation")
126 ;; See: https://github.com/protocolbuffers/protobuf/issues/8082.
127 (disable-tests "src/google/protobuf/io/zero_copy_stream_unittest.cc"
128 "LargeOutput"))))
ffe7eee5
TGR
129 (add-after 'install 'move-static-libraries
130 (lambda* (#:key outputs #:allow-other-keys)
131 ;; Move static libraries to the "static" output.
132 (let* ((out (assoc-ref outputs "out"))
133 (lib (string-append out "/lib"))
134 (static (assoc-ref outputs "static"))
135 (slib (string-append static "/lib")))
136 (mkdir-p slib)
137 (for-each (lambda (file)
138 (install-file file slib)
139 (delete-file file))
0ce685c6 140 (find-files lib "\\.a$"))))))))
3b0ac795 141 (home-page "https://github.com/google/protobuf")
14d17788
LC
142 (synopsis "Data encoding for remote procedure calls (RPCs)")
143 (description
144 "Protocol Buffers are a way of encoding structured data in an efficient
145yet extensible format. Google uses Protocol Buffers for almost all of its
146internal RPC protocols and file formats.")
7e685dee 147 (license license:bsd-3)))
8d63ddda 148
7373eb83
MB
149;; Tensorflow requires version 3.6 specifically.
150(define-public protobuf-3.6
dbcf2b61
MB
151 (package
152 (inherit protobuf)
c22c803e
RW
153 (version "3.6.1")
154 (source (origin
155 (method url-fetch)
156 (uri (string-append "https://github.com/google/protobuf/releases/"
157 "download/v" version "/protobuf-cpp-"
158 version ".tar.gz"))
159 (sha256
160 (base32
161 "0a955bz59ihrb5wg7dwi12xajdi5pmz4bl0g147rbdwv393jwwxk"))))))
162
7373eb83
MB
163;; The 3.5 series are the last versions that do not require C++ 11.
164(define-public protobuf-3.5
dbcf2b61
MB
165 (package
166 (inherit protobuf)
7373eb83
MB
167 (version "3.5.1")
168 (source (origin
169 (method url-fetch)
170 (uri (string-append "https://github.com/google/protobuf/releases/"
171 "download/v" version "/protobuf-cpp-"
172 version ".tar.gz"))
173 (sha256
174 (base32
175 "14j0427ykjzrd9a66c2mpk0sjcccjlsx6q8ww6hzwb6sha3vm3f2"))))))
176
fa9ac83e
TGR
177;; XXX Remove this old version when no other packages depend on it.
178(define-public protobuf-2
179 (package (inherit protobuf)
180 (version "2.6.1")
181 (source (origin
182 (method url-fetch)
183 (uri (string-append "https://github.com/google/protobuf/releases/"
184 "download/v" version "/protobuf-"
185 version ".tar.bz2"))
186 (sha256
187 (base32
07fdfb9e
MC
188 "040rcs9fpv4bslhiy43v7dcrzakz4vwwpyqg4jp8bn24sl95ci7f"))))
189 (arguments (substitute-keyword-arguments (package-arguments protobuf)
190 ((#:phases phases)
191 `(modify-phases ,phases
192 (delete 'disable-broken-tests)))))))
fa9ac83e 193
bfd07331
RW
194(define-public protobuf-c
195 (package
196 (name "protobuf-c")
e68ae709 197 (version "1.3.3")
bfd07331
RW
198 (source (origin
199 (method url-fetch)
200 (uri (string-append "https://github.com/protobuf-c/protobuf-c/"
201 "releases/download/v" version
202 "/protobuf-c-" version ".tar.gz"))
203 (sha256
204 (base32
e68ae709 205 "0y3yaanq97si7iyld06p8w20m0shpj7sf4xwzbhhvijhxw36d592"))))
bfd07331 206 (build-system gnu-build-system)
8394619b
LC
207 (inputs (list protobuf))
208 (native-inputs (list pkg-config))
bfd07331
RW
209 (home-page "https://github.com/protobuf-c/protobuf-c")
210 (synopsis "Protocol Buffers implementation in C")
211 (description
212 "This is protobuf-c, a C implementation of the Google Protocol Buffers
213data serialization format. It includes @code{libprotobuf-c}, a pure C library
214that implements protobuf encoding and decoding, and @code{protoc-c}, a code
215generator that converts Protocol Buffer @code{.proto} files to C descriptor
216code.")
7e685dee 217 (license license:bsd-2)))
bfd07331 218
dc8621a2
TGR
219(define-public protozero
220 (package
221 (name "protozero")
a3500a0a 222 (version "1.7.1")
dc8621a2
TGR
223 (source
224 (origin
225 (method git-fetch)
226 (uri (git-reference
b0e7b699 227 (url "https://github.com/mapbox/protozero")
dc8621a2
TGR
228 (commit (string-append "v" version))))
229 (file-name (git-file-name name version))
230 (sha256
a3500a0a 231 (base32 "052cq5mdjjgcsgk612zkqi8k08p3ikl22r59dk6i6fq41dxldja7"))))
dc8621a2
TGR
232 (build-system cmake-build-system)
233 (home-page "https://github.com/mapbox/protozero")
234 (synopsis "Minimalistic protocol buffer decoder and encoder in C++")
235 (description "Protozero is a minimalistic protocol buffer decoder and
236encoder in C++. The developer using protozero has to manually translate the
237@file{.proto} description into code.")
238 (license (list
239 license:asl2.0 ; for folly
240 license:bsd-2))))
241
cc3cc72d
MC
242(define-public nanopb
243 (package
244 (name "nanopb")
245 (version "0.4.6.4")
246 (source (origin
247 (method git-fetch) ;for tests
248 (uri (git-reference
249 (url "https://github.com/nanopb/nanopb")
250 (commit version)))
251 (file-name (git-file-name name version))
252 (sha256
253 (base32
254 "0gb6q4igrjj8jap4p1ijza4y8dkjlingzym3cli1w18f90d7xlh7"))))
255 (build-system cmake-build-system)
256 (arguments
257 (list
258 #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON"
259 "-DBUILD_STATIC_LIBS=OFF")
260 #:phases
261 #~(modify-phases %standard-phases
262 (replace 'check
263 (lambda* (#:key tests? #:allow-other-keys)
264 (when tests?
265 (with-directory-excursion "../source/tests"
266 (invoke "scons"))))))))
267 (native-inputs (list protobuf python-protobuf python-wrapper scons))
268 (home-page "https://jpa.kapsi.fi/nanopb/")
269 (synopsis "Small code-size Protocol Buffers implementation in ANSI C")
270 (description "Nanopb is a small code-size Protocol Buffers implementation
271in ansi C. It is especially suitable for use in microcontrollers, but fits
272any memory-restricted system.")
273 (license license:zlib)))
274
1a7fb20e
MC
275(define-public python-mypy-protobuf
276 (package
277 (name "python-mypy-protobuf")
278 (version "3.3.0")
279 (source (origin
280 (method git-fetch)
281 (uri (git-reference
282 (url "https://github.com/nipunn1313/mypy-protobuf")
283 (commit (string-append "v" version))))
284 (file-name (git-file-name name version))
285 (sha256
286 (base32
287 "0z03h9k68qvnlyhpk0ndwp01bdx77vrjr6mybxq4ldilkkbksklk"))))
288 (build-system python-build-system)
289 (arguments
290 (list
291 #:phases
292 #~(modify-phases %standard-phases
293 ;; XXX: PEP 517 manual build copied from python-isort.
294 (replace 'build
295 (lambda _
296 ;; ZIP does not support timestamps before 1980.
297 (setenv "SOURCE_DATE_EPOCH" "315532800")
298 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
299 (replace 'install
300 (lambda _
301 (let ((whl (car (find-files "dist" "\\.whl$"))))
302 (invoke "pip" "--no-cache-dir" "--no-input"
303 "install" "--no-deps" "--prefix" #$output whl))))
304 (add-before 'check 'generate-protos-for-tests
305 (lambda _
306 ;; Generate Python sources.
307 (for-each (lambda (proto)
308 (invoke "protoc"
309 "--proto_path=proto"
310 "--experimental_allow_proto3_optional"
311 "--python_out=test/generated" proto))
312 (find-files "." "\\.proto$"))
313 ;; Generate GRPC protos.
314 (for-each (lambda (proto)
315 (invoke "python" "-m" "grpc_tools.protoc"
316 "--proto_path=proto"
317 "--experimental_allow_proto3_optional"
318 "--grpc_python_out=test/generated" proto))
319 (find-files "proto/testproto/grpc" "\\.proto$"))))
320 (replace 'check
321 (lambda* (#:key tests? #:allow-other-keys)
322 (setenv "PYTHONPATH" "test/generated")
323 (invoke "pytest" "-vv" "--ignore=test/generated" "test"))))))
324 (native-inputs
325 (list python-grpc-stubs
326 python-grpcio-tools
327 python-pypa-build
328 python-pytest
329 python-typing-extensions-next))
330 (propagated-inputs
331 (list protobuf
332 python-protobuf
333 python-types-protobuf))
334 (home-page "https://github.com/nipunn1313/mypy-protobuf")
335 (synopsis "Generate Mypy stub files from protobuf specifications")
336 (description "This Python package provide tools to generate Mypy stubs
337from protobuf specification files.")
338 (license license:asl2.0)))
339
5eb16865
MC
340(define-public python-nanopb
341 (package
342 (inherit nanopb)
343 (name "python-nanopb")
344 (build-system python-build-system)
345 (arguments
346 (list
347 #:tests? #f ;no Python-specific tests
348 #:phases
349 #~(modify-phases %standard-phases
350 (replace 'build
351 (lambda _
352 (copy-file "extra/poetry/pyproject.toml" "pyproject.toml")
353 (delete-file "build.py")
354 ;; Mimick extra/poetry/poetry_build.sh.
355 (mkdir "nanopb")
356 (copy-recursively "generator" "nanopb/generator")
357 (invoke "touch" "nanopb/__init__.py"
358 "nanopb/generator/__init__.py")
359 (invoke "make" "-C" "nanopb/generator/proto")
360 (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
361 (replace 'install
362 (lambda* (#:key outputs #:allow-other-keys)
363 (let ((whl (car (find-files "dist" "\\.whl$"))))
364 (invoke "pip" "--no-cache-dir" "--no-input"
365 "install" "--no-deps" "--prefix" #$output whl)))))))
366 (native-inputs (list poetry protobuf python-pypa-build))
367 (propagated-inputs (list python-protobuf))
368 (synopsis "Small code-size Protocol Buffers implementation in Python")))
369
8d63ddda
DP
370(define-public python-protobuf
371 (package
372 (name "python-protobuf")
5f8491ea 373 (version "3.20.1")
8d63ddda
DP
374 (source
375 (origin
376 (method url-fetch)
377 (uri (pypi-uri "protobuf" version))
378 (sha256
379 (base32
5f8491ea 380 "1ja2vpk9nklllmsirmil2s4l7ni9yfqvbvj47zz5xx17s1k1bhxd"))))
8d63ddda 381 (build-system python-build-system)
8d63ddda
DP
382 (home-page "https://github.com/google/protobuf")
383 (synopsis "Protocol buffers is a data interchange format")
384 (description
385 "Protocol buffers are a language-neutral, platform-neutral extensible
386mechanism for serializing structured data.")
7e685dee 387 (license license:bsd-3)))
8d63ddda 388
6f1784fa
LP
389(define-public python-pure-protobuf
390 (package
391 (name "python-pure-protobuf")
7a0491ad 392 (version "2.0.1")
6f1784fa
LP
393 (source
394 (origin
7a0491ad 395 ;; The PyPI tarball is broken: it has no tests.
6f1784fa
LP
396 (method git-fetch)
397 (uri (git-reference
398 (url "https://github.com/eigenein/protobuf")
399 (commit version)))
400 (file-name (git-file-name name version))
401 (sha256
7a0491ad 402 (base32 "15dp5pvazd0jx4wzzh79080ah7hkpd3axh40al9vhzs2hf3v90hx"))))
6f1784fa
LP
403 (build-system python-build-system)
404 (native-inputs
8394619b 405 (list python-flake8 python-pytest python-pytest-cov python-isort))
6f1784fa
LP
406 (arguments
407 `(#:phases
408 (modify-phases %standard-phases
6f1784fa
LP
409 (replace 'check
410 (lambda _
411 (invoke "pytest" "--cov-report" "term-missing" "--cov"
412 "pure_protobuf")
413 (invoke "flake8" "pure_protobuf" "tests"
414 "--ignore=F541")
6131b838 415 (invoke "isort" "-rc" "-c" "pure_protobuf" "tests"))))))
6f1784fa
LP
416 (home-page "https://pypi.org/project/pure-protobuf/")
417 (synopsis "Protobuf implementation using dataclasses")
418 (description
81fe5863 419 "@code{python-pure-protobuf} takes advantage of the standard
6f1784fa
LP
420dataclasses module to define message types. Protocol buffers are a
421language-neutral, platform-neutral extensible mechanism for serializing
422structured data.")
423 (license license:expat)))
424
7373eb83
MB
425;; For tensorflow.
426(define-public python-protobuf-3.6
dbcf2b61
MB
427 (package
428 (inherit python-protobuf)
1eeae57b 429 (name "python-protobuf")
7373eb83 430 (version (package-version protobuf-3.6) )
1eeae57b
RW
431 (source
432 (origin
433 (method url-fetch)
434 (uri (pypi-uri "protobuf" version))
435 (sha256
436 (base32
57be6ba0
CB
437 "04bqb12smlckzmgkj6vgmpbr3cby0n6726cmz33bqr7kn1vb728l"))))
438 (inputs
439 (cons python-six
440 (package-inputs python-protobuf)))))
1eeae57b 441
f8a6ae18
RW
442(define-public python-proto-plus
443 (package
444 (name "python-proto-plus")
445 (version "1.20.3")
446 (source
447 (origin
448 (method url-fetch)
449 (uri (pypi-uri "proto-plus" version))
450 (sha256
451 (base32 "1raad9qnmfva94nm33k40bcwrckgljbfky5pdwh4xhg6r5dj52zj"))))
452 (build-system python-build-system)
453 (propagated-inputs (list python-protobuf))
454 (home-page "https://github.com/googleapis/proto-plus-python.git")
455 (synopsis "Pythonic protocol buffers")
456 (description "This is a wrapper around protocol buffers. Protocol buffers
457is a specification format for APIs, such as those inside Google. This library
458provides protocol buffer message classes and objects that largely behave like
459native Python types.")
460 (license license:asl2.0)))
461
d78bfd27
CZ
462(define-public emacs-protobuf-mode
463 (package
464 (name "emacs-protobuf-mode")
465 (version (package-version protobuf))
466 (source (package-source protobuf))
467 (build-system emacs-build-system)
468 (arguments
469 `(#:phases
470 (modify-phases %standard-phases
6b83da96 471 (add-before 'expand-load-path 'change-working-directory
d78bfd27
CZ
472 (lambda _ (chdir "editors") #t)))))
473 (home-page "https://github.com/protocolbuffers/protobuf")
474 (synopsis "Protocol buffers major mode for Emacs")
475 (description
476 "This package provides an Emacs major mode for editing Protocol Buffer
477source files.")
478 (license license:bsd-3)))
d59c84f5
MC
479
480(define-public ruby-protobuf
481 (package
482 (name "ruby-protobuf")
483 (version "3.10.3")
484 (source (origin
485 (method git-fetch)
486 (uri (git-reference
b0e7b699 487 (url "https://github.com/ruby-protobuf/protobuf")
d59c84f5
MC
488 (commit (string-append "v" version))))
489 (file-name (git-file-name name version))
490 (sha256
491 (base32
492 "1yzz7jgpp6qip5d6qhzbkf5gqaydfk3z3c1ngccwzp6w6wa75g8a"))))
493 (build-system ruby-build-system)
494 (arguments
495 `(#:phases
496 (modify-phases %standard-phases
497 (add-after 'unpack 'do-not-use-bundler-for-tests
498 (lambda _
499 (substitute* "spec/spec_helper.rb"
500 (("Bundler\\.setup.*") ""))
501 #t))
502 (add-after 'unpack 'relax-version-requirements
503 (lambda _
504 (substitute* ((@@ (guix build ruby-build-system) first-gemspec))
505 (("'rake',.*")
506 "'rake'\n")
507 (("\"rubocop\",.*")
508 "'rubocop'\n")
509 (("\"parser\",.*")
510 "'parser'\n"))
511 #t))
512 (add-after 'unpack 'patch-protoc
513 (lambda* (#:key inputs #:allow-other-keys)
514 (let ((protoc (assoc-ref inputs "protobuf")))
515 (substitute* "lib/protobuf/tasks/compile.rake"
516 (("\"protoc\"")
517 (string-append "\"" protoc "/bin/protoc" "\"")))
518 #t)))
519 (add-after 'unpack 'skip-failing-test
520 ;; See: https://github.com/ruby-protobuf/protobuf/issues/419
521 (lambda _
522 (substitute* "spec/lib/protobuf/rpc/connectors/ping_spec.rb"
523 (("expect\\(::IO\\)\\.to receive\\(:select\\).*" all)
524 (string-append " pending\n" all)))
525 #t))
526 (add-after 'replace-git-ls-files 'replace-more-git-ls-files
527 (lambda _
528 (substitute* ((@@ (guix build ruby-build-system) first-gemspec))
529 (("`git ls-files -- \\{test,spec,features\\}/*`")
530 "`find test spec features -type f | sort`")
531 (("`git ls-files -- bin/*`")
532 "`find bin -type f | sort`"))
533 #t))
534 (replace 'check
535 (lambda _
536 (invoke "rspec"))))))
537 (native-inputs
8394619b
LC
538 (list ruby-benchmark-ips
539 ruby-ffi-rzmq
540 ruby-parser
541 ruby-pry-byebug
542 ruby-pry-stack-explorer
543 ruby-rake
544 ruby-rspec
545 ruby-rubocop
546 ruby-ruby-prof
547 ruby-simplecov
548 ruby-timecop
549 ruby-varint
550 ruby-yard))
d59c84f5 551 (inputs
8394619b 552 (list protobuf))
d59c84f5 553 (propagated-inputs
8394619b 554 (list ruby-activesupport ruby-middleware ruby-thor ruby-thread-safe))
d59c84f5
MC
555 (home-page "https://github.com/ruby-protobuf/protobuf")
556 (synopsis "Implementation of Google's Protocol Buffers in Ruby")
557 (description "Protobuf is an implementation of Google's Protocol Buffers
558in pure Ruby.")
559 (license license:expat)))
77f66f53
MC
560
561;;; This is a modified ruby-protobuf package used by ruby-cucumber-messages
562;;; until https://github.com/ruby-protobuf/protobuf/pull/411 and
563;;; https://github.com/ruby-protobuf/protobuf/pull/415 are merged upstream.
564(define-public ruby-protobuf-cucumber
565 (hidden-package
566 (package
567 (inherit ruby-protobuf)
568 (name "ruby-protobuf-cucumber")
569 (version "3.10.8")
570 (source
571 (origin
572 (method url-fetch)
573 (uri (rubygems-uri "protobuf-cucumber" version))
574 (sha256
575 (base32
576 "1rd6naabhpfb1i5dr6fp5mqwaawsx0mqm73h5ycwkgbm1n2si872")))))))