Subject: [bug#55997] [PATCH staging v2 1/5] gnu: Add ruby-hydra-minimal.

From: Tom Fitzhenry <[email-masked]>
Date: Fri, 24 Jun 2022 21:08:34 +1000

* gnu/local.mk (dist_patch_DATA): Add ruby-hydra-minimal-no-byebug.patch.
* gnu/packages/patches/ruby-hydra-minimal-no-byebug.patch: New file.
* gnu/packages/ruby.scm (ruby-hydra): Refactor to inherit from ruby-hydra-minimal.
(ruby-hydra-minimal): New variable.
---
 gnu/local.mk                                  |  1 +
 .../ruby-hydra-minimal-no-byebug.patch        | 11 ++++++
 gnu/packages/ruby.scm                         | 36 +++++++++++++------
 3 files changed, 37 insertions(+), 11 deletions(-)
 create mode 100644 gnu/packages/patches/ruby-hydra-minimal-no-byebug.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f8ccbd34ec..6653ff0240 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1767,6 +1767,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \
   %D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch \
   %D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch \
+  %D%/packages/patches/ruby-hydra-minimal-no-byebug.patch		\
   %D%/packages/patches/ruby-mustache-1.1.1-fix-race-condition-tests.patch \
   %D%/packages/patches/ruby-sanitize-system-libxml.patch	\
   %D%/packages/patches/rustc-1.39.0-src.patch			\
diff --git a/gnu/packages/patches/ruby-hydra-minimal-no-byebug.patch b/gnu/packages/patches/ruby-hydra-minimal-no-byebug.patch
new file mode 100644
index 0000000000..7b338ca03e
--- /dev/null
+++ b/gnu/packages/patches/ruby-hydra-minimal-no-byebug.patch
@@ -0,0 +1,11 @@
+Description: Avoid dependency on byebug to reduce package closure
+  significantly, see https://issues.guix.gnu.org/55997
+diff --git a/lib/hydra.rb b/lib/hydra.rb
+index 29fbad2..6b5058a 100644
+--- a/lib/hydra.rb
++++ b/lib/hydra.rb
+@@ -1,4 +1,3 @@
+-require 'byebug' unless ENV['RACK_ENV'] == "production"
+ require 'pp'
+ 
+ module CoreExt
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 800ab194fe..4c66e14a68 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3124,24 +3124,40 @@ (define-public ruby-hashdiff
     (home-page "https://github.com/liufengyun/hashdiff")
     (license license:expat)))
 
-(define-public ruby-hydra
+(define-public ruby-hydra-minimal
   ;; No releases yet.
   (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
         (revision "0"))
     (package
-      (name "ruby-hydra")
+      (name "ruby-hydra-minimal")
       (version (git-version "0.0" revision commit))
       (home-page "https://github.com/hyphenation/hydra")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference (url home-page) (commit commit)))
                 (file-name (git-file-name name version))
+                ;; byebug is a non-essential debugging utility that brings in
+                ;; many dependencies.
+                (patches (search-patches "ruby-hydra-minimal-no-byebug.patch"))
                 (sha256
                  (base32
                   "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
       (build-system ruby-build-system)
       (arguments
-       '(#:phases (modify-phases %standard-phases
+       ;; Avoid rspec dependency.
+       '(#:tests? #f))
+      (synopsis "Ruby hyphenation patterns")
+      (description
+       "ruby-hydra-minimal is a Ruby library for working with hyphenation patterns.
+It is a low-dependency variant of ruby-hydra.")
+      (license license:expat))))
+
+(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 "."))
@@ -3149,14 +3165,12 @@ (define-public ruby-hydra
                     (replace 'check
                       (lambda _
                         (invoke "rspec"))))))
-      (native-inputs
-       (list ruby-rspec))
-      (propagated-inputs
-       (list ruby-byebug))
-      (synopsis "Ruby hyphenation patterns")
-      (description
-       "ruby-hydra is a Ruby library for working with hyphenation patterns.")
-      (license license:expat))))
+    (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
-- 
2.36.1