diff options
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/packages/ruby.scm | 109 | 
1 files changed, 95 insertions, 14 deletions
| diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index c82ce017e0..20285c9f64 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -10804,28 +10804,109 @@ part of the Prawn PDF generator.")  (define-public ruby-puma    (package      (name "ruby-puma") -    (version "3.9.1") +    (version "6.1.1")      (source       (origin -       (method git-fetch) -       ;; Fetch from GitHub because distributed gem does not contain tests. +       (method git-fetch)               ;for tests         (uri (git-reference -              (url "https://github.com/puma/puma") -              (commit (string-append "v" version)))) +             (url "https://github.com/puma/puma") +             (commit (string-append "v" version))))         (file-name (git-file-name name version))         (sha256          (base32 -         "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f")))) +         "0v4nn3z0bj0ry0gpx1hsf5mzkinsx9sv716j4jf2nb1x6hcwv993"))))      (build-system ruby-build-system)      (arguments -     `(#:tests? #f ; Tests require an out-dated version of minitest. -       #:phases -       (modify-phases %standard-phases -         (add-before 'build 'fix-gemspec -           (lambda _ -             (substitute* "puma.gemspec" -               (("git ls-files") "find * |sort"))))))) -    (inputs (list openssl)) +     (list +      #:phases +      #~(modify-phases %standard-phases +          (add-after 'unpack 'disable-rubocop +            (lambda _ +              (setenv "PUMA_NO_RUBOCOP" "1"))) +          (add-after 'unpack 'use-rack-2 +            (lambda _ +              (setenv "PUMA_CI_RACK_2" "1"))) +          (add-before 'build 'increase-resource-limits +            (lambda _ +              ;; The test suite requires a higher number of open files.  Try +              ;; increasing the soft resource limit of max open files to 2048, +              ;; or equal to the hard limit, whichever is lower. +              (call-with-values (lambda () (getrlimit 'nofile)) +                (lambda (soft hard) +                  (when (and soft (< soft 2048)) +                    (if hard +                        (setrlimit 'nofile (min hard 2048) hard) +                        (setrlimit 'nofile 2048 #f)) +                    (format +                     #t "increased maximum number of open files from ~d to ~d~%" +                     soft (if hard (min hard 2048) 2048))))))) +          (add-before 'build 'fix-gemspec +            (lambda _ +              (substitute* "puma.gemspec" +                (("`git ls-files -- bin docs ext lib tools`") +                 "`find bin docs ext lib tools -type f |sort`")))) +          (delete 'check)               ;moved after install +          (add-after 'install 'check +            (lambda* (#:key tests? #:allow-other-keys) +              (when tests? +                (invoke "bundle" "exec" "rake" "test")))) +          (add-before 'check 'disable-problematic-tests +            (lambda _ +              (let-syntax ((skip-tests +                            (syntax-rules () +                              ((_ file test ...) +                               (substitute* file +                                 (((string-append "def " test ".*") all) +                                  (string-append +                                   all "    skip('fails on guix')\n")) ...))))) +                ;; The test failures were reported at: +                ;; https://github.com/puma/puma/issues/3093, but appear to be +                ;; caused by the Guix build container, perhaps the lack of +                ;; zombie process reaping (see: +                ;; https://issues.guix.gnu.org/30948). +                ;;  All the tests in the 'test_worker_gem_independence.rb' +                ;;  module fail with "Expected false to be truthy.". +                (delete-file "test/test_worker_gem_independence.rb") +                (skip-tests "test/test_integration_ssl_session.rb" +                            ;; The TLS 1.2 test fails for unknown reasons. +                            "test_off_tls1_2") +                (skip-tests "test/test_integration_cluster.rb" +                            "test_fork_worker_on_refork" +                            "test_culling_strategy_oldest_fork_worker" +                            "test_usr1_fork_worker") +                (skip-tests "test/test_integration_pumactl.rb" +                            "test_refork_cluster")))) +          (add-before 'check 'relax-test-case-timeout +            (lambda _ +              ;; The default value is 45 s and easily causes timeouts. +              (setenv "TEST_CASE_TIMEOUT" "600"))) +          (add-before 'check 'set-home +            (lambda _ +              ;; Some tests fail if the cannot write to HOME. +              (setenv "HOME" "/tmp"))) +          (add-before 'check 'set-paths +            (lambda _ +              ;; The test suite requires the 'puma' command to be on PATH. +              (setenv "PATH" (string-append (getenv "PATH") ":" +                                            #$output "/bin")) +              (setenv "GEM_PATH" (string-append +                                  (getenv "GEM_PATH") ":" +                                  #$output "/lib/ruby/vendor_ruby"))))))) +    (native-inputs +     (list bundler +           curl +           ruby-json +           ruby-localhost +           ruby-m +           ruby-minitest-proveit +           ruby-minitest-retry +           ruby-minitest-stub-const +           ruby-rack +           ruby-rake-compiler +           ruby-webrick)) +    (inputs +     (list openssl +           ruby-nio4r))      (synopsis "Simple, concurrent HTTP server for Ruby/Rack")      (description       "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server | 
