Subject: [PATCH] gnu: ruby-puma: Update to 6.4.3-0.2482fac.

From: gemmaro <[email-masked]>
Date: Sat, 26 Oct 2024 16:05:40 +0900

* gnu/packages/ruby.scm (ruby-puma): Update to 6.4.3-0.2482fac.  The build for
the previous version was failling due to the certification expiration.
[arguments]<#:phases>: Removed the use-rack-2 phase.  Now uses Rack 3 instead.
Added new skip tests to the disable-problematic-tests phase.
[native-inputs]: Use ruby-rack-next (version 3) instead of ruby-rack.
Add ruby-rackup for testing.

Change-Id: I71a9ce0315c7d77aa30baf6a32867382afd85f67
---
 gnu/packages/ruby.scm | 248 +++++++++++++++++++++---------------------
 1 file changed, 125 insertions(+), 123 deletions(-)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 5af1bb1cef..8f3991a738 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -12635,133 +12635,135 @@ (define-public ruby-ttfunk
     (license %prawn-project-licenses)))
 
 (define-public ruby-puma
-  (package
-    (name "ruby-puma")
-    (version "6.3.0")
-    (source
-     (origin
-       (method git-fetch)               ;for tests
-       (uri (git-reference
-             (url "https://github.com/puma/puma")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "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 _
-              ;; 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-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$"))))
-          (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_hot_restart_does_not_drop_connections"
-                            "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
+  (let ((revision "0")
+        (commit "2482fac8cbb556cef4adda00399d1da40c7a4ccc"))
+    (package
+      (name "ruby-puma")
+      (version (git-version "6.4.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)               ;for tests
+         (uri (git-reference
+               (url "https://github.com/puma/puma")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1f7skvdniqcv7mdqpmdxnwzn8ky2q6j92d3c6929fv4c1qfz6r41"))))
+      (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-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-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$"))))
+            (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_hot_restart_does_not_drop_connections"
+                              "test_culling_strategy_oldest_fork_worker"
+                              "test_usr1_fork_worker")
+                  (skip-tests "test/test_integration_pumactl.rb"
+                              "test_refork_cluster")
+                  (skip-tests "test/test_puma_server_ssl.rb"
+                              "test_tls_v1_rejection"
+                              "test_tls_v1_1_rejection"))))
+            (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-next
+             ruby-rackup
+             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
 for Ruby/Rack applications.  Puma is intended for use in both development and
 production environments.  In order to get the best throughput, it is highly
 recommended that you use a Ruby implementation with real threads like Rubinius
 or JRuby.")
-    (home-page "https://puma.io/")
-    (license license:expat)))
+      (home-page "https://puma.io/")
+      (license license:expat))))
 
 (define-public ruby-hoe-git
   (package

base-commit: 808c02c01e87d6ded18492372543108e1f9154a9
-- 
2.46.0