diff options
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r-- | gnu/packages/ruby.scm | 650 |
1 files changed, 641 insertions, 9 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 1490c783fa..e6d51b94e2 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -29,12 +29,13 @@ ;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org> ;;; Copyright © 2021 Giovanni Biscuolo <g@xelera.eu> ;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com> -;;; Copyright © 2022, 2023 Remco van 't Veer <remco@remworks.net> +;;; Copyright © 2022-2024 Remco van 't Veer <remco@remworks.net> ;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info> ;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream> ;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com> ;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2023, 2024 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -66,6 +67,7 @@ #:use-module (gnu packages rails) #:use-module (gnu packages readline) #:use-module (gnu packages autotools) + #:use-module (gnu packages graphviz) #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages java) #:use-module (gnu packages libffi) @@ -78,6 +80,7 @@ #:use-module (gnu packages networking) #:use-module (gnu packages node) #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) @@ -87,6 +90,7 @@ #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) #:use-module (gnu packages version-control) + #:use-module (gnu packages virtualization) #:use-module (gnu packages web-browsers) #:use-module (gnu packages serialization) #:use-module (guix packages) @@ -273,7 +277,7 @@ a focus on simplicity and productivity.") (define-public ruby-3.2 (package (inherit ruby-3.1) - (version "3.2.2") + (version "3.2.3") (source (origin (method url-fetch) @@ -282,7 +286,7 @@ a focus on simplicity and productivity.") "/ruby-" version ".tar.xz")) (sha256 (base32 - "08wy2ishjwbccfsrd0iwmyadbwjzrpyxnk74wcrf7163gq7jsdab")))) + "0ss7pb7f62sakq5ywpw3dl0v586cl61cd91qlm1i094c9fak3cng")))) (inputs (modify-inputs (package-inputs ruby-3.1) (prepend libyaml))))) @@ -736,6 +740,30 @@ includes the @code{Comparable} module for handling dates.") (home-page "https://github.com/ruby/date") (license license:bsd-2))) +(define-public ruby-time + (package + (name "ruby-time") + (version "0.3.0") + (source (origin + (method git-fetch) ; for tests + (uri (git-reference + (url "https://github.com/ruby/time") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0jd6df2lxd60wcxyaf37j8v3nnfn952d5xhg6aap9zlcdmkk4g2n")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-date)) + (native-inputs (list ruby-test-unit-ruby-core)) + (synopsis + "Extends the Time class with methods for parsing and conversion") + (description + "When this gem is @code{require}d, it extends the Time class with with +additional methods for parsing and converting Times.") + (home-page "https://github.com/ruby/time") + (license license:bsd-2))) + (define-public ruby-diff-lcs (package (name "ruby-diff-lcs") @@ -1209,6 +1237,65 @@ the @env{RSPEC_DEBUG} environment variable to @samp{true} then invoke the (home-page "https://github.com/ko1/rspec-debug") (license license:expat))) +(define-public ruby-specinfra + (package + (name "ruby-specinfra") + (version "2.88.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "specinfra" version)) + (sha256 + (base32 + "07lap3sknncffpq9jw1x1mn9c5xxd058wxs5vnyz1y0lawdjfnsf")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-net-scp ruby-net-ssh ruby-net-telnet + ruby-sfl)) + (arguments + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-dependencies + (lambda _ + (substitute* "specinfra.gemspec" + (("%q<net-telnet>.freeze, \\[.*\\]") + "%q<net-telnet>.freeze, [\">= 0\"]"))))))) + (synopsis "Common layer for serverspec and itamae") + (description "This Gem provides a common layer for serverspec and +itamae.") + (home-page "https://github.com/mizzy/specinfra") + (license license:expat))) + +(define-public ruby-serverspec + (package + (name "ruby-serverspec") + (version "2.42.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "serverspec" version)) + (sha256 + (base32 + "0kfaqrqynly8n3dy5qrbjvx4lx6mk9a5vynwb7xwqj8bixm0mab4")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-multi-json ruby-rspec ruby-rspec-its + ruby-specinfra)) + (arguments + (list #:test-target "spec")) + (synopsis + "RSpec tests for servers configured by Puppet, Chef, Itamae, etc") + (description + "With Serverspec, you can write RSpec tests for checking your servers are +configured correctly. + +Serverspec tests your servers’ actual state by executing command locally, via +SSH, via WinRM, via Docker API and so on. So you don’t need to install any +agent softwares on your servers and can use any configuration management +tools, Puppet, Ansible, CFEngine, Itamae and so on. + +But the true aim of Serverspec is to help refactoring infrastructure code.") + (home-page "https://serverspec.org/") + (license license:expat))) + ;; Bundler is yet another source of circular dependencies, so we must disable ;; its test suite as well. (define-public bundler @@ -3401,6 +3488,39 @@ identical to that of Hash.") (home-page "http://rbtree.rubyforge.org/") (license license:expat))) +(define-public ruby-rgl + (package + (name "ruby-rgl") + (version "0.6.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rgl" version)) + (sha256 + (base32 + "0dji1k9knrf8cxm5psd3pgd9i8f7cfq182jwjpi1pwxw15axf496")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + (substitute* "Gemfile" + ;; Caring about coverage is a not a packager's task but a + ;; developer's + ;;(("gem \"simplecov\"") "") + ;; CodeClimate is an online service, and is unnecessary for + ;; running the tests + (("gem \"codeclimate-test-reporter\", .*") "\n"))))))) + (native-inputs (list ruby-test-unit ruby-simplecov ruby-yard graphviz-minimal)) + (propagated-inputs (list ruby-pairing-heap ruby-rexml ruby-stream)) + (synopsis "Framework for graph data structures and algorithms") + (description "RGL is a framework for graph data structures and algorithms. +The design of the library is much influenced by the Boost Graph Library (BGL) +which is written in C++.") + (home-page "https://github.com/monora/rgl") + (license license:bsd-2))) + (define-public ruby-hkdf (package (name "ruby-hkdf") @@ -4426,6 +4546,87 @@ help tests uncover more bugs.") (home-page "https://github.com/jordansissel/ruby-flores") (license license:asl2.0))) +(define-public ruby-ipaddr + (package + (name "ruby-ipaddr") + (version "1.2.6") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/ipaddr") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0h3z8i1fa8s4gx48322fflhpkzghd4bmd9109hglsgdkic7b0dyp")))) + (build-system ruby-build-system) + (native-inputs (list ruby-test-unit-ruby-core)) + (synopsis "Manipulate IP addresses") + (description "This package provides a set of methods to manipulate an IP +address. Both IPv4 and IPv6 are supported.") + (home-page "https://github.com/ruby/ipaddr") + (license license:bsd-2))) + +(define-public ruby-fake-ftp + (package + (name "ruby-fake-ftp") + (version "0.3.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "fake_ftp" version)) + (sha256 + (base32 + "1zl9q9m4x7lz9890g0h1qqj7hcxnwzpjfnfbxadjblps7b5054q4")))) + (build-system ruby-build-system) + (native-inputs (list ruby-rspec ruby-rubocop ruby-simplecov)) + (arguments + '(#:test-target "spec")) + (synopsis "Fake FTP server for use with ruby tests") + (description "This package allows you to test FTP implementations in ruby. +It is a minimal single-client FTP server that can be bound to any arbitrary +port on localhost.") + (home-page "https://rubygems.org/gems/fake_ftp") + (license license:expat))) + +(define-public ruby-net-telnet + (package + (name "ruby-net-telnet") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "net-telnet" version)) + (sha256 + (base32 + "16nkxc79nqm7fd6w1fba4kb98vpgwnyfnlwxarpdcgywz300fc15")))) + (build-system ruby-build-system) + (synopsis "Telnet client functionality") + (description "This package provides telnet client functionality.") + (home-page "https://github.com/ruby/net-telnet") + (license license:bsd-2))) + +(define-public ruby-net-ftp + (package + (name "ruby-net-ftp") + (version "0.3.4") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/net-ftp") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "11b1sw7c4c7xrhn5li5m0wylw42hp52jp6pqacyb43hkw1m5zr36")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-net-protocol ruby-time)) + (synopsis "File Transfer Protocol client library") + (description "This class implements the File Transfer Protocol. If you +have used a command-line FTP program, and are familiar with the commands, you +will be able to use this class easily. Some extra features are included to +take advantage of Ruby's style and strengths.") + (home-page "https://github.com/ruby/net-ftp") + (license license:bsd-2))) + (define-public ruby-net-http-persistent (package (name "ruby-net-http-persistent") @@ -4801,6 +5002,25 @@ It allows writing tests, checking results and automated testing in Ruby.") (list #:tests? #f))) (native-inputs '())))) +(define-public ruby-test-unit-ruby-core + (package + (name "ruby-test-unit-ruby-core") + (version "1.0.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "test-unit-ruby-core" version)) + (sha256 + (base32 "1i7fa4hlj6xiqvjaikagwrmiyc21jzyswvd4grjbfqysziwsxygc")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f)) ; contains no tests + (synopsis "Additional test assertions for Ruby standard libraries") + (description "This package provides additional test assertions for Ruby +standard libraries.") + (home-page "https://github.com/ruby/test-unit-ruby-core") + (license license:ruby))) + (define-public ruby-mapping (package (name "ruby-mapping") @@ -5499,6 +5719,27 @@ client protocol.") (home-page "https://github.com/net-ssh/net-scp") (license license:expat))) +(define-public ruby-net-sftp + (package + (name "ruby-net-sftp") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "net-sftp" version)) + (sha256 + (base32 + "0r33aa2d61hv1psm0l0mm6ik3ycsnq8symv7h84kpyf2b7493fv5")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-net-ssh)) + (synopsis "Pure Ruby implementation of the SFTP client protocol") + (description + "@code{Net::SFTP} is a pure Ruby implementation of the SFTP +protocol (specifically, versions 1 through 6 of the SFTP protocol). Note that +this is the “Secure File Transfer Protocol”, typically run over an SSH +connection, and has nothing to do with the FTP protocol.") + (home-page "https://github.com/net-ssh/net-sftp") + (license license:expat))) + (define-public ruby-minima (package (name "ruby-minima") @@ -9390,6 +9631,186 @@ follows Ruby conventions and requires little knowledge of REST.") (home-page "https://github.com/octokit/octokit.rb") (license license:expat))) +(define-public ruby-hashicorp-checkpoint + (package + (name "ruby-hashicorp-checkpoint") + (version "0.1.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "hashicorp-checkpoint" version)) + (sha256 + (base32 + "1z6mwzvd7p2wqhmk07dwrhvm0ncgqm7pxn0pr2k025rwsspp9bsd")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f)) ;; no need to test, useless outside HashiCorp anyway + (synopsis "Internal HashiCorp service to check version information") + (description "This package is probably useless outside of internal +HashiCorp use. It is open source for disclosure and because HashiCorp's open +source projects must be able to link to it.") + (home-page "https://github.com/hashicorp/ruby-checkpoint") + (license license:mpl2.0))) + +(define-public ruby-vagrant-cloud + (package + (name "ruby-vagrant-cloud") + (version "3.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hashicorp/vagrant_cloud") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bnjd8b86lrgj5ar1l7pg5if95bv0sxa75mz7x2ikqyz6q8rmjb3")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec")) + (native-inputs (list ruby-rspec ruby-webmock)) + (propagated-inputs (list ruby-excon ruby-log4r ruby-rexml)) + (synopsis "Vagrant Cloud API library") + (description "This library provides the functionality to create, modify, +and delete boxes, versions, and providers on HashiCorp's Vagrant Cloud.") + (home-page "https://github.com/hashicorp/vagrant_cloud") + (license license:asl2.0))) + +(define-public ruby-libvirt + (package + (name "ruby-libvirt") + (version "0.8.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "ruby-libvirt" version)) + (sha256 + (base32 + "0v6vj5vs9v01zr00bflqpfczhwcyc6jdf8k2dqn42lq6d87si77d")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f)) ; tests require access to libvirt socket + (native-inputs (list pkg-config)) + (inputs (list libvirt)) + (synopsis "Ruby bindings for libvirt") + (description "This package provides Ruby language binding for libvirt's +native C API.") + (home-page "https://ruby.libvirt.org/") + (license license:lgpl2.1+))) + +(define-public ruby-fog-core + (package + (name "ruby-fog-core") + (version "2.4.0") + (source (origin + (method git-fetch) ; for tests + (uri (git-reference + (url "https://github.com/fog/fog-core") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "184vpi81az7raz98652m7d98ikabdl9di37dgal0adr76q57j03c")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'set-home + (lambda _ + (setenv "HOME" "/tmp")))))) + (native-inputs (list ruby-minitest-stub-const)) + (propagated-inputs (list ruby-builder ruby-excon ruby-formatador + ruby-mime-types)) + (synopsis "Shared classes and tests for fog providers and services") + (description "@code{fog} is a Ruby cloud services library. This package +provides shared classes and tests for @code{fog} providers and services.") + (home-page "https://github.com/fog/fog-core") + (license license:expat))) + +(define-public ruby-fog-json + (package + (name "ruby-fog-json") + (version "1.2.0") + (source (origin + (method git-fetch) ; for tests + (uri (git-reference + (url "https://github.com/fog/fog-json") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0f4hbmhy22b1gbkzd3pnj5xvljp6bl7inc2y4fxh29nrmcn4pgb0")))) + (build-system ruby-build-system) + (native-inputs (list ruby-minitest)) + (propagated-inputs (list ruby-fog-core ruby-multi-json)) + (synopsis "JSON parsing tools used by @code{fog} providers") + (description "This package containse the JSON parsing tools shared between +a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud +services library.") + (home-page "https://github.com/fog/fog-json") + (license license:expat))) + +(define-public ruby-fog-xml + (package + (name "ruby-fog-xml") + (version "0.1.4") + (source (origin + (method git-fetch) ; for tests + (uri (git-reference + (url "https://github.com/fog/fog-xml") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0d0n201qzcjxis5wb26bi3s7yfhlmqkwsl6lb9w4szq3b8l1xbwn")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + ;; Run tests via bundler so rake picks up the minitest gem from + ;; native-inputs, not the one installed otherwise. This is required + ;; since turn@0.9.7 needs minitest@4 and can not be upgraded to + ;; minitest@5. + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "bundle" "exec" "rake"))))))) + (native-inputs (list ruby-minitest-4 ruby-turn ruby-pry ruby-coveralls)) + (propagated-inputs (list ruby-fog-core ruby-nokogiri)) + (synopsis "XML parsing tools used by @code{fog} providers") + (description "This package containse the XML parsing tools shared between +a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud +services library.") + (home-page "https://github.com/fog/fog-xml") + (license license:expat))) + +(define-public ruby-fog-libvirt + (package + (name "ruby-fog-libvirt") + (version "0.12.0") + (source (origin + (method git-fetch) ; for tests + (uri (git-reference + (url "https://github.com/fog/fog-libvirt") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0b1qafb0l24anmr8fviwhp9vj14g0fic0mkg9n1i11h68zhqkj2v")))) + (build-system ruby-build-system) + (native-inputs (list ruby-minitest-stub-const ruby-mocha ruby-net-ssh + ruby-netrc ruby-octokit ruby-pry ruby-rubocop + ruby-shindo ruby-simplecov ruby-yard )) + (propagated-inputs (list ruby-fog-core ruby-fog-json ruby-fog-xml + ruby-json ruby-libvirt)) + (synopsis "Ruby libvirt provider, either standalone or as a module for +@code{fog}") + (description "This library can be used as a module for @code{fog} or as +standalone libvirt provider. @code{fog} is a Ruby cloud services library.") + (home-page "https://github.com/fog/fog-libvirt") + (license license:expat))) + (define-public ruby-pry-byebug (package (name "ruby-pry-byebug") @@ -11929,6 +12350,32 @@ dependency, @code{pg}.") (home-page "https://github.com/QueueClassic/queue_classic") (license license:expat))) +(define-public ruby-pairing-heap + (package + (name "ruby-pairing-heap") + (version "3.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pairing_heap" version)) + (sha256 + (base32 + "059kqpw53cancnp0bp7y1s74y1955riw33w3lqfbnms4b4mdh5zj")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "Rakefile" + (("require \"standard/rake\"") "") + ((":\"standard:fix\",") ""))))))) + (synopsis "Priority queue in pure Ruby") + (description "This package provides a performant priority queue in pure +ruby with support for changing priority using pairing heap data structure") + (home-page "https://github.com/mhib/pairing_heap") + (license license:expat))) + (define-public ruby-ae (package (name "ruby-ae") @@ -12801,24 +13248,49 @@ manifest file.") (home-page "https://github.com/mvz/rake-manifest") (license license:expat))) +(define-public ruby-sfl + (package + (name "ruby-sfl") + (version "2.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sfl" version)) + (sha256 + (base32 + "1qm4hvhq9pszi9zs1cl9qgwx1n4wxq0af0hq9sbf6qihqd8rwwwr")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ;; some tests fail, gem is a dummy for ruby >= 1.9 anyway + #:test-target "spec")) + (synopsis "Spawn for Ruby 1.8") + (description "This pure ruby library provides @code{spawn()} which is +almost perfectly compatible with ruby 1.9's.") + (home-page "https://github.com/ujihisa/spawn-for-legacy") + (license license:bsd-2))) + (define-public ruby-childprocess (package (name "ruby-childprocess") - (version "3.0.0") + (version "4.1.0") (source (origin (method url-fetch) (uri (rubygems-uri "childprocess" version)) (sha256 (base32 - "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5")))) + "1lvcp8bsd35g57f7wz4jigcw2sryzzwrpcgjwwf3chmjrjcww5in")))) (build-system ruby-build-system) (arguments - `(#:tests? #f)) + `(#:tests? #f ;; one failing test, even with fixes below + #:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "spec/spec_helper.rb" + (("#!/bin/sh\\\\n") (string-append "#!" (which "sh") "\\n")))))))) (native-inputs - (list bundler ruby-rspec)) - (propagated-inputs - (list ruby-ffi)) + (list ruby-coveralls ruby-rspec)) (synopsis "Control external programs running in the background, in Ruby") (description "@code{childprocess} provides a gem to control external programs running in the background, in Ruby.") @@ -13793,6 +14265,54 @@ GFM dialect to HTML.") parser for writing http servers, clients and proxies.") (license license:expat))) +(define-public ruby-excon + (package + (name "ruby-excon") + (version "0.109.0") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/excon/excon") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "199niqbpzj70k3n6ybg4vbcw3qm76kwic4nl9747l1n0v49aaj24")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ;; some tests require DNS + #:phases + #~(modify-phases %standard-phases + (replace 'replace-git-ls-files + (lambda _ + (substitute* "excon.gemspec" + (("`git ls-files -- data/. lib/.`") + "`find data lib -type f`")))) + (add-before 'check 'disable-server-spec-checks + (lambda _ ;; TODO: Remove this if ruby-unicorn is available. + ;; Some of the tests in this file require ruby-unicorn, which is + ;; not yet packaged for guix and would pull in a lot of other + ;; dependencies. + (delete-file "spec/excon/test/server_spec.rb")))))) + (native-inputs + (list + ruby-activesupport + ruby-eventmachine + ruby-json + ruby-open4 + ruby-puma + ruby-rspec + ruby-shindo + ruby-sinatra + ruby-webrick)) + (synopsis "Usable, fast, simple Ruby HTTP 1.1") + (description "Excon was designed to be simple, fast and performant. It +works great as a general HTTP(s) client and is particularly well suited to +usage in API clients.") + (home-page "https://github.com/excon/excon") + (license license:expat))) + (define-public ruby-em-websocket (package (name "ruby-em-websocket") @@ -14740,6 +15260,49 @@ can be used to build formatters, linters, language servers, and more.") (home-page "https://github.com/ruby-syntax-tree/syntax_tree") (license license:expat))) +(define-public ruby-stringio + (package + (name "ruby-stringio") + (version "3.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ruby/stringio") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jgi2w5y0z0x9mfapr2pdlag4wvn03fpf5kbai8bscyh8nn79yka")))) + (build-system ruby-build-system) + (native-inputs (list ruby-rake-compiler ruby-test-unit-ruby-core)) + (synopsis "Pseudo `IO` class from and to `String`") + (description "Pseudo `IO` class from and to `String`.") + (home-page "https://github.com/ruby/stringio") + (license license:bsd-2))) + +(define-public ruby-stream + (package + (name "ruby-stream") + (version "0.5.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "stream" version)) + (sha256 + (base32 + "016m9v81vpj14d8g5ins91zc4pzl7vf5f1gxl7jhfsfy601k7cv2")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'remove-version-constraints + (lambda _ + (delete-file "Gemfile.lock")))))) + (native-inputs (list bundler ruby-stringio ruby-webrick ruby-yard)) + (synopsis "Interface for external iterators") + (description "Module Stream defines an interface for external iterators.") + (home-page "https://github.com/monora/stream") + (license license:bsd-2))) + (define sorbet-version "0.5.10610.20230106174520-1fa668010") (define sorbet-monorepo @@ -17361,6 +17924,75 @@ has not yet been packaged for Guix.") (license license:bsd-2) (properties `((upstream-name . "anystyle-cli"))))) +(define-public ruby-google-protobuf + (package + (name "ruby-google-protobuf") + (version "3.25.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "google-protobuf" version)) + (sha256 + (base32 + "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ;; has no tests + (native-inputs (list ruby-rake)) + (synopsis "Protocol Buffers are Google's data interchange format") + (description "This library contains the Ruby extension that implements +Protocol Buffers functionality in Ruby. + +The Ruby extension makes use of generated Ruby code that defines message and +enum types in a Ruby DSL. You may write definitions in this DSL directly, but +we recommend using protoc's Ruby generation support with @code{.proto} files. +The build process in this directory only installs the extension; you need to +install @code{protoc} (in package ruby-grpc-tools) as well to have Ruby code +generation functionality.") + (home-page "https://protobuf.dev") + (license license:bsd-3))) + +(define-public ruby-googleapis-common-protos-types + (package + (name "ruby-googleapis-common-protos-types") + (version "1.13.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "googleapis-common-protos-types" version)) + (sha256 + (base32 + "1zrxnv9s2q39f2nh32x7nbfi8lpwzmmn3ji4adglg8dlfr1xrz16")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ;; has no tests + (propagated-inputs (list ruby-google-protobuf)) + (synopsis "Common protocol buffer types used by Google APIs") + (description "Common protocol buffer types used by Google APIs") + (home-page "https://github.com/googleapis/common-protos-ruby") + (license license:asl2.0))) + +(define-public ruby-grpc + (package + (name "ruby-grpc") + (version "1.62.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "grpc" version)) + (sha256 + (base32 + "03z8yq0z228g6xxxq6s2mmslpv6psrdmi30dpmhysr4px16d897n")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ;; has no tests + ;; TODO remove third-party sources (zlib, upb, utf8-range, re2, c-ares, + ;; boringssl-with-bazel, address_sorting, abseil-cpp), see Makefile + (propagated-inputs (list ruby-google-protobuf + ruby-googleapis-common-protos-types)) + (synopsis "GRPC system in Ruby") + (description "GRPC is a high performance, open-source universal RPC +framework. This package provides a ruby interface for it.") + (home-page "https://github.com/grpc/grpc/tree/master/src/ruby") + (license license:asl2.0))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar |