diff options
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r-- | gnu/packages/ruby.scm | 2655 |
1 files changed, 1673 insertions, 982 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index f28ad97e11..b96daad0ff 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -261,7 +261,7 @@ a focus on simplicity and productivity.") (modify-inputs (package-inputs ruby-3.1) (prepend libyaml))))) -(define-public ruby ruby-2.7) +(define-public ruby ruby-3.1) (define-public mruby (package @@ -321,27 +321,27 @@ matching. mruby can be linked and embedded within your application.") (define-public ruby-commander (package (name "ruby-commander") - (version "4.4.7") + (version "4.6.0") (source (origin (method url-fetch) (uri (rubygems-uri "commander" version)) (sha256 (base32 - "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg")))) + "1n8k547hqq9hvbyqbx2qi08g0bky20bbjca1df8cqq5frhzxq7bx")))) (build-system ruby-build-system) (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - ;; Don't run or require rubocop, the code linting tool, as this is a - ;; bit unnecessary. - (add-after 'unpack 'dont-run-rubocop - (lambda _ - (substitute* "Rakefile" - ((".*rubocop.*") "") - ((".*RuboCop.*") "")) - #t))))) + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + ;; Don't run or require rubocop, the code linting tool, as this is a + ;; bit unnecessary. + (add-after 'unpack 'dont-run-rubocop + (lambda _ + (substitute* "Rakefile" + ((".*rubocop.*") "") + ((".*RuboCop.*") ""))))))) (propagated-inputs (list ruby-highline)) (native-inputs @@ -384,32 +384,18 @@ a menu system for providing multiple options to the user.") (define-public ruby-hoe (package (name "ruby-hoe") - (version "3.21.0") + (version "4.0.4") (source (origin (method url-fetch) (uri (rubygems-uri "hoe" version)) (sha256 (base32 - "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4")))) + "0r2hy7mq9jd9hsbvskd9sxfbagc92adnn7abzxbda05sscbf46hn")))) (build-system ruby-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - ;; One of the tests fails if the SOURCE_DATE_EPOCH environment - ;; variable is set, so unset it for the duration of the tests. - ;; - ;; TestHoe#test_possibly_better - ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]: - ;; Expected: 2019-11-12 00:00:00 UTC - ;; Actual: 1970-01-01 00:00:00 UTC - (add-before 'check 'unset-SOURCE-DATE-EPOCH - (lambda _ - (unsetenv "SOURCE_DATE_EPOCH") - #t)) - (add-after 'check 'set-SOURCE-DATE-EPOCH-again - (lambda _ - (setenv "SOURCE_DATE_EPOCH" "1") - #t))))) + (list + ;; Circular dependency with minitest + #:tests? #f)) (synopsis "Ruby project management helper") (description "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage, @@ -420,6 +406,17 @@ announcement.") (home-page "https://www.zenspider.com/projects/hoe.html") (license license:expat))) +(define-public ruby-hoe-3 + (package + (inherit ruby-hoe) + (version "3.26.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "hoe" version)) + (sha256 + (base32 + "02vmphnfzna1dbb1l5nczcvlvvsg4flr26bdhmvdyf447bpswa63")))))) + (define-public ruby-rake-compiler (package (name "ruby-rake-compiler") @@ -493,13 +490,13 @@ hosts by wrapping the @file{rsync} binary.") (define-public ruby-i18n (package (name "ruby-i18n") - (version "1.7.0") + (version "1.13.0") (source (origin (method url-fetch) (uri (rubygems-uri "i18n" version)) (sha256 (base32 - "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl")))) + "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; no tests @@ -562,6 +559,17 @@ Eval Print Loop).") (home-page "https://github.com/ruby/irb") (license license:bsd-2))) +(define-public ruby-irb-1.1.1 + (package + (inherit ruby-irb) + (version "1.1.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "irb" version)) + (sha256 + (base32 + "0h605w798s2bg9wg681ynvvzgdz1yy69gh387bl0khw9ll7wkn8v")))))) + (define-public ruby-iruby (package (name "ruby-iruby") @@ -669,6 +677,15 @@ groups.") (sha256 (base32 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc")))) + (arguments + (cons* + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "lib/rspec/core/ruby_project.rb" + (("File\\.exists\\?") "File.exist?"))))) + (package-arguments ruby-rspec-core))) (propagated-inputs `()))) (define-public ruby-date @@ -767,6 +784,27 @@ re-sourced, but they will be rendered in a single-line format.") (home-page "https://github.com/rspec-given/sorcerer") (license license:expat))) +(define-public ruby-sorted-set + (package + (name "ruby-sorted-set") + (version "1.0.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sorted_set" version)) + (sha256 + (base32 + "0brpwv68d7m9qbf5js4bg8bmg4v7h4ghz312jv9cnnccdvp8nasg")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-rbtree ruby-set)) + (synopsis + "Ruby Set variant whose elements are sorted in ascending order") + (description + "This package implements a variant of Set whose elements are sorted in +ascending order") + (home-page "https://github.com/knu/sorted_set") + (license license:bsd-2))) + (define-public ruby-given-core (package (name "ruby-given-core") @@ -933,7 +971,7 @@ support for stubbing and mocking.") (define-public ruby-rspec-block-is-expected (package (name "ruby-rspec-block-is-expected") - (version "1.0.2") + (version "1.0.5") (source (origin (method git-fetch) ;for tests (uri (git-reference @@ -942,7 +980,7 @@ support for stubbing and mocking.") (file-name (git-file-name name version)) (sha256 (base32 - "1w8mj00k8am24yw7lbhg616m111p7h7bbfxaw7np4i7wnlwzm8fk")))) + "1zi5z12lkw3fiwgr7g61845wj73asr2vzw4zsjv45klnnfspwass")))) (build-system ruby-build-system) (arguments (list #:phases #~(modify-phases %standard-phases @@ -953,7 +991,12 @@ support for stubbing and mocking.") (("RuboCop::RakeTask.new") "")) ;; Contains extraneous requirements not actually ;; needed for the test suite. - (delete-file "Gemfile")))))) + (delete-file "Gemfile"))) + (add-before 'build 'drop-signing-key-requirement + (lambda _ + (substitute* "rspec-block_is_expected.gemspec" + (("spec.signing_key =.*") + "spec.signing_key = nil"))))))) (native-inputs (list ruby-rspec-pending-for ruby-rspec-expectations)) (propagated-inputs (list ruby-rspec-core)) (synopsis "Simplify testing of blocks in RSpec") @@ -1173,18 +1216,28 @@ specified in a \"Gemfile\", as well as their dependencies.") "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'do-not-use-rvm - (lambda _ - (substitute* "rakelib/tags.rake" - (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n")) - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "rakelib/tags.rake" + (("File\\.exists\\?") "File.exist?")) + + ;; TODO This test is broken + ;; https://github.com/tenderlove/builder/issues/13 + (substitute* "test/test_blankslate.rb" + (("test_late_included_module_in_kernel_is_ok") + "test_late_included_module_in_kernel_is_ok + skip(\"test expected to fail\") +")) + (substitute* "rakelib/tags.rake" + (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))))))) (synopsis "Ruby library to create structured data") (description "Builder provides a number of builder objects that make it easy to create structured data. Currently the following builder objects are supported: XML Markup and XML Events.") - (home-page "https://github.com/jimweirich/builder") + (home-page "https://github.com/tenderlove/builder") (license license:expat))) (define-public ruby-bump @@ -1212,22 +1265,22 @@ next patch version for example.") (define-public ruby-rjb (package (name "ruby-rjb") - (version "1.5.5") + (version "1.6.7") (source (origin (method url-fetch) (uri (rubygems-uri "rjb" version)) (sha256 (base32 - "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca")))) + "0ck802bm8cklhmqsgzhsa0y8lg80qy52dp3m8rlld3zc5gv1rsb9")))) (build-system ruby-build-system) (arguments - `(#:tests? #f ; no rakefile - #:phases - (modify-phases %standard-phases - (add-before 'build 'set-java-home - (lambda* (#:key inputs #:allow-other-keys) - (setenv "JAVA_HOME" (assoc-ref inputs "jdk")) - #t))))) + (list + #:tests? #f ; no rakefile + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'set-java-home + (lambda* (#:key inputs #:allow-other-keys) + (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))))))) (native-inputs `(("jdk" ,icedtea "jdk"))) (synopsis "Ruby-to-Java bridge using the Java Native Interface") @@ -1295,9 +1348,27 @@ script.") (base32 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19")))) (build-system ruby-build-system) - ;; FIXME: There are no unit tests. The tests are demonstrations of the - ;; "saikuro" tool. - (arguments `(#:tests? #f)) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-module-resolution + (lambda _ + (substitute* "lib/saikuro.rb" + ;; irb 1.2.0 or later doesn't have RubyToken + (("require 'irb/ruby-lex'") + "require 'rubygems'\ngem 'irb', '=1.1.1'\nrequire 'irb/ruby-lex'")))) + (delete 'check) + (add-after 'install 'check + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (saikuro (string-append out "/bin/saikuro"))) + (setenv "GEM_PATH" (string-append + (getenv "GEM_PATH") ":" + #$output "/lib/ruby/vendor_ruby")) + (invoke saikuro "--cyclo" "--token" "--input_directory" "tests"))))))) + (propagated-inputs (list ruby-irb-1.1.1 + ruby-e2mmap)) ;required by rubygems (synopsis "Cyclomatic complexity analyzer") (description "Saikuro is a Ruby cyclomatic complexity analyzer. When given Ruby source code Saikuro will generate a report listing the cyclomatic @@ -1313,29 +1384,30 @@ line of code.") (define-public ruby-awesome-print (package (name "ruby-awesome-print") - (version "1.8.0") + (version "1.9.2") (source (origin (method url-fetch) (uri (rubygems-uri "awesome_print" version)) (sha256 (base32 - "14arh1ixfsd6j5md0agyzvksm5svfkvchb90fp32nn7y3avcmc2h")))) + "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - ;; Remove failing test. - (for-each delete-file - '("spec/ext/nokogiri_spec.rb" - "spec/colors_spec.rb" - "spec/formats_spec.rb" - "spec/methods_spec.rb" - "spec/misc_spec.rb" - "spec/objects_spec.rb")) - (invoke "rspec" "-c" "spec")))))) + (list + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda _ + ;; Remove failing test. + (for-each delete-file + '("spec/ext/nokogiri_spec.rb" + "spec/colors_spec.rb" + "spec/formats_spec.rb" + "spec/methods_spec.rb" + "spec/misc_spec.rb" + "spec/objects_spec.rb")) + (invoke "rspec" "-c" "spec")))))) (native-inputs (list ruby-nokogiri ruby-rspec ruby-simplecov)) (synopsis "Pretty print Ruby objects to visualize their structure") @@ -1525,6 +1597,16 @@ converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.") (home-page "https://asciidoctor.org") (license license:expat))) +(define-public ruby-asciidoctor/minimal + (hidden-package + (package + (inherit ruby-asciidoctor) + (arguments + (ensure-keyword-arguments + (package-arguments ruby-asciidoctor) + (list #:tests? #f))) + (native-inputs '())))) + (define-public ruby-asciidoctor-multipage (package (name "ruby-asciidoctor-multipage") @@ -1875,6 +1957,37 @@ enforcing & linting tool.") ruby-rubocop-ast ruby-rubocop-capybara)))) +(define-public ruby-rubocop-packaging + (package + (name "ruby-rubocop-packaging") + (version "0.5.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/utkarsh2102/rubocop-packaging") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "08jsfp42z0aj32002z2hz8vkmza0jvnrqk9rk2v0xb8qdxkgbx3l")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec")) + (propagated-inputs + (list ruby-rubocop)) + (native-inputs + (list ruby-rspec + ruby-yard + ruby-bump)) + (synopsis + "Collection of RuboCop checks for downstream compatibility issues") + (description + "This package provides a collection of RuboCop cops to check for +downstream compatibility issues in the Ruby code.") + (home-page "https://github.com/utkarsh2102/rubocop-packaging") + (license license:expat))) + (define-public ruby-rubocop-performance (package (name "ruby-rubocop-performance") @@ -2079,7 +2192,7 @@ to save time in the following ways: (define-public ruby-chunky-png (package (name "ruby-chunky-png") - (version "1.3.14") + (version "1.4.0") (source (origin (method git-fetch) @@ -2088,17 +2201,17 @@ to save time in the following ways: (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1m7y11ix38h5a2pj5v81qdmvqh980ql9hp62hk2dxwkwsa4nh22h")))) + (base32 "05qwj72dy2fcy0n2jnf3bfriybfj36m7s6pv9xash6295dbcp901")))) (build-system ruby-build-system) (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'disable-bundler - (lambda _ - (substitute* (find-files "." "\\.rb$") - (("require.*bundler/setup.*") "")) - #t))))) + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-bundler + (lambda _ + (substitute* (find-files "." "\\.rb$") + (("require.*bundler/setup.*") ""))))))) (native-inputs (list bundler ruby-rspec ruby-standard ruby-yard)) (synopsis "Ruby library to handle PNG images") @@ -2136,14 +2249,14 @@ or a background processing library.") (define-public ruby-text-hyphen (package (name "ruby-text-hyphen") - (version "1.4.1") + (version "1.5.0") (source (origin (method url-fetch) (uri (rubygems-uri "text-hyphen" version)) (sha256 (base32 - "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1")))) + "01js0wxz84cc5hzxgqbcqnsa0y6crhdi6plmgkzyfm55p0rlajn4")))) (build-system ruby-build-system) (native-inputs (list ruby-hoe)) @@ -2401,27 +2514,27 @@ features: (define-public ruby-contracts (package (name "ruby-contracts") - (version "0.16.0") + (version "0.17") (source (origin (method url-fetch) (uri (rubygems-uri "contracts" version)) (sha256 (base32 - "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a")))) + "0gfybfsb6kqxvvcrv1q7bfjaxmq73pf3vqy4bbzarkbajil05ii5")))) (build-system ruby-build-system) (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - ;; Don't run or require rubocop, the code linting tool, as this is a - ;; bit unnecessary. - (add-after 'unpack 'dont-run-rubocop - (lambda _ - (substitute* "Rakefile" - ((".*rubocop.*") "") - ((".*RuboCop.*") "")) - #t))))) + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + ;; Don't run or require rubocop, the code linting tool, as this is a + ;; bit unnecessary. + (add-after 'unpack 'dont-run-rubocop + (lambda _ + (substitute* "Rakefile" + ((".*rubocop.*") "") + ((".*RuboCop.*") ""))))))) (native-inputs (list ruby-rspec)) (synopsis "Method contracts for Ruby") @@ -2999,14 +3112,14 @@ the GNOME Libxml2 XML toolkit.") (define-public ruby-lino (package (name "ruby-lino") - (version "1.1.0") + (version "3.1.0") (source (origin (method url-fetch) (uri (rubygems-uri "lino" version)) (sha256 (base32 - "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3")))) + "1zq9dza040fgjvr9imh7z2lgxrcyc5ac100rqimsnsf9bpfz3fsm")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; No included tests @@ -3020,6 +3133,47 @@ error streams.") (home-page "https://github.com/tobyclemson/lino") (license license:expat))) +(define-public ruby-x25519 + (package + (name "ruby-x25519") + (version "1.0.10") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/RubyCrypto/x25519") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1g0311ly32f6hfn4q5fvkbjbl2bhv1l9fx6s0kglxfsrwq51926y")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + (substitute* "Gemfile" + ((".*rubocop.*") + "")) + (substitute* "Rakefile" + (("require \"rubocop/rake_task\"") + "") + (("RuboCop::RakeTask.new") + "")))) + (add-before 'build 'compile + (lambda _ + (invoke "rake" "compile")))))) + (native-inputs (list ruby-rake-compiler ruby-rspec)) + (synopsis "Cryptography library for Ruby providing the X25519 +Diffie-Hellman function") + (description + "The x25519 gem is an efficient public key cryptography library for +Ruby providing key exchange/agreement via the X25519 (as known as +Curve25519) Elliptic Curve Diffie-Hellman function as described in +@url{https://www.ietf.org/rfc/rfc7748.txt, RFC 7748}.") + (home-page "https://github.com/RubyCrypto/x25519") + (license license:bsd-3))) + (define-public ruby-xml-simple (package (name "ruby-xml-simple") @@ -3066,7 +3220,7 @@ generating XPath expressions.") (define-public ruby-thor (package (name "ruby-thor") - (version "1.2.1") + (version "1.2.2") (source (origin ;; Pull from git because the gem has no tests. (method git-fetch) @@ -3076,7 +3230,7 @@ generating XPath expressions.") (file-name (git-file-name name version)) (sha256 (base32 - "1vjm628ks5kw8q6dskh38dqyz2j8c3n694wsqkj4jb4jrn6rkfzx")))) + "1k3z2mlhaig5ycapjxwybb19z7ca0q1876i6csfmv2j0hf1hnc0z")))) (build-system ruby-build-system) (arguments (list @@ -3136,57 +3290,89 @@ same log file.") (define-public ruby-rbnacl (package (name "ruby-rbnacl") - (version "6.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rbnacl" version)) - (sha256 - (base32 - "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn")))) + (version "7.1.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rbnacl" version)) + (sha256 + (base32 + "0y8yzianlkc9w6sbqy8iy8l0yym0y6x7p5rjflkfixq76fqmhvzk")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - ;; Coveralls relates to a network service, and Rubocop to code - ;; linting and both are unnecessary to run the tests - (substitute* "Gemfile" - ((".*rubocop.*") "\n") - ((".*guard-rspec.*") "\n") - ((".*coveralls.*") "\n")) - (substitute* "spec/spec_helper.rb" - (("require \"coveralls\"") "") - (("Coveralls.wear!") "")) - #t)) - (add-after 'unpack 'use-libsodium-from-store - (lambda* (#:key inputs #:allow-other-keys) - (substitute* '("lib/rbnacl/init.rb" - "lib/rbnacl/sodium.rb") - (("ffi_lib \\[.+\\]") - (string-append "ffi_lib [\"" - (assoc-ref inputs "libsodium") "/lib/libsodium.so" - "\"]"))) - #t)) - ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec")) - #t))))) - (propagated-inputs - (list ruby-ffi)) - (inputs - (list libsodium)) - (native-inputs - (list bundler ruby-rspec)) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + ;; Coveralls relates to a network service, and Rubocop to code + ;; linting and both are unnecessary to run the tests + (substitute* "Gemfile" + ((".*rubocop.*") + "\n") + ((".*guard-rspec.*") + "\n") + ((".*coveralls.*") + "\n")) + (substitute* "spec/spec_helper.rb" + (("require \"coveralls\"") + "") + (("Coveralls.wear!") + "")))) + (add-after 'unpack 'use-libsodium-from-store + (lambda* (#:key inputs #:allow-other-keys) + (substitute* '("lib/rbnacl/init.rb" + "lib/rbnacl/sodium.rb") + (("ffi_lib \\[.+\\]") + (string-append "ffi_lib [\"" + (assoc-ref inputs "libsodium") + "/lib/libsodium.so" "\"]"))))) + ;; Run Rspec directly to avoid the Rubocop dependency in the + ;; Rakefile + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (propagated-inputs (list ruby-ffi)) + (inputs (list libsodium)) + (native-inputs (list bundler ruby-rspec)) (synopsis "Ruby FFI binding to libsodium") (description "This package provides Ruby FFI bindings to the Networking and Cryptography (NaCl) library, also known as libsodium. This provides a high-level toolkit for building cryptographic systems and protocols.") - (home-page "https://github.com/crypto-rb/rbnacl") + (home-page "https://github.com/RubyCrypto/rbnacl") + (license license:expat))) + +(define-public ruby-rbtree + (package + (name "ruby-rbtree") + (version "0.4.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rbtree" version)) + (sha256 + (base32 + "1z0h1x7fpkzxamnvbw1nry64qd6n0nqkwprfair29z94kd3a9vhl")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'extconf + (lambda _ + (invoke "ruby" "extconf.rb") + (invoke "make" "install" (string-append "prefix=" #$output)))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "ruby" "-I." "test.rb"))))))) + (synopsis "Ruby implementation of a sorted associative collection") + (description + "This package provides a RBTree is a sorted associative collection that +is implemented with a Red-Black Tree. It maps keys to values like a Hash, but +maintains its elements in ascending key order. The interface is the almost +identical to that of Hash.") + (home-page "http://rbtree.rubyforge.org/") (license license:expat))) (define-public ruby-hkdf @@ -3240,29 +3426,35 @@ and inspect the environment.") (define-public ruby-ptools (package (name "ruby-ptools") - (version "1.3.5") + (version "1.5.0") (source (origin (method url-fetch) (uri (rubygems-uri "ptools" version)) (sha256 (base32 - "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j")))) + "0damllbshkxycrwjv80sz78h76dw7r9z54d17mb5cbha1daq9q2d")))) (build-system ruby-build-system) (arguments - '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-/bin/ls - (lambda _ - (substitute* "test/test_binary.rb" - (("/bin/ls") - (which "ls"))) - #t)) - (add-before 'install 'create-gem - (lambda _ - ;; Do not attempt to sign the gem. - (substitute* "Rakefile" - (("spec\\.signing_key = .*") - "")) - (invoke "rake" "gem:create")))))) + (list + #:test-target "spec:all" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "Rakefile" + ;; Don't require rubocop + (("require 'rubocop/rake_task'") "") + (("RuboCop::RakeTask.new") "") + ;; Do not attempt to sign the gem. + (("spec\\.signing_key = .*") "")) + + (substitute* "spec/binary_spec.rb" + (("/bin/ls") (which "ls")) + (("/bin/cat") (which "cat")) + (("/bin/chmod") (which "chmod")) + (("/bin/df") (which "df")))))))) + (native-inputs + (list ruby-rspec)) (synopsis "Extra methods for Ruby's @code{File} class") (description "The @dfn{ptools} (power tools) library extends Ruby's core @code{File} @@ -3506,27 +3698,28 @@ engine.") "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar")))) (build-system ruby-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - ;; pry is a debugging tool, and is unnecessary when running the - ;; tests - (substitute* "spec/lib/hamster/vector/insert_spec.rb" - (("require 'pry'") "")) - (substitute* "spec/spec_helper.rb" - (("require \"pry\"") "") - ;; CodeClimate is an online service, and is unnecessary for - ;; running the tests - (("require \"codeclimate-test-reporter\"") "") - (("CodeClimate.*\n") "")) - #t)) - ;; No Rakefile is included, so run rspec directly. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec")) - #t))))) + (list + ;; Only supports Ruby 2 currently + #:ruby ruby-2.7 + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + ;; pry is a debugging tool, and is unnecessary when running the + ;; tests + (substitute* "spec/lib/hamster/vector/insert_spec.rb" + (("require 'pry'") "")) + (substitute* "spec/spec_helper.rb" + (("require \"pry\"") "") + ;; CodeClimate is an online service, and is unnecessary for + ;; running the tests + (("require \"codeclimate-test-reporter\"") "") + (("CodeClimate.*\n") "")))) + ;; No Rakefile is included, so run rspec directly. + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "ruby" (which "rspec")))))))) (propagated-inputs (list ruby-concurrent)) (native-inputs @@ -3597,51 +3790,60 @@ two hashes.") It is a low-dependency variant of ruby-hydra.") (license license:expat)))) +;; Pinned variant for use by texlive +(define-public ruby-hydra-minimal/pinned + (hidden-package + (package + (inherit ruby-hydra-minimal) + (arguments + (cons* #:ruby ruby-2.7 + (package-arguments ruby-hydra-minimal)))))) + (define-public ruby-hydra (package (inherit ruby-hydra-minimal) (name "ruby-hydra") (arguments - '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'make-files-writable - (lambda _ - (for-each make-file-writable (find-files ".")) - #t)) - (replace 'check - (lambda _ - (invoke "rspec")))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'make-files-writable + (lambda _ + (for-each make-file-writable (find-files ".")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) (native-inputs (list ruby-rspec)) - (propagated-inputs - (list ruby-byebug)) (description "ruby-hydra is a Ruby library for working with hyphenation patterns."))) (define-public ruby-shindo (package (name "ruby-shindo") - (version "0.3.8") + (version "0.3.10") (source (origin (method url-fetch) (uri (rubygems-uri "shindo" version)) (sha256 (base32 - "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq")))) + "0qnqixhi0g8v44v13f3gynpbvvw6xqi1wajsxdjsx5rhzizfsj91")))) (build-system ruby-build-system) (arguments - `(#:test-target "shindo_tests" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-tests - (lambda _ - (substitute* "tests/tests_helper.rb" - (("-rubygems") "")) - (substitute* "Rakefile" - (("system \"shindo") "system \"./bin/shindo") - ;; This test doesn't work, so we disable it. - (("fail \"The build_error test should fail") "#") - ((" -rubygems") "")) - #t))))) + (list + #:test-target "shindo_tests" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda _ + (substitute* "tests/tests_helper.rb" + (("-rubygems") "")) + (substitute* "Rakefile" + (("system \"shindo") "system \"./bin/shindo") + ;; This test doesn't work, so we disable it. + (("fail \"The build_error test should fail") "#") + ((" -rubygems") ""))))))) (propagated-inputs (list ruby-formatador)) (synopsis "Simple depth first Ruby testing") @@ -3662,8 +3864,6 @@ It is a low-dependency variant of ruby-hydra.") (build-system ruby-build-system) ;; Tests need Internet access. (arguments `(#:tests? #f)) - (native-inputs - (list ruby-rspec ruby-yard)) (synopsis "Rake tasks for managing and releasing Ruby Gems") (description "Rubygems-task provides Rake tasks for managing and releasing Ruby Gems.") @@ -4067,14 +4267,26 @@ for breakage.") (define-public ruby-connection-pool (package (name "ruby-connection-pool") - (version "2.2.2") + (version "2.4.1") (source (origin - (method url-fetch) - (uri (rubygems-uri "connection_pool" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/mperham/connection_pool") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68")))) + "1iijshb1n9xl5knvpzzx0vqlw7v7mskiw1cpfj1cmdmssavyhsx5")))) (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "Rakefile" + (("require \"standard/rake\"") "") + ((":\"standard:fix\",") ""))))))) (native-inputs (list bundler)) (synopsis "Generic connection pool for Ruby") @@ -4086,7 +4298,7 @@ interface for Ruby programs.") (define-public ruby-fast-gettext (package (name "ruby-fast-gettext") - (version "2.0.3") + (version "2.3.0") (home-page "https://github.com/grosser/fast_gettext") (source (origin (method git-fetch) @@ -4095,34 +4307,16 @@ interface for Ruby programs.") (file-name (git-file-name name version)) (sha256 (base32 - "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6")))) + "0ba1wv96qarvvh19s8m1cgd26a9jgil4wl8nwgv4sl9fg5sqgksm")))) (build-system ruby-build-system) (arguments - '(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-before 'check 'remove-version-constraints - (lambda _ - (delete-file "Gemfile.lock") - #t)) - (add-before 'check 'remove-activerecord-test - (lambda _ - ;; FIXME: This test fails because ActiveRecord depends on - ;; a different version of ruby-sqlite than the currently - ;; available one. - (delete-file - "spec/fast_gettext/translation_repository/db_spec.rb") - #t)) - (add-before 'check 'disable-i18n-test - (lambda _ - ;; XXX: This test checks i18n intricasies with Rails 3 and - ;; automatically disables itself for Rails 4.0, but does - ;; not know about newer versions as it has not been updated - ;; since 2014. Disable for later versions of Rails too. - (substitute* "spec/fast_gettext/vendor/string_spec.rb" - (((string-append "ActiveRecord::VERSION::MAJOR == 4 and " - "ActiveRecord::VERSION::MINOR == 0")) - "ActiveRecord::VERSION::MAJOR >= 4")) - #t))))) + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'remove-version-constraints + (lambda _ + (delete-file "Gemfile.lock")))))) (native-inputs (list ;; For tests. ruby-activerecord @@ -4131,6 +4325,7 @@ interface for Ruby programs.") ruby-forking-test-runner ruby-i18n ruby-rubocop + ruby-rubocop-packaging ruby-rspec ruby-single-cov ruby-sqlite3 @@ -4191,12 +4386,13 @@ fiber, and defaults to a shared thread-local state.") "0pd8gqgy67rp1baq5r7himl0r9jzv5kqlhdmqh8wngynv548w2ai")))) (build-system ruby-build-system) (arguments - (list #:phases + (list #:ruby ruby-2.7 + #:phases #~(modify-phases %standard-phases (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? - (invoke "rspec"))))))) + (invoke "ruby" (which "rspec")))))))) (native-inputs (list ruby-rspec ruby-simplecov)) (synopsis "Fuzzing, randomization, and stress testing library") (description "Flores is a fuzzing, randomization, and stress library to @@ -4207,16 +4403,18 @@ help tests uncover more bugs.") (define-public ruby-net-http-persistent (package (name "ruby-net-http-persistent") - (version "3.0.0") + (version "4.0.2") (source (origin (method url-fetch) (uri (rubygems-uri "net-http-persistent" version)) (sha256 (base32 - "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18")))) + "0i1as2lgnw7b4jid0gw5glv5hnxz36nmfsbr9rmxbcap72ijgy03")))) (build-system ruby-build-system) (native-inputs - (list ruby-connection-pool ruby-hoe)) + (list ruby-connection-pool + ruby-hoe + ruby-rake-manifest)) (synopsis "Persistent HTTP connection manager") (description "Net::HTTP::Persistent manages persistent HTTP connections using Net::HTTP, supporting reconnection and retry according to RFC 2616.") @@ -4368,17 +4566,17 @@ assertion messages for tests.") (define-public ruby-powerpack (package (name "ruby-powerpack") - (version "0.1.2") + (version "0.1.3") (source (origin (method url-fetch) (uri (rubygems-uri "powerpack" version)) (sha256 (base32 - "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv")))) + "1f71axvlhnxja0k17qqxdi4qh5ck807hqg4i3j6cgy8fgzmyg7rg")))) (build-system ruby-build-system) (arguments - '(#:test-target "spec")) + (list #:test-target "spec")) (native-inputs (list bundler ruby-rspec ruby-yard)) (synopsis "Useful extensions to core Ruby classes") @@ -4405,7 +4603,7 @@ including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and ;; dependency cycle we disable tests. (arguments `(#:tests? #f)) (native-inputs - (list bundler ruby-yard)) + (list bundler ruby-yard/minimal)) (synopsis "Ruby library providing basic localization APIs") (description "Ruby-Locale is the pure ruby library which provides basic APIs for @@ -4472,22 +4670,22 @@ Soundex, Metaphone, Double Metaphone, Porter Stemming.") (define-public ruby-gettext (package (name "ruby-gettext") - (version "3.1.7") + (version "3.4.4") (source (origin (method url-fetch) (uri (rubygems-uri "gettext" version)) (sha256 (base32 - "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq")))) + "11hlxkk2yr9wjwd3nf8kgmsjcd8wf35yqlxi9wpvrgmvrk9n9a2k")))) (build-system ruby-build-system) ;; ruby-test-unit is required to run tests, but that needs ruby-packnga, ;; which needs ruby-gettext. To break the dependency cycle we disable ;; tests. (arguments `(#:tests? #f)) (propagated-inputs - (list ruby-locale ruby-text)) + (list ruby-locale ruby-text ruby-erubi)) (native-inputs - (list bundler ruby-yard)) + (list bundler ruby-yard/minimal)) (synopsis "GNU gettext-like program for Ruby") (description "Gettext is a GNU gettext-like program for Ruby. The catalog @@ -4523,17 +4721,17 @@ use GNU gettext tools for maintenance.") (define-public ruby-test-construct (package (name "ruby-test-construct") - (version "2.0.1") + (version "2.0.2") (source (origin (method url-fetch) (uri (rubygems-uri "test_construct" version)) (sha256 (base32 - "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj")))) + "17q7rw92l7r4zh6rkvzrn4dyl8p8p77217vaa1wf7nsv8k5541vy")))) (build-system ruby-build-system) (native-inputs - (list bundler ruby-mocha ruby-rspec)) + (list bundler ruby-mocha-1 ruby-rspec)) (synopsis "Creates temporary files and directories for testing") (description "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating @@ -4544,13 +4742,16 @@ temporary files and directories during tests.") (define-public ruby-test-unit (package (name "ruby-test-unit") - (version "3.4.4") + (version "3.6.0") (source (origin - (method url-fetch) - (uri (rubygems-uri "test-unit" version)) + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/test-unit/test-unit") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "15isy7vhppbfd0032klirj9gxp65ygkzjdwrmm28xpirlcsk6qpd")))) + "0w1m432q3y5v9lkak8yyxadak3z17bsp6afni97i4zjdgfz7niz2")))) (build-system ruby-build-system) (propagated-inputs (list ruby-power-assert)) @@ -4564,6 +4765,16 @@ It allows writing tests, checking results and automated testing in Ruby.") (home-page "https://test-unit.github.io/") (license (list license:psfl license:ruby)))) +(define-public ruby-test-unit/minimal + (hidden-package + (package + (inherit ruby-test-unit) + (arguments + (ensure-keyword-arguments + (package-arguments ruby-test-unit) + (list #:tests? #f))) + (native-inputs '())))) + (define-public ruby-mapping (package (name "ruby-mapping") @@ -4578,7 +4789,16 @@ It allows writing tests, checking results and automated testing in Ruby.") (base32 "0yhmqp8mprjqf9m7wzc4hhi50qbfax86r89w852csns0ijaffjjs")))) (build-system ruby-build-system) - (arguments (list #:test-target "spec")) + (arguments + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "spec/mapping/model_spec.rb" + ;; From https://github.com/ioquatix/mapping/pull/2 + (("offset:") "offset ="))))))) (native-inputs (list ruby-rspec)) (synopsis "Map model objects based on their class to a given output model") (description "The @code{mapping} gem maps model objects based on their @@ -4601,17 +4821,24 @@ another.") "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i")))) (build-system ruby-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - ;; Run rspec manually without using the Rakefile, as the versions of - ;; Rake and RSpec 2 are incompatible: - ;; - ;; NoMethodError: undefined method `last_comment' - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec")) - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + ;; Run rspec manually without using the Rakefile, as the versions of + ;; Rake and RSpec 2 are incompatible: + ;; + ;; NoMethodError: undefined method `last_comment' + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + ;; Skip some broken tests, this should be redundant with the + ;; next release + (delete-file "spec/markaby/markaby_test_unit_spec.rb") + (substitute* "spec/markaby/markaby_spec.rb" + (("generated.should == str") + "# Test broken: generated.should == str")) + + (when tests? + (invoke "rspec"))))))) (propagated-inputs (list ruby-builder)) (native-inputs @@ -4681,7 +4908,7 @@ HTML, and PDF through LaTeX.") "/lib\"")))) #t))))) (native-inputs - (list bundler ruby-test-unit)) + (list bundler ruby-test-unit/minimal)) (synopsis "Ruby library adding metaclass method to all objects") (description "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby @@ -4692,16 +4919,27 @@ objects.") (define-public ruby-mkmf-lite (package (name "ruby-mkmf-lite") - (version "0.3.2") + (version "0.5.2") (source (origin (method url-fetch) (uri (rubygems-uri "mkmf-lite" version)) (sha256 (base32 - "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06")))) + "0rqa5kzswhqkj7r9mqrqz4mjd2vdxsblgybb52gj3mwr1gwvl4c5")))) (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + ;; Avoid rubocop dependency + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) (propagated-inputs (list ruby-ptools)) + (native-inputs + (list ruby-rspec)) (synopsis "Lightweight alternative to @code{mkmf}") (description "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed @@ -4962,42 +5200,6 @@ definitions more readable.") (home-page "https://github.com/jordansissel/ruby-insist/") (license license:asl2.0))) -(define-public ruby-instantiator - (package - (name "ruby-instantiator") - (version "0.0.7") - (source (origin - (method url-fetch) - (uri (rubygems-uri "instantiator" version)) - (sha256 - (base32 - "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'add-test-unit-to-search-path - (lambda* (#:key inputs #:allow-other-keys) - (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))) - (substitute* "Rakefile" - (("t\\.libs << \"test\"" line) - (string-append line "; t.libs << \"" - test-unit "/lib/ruby/vendor_ruby" - "/gems/test-unit-" - ,(package-version ruby-test-unit) - "/lib\"")))) - #t))))) - (propagated-inputs - (list ruby-blankslate)) - (native-inputs - (list bundler ruby-test-unit)) - (synopsis "Instantiate an arbitrary Ruby class") - (description - "Instantiator lets you instantiate an arbitrary Ruby class without -knowing anything about the constructor.") - (home-page "https://github.com/floehopper/instantiator") - (license license:expat))) - (define-public ruby-introspection (package (name "ruby-introspection") @@ -5009,24 +5211,11 @@ knowing anything about the constructor.") (base32 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca")))) (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'add-test-unit-to-search-path - (lambda* (#:key inputs #:allow-other-keys) - (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))) - (substitute* "Rakefile" - (("t\\.libs << \"test\"" line) - (string-append line "; t.libs << \"" - test-unit "/lib/ruby/vendor_ruby" - "/gems/test-unit-" - ,(package-version ruby-test-unit) - "/lib\"")))) - #t))))) (propagated-inputs - (list ruby-instantiator ruby-metaclass)) + (list ruby-metaclass)) (native-inputs - (list bundler ruby-blankslate ruby-test-unit)) + (list bundler + ruby-blankslate)) (synopsis "Dynamic inspection of the method hierarchy on a Ruby object") (description "Introspection provides tools to inspect the hierarchy of method @@ -5112,7 +5301,7 @@ Ruby, but can be used for all programs.") (define-public ruby-maxitest (package (name "ruby-maxitest") - (version "4.4.1") + (version "5.1.0") (home-page "https://github.com/grosser/maxitest") (source (origin ;; Pull from git because the gem does not contain tests. @@ -5123,31 +5312,32 @@ Ruby, but can be used for all programs.") (file-name (git-file-name name version)) (sha256 (base32 - "0l646lgrgsfgg9qh05b8a3jd43kgrmr6xzbdvyspmdlhchk1qszg")))) + "0qj410krfm497ggmf71xpnabbb6814y0585by4nlzyjvg9hpgg3m")))) (build-system ruby-build-system) (arguments - '(#:test-target "default" - #:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "maxitest.gemspec" - (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`") - "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`")))) - (add-before 'check 'remove-version-constraints - (lambda _ - ;; Don't use specific versions of dependencies, instead - ;; take whatever is available in Guix. - (delete-file "Gemfile.lock"))) - (add-before 'check 'add-mtest-on-PATH - (lambda _ - ;; Tests use 'mtest' which is not automatically added on - ;; PATH. - (setenv "PATH" (string-append (getcwd) "/bin:" - (getenv "PATH")))))))) + (list + #:test-target "default" + #:phases + #~(modify-phases %standard-phases + (replace 'replace-git-ls-files + (lambda _ + (substitute* "maxitest.gemspec" + (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`") + "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`")))) + (add-before 'check 'remove-version-constraints + (lambda _ + ;; Don't use specific versions of dependencies, instead + ;; take whatever is available in Guix. + (delete-file "Gemfile.lock"))) + (add-before 'check 'add-mtest-on-PATH + (lambda _ + ;; Tests use 'mtest' which is not automatically added on + ;; PATH. + (setenv "PATH" (string-append (getcwd) "/bin:" + (getenv "PATH")))))))) (native-inputs (list procps ruby-bump - ruby-byebug ruby-rspec ruby-wwtd)) (propagated-inputs @@ -5162,27 +5352,29 @@ number, support for interrupted tests, better backtraces, and more.") (define-public ruby-mocha (package (name "ruby-mocha") - (version "1.13.0") + (version "2.0.4") (source (origin (method url-fetch) (uri (rubygems-uri "mocha" version)) (sha256 (base32 - "15s53ggsykk69kxqvs4416s8yxdhz6caggva55n8sjgy4ixzwp10")))) + "18xn9gm9yypavy9yck71fplan19hy5697mwd1rwzz7vizh3ip7bd")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'remove-rubocop-dependency - (lambda _ - ;; Disable dependency on Rubocop, which is just a linter, - ;; and would introduce a circular dependency. - (substitute* "mocha.gemspec" - ((".*rubocop.*") - "true\n")) - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'remove-rubocop-dependency + (lambda _ + ;; Disable dependency on Rubocop, which is just a linter, + ;; and would introduce a circular dependency. + (substitute* "Gemfile" + ((".*rubocop.*") ""))))))) + (propagated-inputs + (list ruby-ruby2-keywords)) (native-inputs - (list ruby-introspection)) + (list ruby-psych-3 + ruby-introspection)) (synopsis "Mocking and stubbing library for Ruby") (description "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which @@ -5191,6 +5383,19 @@ allows mocking and stubbing of methods on real (non-mock) classes.") ;; Mocha can be used with either license at the users choice. (license (list license:expat license:ruby)))) +(define-public ruby-mocha-1 + (package + (inherit ruby-mocha) + (version "1.13.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "mocha" version)) + (sha256 + (base32 + "15s53ggsykk69kxqvs4416s8yxdhz6caggva55n8sjgy4ixzwp10")))) + (arguments + '(#:tests? #f)))) + (define-public ruby-mocha-on-bacon (package (name "ruby-mocha-on-bacon") @@ -5218,16 +5423,25 @@ Mocha stubbing and mocking library with Bacon, a small RSpec clone.") (define-public ruby-net-ssh (package (name "ruby-net-ssh") - (version "4.2.0") + (version "7.1.0") (source (origin - (method url-fetch) - (uri (rubygems-uri "net-ssh" version)) + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/net-ssh/net-ssh") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx")))) + "1dkbyzpl31jygnnva5sa754vk42q1fih4qz5ipqw5gqiafrrlb91")))) (build-system ruby-build-system) (native-inputs - (list bundler ruby-mocha ruby-test-unit)) + (list bundler + ruby-bcrypt-pbkdf + ruby-ed25519 + ruby-mocha + ruby-rbnacl + ruby-test-unit + ruby-x25519)) (synopsis "Ruby implementation of the SSH2 client protocol") (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2 client protocol. It allows you to write programs that invoke and interact @@ -5250,7 +5464,7 @@ with processes on remote servers, via SSH2.") (base32 "1mdxh81z2hkcc359g6z96fywbr57azlv2yj4zq76adn5lyqq4hgw")))) (build-system ruby-build-system) (native-inputs - (list bundler ruby-test-unit ruby-mocha)) + (list bundler ruby-test-unit ruby-mocha-1)) (propagated-inputs (list ruby-net-ssh)) (synopsis "Pure-Ruby SCP client library") @@ -5292,13 +5506,13 @@ default (and first) theme. It's what you get when you run @code{jekyll new}.") (define-public ruby-minitest (package (name "ruby-minitest") - (version "5.18.0") + (version "5.18.1") (source (origin (method url-fetch) (uri (rubygems-uri "minitest" version)) (sha256 (base32 - "0ic7i5z88zcaqnpzprf7saimq2f6sad57g5mkkqsrqrcd6h3mx06")))) + "1kg9wh7jlc9zsr3hkhpzkbn0ynf4np5ap9m2d8xdrb8shy0y6pmb")))) (build-system ruby-build-system) (native-inputs (list ruby-hoe)) (home-page "https://github.com/minitest/minitest") @@ -5307,17 +5521,6 @@ default (and first) theme. It's what you get when you run @code{jekyll new}.") facilities supporting TDD, BDD, mocking, and benchmarking.") (license license:expat))) -(define-public ruby-minitest-5.15 - (package - (inherit ruby-minitest) - (version "5.15.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest" version)) - (sha256 - (base32 - "06xf558gid4w8lwx13jwfdafsch9maz8m0g85wnfymqj63x5nbbd")))))) - ;; This is the last release of Minitest 4, which is used by some packages. (define-public ruby-minitest-4 (package @@ -5330,17 +5533,26 @@ facilities supporting TDD, BDD, mocking, and benchmarking.") (base32 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy")))) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-unsupported-method - (lambda _ - (substitute* "Rakefile" - (("self\\.rubyforge_name = .*") "")))) - (add-after 'build 'exclude-failing-tests - (lambda _ - ;; Some tests are failing on Ruby 2.4 due to the deprecation of - ;; Fixnum. - (delete-file "test/minitest/test_minitest_spec.rb")))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-unsupported-method + (lambda _ + (substitute* "Rakefile" + (("self\\.rubyforge_name = .*") "")))) + (add-after 'build 'patch-tests + (lambda _ + ;; test_no_method_error_on_unexpected_methods + ;; This test fails due to some extra information in the message + (substitute* "test/minitest/test_minitest_mock.rb" + (("assert_equal expected, e.message") + "assert_equal expected, e.message.lines.first.strip")) + ;; Some tests are failing on Ruby 2.4 due to the deprecation of + ;; Fixnum. + (delete-file "test/minitest/test_minitest_spec.rb")))))) + (native-inputs + (list ruby-minitest + ruby-hoe)))) (define-public ruby-minitest-around (package @@ -5454,14 +5666,14 @@ functionality, making it easier to migrate test suites from bacon to minitest.") (define-public ruby-minitest-focus (package (name "ruby-minitest-focus") - (version "1.1.2") + (version "1.3.1") (source (origin (method url-fetch) (uri (rubygems-uri "minitest-focus" version)) (sha256 (base32 - "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0")))) + "13kd2dkd9akfb99ziqndz9mir5iynyfyj2l45mcibab6mq5k8g67")))) (build-system ruby-build-system) (propagated-inputs (list ruby-minitest)) @@ -5613,18 +5825,19 @@ MiniTest @code{Object#stub} with a global @code{stub} method.") "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a")))) (build-system ruby-build-system) (arguments - `(#:tests? #f ; Test suite has bitrotted. - #:phases - (modify-phases %standard-phases - (add-before 'check 'clean-dependencies - (lambda _ - ;; Remove unneeded require statement that would entail another - ;; dependency. - (substitute* "test/minitest_config.rb" - (("require 'minitest/bisect'") "")) - #t))))) + (list + #:tests? #f ; Test suite has bitrotted. + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'clean-dependencies + (lambda _ + ;; Remove unneeded require statement that would entail another + ;; dependency. + (substitute* "test/minitest_config.rb" + (("require 'minitest/bisect'") ""))))))) (native-inputs - (list ruby-hoe ruby-minitest-pretty-diff ruby-minitest-focus + (list ruby-hoe + ruby-minitest-focus ruby-minitest-moar)) (synopsis "Bonus assertions for @code{Minitest}") (description @@ -5905,7 +6118,8 @@ you to merge elements inside a hash together recursively.") ruby-rspec ruby-simplecov ruby-simplecov-lcov - ruby-zeitwerk)) + ruby-zeitwerk + ruby-mini-portile-2)) (propagated-inputs (list ruby-activesupport)) (synopsis "Asynchronous background tasks execution library") @@ -5954,7 +6168,7 @@ and manipulate Git repositories by wrapping system calls to the git binary.") (define-public ruby-hocon (package (name "ruby-hocon") - (version "1.3.1") + (version "1.4.0") (home-page "https://github.com/puppetlabs/ruby-hocon") (source (origin (method git-fetch) @@ -5962,16 +6176,17 @@ and manipulate Git repositories by wrapping system calls to the git binary.") (file-name (git-file-name name version)) (sha256 (base32 - "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr")))) + "04wgv0pwrghawnl6qp346z59fvp9v37jymq8p0lsrzxa6nvrykmk")))) (build-system ruby-build-system) (arguments - '(#:phases (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (if tests? - (invoke "rspec") - (format #t "test suite not run~%")) - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "rspec") + (format #t "test suite not run~%"))))))) (native-inputs (list bundler ruby-rspec)) (synopsis "HOCON config library") @@ -5985,16 +6200,14 @@ objects back to a @code{String}.") (define-public ruby-slop (package (name "ruby-slop") - (version "4.5.0") + (version "4.10.1") (source (origin (method url-fetch) (uri (rubygems-uri "slop" version)) (sha256 (base32 - "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p")))) + "1iyrjskgxyn8i1679qwkzns85p909aq77cgx2m4fs5ygzysj4hw4")))) (build-system ruby-build-system) - (native-inputs - (list ruby-minitest)) (synopsis "Ruby command line option parser") (description "Slop provides a Ruby domain specific language for gathering options and parsing command line flags.") @@ -6104,12 +6317,15 @@ net/http library.") "0mkdvy6i00yyksjvnv6znh7wf89j9506qzzjq6bsbmbkyqrszp4d")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'pre-check - (lambda _ - ;; As seen in the .travis.yml file. - (setenv "SKIP_ADAPTERS" "gson,jr_jackson,nsjsonserialization")))))) + (list + ;; TODO Tests don't currently work with Ruby 3 + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda _ + ;; As seen in the .travis.yml file. + (setenv "SKIP_ADAPTERS" "gson,jr_jackson,nsjsonserialization")))))) (native-inputs (list ruby-rspec ruby-json-pure ruby-oj ruby-yajl-ruby)) (synopsis "Common interface to multiple JSON libraries for Ruby") @@ -6243,49 +6459,59 @@ to reproduce user environments.") (define-public ruby-mini-portile-2 (package (inherit ruby-mini-portile) - (version "2.8.1") + (version "2.8.2") (source (origin (method url-fetch) (uri (rubygems-uri "mini_portile2" version)) (sha256 (base32 - "1af4yarhbbx62f7qsmgg5fynrik0s36wjy3difkawy536xg343mp")))))) + "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6")))))) (define-public ruby-nokogiri (package (name "ruby-nokogiri") - (version "1.13.10") + (version "1.15.2") (source (origin - (method url-fetch) - (uri (rubygems-uri "nokogiri" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/sparklemotion/nokogiri") + (commit "a6ad20b3edc8f020043ccfe5d9ec6ae9af103720"))) + (file-name (git-file-name name version)) (sha256 (base32 - "0n79k78c5vdcyl0m3y3l5x9kxl6xf5lgriwi2vd665qmdkr01vnk")))) + "1n0vlg6v58jw3qzgyihz1dh5fvp4js1qgdh75j0kn47nvyiw3jxj")) + (patches (search-patches "ruby-nokogiri.patch")))) (build-system ruby-build-system) (arguments - ;; Tests fail because Nokogiri can only test with an installed extension, - ;; and also because many test framework dependencies are missing. - (list - #:tests? #f - #:gem-flags #~(list "--" "--use-system-libraries" - (string-append "--with-xml2-include=" - #$(this-package-input "libxml2") - "/include/libxml2" )) - #:phases - #~(modify-phases %standard-phases - (add-after 'install 'delete-mkmf.log - (lambda _ - ;; Rubygems installs build log files that embed volatile file - ;; names (see: - ;; https://github.com/rubygems/rubygems/issues/6259). - (for-each delete-file (find-files #$output "^mkmf\\.log$"))))))) - (native-inputs (list ruby-hoe)) + (list #:gem-flags #~(list "--" "--use-system-libraries" + (string-append "--with-xml2-include=" + #$(this-package-input "libxml2") + "/include/libxml2")) + #:phases #~(modify-phases %standard-phases + (add-after 'install 'delete-mkmf.log + (lambda _ + ;; Rubygems installs build log files that embed volatile file + ;; names (see: + ;; https://github.com/rubygems/rubygems/issues/6259). + (for-each delete-file + (find-files #$output "^mkmf\\.log$")))) + (delete 'check) + (add-after 'install 'check + (lambda* (#:key tests? #:allow-other-keys) + (setenv "GEM_PATH" (string-append + (getenv "GEM_PATH") ":" + #$output "/lib/ruby/vendor_ruby")) + (when tests? + (for-each (lambda (file) + (invoke "ruby" "-Itest" file)) + (find-files "test" "^test_.*\\.rb")))))))) + (native-inputs (list ruby-hoe ruby-rubyzip)) (inputs (list zlib libxml2 libxslt)) (propagated-inputs (list ruby-mini-portile-2 ruby-pkg-config)) (synopsis "HTML, XML, SAX, and Reader parser for Ruby") (description "Nokogiri (鋸) parses and searches XML/HTML, and features both CSS3 selector and XPath 1.0 support.") - (home-page "https://www.nokogiri.org/") + (home-page "https://nokogiri.org/") (license license:expat))) (define-public ruby-method-source @@ -6491,21 +6717,41 @@ across multiple CPU cores.") (home-page "https://github.com/whitequark/parser") (license license:expat))) +(define-public ruby-set + (package + (name "ruby-set") + (version "1.0.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "set" version)) + (sha256 + (base32 + "07kc057nrkddrybqmlbmgf9x7nsmbc3ni6gy1z6xjx5b838vlj33")))) + (build-system ruby-build-system) + (synopsis + "Ruby class to deal with collections of unordered, unique values") + (description + "This package provides a class to deal with collections of unordered, +unique values") + (home-page "https://github.com/ruby/set") + (license license:bsd-2))) + (define-public ruby-sexp-processor (package (name "ruby-sexp-processor") - (version "4.15.0") + (version "4.17.0") (source (origin (method url-fetch) (uri (rubygems-uri "sexp_processor" version)) (sha256 (base32 - "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55")))) + "0vzz9mhg4kkdqf179pm30i204h7iskanxrk53j0csf0qrrs4iajd")))) (build-system ruby-build-system) (native-inputs - ;; TODO: Add ruby-minitest-proveit once available. - (list ruby-hoe)) + (list ruby-hoe + ruby-minitest + ruby-minitest-proveit)) (synopsis "ParseTree fork which includes generic S-exp processing tools") (description "The sexp_processor package is derived from ParseTree, but contrary to ParseTree, it includes all the generic S-exp processing tools. @@ -6517,17 +6763,32 @@ Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and (define-public ruby-ruby-parser (package (name "ruby-ruby-parser") - (version "3.14.2") + (version "3.20.2") (source (origin (method url-fetch) (uri (rubygems-uri "ruby_parser" version)) (sha256 (base32 - "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c")))) + "0q851n8654wkjrq8jawq8vi5yhr1y9vpyr2vj7cnn3sa4ikg6d3z")))) (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "Rakefile" + (("`which bison`") + (string-append "\"" (which "bison") "\"")) + (("which unifdef") + (which "unifdef")))))))) (native-inputs - (list ruby-hoe ruby-racc unifdef)) + (list ruby-hoe + ruby-racc + unifdef + bison + ruby-minitest)) (propagated-inputs (list ruby-sexp-processor)) (home-page "https://github.com/seattlerb/ruby_parser/") @@ -6647,7 +6908,9 @@ rate.") "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5")))) (build-system ruby-build-system) (arguments - '(#:tests? #f)) ; No included tests + (list + #:ruby ruby-2.7 + #:tests? #f)) ; No included tests (synopsis "Creates a version constraint of supported Rubies") (description "This package helps create a version constraint of supported Rubies, @@ -6697,14 +6960,14 @@ The output can be customized with a formatting system.") (define-public ruby-pry (package (name "ruby-pry") - (version "0.13.1") + (version "0.14.2") (source (origin (method url-fetch) (uri (rubygems-uri "pry" version)) (sha256 (base32 - "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk")))) + "0k9kqkd9nps1w1r1rb7wjr31hqzkka2bhi8b518x78dcxppm9zn4")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; no tests @@ -6720,13 +6983,13 @@ invocation, and source and documentation browsing.") (define-public ruby-pry-doc (package (name "ruby-pry-doc") - (version "1.3.0") + (version "1.4.0") (source (origin (method url-fetch) (uri (rubygems-uri "pry-doc" version)) (sha256 (base32 - "0wyvql6pb6m8jl8bsamabxhxhd86bnqblspaxzz05sl0fm2ynj0r")))) + "1pp43n69p6bjvc640wgcz295w1q2v9awcqgbwcqn082dbvq5xvnx")))) (build-system ruby-build-system) (propagated-inputs (list ruby-pry ruby-yard)) (native-inputs (list ruby-latest-ruby ruby-rspec ruby-rake)) ;for tests @@ -6794,16 +7057,18 @@ development tools to catch coverage problems early.") (define-public ruby-oedipus-lex (package (name "ruby-oedipus-lex") - (version "2.6.0") + (version "2.6.1") (source (origin (method url-fetch) (uri (rubygems-uri "oedipus_lex" version)) (sha256 (base32 - "094nd7jd3klv45mvprfn2ivcgw8cckq3jhlly77j903vlamfi0df")))) + "06l4d3l75vhdcmnavnkzr7bd39rb0njxhkbmwrw6ni64z2hlj7w7")))) (build-system ruby-build-system) - (native-inputs (list ruby-hoe)) + (native-inputs + (list ruby-hoe + ruby-minitest)) (synopsis "Ruby lexer") (description "Oedipus Lex is a lexer generator in the same family as Rexical and Rex. @@ -6936,7 +7201,7 @@ intended for use with event loops such as async.") (define-public ruby-tilt (package (name "ruby-tilt") - (version "2.0.10") + (version "2.0.11") (source (origin (method git-fetch) ;the distributed gem lacks tests @@ -6946,28 +7211,44 @@ intended for use with event loops such as async.") (file-name (git-file-name name version)) (sha256 (base32 - "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r")))) + "0a75s6ci2rwai5q1bnlqbz8kxqnfp2497jhkcry1n4g29lcxq9ja")))) (build-system ruby-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-some-dependencies - (lambda _ - (substitute* "Gemfile" - ;; TODO ronn is used for generating the manual - (("gem 'ronn'.*") "\n") - ;; ruby-haml has a runtime dependency on ruby-tilt, so don't - ;; pass it in as a native-input - (("gem 'haml'.*") "\n") - ;; TODO Not all of these gems are packaged for Guix yet: - ;; less, coffee-script, livescript, babel-transpiler, - ;; typescript-node - (("if can_execjs") "if false") - ;; Disable the secondary group to reduce the number of - ;; dependencies. None of the normal approaches work, so patch - ;; the Gemfile instead. - (("group :secondary") "[].each")) - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-tests + (lambda _ + ;; Patch some tests + (substitute* "test/tilt_sasstemplate_test.rb" + (("}\",") "} +\",")))) + (add-after 'unpack 'remove-some-dependencies + (lambda _ + (substitute* "Gemfile" + (("gem 'less'") "\n") + (("gem 'coffee-script'") "\n") + (("gem 'livescript'") "\n") + (("gem 'babel-transpiler'") "\n") + (("gem 'typescript-node'") "\n") + (("gem 'typescript-node'") "\n") + (("gem 'duktape'.*") "\n") + ;; TODO ronn is used for generating the manual + (("gem 'ronn'.*") "\n") + ;; ruby-haml has a runtime dependency on ruby-tilt, so don't + ;; pass it in as a native-input + (("gem 'haml'.*") "\n") + ;; TODO Not all of these gems are packaged for Guix yet: + ;; less, coffee-script, livescript, babel-transpiler, + ;; typescript-node + (("if can_execjs") "if false") + ;; Disable the secondary group to reduce the number of + ;; dependencies. None of the normal approaches work, so patch + ;; the Gemfile instead. + (("group :secondary") "[].each")))) + (add-before 'check 'set-SASS_IMPLEMENTATION + (lambda _ + (setenv "SASS_IMPLEMENTATION" "sassc")))))) (propagated-inputs (list ruby-pandoc-ruby ruby-sassc)) (native-inputs @@ -7002,7 +7283,7 @@ utilities for Ruby.") (define-public ruby-tzinfo (package (name "ruby-tzinfo") - (version "2.0.4") + (version "2.0.6") (source (origin (method git-fetch) @@ -7013,31 +7294,29 @@ utilities for Ruby.") (file-name (git-file-name name version)) (sha256 (base32 - "0jaq1givdaz5jxz47xngyj3j315n872rk97mnpm5njwm48wy45yh")))) + "1n1gzjqwwnx209h8d054miva0y7x17db2ahy7jav5r25ibhh7rgm")))) (build-system ruby-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'skip-safe-tests - (lambda _ - (substitute* "test/test_utils.rb" - (("def safe_test\\(options = \\{\\}\\)") + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'skip-safe-tests + (lambda _ + (substitute* "test/test_utils.rb" + (("def safe_test\\(options = \\{\\}\\)") "def safe_test(options = {}) - skip('The Guix build environment has an unsafe load path')")) - #t)) - (add-before 'check 'pre-check - (lambda _ - (setenv "HOME" (getcwd)) - (substitute* "Gemfile" - (("simplecov.*") "simplecov'\n")) - #t)) - (replace 'check - (lambda* (#:key tests? test-target #:allow-other-keys) - (when tests? - (invoke "bundler" "exec" "rake" test-target)) - #t))))) + skip('The Guix build environment has an unsafe load path')")))) + (add-before 'check 'pre-check + (lambda _ + (setenv "HOME" (getcwd)) + (substitute* "Gemfile" + (("simplecov.*") "simplecov'\n")))) + (replace 'check + (lambda* (#:key tests? test-target #:allow-other-keys) + (when tests? + (invoke "bundler" "exec" "rake" test-target))))))) (propagated-inputs - `(("ruby-concurrent-ruby" ,ruby-concurrent))) + (list ruby-concurrent)) (native-inputs (list ruby-simplecov)) (synopsis "Time zone library for Ruby") @@ -7049,7 +7328,7 @@ aware transformations between times in different time zones.") (define-public ruby-tzinfo-data (package (name "ruby-tzinfo-data") - (version "1.2021.1") + (version "1.2023.3") (source (origin (method git-fetch) @@ -7061,59 +7340,62 @@ aware transformations between times in different time zones.") (file-name (git-file-name name version)) (sha256 (base32 - "0yzyr3rf8qaw6kxfc0gwpxsb7gl3rhfpx9g1c2z15vapyminhi60")))) + "1v3fpfmw485lsc9bfqfcasb9j25g9ywfpmmk648l2vdsh7nipilf")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-source - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "Rakefile" - (("https://data.iana.org/time-zones/releases") - (assoc-ref inputs "tzdata"))))) - (add-before 'check 'pre-check - (lambda _ - (setenv "HOME" (getcwd)) - (substitute* "Rakefile" - ;; Don't need gpg, and it may break after a time. - (("gpg ") "echo ") - ((" sh\\(\\\"make -C" text) - (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n" - " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text))) - (setenv "cc" ,(cc-for-target))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "Rakefile" + (("URI\\.parse\\(url\\)\\.open") + "URI.open(url)") + (("https://data.iana.org/time-zones/releases") + (assoc-ref inputs "tzdata"))))) + (add-before 'check 'pre-check + (lambda _ + (setenv "HOME" (getcwd)) + (substitute* "Rakefile" + ;; Don't need gpg, and it may break after a time. + (("gpg ") "echo ") + ((" sh\\(\\\"make -C" text) + (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n" + " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text))) + (setenv "cc" #$(cc-for-target))))))) (propagated-inputs (list ruby-tzinfo)) (native-inputs `(("tzdata" ,(file-union "tzdata-for-ruby-tzdata-info" - `(("tzdata2021a.tar.gz" + `(("tzdata2023c.tar.gz" ,(origin (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz") + (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz") (sha256 (base32 - "022fn6gkmp7pamlgab04x0dm5hnyn2m2fcnyr3pvm36612xd5rrr")))) - ("tzdata2021a.tar.gz.asc" + "0p4nvp5bdxxdqh269nvvcfrpycbbfwm31al5whwbpsaa3dfhnl9z")))) + ("tzdata2023c.tar.gz.asc" ,(origin (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz.asc") + (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz.asc") (sha256 (base32 - "0n7h2w8ji1lrxpk0d44wyfshlhr7c9jmwj6lqbxlyvqnfi3gbicx")))) - ("tzcode2021a.tar.gz" + "0mrmhczs5qnj1zp6gh4pg6fm0iblr2jmzy0fgh9slinwxmn7pv6m")))) + ("tzcode2023c.tar.gz" ,(origin (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz") + (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz") (sha256 (base32 - "1l02b0jiwp3fl0xd6227i69d26rmx3yrnq0ssq9vvdmm4jhvyipb")))) - ("tzcode2021a.tar.gz.asc" + "1rqln88ki0jagi372nqyn7bs03rf2l33081sy2835mwsn4mpzla6")))) + ("tzcode2023c.tar.gz.asc" ,(origin (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz.asc") + (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz.asc") (sha256 (base32 - "1qhlj4lr810s47s1lwcvv1sgvg2sflf98w4sbg1lc8wzv5qxxv7g"))))))))) + "0jbx8xjv75qfh7bxa2xmrf97r37057y89rhmrq1gz8s6b8qlzb2i"))))))))) (synopsis "Data from the IANA Time Zone database") (description "This library provides @code{TZInfo::Data}, which contains data from the @@ -7124,26 +7406,27 @@ IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.") (define-public ruby-rb-inotify (package (name "ruby-rb-inotify") - (version "0.9.10") + (version "0.10.1") (source (origin (method url-fetch) (uri (rubygems-uri "rb-inotify" version)) (sha256 (base32 - "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71")))) + "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005")))) (build-system ruby-build-system) (arguments - '(#:tests? #f ; there are no tests - #:phases - (modify-phases %standard-phases - ;; Building the gemspec with rake is not working here since it is - ;; generated with Jeweler. It is also unnecessary because the - ;; existing gemspec does not use any development tools to generate a - ;; list of files. - (replace 'build - (lambda _ - (invoke "gem" "build" "rb-inotify.gemspec")))))) + (list + #:tests? #f ; there are no tests + #:phases + #~(modify-phases %standard-phases + ;; Building the gemspec with rake is not working here since it is + ;; generated with Jeweler. It is also unnecessary because the + ;; existing gemspec does not use any development tools to generate a + ;; list of files. + (replace 'build + (lambda _ + (invoke "gem" "build" "rb-inotify.gemspec")))))) (propagated-inputs (list ruby-ffi)) (native-inputs @@ -7283,34 +7566,33 @@ development of Ruby gems.") "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-test-include-path - (lambda* (#:key inputs #:allow-other-keys) - (let* ((minitest (assoc-ref inputs "ruby-minitest-4"))) - (substitute* "Rakefile" - (("Hoe\\.add_include_dirs .*") - (string-append "Hoe.add_include_dirs \"" - minitest "/lib/ruby/vendor_ruby" - "/gems/minitest-" - ,(package-version ruby-minitest-4) - "/lib" "\"")))) - #t)) - (add-before 'check 'fix-test-assumptions - (lambda _ - ;; The test output includes the file name, so a couple of tests - ;; fail. Changing the regular expressions slightly fixes this - ;; problem. - (substitute* "test/test_mini_test.rb" - (("output.sub!\\(.*, 'FILE:LINE'\\)") - "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')") - (("gsub\\(/.*, 'FILE:LINE'\\)") - "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")) - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-test-include-path + (lambda* (#:key inputs #:allow-other-keys) + (let* ((minitest (assoc-ref inputs "ruby-minitest"))) + (substitute* "Rakefile" + (("Hoe\\.add_include_dirs .*") + (string-append "Hoe.add_include_dirs \"" + minitest "/lib/ruby/vendor_ruby" + "/gems/minitest-" + #$(package-version ruby-minitest-4) + "/lib" "\"")))))) + (add-before 'check 'fix-test-assumptions + (lambda _ + ;; The test output includes the file name, so a couple of tests + ;; fail. Changing the regular expressions slightly fixes this + ;; problem. + (substitute* "test/test_mini_test.rb" + (("output.sub!\\(.*, 'FILE:LINE'\\)") + "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')") + (("gsub\\(/.*, 'FILE:LINE'\\)") + "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))))))) (propagated-inputs - `(("ruby-minitest-4" ,ruby-minitest-4))) + (list ruby-minitest-4)) (native-inputs - (list ruby-hoe)) + (list ruby-hoe-3)) (synopsis "Adapter library between minitest and test/unit") (description "This library bridges the gap between the small and fast minitest and @@ -7332,20 +7614,21 @@ Ruby's large and slower test/unit.") ;; Rebuilding the gemspec seems to require git, even though this is not a ;; git repository, so we just build the gem from the existing gemspec. (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-test - (lambda - - (substitute* "tests/hsl_triple_test.rb" - (("0\\\\\\.0%") - "0\\.?0?%")))) - (replace 'build - (lambda _ - (invoke "gem" "build" "term-ansicolor.gemspec")))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-test + (lambda - + (substitute* "tests/hsl_triple_test.rb" + (("0\\\\\\.0%") + "0\\.?0?%")))) + (replace 'build + (lambda _ + (invoke "gem" "build" "term-ansicolor.gemspec")))))) (propagated-inputs (list ruby-tins)) (native-inputs - (list ruby-gem-hadar ruby-minitest-tu-shim)) + (list ruby-gem-hadar)) (synopsis "Ruby library to control the attributes of terminal output") (description "This Ruby library uses ANSI escape sequences to control the attributes @@ -7354,22 +7637,112 @@ of terminal output.") ;; There is no mention of the "or later" clause. (license license:gpl2))) +(define-public ruby-immutable-struct + (package + (name "ruby-immutable-struct") + (version "2.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/stitchfix/immutable-struct") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "17hlmy9jfwn3i5h2rwv832ycwcdqwxq7dkkd2yly28klwj0l52rq")))) + (build-system ruby-build-system) + (arguments + (list + ;; Issues with the lack of Set in Ruby 3 + #:ruby ruby-2.7 + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "ruby" (which "rspec")))))))) + (native-inputs + (list ruby-rspec)) + (synopsis "Ruby library for creating immutable struct classes") + (description + "Easily create value objects without the pain of Ruby's Struct (or its setters)") + (home-page "https://stitchfix.github.io/immutable-struct/") + (license license:expat))) + +(define-public ruby-faker + (package + (name "ruby-faker") + (version "3.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/faker-ruby/faker") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wwdwh5qwaxnd9dl6732mj6b953l5r32r4936pj5680963iagq59")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-rubocop-from-rakefile + (lambda _ + (substitute* "Rakefile" + (("require 'rubocop/rake_task'") "") + (("RuboCop::RakeTask\\.new") ""))))))) + (native-inputs (list ruby-yard ruby-simplecov ruby-timecop)) + (propagated-inputs (list ruby-i18n)) + (synopsis "Library for generating fake data") + (description "Faker is a port of Data::Faker from Perl. It is used to +easily generate fake data: names, addresses, phone numbers, etc.") + (home-page "https://github.com/faker-ruby/faker") + (license license:expat))) + (define-public ruby-terraform (package (name "ruby-terraform") - (version "0.22.0") + (version "1.7.0") (source (origin - (method url-fetch) - (uri (rubygems-uri "ruby-terraform" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/infrablocks/ruby_terraform") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324")))) + "18d1qkf2rbbvc2f0dxni85i2l2g8zn5kzh0v8zr1b86r1wjy6rvd")))) (build-system ruby-build-system) (arguments - '(#:tests? #f)) ; No included tests + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-bundler + (lambda _ + (substitute* "spec/spec_helper.rb" + (("require 'bundler/setup'") "")))) + (add-before 'check 'disable-falinig-tests + (lambda _ + (substitute* "spec/ruby_terraform/commands/plan_spec.rb" + (("it 'logs an error raised when running the command'") + "xit 'logs an error raised when running the command'") + (("it 'raises execution error when an error occurs running the command'") + "xit 'raises execution error when an error occurs running the command'")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list ruby-rspec + ruby-faker + ruby-simplecov)) (propagated-inputs - (list ruby-lino)) + (list ruby-lino ruby-immutable-struct)) (synopsis "Ruby wrapper around the Terraform command line interface") (description "This package provides a Ruby wrapper around the Terraform command line @@ -7398,6 +7771,55 @@ process tree data structure for the current host.") ;; There is no mention of the "or later" clause. (license license:gpl2))) +(define-public ruby-psych + (package + (name "ruby-psych") + (version "5.1.0") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/psych") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0m3668y79jcv2h9p7w74awwdyz13rpfr24w4nzh3iz96kxwssz83")))) + (build-system ruby-build-system) + (inputs + (list libyaml)) + (native-inputs + (list ruby-rake-compiler)) + (synopsis "Ruby YAML parser and emitter") + (description + "Psych is a YAML parser and emitter. Psych leverages libyaml for its +YAML parsing and emitting capabilities. In addition to wrapping libyaml, +Psych also knows how to serialize and de-serialize most Ruby objects to and +from the YAML format.") + (home-page "https://github.com/ruby/psych") + (license license:expat))) + +(define-public ruby-psych-3 + (package + (inherit ruby-psych) + (version "3.3.4") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/psych") + (commit (string-append "v" version)))) + (file-name (git-file-name "ruby-psych" version)) + (sha256 + (base32 + "11f7bxbhaj5697izap7hfbiln6lfk5cks78a498mkyhs2ylhl0fc")))) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "bundle" "exec" "rake" "default"))))))))) + (define-public ruby-utils (package (name "ruby-utils") @@ -7464,57 +7886,75 @@ a native C extension.") (define-public ruby-json-pure (package (name "ruby-json-pure") - (version "2.3.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "json_pure" version)) - (sha256 - (base32 - "00pziwkfqwk8vj19s65sdki31q1wvmf5v9b3sfglxm94qfvas1lx")))) + (version "2.6.3") + (source + (origin + ;; For tests + (method git-fetch) + (uri (git-reference + (url "https://github.com/flori/json.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0551269c98a07m6bl594syh5vknrm3c636a4dxis9jpsb7vf7lfx")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-rakefile - (lambda _ - (substitute* "Rakefile" - ;; Since this is not a git repository, do not call 'git'. - (("`git ls-files`") "`find . -type f |sort`"))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-rakefile + (lambda _ + (substitute* "Rakefile" + ;; Since this is not a git repository, do not call 'git'. + (("`git ls-files`") "`find . -type f |sort`"))))))) (native-inputs (list bundler ragel ruby-simplecov ruby-test-unit which)) (synopsis "JSON implementation in pure Ruby") (description "This package provides a JSON implementation written in pure Ruby.") - (home-page "https://flori.github.com/json/") + (home-page "https://flori.github.io/json/") (license license:ruby))) (define-public ruby-jwt (package (name "ruby-jwt") - (version "2.1.0") + (version "2.7.1") (source (origin - (method url-fetch) - (uri (rubygems-uri "jwt" version)) + ;; For tests + (method git-fetch) + (uri (git-reference + (url "https://github.com/jwt/ruby-jwt") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky")))) + "12ss6knfis6a6a41qndalnlvq3yykhpg6igzll8qyssnnwi9zdw7")))) (build-system ruby-build-system) (arguments - '(#:test-target "test" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "spec/spec_helper.rb" - (("require 'simplecov.*") "\n") - ;; Use [].each to disable running the SimpleCov configuration - ;; block - (("SimpleCov\\.configure") "[].each") - (("require 'codeclimate-test-reporter'") "") - (("require 'codacy-coverage'") "") - (("Codacy::Reporter\\.start") "")) - #t))))) + (list + #:test-target "test" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + (substitute* "ruby-jwt.gemspec" + (("spec\\.add_development_dependency 'appraisal'") "") + (("spec\\.add_development_dependency 'simplecov'") "")) + (substitute* "Gemfile" + (("gem 'rubocop'.*") "")) + (substitute* "Rakefile" + (("require 'rubocop/rake_task'") "") + (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "")) + (substitute* "spec/spec_helper.rb" + (("require 'simplecov.*") "\n") + ;; Use [].each to disable running the SimpleCov configuration + ;; block + (("SimpleCov\\.configure") "[].each") + (("require 'codeclimate-test-reporter'") "") + (("require 'codacy-coverage'") "") + (("Codacy::Reporter\\.start") ""))))))) (native-inputs (list bundler ruby-rspec ruby-rbnacl)) (synopsis "Ruby implementation of the JSON Web Token standard") @@ -7549,7 +7989,7 @@ a native C extension.") (define-public ruby-listen (package (name "ruby-listen") - (version "3.2.0") + (version "3.8.0") (source (origin ;; The gem does not include a Rakefile, so fetch from the Git @@ -7561,24 +8001,24 @@ a native C extension.") (file-name (git-file-name name version)) (sha256 (base32 - "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24")))) + "1skkglml094dw1xr4742in1rwwa84ld0mz4nkw6qa8pwhx48x2n5")))) (build-system ruby-build-system) (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-files-in-gemspec - (lambda _ - (substitute* "listen.gemspec" - (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`")) - #t)) - (add-before 'check 'remove-unnecessary-dependencies' - (lambda _ - (substitute* "Rakefile" - ;; Rubocop is for code linting, and is unnecessary for running - ;; the tests. - ((".*rubocop.*") "")) - #t))))) + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-files-in-gemspec + (lambda _ + (substitute* "listen.gemspec" + (("`git ls-files -z`") + "`find . -type f -printf '%P\\\\0' |sort -z`")))) + (add-before 'check 'remove-unnecessary-dependencies' + (lambda _ + (substitute* "Rakefile" + ;; Rubocop is for code linting, and is unnecessary for running + ;; the tests. + ((".*rubocop.*") ""))))))) (native-inputs (list bundler ruby-rspec)) (inputs @@ -7596,7 +8036,7 @@ you about the changes.") (define-public ruby-loofah (package (name "ruby-loofah") - (version "2.13.0") + (version "2.21.3") (home-page "https://github.com/flavorjones/loofah") (source (origin @@ -7607,7 +8047,7 @@ you about the changes.") (file-name (git-file-name name version)) (sha256 (base32 - "0rmsm7mckiq0gslfqdl02yvn500n42v84gq28qjqn4yq9jwfs9ga")))) + "1lh7cf56y1b0h090ahphvz7grq581phsamdl0rq59y0q9bqwrhg0")))) (build-system ruby-build-system) (native-inputs (list ruby-hoe ruby-hoe-markdown ruby-rr)) @@ -7872,36 +8312,35 @@ with PostgreSQL 9.3 and later.") (("require \"bundler/setup\".*") ""))))))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'sanitize-dependencies - (lambda _ - (substitute* "Rakefile" - ((".*chandler/tasks.*") "")))) - (add-after 'unpack 'skip-tmp-path-sensitive-test - (lambda _ - (substitute* "test/commands/where_test.rb" - (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*") - "unless true\n")))) - (add-before 'build 'compile - (lambda _ - (invoke "rake" "compile"))) - (add-before 'check 'disable-misbehaving-test - ;; Expects 5, gets 162. From a file containing ~10 lines. - (lambda _ - (substitute* "test/commands/finish_test.rb" - (("test_finish_inside_autoloaded_files") - "finish_inside_autoloaded_files")))) - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" (getcwd))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'sanitize-dependencies + (lambda _ + (substitute* "Rakefile" + ((".*chandler/tasks.*") "")))) + (add-after 'unpack 'skip-tmp-path-sensitive-test + (lambda _ + (substitute* "test/commands/where_test.rb" + (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*") + "unless true\n")))) + (add-before 'build 'compile + (lambda _ + (invoke "rake" "compile"))) + (add-before 'check 'patch-tests + (lambda _ + ;; srand': no implicit conversion of nil into Integer (TypeError) + (delete-file "test/minitest_runner_test.rb") + ;; Expects 5, gets 162. From a file containing ~10 lines. + (substitute* "test/commands/finish_test.rb" + (("test_finish_inside_autoloaded_files") + "finish_inside_autoloaded_files")))) + (add-before 'check 'set-home + (lambda _ + (setenv "HOME" (getcwd))))))) (native-inputs (list bundler - ;; Using minitest 5.17 would cause 5 new bug failures. This is - ;; probably related to - ;; https://github.com/deivid-rodriguez/byebug/pull/837. Use - ;; minitest 5.15 until this is resolved and released. - ruby-minitest-5.15 + ruby-minitest ruby-pry ruby-rake-compiler ruby-rubocop @@ -7996,7 +8435,7 @@ including comments and whitespace.") "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4")))) (build-system ruby-build-system) (native-inputs - (list ruby-rspec ruby-yard ruby-rubygems-tasks)) + (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks)) (synopsis "Calculate the differences between two tree-like structures") (description "This library provides functions to calculate the differences between two @@ -8024,7 +8463,7 @@ tree-like structures. It is similar to Ruby's built-in @code{TSort} module.") (list ruby-tdiff ruby-nokogiri)) (native-inputs - (list ruby-rspec ruby-yard ruby-rubygems-tasks)) + (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks)) (synopsis "Calculate the differences between two XML/HTML documents") (description "@code{Nokogiri::Diff} adds the ability to calculate the @@ -8063,7 +8502,7 @@ generates Ruby program.") (package (name "ruby-rack") ;; Do not upgrade to version 3, as Rails doesn't support it yet. - (version "2.2.6.3") + (version "2.2.7") (source (origin (method git-fetch) ;for tests @@ -8073,7 +8512,7 @@ generates Ruby program.") (file-name (git-file-name name version)) (sha256 (base32 - "19n33q0v15qjh7kbp2painyzyqg16kkf0mp68vcnlswghmmjcyzq")))) + "02r41fr61x0jfhraizc6bsgs40p8mlpvnzix71zwmcvibg384ify")))) (build-system ruby-build-system) (arguments (list @@ -8101,7 +8540,10 @@ generates Ruby program.") (number->string (+ 22 size-diff)) "-" (number->string (+ 33 size-diff))))))))))) - (native-inputs (list ruby-minitest ruby-minitest-global-expectations)) + (native-inputs + (list ruby-minitest + ruby-minitest-global-expectations + ruby-webrick)) (synopsis "Unified web application interface for Ruby") (description "Rack provides a minimal, modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses, @@ -8315,39 +8757,49 @@ techniques and a terse syntax.") (define-public ruby-rest-client (package (name "ruby-rest-client") - (version "2.0.2") + (version "2.1.0") (source (origin (method url-fetch) (uri (rubygems-uri "rest-client" version)) (sha256 (base32 - "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j")))) + "1qs74yzl58agzx9dgjhcpgmzfn61fqkk33k1js2y5yhlvc5l19im")))) (build-system ruby-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-before 'check 'remove-unnecessary-development-dependencies - (lambda _ - (substitute* "rest-client.gemspec" - ;; Remove rubocop as it's unused. Rubocop also indirectly - ;; depends on this package through ruby-parser and ruby-ast so - ;; this avoids a dependency loop. - ((".*rubocop.*") "\n") - ;; Remove pry as it's unused, it's a debugging tool - ((".*pry.*") "\n") - ;; Remove an unnecessarily strict rdoc dependency - ((".*rdoc.*") "\n")) - #t)) - (add-before 'check 'delete-network-dependent-tests - (lambda _ - (delete-file "spec/integration/request_spec.rb") - (delete-file "spec/integration/httpbin_spec.rb") - #t))))) + (list + ;; TODO Some tests are currently broken + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'remove-unnecessary-development-dependencies + (lambda _ + (substitute* "rest-client.gemspec" + ;; Remove rubocop as it's unused. Rubocop also indirectly + ;; depends on this package through ruby-parser and ruby-ast so + ;; this avoids a dependency loop. + ((".*rubocop.*") "\n") + ;; Remove pry as it's unused, it's a debugging tool + ((".*pry.*") "\n") + ;; Remove an unnecessarily strict rdoc dependency + ((".*rdoc.*") "\n")))) + (add-before 'check 'delete-network-dependent-tests + (lambda _ + (delete-file "spec/integration/request_spec.rb") + (delete-file "spec/integration/httpbin_spec.rb"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) (propagated-inputs - (list ruby-http-cookie ruby-mime-types ruby-netrc)) + (list ruby-http-accept-1 + ruby-http-cookie + ruby-mime-types + ruby-netrc)) (native-inputs - (list bundler ruby-webmock-2 ruby-rspec)) + (list bundler + ruby-webmock-2 + ruby-rspec)) (synopsis "Simple HTTP and REST client for Ruby") (description "@code{rest-client} provides a simple HTTP and REST client for Ruby, @@ -8461,7 +8913,7 @@ better performance than @code{Regexp} and @code{String} methods from the (define-public ruby-range-compressor (package (name "ruby-range-compressor") - (version "1.0.0") + (version "1.2.0") (source (origin (method git-fetch) @@ -8471,19 +8923,21 @@ better performance than @code{Regexp} and @code{String} methods from the (file-name (git-file-name name version)) (sha256 (base32 - "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54")))) + "1zmc44si5ac2h7r1x4f1j8z5yr6wz528c7dssh0g70fmczs3pfga")))) (build-system ruby-build-system) (arguments - `(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-after 'extract-gemspec 'strip-version-requirements - (lambda _ - (substitute* "range_compressor.gemspec" - (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped) - (string-append stripped "\n"))) - #t))))) + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'strip-version-requirements + (lambda _ + (substitute* "range_compressor.gemspec" + (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped) + (string-append stripped "\n")))))))) (native-inputs - (list ruby-rspec)) + (list ruby-rspec + ruby-sorted-set)) (synopsis "Simple arrays of objects to arrays of ranges compressor") (description "RangeCompresses is a tiny library that allows compressing arrays of objects into arrays of ranges. For example, it can turn the @@ -8751,15 +9205,30 @@ abstraction for Ruby.") (define-public ruby-benchmark-ips (package (name "ruby-benchmark-ips") - (version "2.8.2") + (version "2.12.0") (source (origin - (method url-fetch) - (uri (rubygems-uri "benchmark-ips" version)) + (method git-fetch) ;no tests in distributed gem + (uri (git-reference + (url "https://github.com/evanphx/benchmark-ips") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw")))) + "19pa2a1lgjzrxcz6vxwfiq5qq337vr15bbbpc2mfwzljdlx5059s")))) (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "Gemfile" + (("gem 'rake'.*") + "gem 'rake'")) + (substitute* "benchmark-ips.gemspec" + (("git ls-files -- examples lib") + "find examples lib -type f | sort"))))))) (native-inputs (list ruby-hoe)) (synopsis "Iterations per second enhancement for the Ruby Benchmark module") @@ -8858,7 +9327,7 @@ top of Faraday.") (define-public ruby-octokit (package (name "ruby-octokit") - (version "6.1.0") + (version "6.1.1") (source (origin (method git-fetch) (uri (git-reference @@ -8867,15 +9336,22 @@ top of Faraday.") (file-name (git-file-name name version)) (sha256 (base32 - "01njrd17bz28mlsa8hi9gad7s6d1d0vpyn0g66p3d42zgplr9qkq")))) + "02bcmh0b0v80cis1l80lhzxw8adb69xkz6qgg4m7qcmj3y5arwmk")))) (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + (substitute* "spec/spec_helper.rb" + (("require 'pry-byebug'") ""))))))) (native-inputs (list ruby-faraday-multipart ruby-jwt ruby-mime-types ruby-multi-json ruby-netrc - ruby-pry-byebug ruby-rbnacl ruby-rspec ruby-simplecov @@ -8923,33 +9399,42 @@ navigation capabilities to @code{pry}, using @code{byebug}.") (define-public ruby-stackprof (package (name "ruby-stackprof") - (version "0.2.17") + (version "0.2.25") (source (origin (method url-fetch) (uri (rubygems-uri "stackprof" version)) (sha256 - (base32 "06lz70k8c0r7fyxk1nc3idh14x7nvsr21ydm1bsmbj00jyhmfzsn")))) + (base32 "0bhdgfb0pmw9mav1kw9fn0ka012sa0i3h5ppvqssw5xq48nhxnr8")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'skip-dubious-test - (lambda _ - ,@(if (or (target-riscv64?) - (target-ppc32?)) - ;; This unreliable test can fail with "Expected 32 to be <= 25." - '((substitute* "test/test_stackprof.rb" - ((".*assert_operator profile\\[:missed_samples.*") ""))) - ;; This unreliable test can fail with "Expected 0 to be >= 1." - '((substitute* "test/test_stackprof.rb" - (("def test_(cputime)" _ name) - (string-append "def skip_" name))))))) - (add-before 'check 'build-tests - (lambda _ - (invoke "rake" "compile")))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'patch-gemspec + (lambda _ + (substitute* "stackprof.gemspec" + (("rake-compiler.*") + "rake-compiler>.freeze, [\"> 0.9\"])\n") + (("mocha.*") + "mocha>.freeze, [\"> 0.14\"])\n")))) + (add-before 'check 'skip-dubious-test + (lambda _ + (substitute* "test/test_stackprof.rb" + ;; This unreliable test can fail with "Expected 0 to be >= 1." + (("def test_(cputime)" _ name) + (string-append "def skip_" name)) + ;; This test often fails + (("def test_gc") "def skip_test_gc")))) + (add-before 'check 'build-tests + (lambda _ + (invoke "rake" "compile"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "bundle" "exec" "rake" "default"))))))) (native-inputs - (list ruby-mocha ruby-rake-compiler)) + (list bundler ruby-mocha-1 ruby-rake-compiler)) (synopsis "Sampling profiler for Ruby code") (description "@code{stackprof} is a fast sampling profiler for Ruby code, with cpu, @@ -9024,7 +9509,7 @@ variable length integers (varint) in Ruby Protocol Buffers.") (define-public ruby-version-gem (package (name "ruby-version-gem") - (version "1.1.2") + (version "1.1.3") (source (origin (method git-fetch) ;for tests (uri (git-reference @@ -9033,39 +9518,31 @@ variable length integers (varint) in Ruby Protocol Buffers.") (file-name (git-file-name name version)) (sha256 (base32 - "17y4dydlczd5xvvwfy94x63d5wi14cdkfhi6g94fm1sgsxxzzmq0")))) + "1wazx2jr9vx5wm48fy8bccvfwhg7y2s8shfw9q81dhb4yvwk6gbf")))) (build-system ruby-build-system) (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - (("^linting = .*") - "linting = false\n") - (("^coverage = .*") - "coverage = false\n") - (("^debug = .*") - "debug = false\n")) - (substitute* "spec/spec_helper.rb" - (("^RUN_COVERAGE = .*") - "RUN_COVERAGE = false\n") - (("^ALL_FORMATTERS = .*") - "ALL_FORMATTERS = false\n")))) - (add-before 'build 'drop-signing-key-requirement - (lambda _ - (substitute* "version_gem.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil")))) - (add-before 'check 'disable-problematic-tests - (lambda _ - (substitute* "spec/version_gem/ruby_spec.rb" - ;; The test validates the minimum version of - ;; Ruby to be 2.7.7, but because our Ruby is - ;; 2.7.4 grafted with 2.7.7, the version seen is - ;; 2.7.4 and it fails. - (("it 'returns true when current ruby greater \ -than minimum'" all) - (string-append "x" all)))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "Gemfile" + (("^linting = .*") + "linting = false\n") + (("^coverage = .*") + "coverage = false\n") + (("^debug = .*") + "debug = false\n")) + (substitute* "spec/spec_helper.rb" + (("^RUN_COVERAGE = .*") + "RUN_COVERAGE = false\n") + (("^ALL_FORMATTERS = .*") + "ALL_FORMATTERS = false\n")))) + (add-before 'build 'drop-signing-key-requirement + (lambda _ + (substitute* "version_gem.gemspec" + (("spec.signing_key =.*") + "spec.signing_key = nil"))))))) (native-inputs (list ruby-rspec ruby-rspec-block-is-expected)) (synopsis "Improved @code{Version} module for Ruby") (description "VersionGem aims to provide introspection of a @code{Version} @@ -9153,7 +9630,7 @@ Profiling multiple threads simultaneously is supported. (define-public ruby-ruby-memcheck (package (name "ruby-ruby-memcheck") - (version "1.2.0") + (version "1.3.2") (source (origin (method git-fetch) (uri (git-reference @@ -9162,10 +9639,13 @@ Profiling multiple threads simultaneously is supported. (file-name (git-file-name name version)) (sha256 (base32 - "1sx8nhx7w4z5s5vj6kq6caqsfznswqzwca372j82cd80hf9iznra")))) + "0fj4j4d062sw2kx2qlj877gjbj1xbb691njr8x9nbah6615idlni")))) (build-system ruby-build-system) (arguments (list + ;; The tests seem to fail on 32bit x86 + #:tests? (not (or (target-x86-32?) + (%current-target-system))) #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-valgrind-path @@ -9193,7 +9673,7 @@ during shutdown.") (define-public ruby-memory-profiler (package (name "ruby-memory-profiler") - (version "1.0.0") + (version "1.0.1") (source (origin (method git-fetch) @@ -9203,7 +9683,7 @@ during shutdown.") (file-name (git-file-name name version)) (sha256 (base32 - "07yqv11q68xg2fqkrhs6ysngryk8b9zq6qzh24rgx9xqv6qfnj0w")))) + "1z1x0rymfv45gh1y3s46w5pga5y8cvgn228jiwlnhc8hin3zig84")))) (build-system ruby-build-system) (synopsis "Memory profiling routines for Ruby") (description @@ -9534,6 +10014,7 @@ CI environment from environment variables.") (list ruby-cucumber-compatibility-kit ruby-nokogiri ruby-pry + ruby-webrick ruby-rspec)) (synopsis "Describe automated tests in plain language") (description "Cucumber is a tool for running automated tests written in @@ -9784,28 +10265,38 @@ is an infix boolean expression used by Cucumber.") (home-page "https://github.com/cucumber/tag-expressions") (license license:expat))) -(define-public ruby-bindex +(define-public ruby-skiptrace (package - (name "ruby-bindex") - (version "0.5.0") + (name "ruby-skiptrace") + (version "0.8.1") (source (origin (method url-fetch) - (uri (rubygems-uri "bindex" version)) + (uri (rubygems-uri "skiptrace" version)) (sha256 (base32 - "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i")))) + "1qpjy6pqd8hx4w7bai64jsr10mwbpnnb65wcbssyqcnalimi1s12")))) (build-system ruby-build-system) (arguments - '(#:test-target "default")) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-git-from-gemspec + (lambda _ + (substitute* "skiptrace.gemspec" + (("`git ls-files -z`") "`find . -type f -print0 |sort -z`")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "bundle" "exec" "rake" "default"))))))) (native-inputs (list bundler ruby-rake-compiler)) (synopsis "Provides access for bindings relating to Ruby exceptions") (description - "@code{bindex} provides a way to access the bindings that relate to + "@code{skiptrace} provides a way to access the bindings that relate to exceptions in Ruby, providing more information about the context in which the exception occurred.") - (home-page "https://github.com/gsamokovarov/bindex") + (home-page "https://github.com/gsamokovarov/skiptrace") (license license:expat))) (define-public ruby-bio-logger @@ -9833,25 +10324,25 @@ features such as filtering and fine grained logging.") (define-public ruby-yajl-ruby (package (name "ruby-yajl-ruby") - (version "1.4.1") + (version "1.4.3") (source (origin (method url-fetch) (uri (rubygems-uri "yajl-ruby" version)) (sha256 (base32 - "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf")))) + "1lni4jbyrlph7sz8y49q84pb0sbj82lgwvnjnsiv01xf26f4v5wc")))) (build-system ruby-build-system) (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-before 'check 'patch-test-to-update-load-path - (lambda _ - (substitute* "spec/parsing/large_number_spec.rb" - (("require \"yajl\"") - "$LOAD_PATH << 'lib'; require 'yajl'")) - #t))))) + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'patch-test-to-update-load-path + (lambda _ + (substitute* "spec/parsing/large_number_spec.rb" + (("require \"yajl\"") + "$LOAD_PATH << 'lib'; require 'yajl'"))))))) (native-inputs (list ruby-rake-compiler ruby-rspec)) (synopsis "Streaming JSON parsing and encoding library for Ruby") @@ -9868,7 +10359,7 @@ A modified copy of yajl is used, and included in the package.") (define-public ruby-yard (package (name "ruby-yard") - (version "0.9.25") + (version "0.9.34") (source (origin (method git-fetch) @@ -9879,20 +10370,42 @@ A modified copy of yajl is used, and included in the package.") (file-name (git-file-name name version)) (sha256 (base32 - "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa")))) + "10jq0hyzyy0d6l63jxld32g36fhrclkb3rwnyp47igcik73kbagb")))) (build-system ruby-build-system) (arguments - ;; Note: Tests are willfully disabled to alleviate dependency cycle - ;; problems. - `(#:tests? #f - #:phases (modify-phases %standard-phases - (add-after 'unpack 'do-not-set-date-in-gemspec - ;; Fix a reproducibility issue (see: - ;; https://github.com/lsegal/yard/issues/1343). - (lambda _ - (substitute* "yard.gemspec" - ((".*s\\.date.*") "")) - #t))))) + (list + #:test-target "default" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'do-not-set-date-in-gemspec + ;; Fix a reproducibility issue (see: + ;; https://github.com/lsegal/yard/issues/1343). + (lambda _ + (substitute* "yard.gemspec" + ((".*s\\.date.*") "")))) + (add-before 'check 'prepare-for-tests + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (substitute* "Rakefile" + ((".*[Ss]amus.*") "")) + ;; Delete the Gemfile to avoid errors relating to it. + (delete-file "Gemfile") + ;; $HOME needs to be set to somewhere writeable for tests to + ;; run. + (setenv "HOME" "/tmp") + ;; This test fails + ;; #<File (class)> received :open with unexpected arguments + ;; expected: ("gem1.gem", "rb") + ;; got: ("/gnu/store/.../lib/ruby/vendor_ruby/specifications/asciidoctor-2.0.18.gemspec", "r:UTF-8:-") + (substitute* "spec/cli/diff_spec.rb" + (("it \"searches for .gem file") + "xit \"searches for .gem file")))))))) + (native-inputs + (list ruby-rspec + ruby-rack + ruby-redcloth + ruby-webrick + ruby-asciidoctor/minimal)) (synopsis "Documentation generation tool for Ruby") (description "YARD is a documentation generation tool for the Ruby programming language. It enables the user to generate consistent, usable @@ -9902,27 +10415,15 @@ definitions.") (home-page "https://yardoc.org") (license license:expat))) -(define-public ruby-yard-with-tests - (package - (inherit ruby-yard) - (name "ruby-yard-with-tests") - (arguments - (substitute-keyword-arguments - (strip-keyword-arguments '(#:tests?) (package-arguments ruby-yard)) - ((#:test-target _ "default") "default") - ((#:phases phases '%standard-phases) - `(modify-phases ,phases - (add-before 'check 'prepare-for-tests - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (substitute* "Rakefile" - ((".*[Ss]amus.*") "")) - ;; Delete the Gemfile to avoid errors relating to it. - (delete-file "Gemfile") - ;; $HOME needs to be set to somewhere writeable for tests to - ;; run. - (setenv "HOME" "/tmp")))))))) - (native-inputs (list ruby-rspec ruby-rack ruby-redcloth ruby-asciidoctor)))) +(define-public ruby-yard/minimal + (hidden-package + (package + (inherit ruby-yard) + (arguments + (ensure-keyword-arguments + (package-arguments ruby-yard) + (list #:tests? #f))) + (native-inputs '())))) (define-public ruby-spectroscope (package @@ -10278,14 +10779,14 @@ look up the likely MIME type definitions.") (define-public ruby-mime-types (package (name "ruby-mime-types") - (version "3.1") + (version "3.4.1") (source (origin (method url-fetch) (uri (rubygems-uri "mime-types" version)) (sha256 (base32 - "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m")))) + "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb")))) (build-system ruby-build-system) (propagated-inputs (list ruby-mime-types-data)) @@ -10293,7 +10794,6 @@ look up the likely MIME type definitions.") (list ruby-hoe ruby-fivemat ruby-minitest-focus - ruby-minitest-rg ruby-minitest-bonus-assertions ruby-minitest-hooks)) (synopsis "Library and registry for MIME content type definitions") @@ -10383,25 +10883,40 @@ neither too verbose nor too minimal.") (define-public ruby-sqlite3 (package (name "ruby-sqlite3") - (version "1.4.4") + (version "1.6.3") (source (origin - (method url-fetch) - (uri (rubygems-uri "sqlite3" version)) + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/sparklemotion/sqlite3-ruby") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "1z1wa639c278bsipczn6kv8b13fj85pi8gk7x462chqx6k0wm0ax")))) + "0ijj8z8fpk2lczydkxv71k250g5gd8ip8klsscxc9f16b01gh9qs")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'add-gemtest-file - ;; This file exists in the repository but is not distributed. - (lambda _ (invoke "touch" ".gemtest")))))) + (list + #:gem-flags #~(list "--" "--enable-system-libraries") + #:phases + #~(modify-phases %standard-phases + (delete 'check) + (add-after 'install 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "GEM_PATH" + (string-append (getenv "GEM_PATH") ":" + #$output "/lib/ruby/vendor_ruby")) + (invoke "rake" "test"))))))) + (propagated-inputs + (list ruby-mini-portile-2)) (inputs (list sqlite)) (native-inputs - (list ruby-hoe ruby-rake-compiler ruby-mini-portile-2)) + (list ruby-hoe + ruby-ruby-memcheck + ruby-rake-compiler + ruby-rake-compiler-dock)) (synopsis "Interface with SQLite3 databases") (description "This module allows Ruby programs to interface with the SQLite3 database @@ -10962,35 +11477,87 @@ defined in a @file{.env} file.") defined in a @file{.env} file. This is the Rails variant, adapted for use with Ruby on Rails projects."))) +(define-public ruby-http-accept + (package + (name "ruby-http-accept") + (version "2.2.0") + (source (origin + (method git-fetch) ;for the tests + (uri (git-reference + (url "https://github.com/socketry/http-accept") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1d69cy12hqbcqrhw4dibvdq5pqklxsa59kih6pzl479nxq79rgs7")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-missing-key-directive + ;; This seem to be a common problem in Ruby projects (see: + ;; https://github.com/prawnpdf/ttfunk/issues/99). + (lambda _ + (substitute* "http-accept.gemspec" + ((".*spec.signing_key.*") "")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list ruby-rspec + ruby-covered)) + (synopsis "Parse Accept and Accept-Language HTTP headers") + (description + "This package provides a set of parsers for Accept and Accept-Language +HTTP headers.") + (home-page "https://github.com/socketry/http-accept") + (license license:expat))) + +(define-public ruby-http-accept-1 + (package + (inherit ruby-http-accept) + (version "1.7.0") + (source (origin + (method git-fetch) ;for the tests + (uri (git-reference + (url "https://github.com/ioquatix/http-accept") + (commit (string-append "v" version)))) + (file-name (git-file-name "ruby-http-accept" version)) + (sha256 + (base32 + "1hnqmqpa135s3xgcvv30qzqm8zp88my1aj05m72d2q9cvc31g92z")))))) + (define-public ruby-http-cookie (package (name "ruby-http-cookie") - (version "1.0.3") + (version "1.0.5") (source (origin (method url-fetch) (uri (rubygems-uri "http-cookie" version)) (sha256 (base32 - "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g")))) + "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'add-dependency-to-bundler - (lambda _ - ;; Fix NameError - (substitute* "Rakefile" - (("HTTP::Cookie::VERSION") - "Bundler::GemHelper.gemspec.version")) - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'add-dependency-to-bundler + (lambda _ + ;; Fix NameError + (substitute* "Rakefile" + (("HTTP::Cookie::VERSION") + "Bundler::GemHelper.gemspec.version"))))))) (propagated-inputs (list ruby-domain-name)) (native-inputs - `(("rubysimplecov" ,ruby-simplecov) - ("bundler" ,bundler) - ("ruby-sqlite3" ,ruby-sqlite3) - ("ruby-test-unit" ,ruby-test-unit))) + (list ruby-simplecov + bundler + ruby-sqlite3 + ruby-test-unit)) (synopsis "Handle HTTP Cookies based on RFC 6265") (description "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on @@ -11141,6 +11708,33 @@ secure hash algorithm for hashing passwords.") (home-page "https://github.com/bcrypt-ruby/bcrypt-ruby") (license license:expat))) +(define-public ruby-bcrypt-pbkdf + (package + (name "ruby-bcrypt-pbkdf") + (version "1.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "bcrypt_pbkdf" version)) + (sha256 + (base32 + "0ndamfaivnkhc6hy0yqyk2gkwr6f3bz6216lh74hsiiyk3axz445")))) + (build-system ruby-build-system) + (arguments + (list #:phases #~(modify-phases %standard-phases + (add-before 'build 'compile + (lambda _ + (invoke "rake" "compile")))))) + (native-inputs (list ruby-minitest ruby-rake-compiler + ruby-rake-compiler-dock ruby-rdoc)) + (synopsis "Reading password encrypted Ed25519 keys in Ruby") + (description + "This gem implements @samp{bcrypt_pbkdf}, which is a variant of +PBKDF2 (Password-Based Key Derivation Function 2) with bcrypt-based +pseudorandom function. This is currently used by @samp{net-ssh} to +read password encrypted Ed25519 keys.") + (home-page "https://github.com/net-ssh/bcrypt_pbkdf-ruby") + (license license:expat))) + (define-public ruby-bio-commandeer (package (name "ruby-bio-commandeer") @@ -11544,7 +12138,7 @@ part of the Prawn PDF generator.") (define-public ruby-puma (package (name "ruby-puma") - (version "6.2.0") + (version "6.3.0") (source (origin (method git-fetch) ;for tests @@ -11554,17 +12148,23 @@ part of the Prawn PDF generator.") (file-name (git-file-name name version)) (sha256 (base32 - "0d71h5ggvfgnxq9msd1hmcz3s8mspzf7kqas1hzr0w9pfafddyv3")))) + "0qnayzgyr23w87jc849r00394hv1gw2rk9080nws43ilnycagzxq")))) (build-system ruby-build-system) (arguments (list #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'patch-Gemfile + (lambda _ + (substitute* "Gemfile" + (("gem \"rake-compiler\".*") + "gem 'rake-compiler'\n")))) (add-after 'unpack 'disable-rubocop (lambda _ (setenv "PUMA_NO_RUBOCOP" "1"))) (add-after 'unpack 'use-rack-2 (lambda _ + (setenv "PUMA_CI_RACK" "rack2") (setenv "PUMA_CI_RACK_2" "1"))) (add-before 'build 'increase-resource-limits (lambda _ @@ -11677,7 +12277,7 @@ or JRuby.") "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650")))) (build-system ruby-build-system) (propagated-inputs - (list ruby-hoe)) + (list ruby-hoe-3)) (synopsis "Hoe plugins for tighter Git integration") (description "This package provides a set of Hoe plugins for tighter Git integration. @@ -11744,25 +12344,29 @@ associated records.") (define-public ruby-timecop (package (name "ruby-timecop") - (version "0.9.1") + (version "0.9.6") (source (origin (method url-fetch) (uri (rubygems-uri "timecop" version)) (sha256 (base32 - "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp")))) + "0dlx4gx0zh836i7nzna03xdl7fc233s5z6plnr6k3kw46ah8d1fc")))) (build-system ruby-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'set-check-rubylib - (lambda _ - ;; Set RUBYLIB so timecop tests finds its own lib. - (setenv "RUBYLIB" "lib") - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'set-check-rubylib + (lambda _ + ;; Set RUBYLIB so timecop tests finds its own lib. + (setenv "RUBYLIB" "lib")))))) (native-inputs - (list bundler ruby-minitest-rg ruby-mocha ruby-activesupport)) + (list bundler + ruby-minitest-rg + ruby-mocha + ruby-activesupport + ruby-pry)) (synopsis "Test mocks for time-dependent functions") (description "Timecop provides \"time travel\" and \"time freezing\" capabilities, @@ -11911,7 +12515,8 @@ libraries for compiling Ruby native extensions.") "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb")))) (build-system ruby-build-system) (native-inputs - (list ruby-hoe)) + (list ruby-hoe + ruby-minitest)) (synopsis "RFC 2617 HTTP digest authentication library") (description "This library implements HTTP's digest authentication scheme based on @@ -12217,7 +12822,7 @@ programs running in the background, in Ruby.") (("RuboCop::RakeTask\\.new") "")) #t))))) (native-inputs - (list bundler ruby-yard ruby-mocha ruby-minitest-reporters)) + (list bundler ruby-yard/minimal ruby-mocha ruby-minitest-reporters)) (home-page "https://simonecarletti.com/code/publicsuffix-ruby/") (synopsis "Domain name parser") (description "The gem @code{public_suffix} is a domain name parser, @@ -12264,7 +12869,7 @@ all known public suffixes.") ruby-rspec-its-minimal ruby-simplecov ruby-sporkmonger-rack-mount - ruby-yard)) + ruby-yard/minimal)) (propagated-inputs (list ruby-public-suffix)) (home-page "https://github.com/sporkmonger/addressable") @@ -12371,14 +12976,14 @@ your application.") (define-public ruby-kpeg (package (name "ruby-kpeg") - (version "1.1.0") + (version "1.3.3") (source (origin (method url-fetch) (uri (rubygems-uri "kpeg" version)) (sha256 (base32 - "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia")))) + "0jxddpyb23digcd8b1b02gn94057a7mw17680c3c8s3bcb5xqfnp")))) (build-system ruby-build-system) (native-inputs (list ruby-hoe)) @@ -12394,7 +12999,7 @@ technique.") (define-public ruby-rdoc (package (name "ruby-rdoc") - (version "6.2.0") + (version "6.5.0") (source (origin (method git-fetch) @@ -12404,7 +13009,7 @@ technique.") (file-name (git-file-name name version)) (sha256 (base32 - "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6")))) + "06dcjs4s2phvg9bq42mlfqv4c4zpdr8w7aq107lm2q0qqqw7xjlr")))) (build-system ruby-build-system) (arguments `(#:phases @@ -12455,20 +13060,35 @@ about the changes.") (define-public ruby-terminfo (package (name "ruby-terminfo") - (version "0.1.1") + (version "0.2") (source (origin (method url-fetch) - (uri (rubygems-uri "ruby-terminfo" version)) + (uri (string-append + "http://www.a-k-r.org/" name "/" name "-" version ".tar.gz")) (sha256 (base32 - "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm")))) + "1n59dw351z6nzylgj0gpx4rpz6qhf8lrhzcbp1xqfpqvryhaxrjh")))) (build-system ruby-build-system) (arguments - `(#:test-target "test" - ;; Rakefile requires old packages and would need modification to - ;; work with current software. - #:tests? #f)) + (list + #:test-target "test" + #:phases + #~(modify-phases %standard-phases + (delete 'replace-git-ls-files) + (replace 'build + (lambda _ + (invoke "ruby" "extconf.rb") + (invoke "make"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (for-each (lambda (f) + (invoke "ruby" "-I" "test" f)) + (find-files "test" "^test_.*\\.rb$"))))) + (replace 'install + (lambda _ + (invoke "make" "install" (string-append "prefix=" #$output))))))) (inputs (list ncurses)) (native-inputs @@ -12516,20 +13136,20 @@ strings or files.") (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr")))) (build-system ruby-build-system) (propagated-inputs - `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3) - ("ruby-diffy" ,ruby-diffy) - ("ruby-terminfo" ,ruby-terminfo))) + (list ruby-command-line-reporter-3 + ruby-diffy)) (arguments - `(;; This package contains tests for a sass implementation, and the to - ;; avoid any circular dependencies, the tests are not run here - #:tests? #f - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-test - (lambda _ - (delete-file "spec/values/colors/alpha_hex-3.5/error") - (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css" - (("string") "color"))))))) + (list + ;; This package contains tests for a sass implementation, and the to + ;; avoid any circular dependencies, the tests are not run here + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-test + (lambda _ + (delete-file "spec/values/colors/alpha_hex-3.5/error") + (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css" + (("string") "color"))))))) (home-page "https://github.com/sass/sass-spec") (synopsis "Test suite for Sass") (description "Sass Spec is a test suite for Sass. Test cases are all in @@ -12539,14 +13159,19 @@ the @file{spec} directory.") (define-public ruby-sass (package (name "ruby-sass") - (version "3.6.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "sass" version)) - (sha256 - (base32 - "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh")))) + (version "3.7.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sass/ruby-sass") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "03215h9jkni3l9w6lq28p8adaj3qzb47qgxd20l6kldjnm1a1yky")))) (build-system ruby-build-system) + (arguments + (list #:test-target "test:ruby")) (propagated-inputs (list ruby-sass-listen)) (native-inputs @@ -13241,7 +13866,7 @@ hashes more powerful.") "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw")))) (build-system ruby-build-system) (native-inputs - (list ruby-hoe)) + (list ruby-hoe-3)) (home-page "https://github.com/adrianomitre/heredoc_unindent") (synopsis "Heredoc indentation cleaner") (description "This gem removes common margin from indented strings, such @@ -13273,17 +13898,18 @@ indentation will probably be an issue and hence this gem.") (native-inputs (list ruby-rspec ruby-hashie ruby-heredoc-unindent)) (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-before 'check 'set-TZ - (lambda _ - ;; This test is dependent on the timezone - ;; spec/transform/to_date_spec.rb:35 - ;; # SafeYAML::Transform::ToDate converts times to the local - ;; timezone - (setenv "TZ" "UTC-11") - #t))))) + (list + #:ruby ruby-2.7 + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'set-TZ + (lambda _ + ;; This test is dependent on the timezone + ;; spec/transform/to_date_spec.rb:35 + ;; # SafeYAML::Transform::ToDate converts times to the local + ;; timezone + (setenv "TZ" "UTC-11")))))) (home-page "https://github.com/dtao/safe_yaml") (synopsis "YAML parser") (description "The SafeYAML gem provides an alternative implementation of @@ -13920,6 +14546,10 @@ for scalable network clients and servers.") (list #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + (substitute* "Gemfile" + (("gem \"pry-byebug\"") "")))) (replace 'replace-git-ls-files (lambda _ (substitute* "language_server-protocol.gemspec" @@ -13932,8 +14562,7 @@ for scalable network clients and servers.") ruby-benchmark-ips ruby-m ruby-minitest - ruby-minitest-power-assert - ruby-pry-byebug)) + ruby-minitest-power-assert)) (synopsis "Language Server Protocol (LSP) development kit for Ruby") (description "This package provides a Language Server Protocol (LSP) development kit for Ruby.") @@ -13955,6 +14584,10 @@ development kit for Ruby.") (list #:phases #~(modify-phases %standard-phases (add-after 'extract-gemspec 'relax-requirements (lambda _ + (substitute* "spy.gemspec" + ((".*pry-byebug.*") "")) + (substitute* "test/test_helper.rb" + ((".*pry-byebug.*") "")) (substitute* "Gemfile" ((".*redcarpet.*") "") ((".*yard.*") ""))))))) @@ -13962,7 +14595,6 @@ development kit for Ruby.") (list ruby-coveralls ruby-minitest-reporters ruby-pry - ruby-pry-byebug ruby-rspec-core ruby-rspec-expectations)) (synopsis "Mocking library for Ruby") @@ -14123,7 +14755,6 @@ can be used to build formatters, linters, language servers, and more.") ruby-rubocop-performance ruby-concurrent-ruby ruby-pry - ruby-pry-byebug ruby-parser ruby-subprocess)) (synopsis "Runtime type checking component for Sorbet") @@ -14558,27 +15189,27 @@ is also included.") (define-public swagger-diff (package (name "swagger-diff") - (version "1.1.2") + (version "2.0.0") (source (origin (method url-fetch) (uri (rubygems-uri "swagger-diff" version)) (sha256 (base32 - "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn")))) + "18kbrijkafs3vfsbaqz0cqfj7jrz3aj8xr4fgn5if63wlximybv2")))) (build-system ruby-build-system) (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - ;; Don't run or require rubocop, the code linting tool, as this is a - ;; bit unnecessary. - (add-after 'unpack 'dont-run-rubocop - (lambda _ - (substitute* "Rakefile" - ((".*rubocop.*") "") - ((".*RuboCop.*") "")) - #t))))) + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + ;; Don't run or require rubocop, the code linting tool, as this is a + ;; bit unnecessary. + (add-after 'unpack 'dont-run-rubocop + (lambda _ + (substitute* "Rakefile" + ((".*rubocop.*") "") + ((".*RuboCop.*") ""))))))) (propagated-inputs (list ruby-json-schema)) (native-inputs @@ -15087,13 +15718,13 @@ floating-point numbers or complex numbers as arguments.") (define-public ruby-sucker-punch (package (name "ruby-sucker-punch") - (version "3.0.1") + (version "3.1.0") (source (origin (method url-fetch) (uri (rubygems-uri "sucker_punch" version)) (sha256 - (base32 "0yams24wndpj7dzdysvm4z1w6ggg4xvj4snxba66prahhxvik4xl")))) + (base32 "12by9vx8q6l4i56q62k1s1ymaxbpg4rny5zngj5i5h09kyh2yp4p")))) (build-system ruby-build-system) (arguments `(#:phases @@ -15689,29 +16320,36 @@ HTTPS server, a proxy server, and a virtual-host server.") (license license:bsd-2))) (define-public ruby-websocket - (package - (name "ruby-websocket") - (version "1.2.9") - (source (origin - (method url-fetch) - (uri (rubygems-uri "websocket" version)) - (sha256 - (base32 - "0dib6p55sl606qb4vpwrvj5wh881kk4aqn2zpfapf8ckx7g14jw8")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'disable-rubocop - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") ""))))))) - (native-inputs (list ruby-rspec)) - (synopsis "WebSocket protocol Ruby library") - (description "This package provides a Ruby library to handle the WebSocket + (let ((commit "950e416a19a76c7e6a673a7e5baa6283476dbec1") + (revision "1")) + (package + (name "ruby-websocket") + (version (git-version "1.2.9" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/imanel/websocket-ruby") + (commit commit))) + (sha256 + (base32 + "1i6r0glpxy47zdf76aqgcpjgcgydla0733hfdhp628pmrinnkgwv")) + (file-name (git-file-name name version)))) + (build-system ruby-build-system) + (arguments (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'disable-rubocop + (lambda _ + (substitute* "Rakefile" + (("require 'rubocop/rake_task'") "") + (("RuboCop::RakeTask.new") ""))))))) + (native-inputs + (list ruby-rspec + ruby-webrick)) + (synopsis "WebSocket protocol Ruby library") + (description "This package provides a Ruby library to handle the WebSocket protocol.") - (home-page "https://github.com/imanel/websocket-ruby") - (license license:expat))) + (home-page "https://github.com/imanel/websocket-ruby") + (license license:expat)))) (define-public ruby-interception (package @@ -15765,7 +16403,7 @@ any unhandled exceptions.") (define-public ruby-braintree (package (name "ruby-braintree") - (version "4.10.0") + (version "4.12.0") (source (origin (method git-fetch) ;for tests @@ -15774,27 +16412,30 @@ any unhandled exceptions.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "01b5bp8q038ray5wwg3qhg4hj3r5a48vnfzs3gxkdjm5ky6bmn4p")))) + (base32 "0gfgkymy3655drwgs42bj9ap9qib1l30sajxmypmp6s75m9w3gsh")))) (build-system ruby-build-system) (arguments - `(#:test-target "test:unit" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'disable-rubocop - (lambda _ - (substitute* "Rakefile" - (("sh \"rubocop\"") "")))) - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - (("gem \"libxml-ruby\", \"3.2.0\"") - "gem \"libxml-ruby\", \"~> 3.0.0\"") - (("gem \"rspec\", \"3.9.0\"") - "gem \"rspec\", \">= 3.9.0\"") - (("gem \"webrick\", \"~>1.7.0\"") - "gem \"webrick\", \">=1.7.0\"") - ((".*gem \"rubocop\".*") "") - ((".*gem \"rspec_junit_formatter\".*") ""))))))) + (list + #:test-target "test:unit" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-rubocop + (lambda _ + (substitute* "Rakefile" + (("sh \"rubocop\"") "")))) + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "Gemfile" + (("gem \"pry\".*") "gem 'pry'\n") + (("gem \"rake\".*") "gem 'rake'\n") + (("gem \"libxml-ruby\", \"3.2.0\"") + "gem \"libxml-ruby\", \"~> 3.0.0\"") + (("gem \"rspec\", \"3.9.0\"") + "gem \"rspec\", \">= 3.9.0\"") + (("gem \"webrick\", \"~>1.7.0\"") + "gem \"webrick\", \">=1.7.0\"") + ((".*gem \"rubocop\".*") "") + ((".*gem \"rspec_junit_formatter\".*") ""))))))) (native-inputs (list ruby-libxml ruby-pry @@ -15876,24 +16517,23 @@ and Nokogiri.") (define-public ruby-wapiti (package (name "ruby-wapiti") - (version "2.0.0") + (version "2.1.0") ;; the gem archive lacks tests (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/inukshuk/wapiti-ruby") - (commit version))) + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "1kawqw45j7mqk5zmwbn67x1vxiapdgm2ypqqz2bs9l5s7nglzr5b")))) + "1273dqvn6flq2qv9qbp104rgc7zp1gqx4096s0v0z5f0qnhzc7d6")))) (build-system ruby-build-system) (propagated-inputs (list ruby-builder ruby-rexml)) (native-inputs - (list ruby-byebug - ruby-pry + (list ruby-pry ruby-rake-compiler ruby-rspec ruby-simplecov)) @@ -15973,6 +16613,7 @@ parts (e.g., given and family names, honorifics etc.).") (arguments ;; thanks to the Gentoo packagers for figuring this out (list + #:ruby ruby-2.7 #:phases #~(modify-phases %standard-phases (add-after 'extract-gemspec 'fix-tests @@ -16154,8 +16795,7 @@ markdown syntax document and passes the Markdown 1.0 test suite.") ruby-rdf ruby-rdf-vocab)) (native-inputs - (list ruby-byebug - ruby-cucumber + (list ruby-cucumber ruby-minitest ruby-yard)) (arguments @@ -16225,6 +16865,57 @@ process citations, a dedicated processor engine is required: a pure Ruby engine is available in the @code{citeproc-ruby} gem.") (license (list license:agpl3+ license:bsd-2)))) +(define-public ruby-ed25519 + (package + (name "ruby-ed25519") + (version "1.3.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/RubyCrypto/ed25519") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jm5w2dyhyrndcx0d02v0gjbzl1abhbx2wkp3gxzwcndghmkz98r")))) + (build-system ruby-build-system) + (arguments + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'compile + (lambda _ + (invoke "rake" "compile"))) + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + ;; Coveralls relates to a network service, and RuboCop to code + ;; linting and both are unnecessary to run the tests + (substitute* "Gemfile" + ((".*coveralls.*") + "\n") + ((".*rubocop.*") + "\n")) + (substitute* "spec/spec_helper.rb" + (("require \"coveralls\"") + "") + (("Coveralls.wear!") + "")) + (substitute* "Rakefile" + (("require \"rubocop/rake_task\"") + "") + (("RuboCop::RakeTask.new") + ""))))))) + (native-inputs (list ruby-rake-compiler ruby-rspec)) + (synopsis + "Ruby binding to the Ed25519 elliptic curve public-key signature system") + (description + "This package provides a Ruby binding to the Ed25519 elliptic curve +public-key signature system described in +@url{https://www.ietf.org/rfc/rfc8032.txt, RFC 8032}.") + (home-page "https://github.com/RubyCrypto/ed25519") + (license license:expat))) + (define-public ruby-edtf (package (name "ruby-edtf") |