From patchwork Wed Jun 4 20:49:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 43010 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id B85F827BC4A; Wed, 4 Jun 2025 21:51:44 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 2AD7E27BC49 for ; Wed, 4 Jun 2025 21:51:43 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uMv4n-0005dY-Oj; Wed, 04 Jun 2025 16:51:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uMv4i-0005ac-27 for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:04 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uMv4h-0004ai-Pl for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=EDalfs/GuBZE+HRjZZpV69sO55gjI+xM7cUhV2vE7Q8=; b=D9Ujzpcl0q5wyGEynk6y+FfSgZUrAI7E+Jrzi9qkX714n1sa1mXk4tNRYVUvnnxLgsyukebDjOZ+57XxCn03Nb51X8bPij7VQzcRcskFBgC8imJPR4j0bIp/AmMNwb+RJkwSz0Dr5vnrAY295Ei48bw/DUe3/dUa+m/fAPL3pfZp0ceu79y+RQtVkgkb9ecGKMeMZwMf1S+rBt57ceBAPgCMYvXVTFq0hBkh1aiav+7r6AuDKepzJXN4XhKvZsFNqHE9J69dqXv2r2JkJ05WyyHpiWTMUeVedlBM12QJDNxxxIkSHLqWwrgKGmeVxTAvrJAn1LHbCTpeulFtPuDqfA==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1uMv4h-0001Se-Jk for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#78683] [PATCH 1/7] gnu: Add ruby-sqlite3-1.4. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 04 Jun 2025 20:51:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78683 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 78683@debbugs.gnu.org Cc: Nicolas Graves Received: via spool by 78683-submit@debbugs.gnu.org id=B78683.17490702525514 (code B ref 78683); Wed, 04 Jun 2025 20:51:03 +0000 Received: (at 78683) by debbugs.gnu.org; 4 Jun 2025 20:50:52 +0000 Received: from localhost ([127.0.0.1]:53507 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uMv4V-0001Qm-Mb for submit@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:51 -0400 Received: from 4.mo563.mail-out.ovh.net ([46.105.53.192]:50521) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uMv4M-0001P6-46 for 78683@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:45 -0400 Received: from director4.derp.mail-out.ovh.net (director4.derp.mail-out.ovh.net [79.137.60.37]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKV83qy4z1jqL; Wed, 4 Jun 2025 20:50:40 +0000 (UTC) Received: from director4.derp.mail-out.ovh.net (director4.derp.mail-out.ovh.net. [127.0.0.1]) by director4.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <78683@debbugs.gnu.org>; Wed, 4 Jun 2025 20:50:40 +0000 (UTC) Received: from mta11.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.108.25.213]) by director4.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKV82RZHz1xm7; Wed, 4 Jun 2025 20:50:40 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.5]) by mta11.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id E7559263C05; Wed, 4 Jun 2025 20:50:39 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-97G002a43baea7-3f6f-4998-84c5-a5b0c5341fe7, 55D8CD9FCCBE2A40DC556E1A8E1799EDAA20BDE9) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Wed, 4 Jun 2025 22:49:29 +0200 Message-ID: <20250604205034.10251-2-ngraves@ngraves.fr> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250604205034.10251-1-ngraves@ngraves.fr> References: <20250604205034.10251-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 12799230144419980002 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeffedrtddugddvieeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepvdehleeiffehtedvlefhffffjeefgfduhfetkeevheeiteduiedugfekuedtheejnecuffhomhgrihhnpehgihhthhhusgdrtghomhenucfkphepuddvjedrtddrtddruddpledtrdelvddruddujedrudeggeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeduvdejrddtrddtrddupdhmrghilhhfrhhomhepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdhnsggprhgtphhtthhopedvpdhrtghpthhtohepjeekieekfeesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpoffvtefjohhsthepmhhoheeifegmpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=EDalfs/GuBZE+HRjZZpV69sO55gjI+xM7cUhV2vE7Q8=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1749070240; v=1; b=l+1bvgoTJtrL0a9YC3T5zSNfkcDrHduE9L+gaAJdGLwHGTxWqtxEm0+/tzKTqL09ACyIj28Z byFH0oSaK04h2Nt6DRYxr1uk6eIylCDADNQdZ3b672+J8gtYQLU+cKt5NAApWLuYtdpOzyfm8v6 pW2+8ervUL2H1fA6YttitKVA8o6+TsH8ILfBqvCQRcGhAh6+ZjAm5JPVZ03gwXok4TUu6sOPI7Z 08kqirtEzQC3w2lOmGylXdybe3V9QCMBExOlQ9rjcfNF3uQeKguOJrSqALsSS1tDu+HVdwlhHX8 CrwVMeaWQ3u9jUQQOY7lbuM7/NnuU9rKpkF2HOMClKsuA== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/ruby.scm (ruby-sqlite3-1.4): New variable. --- gnu/packages/ruby.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index d803d0f796..4b929b5bcb 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -11426,6 +11426,32 @@ (define-public ruby-sqlite3 "https://github.com/sparklemotion/sqlite3-ruby") (license license:bsd-3))) +(define-public ruby-sqlite3-1.4 + (package/inherit ruby-sqlite3 + (name "ruby-sqlite3") + (version "1.4.4") + (source + (origin + (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 + "0ngirjbai3f5ki2sf6m4gxbbrjpr3b35bz5nrz1cifyw1jk6a6sr")))) + (arguments + (substitute-keyword-arguments (package-arguments ruby-sqlite3) + ((#:tests? #t #t) #f) + ((#:phases phases #~%standard-phases) + #~(modify-phases #$phases + (delete 'relax-requirements) + (add-after 'unpack 'fix-version + (lambda _ + (substitute* "sqlite3.gemspec" + (("s\\.version = .*") + (format #f "s.version = ~s~%" #$version))))))))))) + (define-public ruby-shoulda-context (package (name "ruby-shoulda-context") From patchwork Wed Jun 4 20:49:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 43006 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 7DBF527BC4D; Wed, 4 Jun 2025 21:51:12 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 5ED7127BC4A for ; Wed, 4 Jun 2025 21:51:11 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uMv4h-0005ab-Ni; Wed, 04 Jun 2025 16:51:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uMv4g-0005YE-1C for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:02 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uMv4f-0004aQ-Oy for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=gqLrhzkOvhndVRHiodvCnXH8ZvGiUYFVZwU32AXLauo=; b=pMEnuMCnXuUPiFIBgfRd+YgaXHow7tc5/io0X07GPesuDLB1rIjNcFMlmr92ltQNjSm3gOxyD1dTOOduniBY+6GJUby+js9rT1yqxo6VKfGJpcT/4NSWuTZ+z9h0WHMlvoaHnsFDmL4KGyN5O0l8DeWt1tsV0N7863Kw8+VuZlXRwKMNsTgyYv20SRCfiHLQ3q1tvsl5oe0gNcNg0XRjyr5wpwiW8XydO3TKHOy8poiAemXu7MNvljH0V7QRwAzD/h7YFV7ulIPG0PxQv+sOqNn/BzGTpbRBtcDrSUCv7/wvRR9/cghmIgHx87C/fvuDiHhk8X2CjhZaGM8d60nLOg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1uMv4f-0001S2-Ja for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#78683] [PATCH 2/7] gnu: ruby-importmap-rails: Downgrade ruby-sqlite3 native-input. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 04 Jun 2025 20:51:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78683 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 78683@debbugs.gnu.org Cc: Nicolas Graves Received: via spool by 78683-submit@debbugs.gnu.org id=B78683.17490702475465 (code B ref 78683); Wed, 04 Jun 2025 20:51:01 +0000 Received: (at 78683) by debbugs.gnu.org; 4 Jun 2025 20:50:47 +0000 Received: from localhost ([127.0.0.1]:53500 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uMv4Q-0001Pm-93 for submit@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:47 -0400 Received: from 7.mo562.mail-out.ovh.net ([46.105.55.234]:46635) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uMv4M-0001P8-L8 for 78683@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:44 -0400 Received: from director4.derp.mail-out.ovh.net (director4.derp.mail-out.ovh.net [79.137.60.37]) by mo562.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKV92Qs8z1c61; Wed, 4 Jun 2025 20:50:41 +0000 (UTC) Received: from director4.derp.mail-out.ovh.net (director4.derp.mail-out.ovh.net. [127.0.0.1]) by director4.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <78683@debbugs.gnu.org>; Wed, 4 Jun 2025 20:50:41 +0000 (UTC) Received: from mta10.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.96.132]) by director4.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKV91B73z1xm7; Wed, 4 Jun 2025 20:50:41 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.5]) by mta10.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id C1EDEDA3C07; Wed, 4 Jun 2025 20:50:40 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-98R0022a573cae-437f-4a3e-b399-fcff524dc20b, 55D8CD9FCCBE2A40DC556E1A8E1799EDAA20BDE9) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Wed, 4 Jun 2025 22:49:30 +0200 Message-ID: <20250604205034.10251-3-ngraves@ngraves.fr> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250604205034.10251-1-ngraves@ngraves.fr> References: <20250604205034.10251-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 12799511619108922082 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeffedrtddugddvieeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepleffjeetueethfefkeffffefvddukeejkefgleduiedthfekvefhiedvhfffgeegnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepvddprhgtphhtthhopeejkeeikeefseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdfovfetjfhoshhtpehmohehiedvmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=gqLrhzkOvhndVRHiodvCnXH8ZvGiUYFVZwU32AXLauo=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1749070241; v=1; b=mIi1VpZu94KJppRLPI/jvwCqtviPZbi/cI8CzsJovkDBtLZN81X7/lPu4F9/bHBmp10OGXNs eGDkKNOG5QIyuf4DNGuz7IUEWflWwiCSsP8AcQzHCxpLeH2nRDpWS642XK7aCyoEEjDzqq45bRH GPgsjWZ+uiM2ytxzidXQvZIqz7Hy709cMW+WOTO8/GjIZN5xhI6nQg4yQStM+ZqVcoFoXUFHlCL WzGtWjU+QUHfKqSEyhm9JEPavrW66uXCjuH5Xm4t6eIAHu6ut8RVpl7npM+0WI4SbgNy/ohbIvS S5qwjq9a0O57NuCjGJL6FIZx1qIHxaw15oW7g650g1eZA== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/rails.scm (ruby-importmap-rails): [native-inputs]: Replace ruby-sqlite3 by ruby-sqlite3-1.4. --- gnu/packages/rails.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm index 6104c2ff15..2045be03f0 100644 --- a/gnu/packages/rails.scm +++ b/gnu/packages/rails.scm @@ -992,7 +992,7 @@ (define-public ruby-importmap-rails ruby-rails ruby-rexml ruby-selenium-webdriver - ruby-sqlite3 + ruby-sqlite3-1.4 ruby-stimulus-rails ruby-turbo-rails ruby-tzinfo From patchwork Wed Jun 4 20:49:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 43011 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 0FE4327BC4A; Wed, 4 Jun 2025 21:51:52 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 3936B27BC49 for ; Wed, 4 Jun 2025 21:51:50 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uMv4k-0005cU-7v; Wed, 04 Jun 2025 16:51:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uMv4i-0005au-E1 for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:04 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uMv4i-0004ax-5R for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=Lqb1MlY/Exs2QWz4t/wvk3crLVRR0zz09oKGTLhQTPo=; b=rQfc8DhM63E2P+G+xyNGvzRzN3pmOHqkQGNE84kImel+IBfFhlU2vczBKxVn5emv/ejhcNsCApn4fl4LR5rE7p6rYB5QYjRQYwz115c9/oXA8sKRUVJtkWsQuMxRL0msQd1NR1tjiM/UDE7oY/6YMglU/HtT5uPVwN0PShyUdiOY6mqmMGiIX6qgtpIwmSImpwZMl4DUAU1LMKDWdvUtV1WnQUyJ9CRjV2jlQcqKInIXKmlEOkB4s9Orb2EtMQLXeUqrW2DXJ/0hmyZloNu/OXd34ffeR4G74/khzwPuoAS9RKC4j0UUDt74dTjsmulVOP0M3GdhdjhoefkpQYXyDg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1uMv4i-0001Sl-1H for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:04 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#78683] [PATCH 3/7] gnu: ruby: Add ruby/pinned. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 04 Jun 2025 20:51:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78683 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 78683@debbugs.gnu.org Cc: Nicolas Graves Received: via spool by 78683-submit@debbugs.gnu.org id=B78683.17490702525520 (code B ref 78683); Wed, 04 Jun 2025 20:51:03 +0000 Received: (at 78683) by debbugs.gnu.org; 4 Jun 2025 20:50:52 +0000 Received: from localhost ([127.0.0.1]:53509 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uMv4W-0001Qt-1k for submit@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:52 -0400 Received: from 9.mo562.mail-out.ovh.net ([46.105.72.114]:50441) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uMv4O-0001PF-Gc for 78683@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:46 -0400 Received: from director1.derp.mail-out.ovh.net (director1.derp.mail-out.ovh.net [51.68.80.175]) by mo562.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKVC0QHNz1gd5; Wed, 4 Jun 2025 20:50:43 +0000 (UTC) Received: from director1.derp.mail-out.ovh.net (director1.derp.mail-out.ovh.net. [127.0.0.1]) by director1.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <78683@debbugs.gnu.org>; Wed, 4 Jun 2025 20:50:42 +0000 (UTC) Received: from mta3.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.108.17.28]) by director1.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKVB4q6cz5xP6; Wed, 4 Jun 2025 20:50:42 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.2]) by mta3.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id EF3DF3A4111; Wed, 4 Jun 2025 20:50:41 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-109S0033563685b-cb5e-4b7c-9e86-1b6a7f8a15a7, 55D8CD9FCCBE2A40DC556E1A8E1799EDAA20BDE9) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Wed, 4 Jun 2025 22:49:31 +0200 Message-ID: <20250604205034.10251-4-ngraves@ngraves.fr> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250604205034.10251-1-ngraves@ngraves.fr> References: <20250604205034.10251-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 12799793091015729890 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeffedrtddugddvieeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepleffjeetueethfefkeffffefvddukeejkefgleduiedthfekvefhiedvhfffgeegnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgepudenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepvddprhgtphhtthhopeejkeeikeefseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdfovfetjfhoshhtpehmohehiedvmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=Lqb1MlY/Exs2QWz4t/wvk3crLVRR0zz09oKGTLhQTPo=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1749070243; v=1; b=VGrBwwDCFCJngeDnknYLpXsoEl2uZi2MyKIE8SWgp0hwsCWqhByjvIwVBV2HNuHTUatwmckf uI5oqbBHN2KB/F1h6YF8LA3TaVkSdVBkUt2TKa7UOD/BBeY+FTP3dSXkW12chu9bASP32KdXsuX 9nIif5MNfaQrKXfGChkX5+X9qGMQcsexOp07rv2R1xQpGyj8KhkfEaiyYgV4NnFAvmiiEYQ4yUH KBTPIJ4JVZYP5pVKVukbD/FQ04EqY5yULfrkwfTULZ3WBZ8ovF622lon46U9dzwjEjli9Aux2xl UlJRfP6B2b0Esvi22m19BkO44GSgmtZq7Dh14PRE4Qi+g== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches This is to help batch update the lagging version of ruby on core-packages. * gnu/packages/ruby.scm (ruby/pinned): Define outdated variant. * gnu/packages/qt.scm (qtbase-5, qtwebengine-5) * gnu/packages/ruby.scm (ruby-hydra-minimal/pinned) * gnu/packages/tex.scm (texlive-hyphen-complete) * gnu/packages/texlive.scm (texlivebin) * gnu/packages/webkit.scm (webkitgtk): [native-inputs]: Replace ruby-2.7 by ruby/pinned. --- gnu/packages/qt.scm | 6 ++---- gnu/packages/ruby.scm | 6 +++++- gnu/packages/tex.scm | 3 +-- gnu/packages/texlive.scm | 3 +-- gnu/packages/webkit.scm | 3 +-- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 7995dc74c5..791a176954 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -575,8 +575,7 @@ (define-public qtbase-5 pkg-config python vulkan-headers - ;; TODO Move to ruby@3 on the next rebuild cycle. - ruby-2.7)) + ruby/pinned)) (arguments `(#:disallowed-references ,(list python) #:configure-flags @@ -3345,8 +3344,7 @@ (define-public qtwebengine-5 pkg-config python2-six python-2 - ;; TODO Move to ruby@3 on the next rebuild cycle. - ruby-2.7)) + ruby/pinned)) (inputs (list alsa-lib at-spi2-core diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 4b929b5bcb..72a05fa125 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -288,6 +288,10 @@ (define-public ruby-2.7 (define-public ruby ruby-3.2) +;; Outdated variant, should only be tolerated as a native-input. +;; TODO: Update on the core-packages branch. +(define-public ruby/pinned ruby-2.7) + (define-public mruby (package (name "mruby") @@ -4056,7 +4060,7 @@ (define-public ruby-hydra-minimal/pinned (package (inherit ruby-hydra-minimal) (arguments - (cons* #:ruby ruby-2.7 + (cons* #:ruby ruby/pinned (package-arguments ruby-hydra-minimal)))))) (define-public ruby-hydra diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 8ff396c50e..f03266643c 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -766,8 +766,7 @@ (define-public texlive-hyphen-complete (string-append "File.join(\"" ptex "\""))) (invoke "ruby" "generate-ptex-patterns.rb")))))))) (native-inputs - ;; TODO: Update to ruby@3 on next rebuild-cycle. - (list ruby-2.7 + (list ruby/pinned ruby-hydra-minimal/pinned ;; Build phase requires "docstrip.tex" from TEXLIVE-LATEX. ;; However, adding this package to native inputs would initiate diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm index 8ba3e1bb4f..c1ce170dda 100644 --- a/gnu/packages/texlive.scm +++ b/gnu/packages/texlive.scm @@ -136,8 +136,7 @@ (define texlivebin ("pixman" ,pixman) ("potrace" ,potrace) ("python" ,python) - ;; TODO Move to ruby@3 on the next rebuild cycle. - ("ruby" ,ruby-2.7) + ("ruby" ,ruby/pinned) ("tcsh" ,tcsh) ("teckit" ,teckit) ("zlib" ,zlib) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 7a2ded69d3..6cd590d2ca 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -242,8 +242,7 @@ (define-public webkitgtk pkg-config python-wrapper gi-docgen - ;; TODO Move to ruby@3 on the next rebuild cycle. - ruby-2.7 + ruby/pinned unifdef)) (propagated-inputs (list gtk libsoup)) From patchwork Wed Jun 4 20:49:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 43007 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id E1A9827BC4A; Wed, 4 Jun 2025 21:51:12 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 5F65527BC4B for ; Wed, 4 Jun 2025 21:51:11 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uMv4i-0005ar-Ac; Wed, 04 Jun 2025 16:51:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uMv4g-0005Yd-MC for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:02 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uMv4g-0004aV-B0 for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=C6pP+WATK7rrWFckz85bB7AZwkjV+dM4G3aPuJ8U0Fs=; b=VNq30QYU0hUX8tBiUn/e1nKoV7MdczSPvSnK6fXSItBuKUsmvm223KYz8BjXR4BdW42rGh2jl/2lzzww7wGar9G6cZWl/wRYIev8u/LeuBnKbJ6PVzBPdo8IVmr4bFJn7QOGERauFXGDqrn0WX6TcyraFfC/NRiufBPsUWDqfQvA9V3D4+BQP6LtmK59C+U9L3b6hthpNBjQDsAdQSzq2ULJR2J+yJ5GB2nd0Wm/Pc9cpdojxbpXPZIWwuBXG+ybqcJONI/W90xeMYEtmHuW18fxnOIxEuVKyM0PlQu8I64mZnszZ4M4dV/AybJY+aopdtgEvtGy2iDYzA55UkioVw==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1uMv4g-0001SE-6Y for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#78683] [PATCH 4/7] gnu: ruby-safe-yaml: Update ruby input and disable tests. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 04 Jun 2025 20:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78683 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 78683@debbugs.gnu.org Cc: Nicolas Graves Received: via spool by 78683-submit@debbugs.gnu.org id=B78683.17490702515499 (code B ref 78683); Wed, 04 Jun 2025 20:51:02 +0000 Received: (at 78683) by debbugs.gnu.org; 4 Jun 2025 20:50:51 +0000 Received: from localhost ([127.0.0.1]:53503 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uMv4U-0001QX-Ct for submit@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:50 -0400 Received: from 3.mo562.mail-out.ovh.net ([46.105.33.63]:34657) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uMv4O-0001PG-45 for 78683@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:44 -0400 Received: from director2.derp.mail-out.ovh.net (director2.derp.mail-out.ovh.net [79.137.60.36]) by mo562.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKVC2RYGz1ZMc; Wed, 4 Jun 2025 20:50:43 +0000 (UTC) Received: from director2.derp.mail-out.ovh.net (director2.derp.mail-out.ovh.net. [127.0.0.1]) by director2.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <78683@debbugs.gnu.org>; Wed, 4 Jun 2025 20:50:43 +0000 (UTC) Received: from mta10.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.188.36]) by director2.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKVC1HFfz1xw8; Wed, 4 Jun 2025 20:50:43 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.3]) by mta10.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id D8999DA3C07; Wed, 4 Jun 2025 20:50:42 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-98R0025a6e3254-02cb-42bf-ba04-ffd125f05ebe, 55D8CD9FCCBE2A40DC556E1A8E1799EDAA20BDE9) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Wed, 4 Jun 2025 22:49:32 +0200 Message-ID: <20250604205034.10251-5-ngraves@ngraves.fr> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250604205034.10251-1-ngraves@ngraves.fr> References: <20250604205034.10251-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 12800074566970106594 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeffedrtddugddvieeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepleffjeetueethfefkeffffefvddukeejkefgleduiedthfekvefhiedvhfffgeegnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgepudenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepvddprhgtphhtthhopeejkeeikeefseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdfovfetjfhoshhtpehmohehiedvmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=C6pP+WATK7rrWFckz85bB7AZwkjV+dM4G3aPuJ8U0Fs=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1749070243; v=1; b=NTYbBd2mQfZXwZ358KmjLMxSjnCe7gB/gnr6IsEpMog22WfuuzWUH2w6ohyWY/pCOwm5yKQB W11ewzKepEASihm1zyIKfrbm7+qE95lKK05ihFTCewU43hNVX/J/3GM3Of1YOtBlsOQfe/eXYaL kbSuzTnD46175te+o6wlHohKSelT4Xp4jD6pskr0ig2Qw/0IT9bFDNfmdH6TEkN9kmnVbIbWb+6 oE7LqGkle0QL/VePU23XRc6czcQXWzCDoiDelytVMZSAHseXoAAyAaHjhbI9059EwlqHh4ETNuA +qna9s0+gbDTa1dS/gO7KqnE4B5rMXD065fooSgLtjWcA== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/ruby.scm (ruby-safe-yaml)[arguments]: {ruby}: Remove to use canonical ruby. {tests?}: Disable broken tests. --- gnu/packages/ruby.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 72a05fa125..a2f6f8041c 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -14538,7 +14538,10 @@ (define-public ruby-safe-yaml (list ruby-rspec ruby-hashie ruby-heredoc-unindent)) (arguments (list - #:ruby ruby-2.7 + ;; Tests are broken since the move to ruby@3. + ;; There's ongoing effort on the Jekyll dependent + ;; to remove this orphan dependency. + #:tests? #f ; broken since move to ruby@3 #:test-target "spec" #:phases #~(modify-phases %standard-phases From patchwork Wed Jun 4 20:49:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 43012 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id CF03C27BC4B; Wed, 4 Jun 2025 21:51:57 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 923EF27BC49 for ; Wed, 4 Jun 2025 21:51:57 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uMv4j-0005cM-TY; Wed, 04 Jun 2025 16:51:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uMv4i-0005bI-VF for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:05 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uMv4i-0004b7-Lt for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=xU8doFICCMMA+a5CXvnGhIOCLHgKxpvWChTvUY43rpA=; b=RgLJ4gbA5pMnKxp2aAbQKpvzYljz0i3Djo6cdCpaC2wywjQlOU2HLz2G9aXNCISs++kVH+6Gbi94N704CouSKdxvzcgqmVYi8LpVRU3cmK9UcliDr/cI26nvE//719GzGkYYN93eCS0VkZO0YAZmaht61YU3LpB1j5u0BjpB5nih3tII589SmGVDxtP9CajmYB+/hcP4ib0KJLGVyjjrC6Ftoj9A/hhvOCwjIIIFF7/+orTZ5GgycXEOk8cilBDrAbQz6zra2dEGI3USinyCNhfgx2/i9/4EscPrF2Y+33tvWrNT9hIBlOsYFB7QQ6VcLxCCQtbuD/bO1RIuU5lxeQ==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1uMv4i-0001St-Gw for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:04 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#78683] [PATCH 5/7] gnu: utf8proc-2.7.0: Update ruby native-input. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 04 Jun 2025 20:51:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78683 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 78683@debbugs.gnu.org Cc: Nicolas Graves Received: via spool by 78683-submit@debbugs.gnu.org id=B78683.17490702525527 (code B ref 78683); Wed, 04 Jun 2025 20:51:04 +0000 Received: (at 78683) by debbugs.gnu.org; 4 Jun 2025 20:50:52 +0000 Received: from localhost ([127.0.0.1]:53511 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uMv4W-0001R4-Hp for submit@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:52 -0400 Received: from 3.mo563.mail-out.ovh.net ([46.105.40.8]:40979) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uMv4P-0001PI-Kb for 78683@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:46 -0400 Received: from director3.derp.mail-out.ovh.net (director3.derp.mail-out.ovh.net [152.228.215.222]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKVD0r4hz1gMF; Wed, 4 Jun 2025 20:50:44 +0000 (UTC) Received: from director3.derp.mail-out.ovh.net (director3.derp.mail-out.ovh.net. [127.0.0.1]) by director3.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <78683@debbugs.gnu.org>; Wed, 4 Jun 2025 20:50:44 +0000 (UTC) Received: from mta2.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.168.17]) by director3.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKVC6ppyz5xL6; Wed, 4 Jun 2025 20:50:43 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.0]) by mta2.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id A5045BA4132; Wed, 4 Jun 2025 20:50:43 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-96R001a4aab5cd-1de1-46a1-946a-363f3237b55e, 55D8CD9FCCBE2A40DC556E1A8E1799EDAA20BDE9) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Wed, 4 Jun 2025 22:49:33 +0200 Message-ID: <20250604205034.10251-6-ngraves@ngraves.fr> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250604205034.10251-1-ngraves@ngraves.fr> References: <20250604205034.10251-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 12800074566900703970 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeffedrtddugddvieeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepleffjeetueethfefkeffffefvddukeejkefgleduiedthfekvefhiedvhfffgeegnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepvddprhgtphhtthhopeejkeeikeefseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdfovfetjfhoshhtpehmohehieefmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=xU8doFICCMMA+a5CXvnGhIOCLHgKxpvWChTvUY43rpA=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1749070244; v=1; b=Sg1AYbZTofsmUsA12fBr3nASoLWruZIedU0VID/N2UgPkv4aYs8F1mHTxuItC58EAuFX/x86 VEO1RugQn1N3/naIsDTjdRnNK6pjYDxfJ56Dvn4KJdbZaJcrfMIVwZIGpIBtoFM1NkznDMJI7+T axkimDmKluOqKhv+0WacqiKoc1lmrTcBbYphx3Ny25O0crBfQ01mdF3aCRSfRx4fVOWCo/wYtJH JCYd/luyEDVsuSmcWt2LUcCSzm9Il9F5iVxrJtgOUth3L53muJljmqTs3yYRj1QnoYDdAZAHYG6 eRz7HPJ+tTdN1OxR19Rbj04hQZWzrW3gYr3j+Mofh5V1A== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/textutils.scm (utf8proc-2.7.0)[native-inputs] {ruby}: Update to ruby. --- gnu/packages/textutils.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index 41c7890e04..b897e8cb35 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -267,8 +267,7 @@ (define-public utf8proc-2.7.0 (sha256 (base32 "1g77s8g9443dd92f82pbkim7rk51s7xdwa3mxpzb1lcw8ryxvvg3")))) ;; For tests - ;; TODO Move to ruby@3 on the next rebuild cycle. - ("ruby" ,ruby-2.7))))))) + ("ruby" ,ruby))))))) (define-public libconfuse (package From patchwork Wed Jun 4 20:49:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 43009 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 8014927BC4D; Wed, 4 Jun 2025 21:51:43 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 357B327BC4A for ; Wed, 4 Jun 2025 21:51:43 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uMv4l-0005cl-IM; Wed, 04 Jun 2025 16:51:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uMv4j-0005cF-Gp for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:05 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uMv4j-0004bD-8e for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=kEmv/NHNVVn4dKZZvHgLtAQh9jX51dbam3JYnwNCGZE=; b=ApUxn2GbhEL1QZCMuesoks4IAhrAItacTMcCcoAOSdYG5TXdX4ViRjVQ0f7bu20ddMBU+MYjd8dpmunhel3optmKypVuG39At3x7KvkxGxZlvvYzQLgavrf+3AhHCb4bIY1/s3mKRMQYJLMiBEnCrw1qKZTy3Mhi23pOcbrm2nucIMF5MJvQZakMafj2cwQo9a2bjxWJSzCfKEAS1aOvyhDyNBSC9EvkquoC862t4jVFZDA5pcgsOY/USlVo7E8STP4LO7hzupDMD2zWib6m8iADQAr0vM0ylcQgt6104esiQGg0KS+rSAu/r4e2GyX0Mivn8I77VrLG4W1nLFGxHA==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1uMv4j-0001T0-2v for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:05 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#78683] [PATCH 6/7] gnu: ruby-3.4: Update to 3.4.4. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 04 Jun 2025 20:51:05 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78683 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 78683@debbugs.gnu.org Cc: Nicolas Graves Received: via spool by 78683-submit@debbugs.gnu.org id=B78683.17490702535538 (code B ref 78683); Wed, 04 Jun 2025 20:51:05 +0000 Received: (at 78683) by debbugs.gnu.org; 4 Jun 2025 20:50:53 +0000 Received: from localhost ([127.0.0.1]:53513 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uMv4W-0001RB-Sr for submit@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:53 -0400 Received: from 4.mo563.mail-out.ovh.net ([46.105.53.192]:53833) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uMv4P-0001PX-Tv for 78683@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:46 -0400 Received: from director2.derp.mail-out.ovh.net (director2.derp.mail-out.ovh.net [79.137.60.36]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKVF0W43z1k1r; Wed, 4 Jun 2025 20:50:45 +0000 (UTC) Received: from director2.derp.mail-out.ovh.net (director2.derp.mail-out.ovh.net. [127.0.0.1]) by director2.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <78683@debbugs.gnu.org>; Wed, 4 Jun 2025 20:50:44 +0000 (UTC) Received: from mta6.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.101.73]) by director2.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKVD6PNkz1xw8; Wed, 4 Jun 2025 20:50:44 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.2]) by mta6.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id 91ABFD43F67; Wed, 4 Jun 2025 20:50:44 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-105G0065cecd960-f2c0-437c-85c8-a819d8b278d1, 55D8CD9FCCBE2A40DC556E1A8E1799EDAA20BDE9) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Wed, 4 Jun 2025 22:49:34 +0200 Message-ID: <20250604205034.10251-7-ngraves@ngraves.fr> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250604205034.10251-1-ngraves@ngraves.fr> References: <20250604205034.10251-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 12800356042043155170 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeffedrtddugddvieeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepleffjeetueethfefkeffffefvddukeejkefgleduiedthfekvefhiedvhfffgeegnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepvddprhgtphhtthhopeejkeeikeefseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdfovfetjfhoshhtpehmohehieefmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=kEmv/NHNVVn4dKZZvHgLtAQh9jX51dbam3JYnwNCGZE=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1749070245; v=1; b=ojIIvmlifLIY6uk+0XH6h/cqMQbWMFIFnx2SqMu/r6nUkqClyVT2Z8TXO0NAXR1wZuFio8XJ TQTK/KEb+wny9r0CHIC8tdRrTfzhz+JiY+ZgNHZOk7VAznnQKkRJ9KmXGMVLWQ+WpYXX6yAWbr7 F4QCsjO/4X1zrm8hoRonqiGMe2RwRrg57ftkDG7tYzpUTcTxAHeHUX9+VZ3nEfVMLegrYNRPQVz mwaTCL32Tz0zNdBM4mFFOpIZqsVXgWYj+KrJdfA2TuK6Uq1hPp4TaD8x5DUvLRzbXb/VRy4peUt sJ090rW5h4jQlg7lVnlilG/EUvcq210SdHEYMjGgDqw1A== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/ruby.scm (ruby-3.4): Update to 3.4.4. --- gnu/packages/ruby.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index a2f6f8041c..32fb264706 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -118,7 +118,7 @@ (define %prawn-project-licenses (define-public ruby-3.4 (package (name "ruby") - (version "3.4.1") + (version "3.4.4") (source (origin (method url-fetch) @@ -127,7 +127,7 @@ (define-public ruby-3.4 "/ruby-" version ".tar.xz")) (sha256 (base32 - "1bvhzbdwdj502wsrs97fvw6jvid2swzjvqj7v2kc1qrbnpzmk381")))) + "1x18dr3qhr1mypbvxc7yr46z06l11if3cx3babcfv7a9x7pn6vgp")))) (build-system gnu-build-system) (arguments `(#:test-target "test" From patchwork Wed Jun 4 20:49:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 43008 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 7C40F27BC4A; Wed, 4 Jun 2025 21:51:36 +0100 (BST) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 49CDB27BC49 for ; Wed, 4 Jun 2025 21:51:35 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uMv4m-0005cn-Gp; Wed, 04 Jun 2025 16:51:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uMv4k-0005cV-Ev for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:06 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uMv4k-0004bK-02 for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=wu37Lan5HQSnhGHlWlqt43X0nomMPurZyjWNyD5g0+E=; b=ocC2FjePLnxayKOB05b1k6ufIR0nux8yGIb3iqdJaRAR7/JIudthW2nBX2SRoZPxahI7CEqpoE4KwI+lfZdRf6bCq3Dt7rd00mDOXuWswZ6WyOr1Us2PXcCmg7hkTggR+9cD7u2wMDWPMXsK19pIkn8nJCbfp57YTuq8biVz1NXEDeq2F0LBOqFdnmyJR5b/nV65DQGbl4AiBCeemSD3JdYmR+9Cch9RGyapmAMkKgrM5/0Hl3CZXunrzajwsACcA7D6EPsr8Vu8VjUQsPit3JJq/+7/atVjKsb53q6eRRbAcd60OQQ3r4pPOWwBVZbMFANsui3JrGq3OH3miak5Bw==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1uMv4j-0001T9-PG for guix-patches@gnu.org; Wed, 04 Jun 2025 16:51:05 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#78683] [PATCH 7/7] ruby: Populating (gnu packages ruby-check/ruby-xyz). Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 04 Jun 2025 20:51:05 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78683 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 78683@debbugs.gnu.org Cc: Nicolas Graves Received: via spool by 78683-submit@debbugs.gnu.org id=B78683.17490702535544 (code B ref 78683); Wed, 04 Jun 2025 20:51:05 +0000 Received: (at 78683) by debbugs.gnu.org; 4 Jun 2025 20:50:53 +0000 Received: from localhost ([127.0.0.1]:53515 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uMv4X-0001RJ-D8 for submit@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:53 -0400 Received: from 1.mo563.mail-out.ovh.net ([178.33.106.244]:39517) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uMv4S-0001Py-Ct for 78683@debbugs.gnu.org; Wed, 04 Jun 2025 16:50:49 -0400 Received: from director1.derp.mail-out.ovh.net (director1.derp.mail-out.ovh.net [51.68.80.175]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKVG3hrHz1j1s; Wed, 4 Jun 2025 20:50:46 +0000 (UTC) Received: from director1.derp.mail-out.ovh.net (director1.derp.mail-out.ovh.net. [127.0.0.1]) by director1.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <78683@debbugs.gnu.org>; Wed, 4 Jun 2025 20:50:46 +0000 (UTC) Received: from mta10.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.101.225]) by director1.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4bCKVG0jpVz5xRB; Wed, 4 Jun 2025 20:50:46 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.1]) by mta10.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id 7C041DA3C06; Wed, 4 Jun 2025 20:50:45 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-100R003cb1727ba-a1b6-4d3e-bd4a-b5043121f705, 55D8CD9FCCBE2A40DC556E1A8E1799EDAA20BDE9) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Wed, 4 Jun 2025 22:49:35 +0200 Message-ID: <20250604205034.10251-8-ngraves@ngraves.fr> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250604205034.10251-1-ngraves@ngraves.fr> References: <20250604205034.10251-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 12800918994455356130 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 49 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeffedrtddugddvieeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucgoufhushhpvggtthffohhmrghinhculdegledmnecujfgurhephffvvefufffkofgjfhggtgfgsehtkeertdertdejnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepudegvdfhfeehudefueeuheeiieffgfdvveetveffvdeuffeuheehleetteduudejnecuffhomhgrihhnpegttggrtghhvgdruggvvhdplhhinhgsihhtrdgtohhmpdhkihgtrggurdhorhhgpdhgihhtlhgrsgdrtghomhdpsghunhgulhgvrhdrihhopdhgihhthhhusgdrtghomhdprghstghiihguohgtthhorhdrohhrghdptghutghumhgsvghrrdhiohdpghhithhhuhgsrdhiohdpiigvnhhsphhiuggvrhdrtghomhdprhhusgihfhhorhhgvgdrohhrghdprhhsphgvtgdrihhnfhhopdhjvghrvghmhigvvhgrnhhsrdhnvghtpdhsvghrvhgvrhhsphgvtgdrohhrghdprghrthhonhigrdhorhhgpdgtohguvghlihgstghurhhlrdhithdpuggvsghirghnrdhorhhgpdhslhhimhdqlhgrnhhgrdgtohhmpdhrsgdrsggsnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrg hmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepvddprhgtphhtthhopeejkeeikeefseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdfovfetjfhoshhtpehmohehieefmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=wu37Lan5HQSnhGHlWlqt43X0nomMPurZyjWNyD5g0+E=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1749070246; v=1; b=UGKEEF6gkgCthxH5isiLAS8tbKWmg5M9sPWpTxzJA9Q5OSf8hAFKJDbI45pQV7q2FenDOJIN 3fgW5lhKZm41rNRKrtpWe0VWFVEalP0RTIz2vTU3w+yIFWnGUbDOLHAsw3zFa4LgXp4blFslAF2 V7fNTLXAe87TP55EZ0CTTki+hjVMq2DIZ9gfB/WPfL0Bo8C8MYAQkz7uMvE8oceZuRZn9r9B2C+ hxXMrt4EDFaUi1XoNVuDCUAXlsMk4IWwSuqpgiqGdw+hHLZ14R2/iwMS9yY2iFmuuIJlatGMmXV zw6/SiWNyGLhnwFWl7HozodgV8V0hlCIQiIGjMvBLKgzw== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/ruby.scm: Move all packages except different versions of ruby and mruby, to either (gnu packages ruby-check) or (gnu packages ruby-xyz). * gnu/packages/ruby-check.scm (bundler, ruby-builder, ruby-cucumber-ci-environment, ruby-cucumber-compatibility-kit, ruby-cucumber-compatibility-kit-bootstrap, ruby-cucumber-core, ruby-cucumber-expressions, ruby-cucumber-gherkin, ruby-cucumber-html-formatter, ruby-cucumber-messages, ruby-cucumber-tag-expressions, ruby-cucumber-wire, ruby-diff-lcs, ruby-docile, ruby-fivemat, ruby-given-core, ruby-hoe, ruby-hoe-3, ruby-json, ruby-mime-types, ruby-mime-types-data, ruby-mini-portile, ruby-mini-portile-2, ruby-minitest, ruby-minitest-bonus-assertions, ruby-minitest-focus, ruby-minitest-hooks, ruby-minitest-moar, ruby-multi-test, ruby-rake, ruby-rake-compiler, ruby-rake-compiler-dock, ruby-rspec, ruby-rspec-2, ruby-rspec-core, ruby-rspec-core-2, ruby-rspec-expectations, ruby-rspec-expectations-2, ruby-rspec-mocks, ruby-rspec-mocks-2, ruby-rspec-support, ruby-sequel, ruby-simplecov-json-formatter, ruby-simplecov, ruby-simplecov-html, ruby-sorcerer, ruby-unindent): Moved from (gnu packages ruby). (ruby-asciidoctor/minimal): New variable, to allow more minimal import of only (gnu packages ruby-check) in a lot of modules. (ruby-rubocop/minimal): New variable to build cucumber with a lot less dependencies. (cucumber-ruby-core)[native-inputs]: Replace ruby-rubocop by ruby-rubocop/minimal. Remove ruby-coveralls. * gnu/packages/ruby-xyz.scm: Move all other packages from (gnu packages ruby). * gnu/packages/admin.scm * gnu/packages/bioinformatics.scm * gnu/packages/databases.scm * gnu/packages/emacs-xyz.scm * gnu/packages/gnome-xyz.scm * gnu/packages/gnome.scm * gnu/packages/groff.scm * gnu/packages/kde-systemtools.scm * gnu/packages/libffi.scm * gnu/packages/mail.scm * gnu/packages/maths.scm * gnu/packages/mpd.scm * gnu/packages/ntp.scm * gnu/packages/package-management.scm * gnu/packages/plotutils.scm * gnu/packages/protobuf.scm * gnu/packages/rails.scm * gnu/packages/ruby-check.scm * gnu/packages/ruby-xyz.scm * gnu/packages/ruby.scm * gnu/packages/shellutils.scm * gnu/packages/statistics.scm * gnu/packages/tex.scm * gnu/packages/virtualization.scm: Adapt module imports accordingly. * gnu/packages/backup.scm (btrbk): * gnu/packages/ccache.scm (ccache): * gnu/packages/cluster.scm (drbd-utils): * gnu/packages/compton.scm (picom): * gnu/packages/cryptsetup.scm (cryptsetup): * gnu/packages/engineering.scm (kicad-doc): * gnu/packages/games.scm (warzone2100): * gnu/packages/irc.scm (open-adventure): * gnu/packages/ntp.scm (weechat): * gnu/packages/password-utils.scm (keepassxc): * gnu/packages/radio.scm (wsjtx, jtdx): * gnu/packages/syndication.scm (newsboat): * gnu/packages/task-management.scm (timewarrior): * gnu/packages/version-control.scm (git-lfs): [native-inputs]: Replace ruby-asciidoctor by ruby-asciidoctor/minimal. Adapt module imports accordingly. * gnu/packages/text-editors.scm: Remove (gnu packages ruby) import. --- gnu/packages/admin.scm | 2 + gnu/packages/backup.scm | 6 +- gnu/packages/bioinformatics.scm | 2 + gnu/packages/ccache.scm | 6 +- gnu/packages/cluster.scm | 6 +- gnu/packages/compton.scm | 6 +- gnu/packages/cryptsetup.scm | 6 +- gnu/packages/databases.scm | 2 + gnu/packages/emacs-xyz.scm | 2 +- gnu/packages/engineering.scm | 4 +- gnu/packages/games.scm | 8 +- gnu/packages/gnome-xyz.scm | 2 +- gnu/packages/gnome.scm | 2 +- gnu/packages/groff.scm | 2 +- gnu/packages/irc.scm | 3 +- gnu/packages/kde-systemtools.scm | 1 + gnu/packages/libffi.scm | 3 +- gnu/packages/mail.scm | 2 + gnu/packages/maths.scm | 2 +- gnu/packages/mpd.scm | 2 +- gnu/packages/ntp.scm | 8 +- gnu/packages/package-management.scm | 2 +- gnu/packages/password-utils.scm | 9 +- gnu/packages/plotutils.scm | 3 +- gnu/packages/protobuf.scm | 2 +- gnu/packages/radio.scm | 10 +- gnu/packages/rails.scm | 2 + gnu/packages/ruby-check.scm | 1157 +- gnu/packages/ruby-xyz.scm | 16748 +++++++++++++++++++++++- gnu/packages/ruby.scm | 17751 +------------------------- gnu/packages/shellutils.scm | 2 + gnu/packages/statistics.scm | 3 +- gnu/packages/syndication.scm | 6 +- gnu/packages/task-management.scm | 4 +- gnu/packages/tex.scm | 1 + gnu/packages/text-editors.scm | 1 - gnu/packages/version-control.scm | 6 +- gnu/packages/virtualization.scm | 2 + 38 files changed, 17984 insertions(+), 17802 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 7f7d46af21..a7bbf9b8e2 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -197,6 +197,8 @@ (define-module (gnu packages admin) #:use-module (gnu packages qt) #:use-module (gnu packages readline) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages selinux) #:use-module (gnu packages serialization) #:use-module (gnu packages sqlite) diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index b4aca86774..cdc969e5be 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -101,7 +101,7 @@ (define-module (gnu packages backup) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages rsync) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages serialization) #:use-module (gnu packages ssh) #:use-module (gnu packages time) @@ -1221,8 +1221,8 @@ (define btrbk (search-input-file outputs "bin/btrbk")) "bin/mbuffer" "bin/ssh"))))))))) (native-inputs - (if (supported-package? ruby-asciidoctor) - (list ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) + (list ruby-asciidoctor/minimal) '())) (inputs (list bash-minimal btrfs-progs diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index a119a13a6f..4e289baeed 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -159,6 +159,8 @@ (define-module (gnu packages bioinformatics) #:use-module (gnu packages rpc) #:use-module (gnu packages rsync) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages serialization) #:use-module (gnu packages shells) #:use-module (gnu packages skribilo) diff --git a/gnu/packages/ccache.scm b/gnu/packages/ccache.scm index a1af25df2b..bc7c6bfb6c 100644 --- a/gnu/packages/ccache.scm +++ b/gnu/packages/ccache.scm @@ -30,7 +30,7 @@ (define-module (gnu packages ccache) #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages perl) - #:use-module (gnu packages ruby)) + #:use-module (gnu packages ruby-check)) (define-public ccache (package @@ -64,8 +64,8 @@ (define-public ccache (setenv "HOME" (getenv "TMPDIR"))))))) (native-inputs (append (list perl which) - (if (supported-package? ruby-asciidoctor) - (list ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) + (list ruby-asciidoctor/minimal) '()))) (inputs (list zlib `(,zstd "lib"))) (home-page "https://ccache.dev/") diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm index 6d5ea0c3b2..866cfdce5b 100644 --- a/gnu/packages/cluster.scm +++ b/gnu/packages/cluster.scm @@ -37,7 +37,7 @@ (define-module (gnu packages cluster) #:use-module (gnu packages libevent) #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages sphinx) #:use-module (gnu packages sqlite) #:use-module (gnu packages texinfo) @@ -135,12 +135,12 @@ (define-public drbd-utils eudev ;just to satisfy a configure check flex) ;; For the documentation. - (if (supported-package? ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) (list docbook-xml docbook-xml-4.4 ;used by documentation/ra2refentry.xsl docbook-xsl libxslt ;for xsltproc - ruby-asciidoctor) + ruby-asciidoctor/minimal) '()))) (home-page "https://www.linbit.com/drbd/") (synopsis "Replicate block devices between machines") diff --git a/gnu/packages/compton.scm b/gnu/packages/compton.scm index 6e8dd5442e..1d20cf3b27 100644 --- a/gnu/packages/compton.scm +++ b/gnu/packages/compton.scm @@ -43,7 +43,7 @@ (define-module (gnu packages compton) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) - #:use-module (gnu packages ruby)) + #:use-module (gnu packages ruby-check)) (define-public compton (let ((upstream-version "0.1_beta2")) @@ -146,8 +146,8 @@ (define-public picom (native-inputs (append (list pkg-config xorgproto) - (if (supported-package? ruby-asciidoctor) - (list ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) + (list ruby-asciidoctor/minimal) '()))) (arguments (list #:build-type "release" diff --git a/gnu/packages/cryptsetup.scm b/gnu/packages/cryptsetup.scm index 44f9c77984..d2f537681d 100644 --- a/gnu/packages/cryptsetup.scm +++ b/gnu/packages/cryptsetup.scm @@ -32,7 +32,7 @@ (define-module (gnu packages cryptsetup) #:use-module (gnu packages pkg-config) #:use-module (gnu packages popt) #:use-module (gnu packages linux) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages web)) (define-public cryptsetup @@ -71,8 +71,8 @@ (define-public cryptsetup (assoc-ref %build-inputs "libgcrypt")))))) (native-inputs (append (list pkg-config) - (if (supported-package? ruby-asciidoctor) - (list ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) + (list ruby-asciidoctor/minimal) '()))) (inputs (list argon2 diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index f7a6cf926d..d484aa08f0 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -162,6 +162,8 @@ (define-module (gnu packages databases) #:use-module (gnu packages regex) #:use-module (gnu packages rpc) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages serialization) #:use-module (gnu packages sphinx) #:use-module (gnu packages ssh) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 7dbb602785..90b4b9f044 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -268,7 +268,7 @@ (define-module (gnu packages emacs-xyz) #:use-module (gnu packages perl) #:use-module (gnu packages pdf) #:use-module (gnu packages racket) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages rust) #:use-module (gnu packages rust-apps) #:use-module (gnu packages scheme) diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 8b1332e186..696ea6f669 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -158,7 +158,7 @@ (define-module (gnu packages engineering) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages sagemath) #:use-module (gnu packages serialization) #:use-module (gnu packages sqlite) @@ -1403,7 +1403,7 @@ (define-public kicad-doc perl-unicode-linebreak perl-yaml-tiny po4a - ruby-asciidoctor + ruby-asciidoctor/minimal source-highlight)) (home-page "https://kicad.org") (synopsis "KiCad official documentation") diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index db2f54790d..bc93a73647 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -217,7 +217,7 @@ (define-module (gnu packages games) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages shells) #:use-module (gnu packages sdl) #:use-module (gnu packages serialization) @@ -6350,7 +6350,7 @@ (define-public warzone2100 "iV_DrawTextRotated(\"Press ESC to exit.\", " "100, 100, 0.0f, font_regular);")))))))) (native-inputs (list asciidoc - ruby-asciidoctor + ruby-asciidoctor/minimal gettext-minimal pkg-config unzip @@ -8184,8 +8184,8 @@ (define-public open-adventure python-pylint python-pyyaml python-wrapper) - (if (supported-package? ruby-asciidoctor) - (list ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) + (list ruby-asciidoctor/minimal) '()))) (home-page "https://gitlab.com/esr/open-adventure") (synopsis "Colossal Cave Adventure") diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm index 904916594b..43322a1841 100644 --- a/gnu/packages/gnome-xyz.scm +++ b/gnu/packages/gnome-xyz.scm @@ -83,7 +83,7 @@ (define-module (gnu packages gnome-xyz) #:use-module (gnu packages ssh) #:use-module (gnu packages textutils) #:use-module (gnu packages tls) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages xorg)) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 56236013a7..eed35ebdfc 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -211,7 +211,7 @@ (define-module (gnu packages gnome) #:use-module (gnu packages rdesktop) #:use-module (gnu packages rdf) #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages rust) #:use-module (gnu packages samba) #:use-module (gnu packages scanner) diff --git a/gnu/packages/groff.scm b/gnu/packages/groff.scm index d4e1bc2127..5434c30888 100644 --- a/gnu/packages/groff.scm +++ b/gnu/packages/groff.scm @@ -35,7 +35,7 @@ (define-module (gnu packages groff) #:use-module (guix gexp) #:use-module (gnu packages) #:use-module (gnu packages bash) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages bison) #:use-module (gnu packages flex) #:use-module (gnu packages ghostscript) diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm index 1ab72a3636..79039c6c58 100644 --- a/gnu/packages/irc.scm +++ b/gnu/packages/irc.scm @@ -103,6 +103,7 @@ (define-module (gnu packages irc) #:use-module (gnu packages python-xyz) #:use-module (gnu packages regex) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages sphinx) #:use-module (gnu packages sqlite) #:use-module (gnu packages qt) @@ -389,7 +390,7 @@ (define-public weechat (native-inputs (append (list gettext-minimal pkg-config) (if (target-x86?) - (list ruby-asciidoctor) + (list ruby-asciidoctor/minimal) '()))) (inputs (list aspell diff --git a/gnu/packages/kde-systemtools.scm b/gnu/packages/kde-systemtools.scm index 4923854a7c..905cde5081 100644 --- a/gnu/packages/kde-systemtools.scm +++ b/gnu/packages/kde-systemtools.scm @@ -38,6 +38,7 @@ (define-module (gnu packages kde-systemtools) #:use-module (gnu packages qt) #:use-module (gnu packages glib) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages search) #:use-module (gnu packages vnc) #:use-module (gnu packages perl) diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm index 5ac092da1c..b1e8cd5333 100644 --- a/gnu/packages/libffi.scm +++ b/gnu/packages/libffi.scm @@ -39,7 +39,8 @@ (define-module (gnu packages libffi) #:use-module (gnu packages python) #:use-module (gnu packages python-build) #:use-module (gnu packages python-xyz) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages sphinx) #:use-module (guix build-system gnu) #:use-module (guix build-system pyproject) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 54941cc21a..5f475c20df 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -168,6 +168,8 @@ (define-module (gnu packages mail) #:use-module (gnu packages readline) #:use-module (gnu packages regex) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages rust-apps) #:use-module (gnu packages samba) #:use-module (gnu packages screen) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 74bdfab84c..659ff24a70 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -184,7 +184,7 @@ (define-module (gnu packages maths) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages tbb) #:use-module (gnu packages scheme) #:use-module (gnu packages serialization) diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index 8ec02fcb55..7a3dd1a1e3 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -58,7 +58,7 @@ (define-module (gnu packages mpd) #:use-module (gnu packages libusb) #:use-module (gnu packages lua) #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages curl) diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm index 089814b6ab..2ab3937b3b 100644 --- a/gnu/packages/ntp.scm +++ b/gnu/packages/ntp.scm @@ -41,7 +41,7 @@ (define-module (gnu packages ntp) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (guix build-system gnu) @@ -109,8 +109,8 @@ (define-public chrony (native-inputs (append (list bison pkg-config) - (if (supported-package? ruby-asciidoctor) - (list ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) + (list ruby-asciidoctor/minimal) '()))) (inputs (list gnutls libcap libseccomp nettle)) @@ -212,7 +212,7 @@ (define-public ntpsec pkg-config pps-tools python-waf - ruby-asciidoctor)) + ruby-asciidoctor/minimal)) (inputs (cons* gpsd openssl ;; Build with POSIX capabilities and syscall filtering ;; support on GNU/Linux, for extra security features. diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 0d307134ed..bc228ca77a 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -109,7 +109,7 @@ (define-module (gnu packages package-management) #:use-module (gnu packages python-check) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages serialization) #:use-module (gnu packages sqlite) #:use-module (gnu packages ssh) diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 665f8c1399..566a033992 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -116,6 +116,7 @@ (define-module (gnu packages password-utils) #:use-module (gnu packages rdesktop) #:use-module (gnu packages readline) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages security-token) #:use-module (gnu packages suckless) #:use-module (gnu packages tcl) @@ -242,7 +243,8 @@ (define-public keepassxc (list "-DWITH_XC_ALL=YES" "-DWITH_XC_UPDATECHECK=NO") #$(if (member (%current-system) - (package-transitive-supported-systems ruby-asciidoctor)) + (package-transitive-supported-systems + ruby-asciidoctor/minimal)) #~'() #~(list "-DWITH_XC_DOCS=NO"))) #:phases @@ -283,8 +285,9 @@ (define-public keepassxc (append (list qttools-5) (if (member (%current-system) - (package-transitive-supported-systems ruby-asciidoctor)) - (list ruby-asciidoctor) + (package-transitive-supported-systems + ruby-asciidoctor/minimal)) + (list ruby-asciidoctor/minimal) '()))) (inputs (list argon2 diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index feec60ca42..fd63e6952c 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -56,7 +56,8 @@ (define-module (gnu packages plotutils) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages statistics) #:use-module (gnu packages tex) #:use-module (gnu packages texinfo) diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm index 0d0fc4b808..d22f6ed54e 100644 --- a/gnu/packages/protobuf.scm +++ b/gnu/packages/protobuf.scm @@ -51,7 +51,7 @@ (define-module (gnu packages protobuf) #:use-module (gnu packages python-xyz) #:use-module (gnu packages rpc) #:use-module (gnu packages rails) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) #:use-module (srfi srfi-1)) (define-public fstrm diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index 175ed05f8c..efdb0dbd79 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -103,7 +103,7 @@ (define-module (gnu packages radio) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages sdl) #:use-module (gnu packages serialization) #:use-module (gnu packages sphinx) @@ -1773,8 +1773,8 @@ (define-public wsjtx gfortran pkg-config qttools-5) - (if (supported-package? ruby-asciidoctor) - (list ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) + (list ruby-asciidoctor/minimal) '()))) (inputs (list boost @@ -1811,8 +1811,8 @@ (define-public jtdx (build-system qt-build-system) (native-inputs (append (list asciidoc gfortran pkg-config qttools-5) - (if (supported-package? ruby-asciidoctor) - (list ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) + (list ruby-asciidoctor/minimal) '()))) (inputs (list diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm index 2045be03f0..2a7aa36f82 100644 --- a/gnu/packages/rails.scm +++ b/gnu/packages/rails.scm @@ -32,6 +32,8 @@ (define-module (gnu packages rails) #:use-module (gnu packages databases) #:use-module (gnu packages node) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages sqlite) #:use-module (gnu packages version-control) #:use-module (guix build-system ruby)) diff --git a/gnu/packages/ruby-check.scm b/gnu/packages/ruby-check.scm index bb42267b12..5db07ff240 100644 --- a/gnu/packages/ruby-check.scm +++ b/gnu/packages/ruby-check.scm @@ -1,4 +1,37 @@ ;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015-2018 Ben Woodcroft +;;; Copyright © 2015 David Thompson +;;; Copyright © 2015 Pjotr Prins +;;; Copyright © 2015, 2019 Ricardo Wurmus +;;; Copyright © 2016 Muriithi Frederick Muriuki +;;; Copyright © 2017-2020, 2023 Christopher Baines +;;; Copyright © 2017, 2021 Efraim Flashner +;;; Copyright © 2017 nikita +;;; Copyright © 2018 Danny Milosavljevic +;;; Copyright © 2018 Julien Lepiller +;;; Copyright © 2019 Björn Höfling +;;; Copyright © 2019 Brian Leung +;;; Copyright © 2019 Collin J. Doering +;;; Copyright © 2019 Jelle Licht +;;; Copyright © 2019 Mikhail Kirillov +;;; Copyright © 2020 Holger Peters +;;; Copyright © 2020, 2021, 2022 Marius Bakke +;;; Copyright © 2020, 2023 Maxim Cournoyer +;;; Copyright © 2020 Nicolas Goaziou +;;; Copyright © 2021 EuAndreh +;;; Copyright © 2021 Giacomo Leidi +;;; Copyright © 2021 Ludovic Courtès +;;; Copyright © 2021 Mathieu Othacehe +;;; Copyright © 2022, 2024 Danny Milosavljevic +;;; Copyright © 2022 Maxime Devos +;;; Copyright © 2022 Philip McGrath +;;; Copyright © 2022 Stephen Paul Weber +;;; Copyright © 2022 Taiju HIGASHI +;;; Copyright © 2022 Tom Fitzhenry +;;; Copyright © 2023 gemmaro +;;; Copyright © 2023 Hartmut Goebel +;;; Copyright © 2023 Yovan Naumovski +;;; Copyright © 2025 Nicolas Graves ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,10 +51,13 @@ (define-module (gnu packages ruby-check) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system ruby) + #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix packages) - #:use-module (gnu packages)) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages ruby)) ;;; Commentary: ;;; @@ -30,6 +66,1125 @@ (define-module (gnu packages ruby-check) ;;; Code: +;; Bundler is yet another source of circular dependencies, so we must disable +;; its test suite as well. +(define-public bundler + (package + (name "bundler") + (version "2.4.18") + (source (origin + (method url-fetch) + (uri (rubygems-uri "bundler" version)) + (sha256 + (base32 + "03ppd60cbwzlrhsidi7frj826ssmxzwd954ikjk7966l45qx5xxn")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (synopsis "Ruby gem bundler") + (description "Bundler automatically downloads and installs a list of gems +specified in a \"Gemfile\", as well as their dependencies.") + (home-page "https://bundler.io/") + (license license:expat))) + +(define-public ruby-asciidoctor/minimal + (hidden-package + (package + (name "ruby-asciidoctor") + (version "2.0.20") + (source + (origin + (method git-fetch) ;the gem release lacks a Rakefile + (uri (git-reference + (url "https://github.com/asciidoctor/asciidoctor") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19qvilhwa9plg80ppspn5ys0ybl8qfyaicqbl9w316hk5ldwi1jq")))) + (build-system ruby-build-system) + (arguments (list #:tests? #f)) + (synopsis "Converter from AsciiDoc content to other formats") + (description "Asciidoctor is a text processor and publishing toolchain for +converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.") + (home-page "https://asciidoctor.org") + (license license:expat)))) + +(define-public ruby-builder + (package + (name "ruby-builder") + (version "3.2.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "builder" version)) + (sha256 + (base32 + "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr")))) + (build-system ruby-build-system) + (arguments + (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/tenderlove/builder") + (license license:expat))) + +(define-public ruby-cucumber-ci-environment + (package + (name "ruby-cucumber-ci-environment") + (version "9.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cucumber-ci-environment" version)) + (sha256 + (base32 + "1nmn2hfrjlbazgcryr3hwvsa5v4csfbjqxb4q7wbjhaxl9xxn0k7")))) + (build-system ruby-build-system) + (arguments (list #:phases #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs (list ruby-rspec)) + (synopsis "Detect CI Environment from environment variables") + (description "This is a Ruby utility library for Cucumber that detects a +CI environment from environment variables.") + (home-page "https://github.com/cucumber/ci-environment") + (license license:expat))) + +(define-public ruby-cucumber-compatibility-kit + (package + (name "ruby-cucumber-compatibility-kit") + (version "11.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cucumber-compatibility-kit" version)) + (sha256 + (base32 + "17c8zx0yn68rcpfbw4nb1gzvh9fzpwsi1y0qivb99ahdlgzcdp8q")))) + (build-system ruby-build-system) + (arguments (list #:phases #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (propagated-inputs (list ruby-cucumber-messages ruby-rake ruby-rspec)) + (synopsis "Cucumber compatibility verification utility") + (description "The Cucumber Compatibility Kit (CCK) aims to validate a +Cucumber implementation's support for the Cucumber Messages protocol.") + (home-page "https://github.com/cucumber/compatibility-kit") + (license license:expat))) + +;;; Variant package to break a cycle with ruby-cucumber-messages. +(define ruby-cucumber-compatibility-kit-bootstrap + (package/inherit ruby-cucumber-compatibility-kit + (arguments (list #:tests? #f)) + (propagated-inputs (modify-inputs (package-propagated-inputs + ruby-cucumber-compatibility-kit) + (delete "ruby-cucumber-messages"))))) + +(define-public ruby-cucumber-core + (package + (name "ruby-cucumber-core") + (version "11.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cucumber/cucumber-ruby-core") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0lf2inlam0951djc2qz81x0nkffmw2dpj44iadw1fw31m7r8wqvh")))) + (build-system ruby-build-system) + (arguments (list #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-version-requirements + (lambda _ + (substitute* "cucumber-core.gemspec" + (("'cucumber-tag-expressions',.*") + "'cucumber-tag-expressions', '>=4.1.0'\n"))))))) + (native-inputs + (list ruby-rspec + ruby-rubocop/minimal + ruby-simplecov + ruby-unindent)) + (propagated-inputs + (list ruby-cucumber-gherkin + ruby-cucumber-messages + ruby-cucumber-tag-expressions)) + (synopsis "Core library for the Cucumber BDD app") + (description "Cucumber is a tool for running automated tests +written in plain language. Because they're written in plain language, +they can be read by anyone on your team. Because they can be read by +anyone, you can use them to help improve communication, collaboration +and trust on your team.") + (home-page "https://cucumber.io/") + (license license:expat))) + +(define-public ruby-cucumber-expressions + (package + (name "ruby-cucumber-expressions") + (version "16.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cucumber/cucumber-expressions") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1dhq88k9x2x8svam5bc7rrcd166fqymda8wxryqkbkffhnzla0id")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "ruby")))))) + (native-inputs (list ruby-rspec ruby-simplecov)) + (synopsis "Simpler alternative to Regular Expressions") + (description "Cucumber Expressions offer similar functionality to Regular +Expressions, with a syntax that is easier to read and write. Cucumber +Expressions are extensible with parameter types.") + (home-page "https://github.com/cucumber/cucumber-expressions/") + (license license:expat))) + +(define-public ruby-cucumber-gherkin + (package + (name "ruby-cucumber-gherkin") + (version "26.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cucumber/gherkin") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1rsannfcg5rqh5a3d3paw10kf6mmqjrgbq3k235px4swbyqysmgn")))) + (build-system ruby-build-system) + (arguments (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "ruby")))))) + (native-inputs (list ruby-rspec)) + (propagated-inputs (list ruby-cucumber-messages)) + (synopsis "Gherkin parser for Ruby") + (description "Gherkin is a parser and compiler for the Gherkin language. +It is intended be used by all Cucumber implementations to parse +@file{.feature} files.") + (home-page "https://github.com/cucumber/gherkin") + (license license:expat))) + +(define-public ruby-cucumber-html-formatter + (package + (name "ruby-cucumber-html-formatter") + (version "20.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "cucumber-html-formatter" version)) + (sha256 + (base32 + "0c7r9mfmph4c6yzc7y3dkr92rhwvpyksr0mdhpqp67xmmr8z1br4")))) + (build-system ruby-build-system) + (arguments + (list #:phases #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (substitute* ".gemspec" + (("~> 18.0") "~> 21.0")))) ;cucumber-messages + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs (list ruby-cucumber-compatibility-kit ruby-rspec)) + (propagated-inputs (list ruby-cucumber-messages)) + (synopsis "HTML formatter for Cucumber") + (description "Cucumber HTML Formatter produces a HTML report for Cucumber +runs. It is built on top of cucumber-react and works with any Cucumber +implementation with a protocol buffer formatter that outputs Cucumber +messages.") + (home-page "https://github.com/cucumber/html-formatter") + (license license:expat))) + +(define-public ruby-cucumber-messages + (package + (name "ruby-cucumber-messages") + (version "21.0.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cucumber-messages" version)) + (sha256 + (base32 + "0482a63y7my0arn2bv208g401dq8525f0gwhnwaa11mhv6ph0q5i")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + ;; The test suite requires the gem to be installed, so move it + ;; after the install phase. + (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? + (invoke "rspec"))))))) + (native-inputs + (list ruby-cucumber-compatibility-kit-bootstrap ruby-rspec)) + (home-page "https://github.com/cucumber/messages/") + (synopsis "Cucumber Messages for Ruby (Protocol Buffers)") + (description "Cucumber Messages for Ruby is a library which allows +serialization and deserialization of the protocol buffer messages used in +Cucumber.") + (license license:expat))) + +(define-public ruby-cucumber-tag-expressions + (package + (name "ruby-cucumber-tag-expressions") + (version "5.0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cucumber/tag-expressions") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ziq30szn8m5y29hsdpx4dn1a8sy29h01nvcldm8nr1mx4b7dj1w")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "ruby")))))) + (native-inputs (list ruby-rspec)) + (synopsis "Cucumber tag expressions for Ruby") + (description "Cucumber tag expression parser for Ruby. A tag expression +is an infix boolean expression used by Cucumber.") + (home-page "https://github.com/cucumber/tag-expressions") + (license license:expat))) + +(define-public ruby-cucumber-wire + (package + (name "ruby-cucumber-wire") + (version "6.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "cucumber-wire" version)) + (sha256 + (base32 + "1pmydrh9lcckj7p0cn67jw7msxdkgr9zir86cs19h3mf2zlcv7b9")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f)) ;tests use cucumber, causing a cycle + (propagated-inputs + (list ruby-cucumber-core ruby-cucumber-expressions + ruby-cucumber-messages)) + (synopsis "Cucumber wire protocol plugin") + (description "Cucumber's wire protocol allows step definitions to be +implemented and invoked on any platform.") + (home-page "https://github.com/cucumber/cucumber-ruby-wire") + (license license:expat))) + +(define-public ruby-diff-lcs + (package + (name "ruby-diff-lcs") + (version "1.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "diff-lcs" version)) + (sha256 + (base32 + "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (synopsis "Compute the difference between two Enumerable sequences") + (description "Diff::LCS computes the difference between two Enumerable +sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm. +It includes utilities to create a simple HTML diff output format and a +standard diff-like tool.") + (home-page "https://github.com/halostatue/diff-lcs") + (license license:expat))) + +(define-public ruby-docile + (package + (name "ruby-docile") + (version "1.1.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "docile" version)) + (sha256 + (base32 + "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; needs github-markup, among others + (synopsis "Ruby EDSL helper library") + (description "Docile is a Ruby library that provides an interface for +creating embedded domain specific languages (EDSLs) that manipulate existing +Ruby classes.") + (home-page "https://ms-ati.github.io/docile/") + (license license:expat))) + +(define-public ruby-fivemat + (package + (name "ruby-fivemat") + (version "1.3.7") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "fivemat" version)) + (sha256 + (base32 + "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; no tests + (synopsis "Each test file given its own line of dots") + (description + "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file +its own line of dots during testing. It aims to provide test output that is +neither too verbose nor too minimal.") + (home-page "https://github.com/tpope/fivemat") + (license license:expat))) + +(define-public ruby-given-core + (package + (name "ruby-given-core") + (version "3.8.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "given_core" version)) + (sha256 + (base32 + "0w1pyhgb2am7c267s8v06dpd9qhmsk2x4hfr2aq8l8lh49ma227s")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ;no test suite for the core package + (propagated-inputs + (list ruby-sorcerer)) + (synopsis "Core abstractions used by rspec-given and minitest-given") + (description "Given_core is the basic functionality behind rspec-given and +minitest-given, extensions that allow the use of Given/When/Then terminology +when defining specifications.") + (home-page "https://github.com/rspec-given/rspec-given") + (license license:expat))) + +(define-public ruby-hoe + (package + (name "ruby-hoe") + (version "4.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "hoe" version)) + (sha256 + (base32 + "1rhj1zs02mpdw6f4fh3mpfmj0p5pfar7rfxm758pk7l931mm8pyn")))) + (build-system ruby-build-system) + (arguments + (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, +maintain, and release projects and includes a dynamic plug-in system allowing +for easy extensibility. Hoe ships with plug-ins for all the usual project +tasks including rdoc generation, testing, packaging, deployment, and +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-json + (package + (name "ruby-json") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "json" version)) + (sha256 + (base32 + "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; dependency cycle with sdoc + (synopsis "JSON library for Ruby") + (description "This Ruby library provides a JSON implementation written as +a native C extension.") + (home-page "http://json-jruby.rubyforge.org/") + (license (list license:ruby license:gpl2)))) ; GPL2 only + +(define-public ruby-mime-types + (package + (name "ruby-mime-types") + (version "3.4.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mime-types" version)) + (sha256 + (base32 + "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-mime-types-data)) + (native-inputs + (list ruby-hoe + ruby-fivemat + ruby-minitest-focus + ruby-minitest-bonus-assertions + ruby-minitest-hooks)) + (synopsis "Library and registry for MIME content type definitions") + (description "The mime-types library provides a library and registry for +information about Multipurpose Internet Mail Extensions (MIME) content type +definitions. It can be used to determine defined filename extensions for MIME +types, or to use filename extensions to look up the likely MIME type +definitions.") + (home-page "https://github.com/mime-types/ruby-mime-types") + (license license:expat))) + +(define-public ruby-mime-types-data + (package + (name "ruby-mime-types-data") + (version "3.2016.0521") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mime-types-data" version)) + (sha256 + (base32 + "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-hoe)) + (synopsis "Registry for information about MIME media type definitions") + (description + "@code{mime-types-data} provides a registry for information about +Multipurpose Internet Mail Extensions (MIME) media type definitions. It can +be used with the Ruby mime-types library or other software to determine +defined filename extensions for MIME types, or to use filename extensions to +look up the likely MIME type definitions.") + (home-page "https://github.com/mime-types/mime-types-data/") + (license license:expat))) + +(define-public ruby-mini-portile + (package + (name "ruby-mini-portile") + (version "0.6.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mini_portile" version)) + (sha256 + (base32 + "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; tests require network access + (synopsis "Ports system for Ruby developers") + (description "Mini-portile is a port/recipe system for Ruby developers. +It provides a standard way to compile against specific versions of libraries +to reproduce user environments.") + (home-page "https://github.com/flavorjones/mini_portile") + (license license:expat))) + +(define-public ruby-mini-portile-2 + (package + (inherit ruby-mini-portile) + (version "2.8.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "mini_portile2" version)) + (sha256 + (base32 + "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6")))))) + +(define-public ruby-minitest + (package + (name "ruby-minitest") + (version "5.18.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minitest" version)) + (sha256 + (base32 + "1kg9wh7jlc9zsr3hkhpzkbn0ynf4np5ap9m2d8xdrb8shy0y6pmb")))) + (build-system ruby-build-system) + (native-inputs (list ruby-hoe)) + (home-page "https://github.com/minitest/minitest") + (synopsis "Small test suite library for Ruby") + (description "Minitest provides a complete suite of Ruby testing +facilities supporting TDD, BDD, mocking, and benchmarking.") + (license license:expat))) + +(define-public ruby-minitest-bonus-assertions + (package + (name "ruby-minitest-bonus-assertions") + (version "3.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-bonus-assertions" version)) + (sha256 + (base32 + "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a")))) + (build-system ruby-build-system) + (arguments + (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-focus + ruby-minitest-moar)) + (synopsis "Bonus assertions for @code{Minitest}") + (description + "Minitest bonus assertions provides extra MiniTest assertions. For +instance, it provides @code{assert_true}, @code{assert_false} and +@code{assert_set_equal}.") + (home-page "https://github.com/halostatue/minitest-bonus-assertions") + (license license:expat))) + +(define-public ruby-minitest-focus + (package + (name "ruby-minitest-focus") + (version "1.3.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-focus" version)) + (sha256 + (base32 + "13kd2dkd9akfb99ziqndz9mir5iynyfyj2l45mcibab6mq5k8g67")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-minitest)) + (native-inputs + (list ruby-hoe)) + (synopsis "Allows a few specific tests to be focused on") + (description + "@code{minitest-focus} gives the ability focus on a few tests with ease +without having to use command-line arguments. It introduces a @code{focus} +class method for use in testing classes, specifying that the next defined test +is to be run.") + (home-page "https://github.com/seattlerb/minitest-focus") + (license license:expat))) + +(define-public ruby-minitest-hooks + (package + (name "ruby-minitest-hooks") + (version "1.5.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-hooks" version)) + (sha256 + (base32 "11jb31dl5kbpyl3kgxql0p7da9066r2aqw54y5q6cni9nmld3zf5")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No tests bundled. + (native-inputs + (list ruby-sequel ;ruby-sqlite3 + )) + (synopsis "Hooks for the minitest framework") + (description + "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all}, +@code{around_all} hooks for Minitest. This allows, for instance, running each +suite of specs inside a database transaction, running each spec inside its own +savepoint inside that transaction. This can significantly speed up testing +for specs that share expensive database setup code.") + (home-page "https://github.com/jeremyevans/minitest-hooks") + (license license:expat))) + +(define-public ruby-minitest-moar + (package + (name "ruby-minitest-moar") + (version "0.0.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-moar" version)) + (sha256 + (base32 + "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'clean-dependencies + (lambda _ + ;; Remove all gems defined in the Gemfile because these are not + ;; truly needed. + (substitute* "Gemfile" + (("gem .*") "")) + ;; Remove byebug as not needed to run tests. + (substitute* "test/test_helper.rb" + (("require 'byebug'") ""))))))) + (native-inputs + (list bundler ruby-minitest)) + (synopsis "Extra features and changes to MiniTest") + (description "@code{MiniTest Moar} add some additional features and +changes some default behaviours in MiniTest. For instance, Moar replaces the +MiniTest @code{Object#stub} with a global @code{stub} method.") + (home-page "https://github.com/dockyard/minitest-moar") + (license license:expat))) + +(define-public ruby-multi-test + (package + (name "ruby-multi-test") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "multi_test" version)) + (sha256 + (base32 + "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd")))) + (build-system ruby-build-system) + (arguments + '(;; Tests require different sets of specific gem versions to be available, + ;; and there is no gemfile that specifies the newest versions of + ;; dependencies to be tested. + #:tests? #f)) + (synopsis + "Interface to testing libraries loaded into a running Ruby process") + (description + "@code{multi_test} provides a uniform interface onto whatever testing +libraries that have been loaded into a running Ruby process to help control +rogue test/unit/autorun requires.") + (home-page "https://github.com/cucumber/multi_test") + (license license:expat))) + +(define-public ruby-rake + (package + (name "ruby-rake") + (version "13.0.6") + (source + (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/rake") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0c77xyl677s966f8yvk8yv7l31c1ffa1yl4kcwiram219h0s76in")))) + (build-system ruby-build-system) + (native-inputs + (list bundler)) + (synopsis "Rake is a Make-like program implemented in Ruby") + (description + "Rake is a Make-like program where tasks and dependencies are specified +in standard Ruby syntax.") + (home-page "https://github.com/ruby/rake") + (license license:expat))) + +(define-public ruby-rake-compiler + (package + (name "ruby-rake-compiler") + (version "1.2.9") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rake-compiler" version)) + (sha256 + (base32 + "01rnl94p1sr84xkbnh66db42qsndykbfx2z2fggxyxx9vnji6cjs")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; needs cucumber + (synopsis "Building and packaging helper for Ruby native extensions") + (description "Rake-compiler provides a framework for building and +packaging native C and Java extensions in Ruby.") + (home-page "https://github.com/rake-compiler/rake-compiler") + (license license:expat))) + +(define-public ruby-rake-compiler-dock + (package + (name "ruby-rake-compiler-dock") + (version "1.3.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rake-compiler-dock" version)) + (sha256 + (base32 + "0yr5f72irvhmnk12q7bbr4qw0xwy7diqkbcvb4lygjbg7rvk3k8k")))) + (build-system ruby-build-system) + (arguments (list #:tests? #f)) ;test suite requires docker + (synopsis "Cross compiler environment for building Ruby gems") + (description "The code{rake-compiler-dock} gem provides a cross compiler +environment for building gems on a variety of platforms (GNU/Linux, JRuby, +Windows and Mac).") + (home-page "https://github.com/rake-compiler/rake-compiler-dock") + (license license:expat))) + +(define-public ruby-rubocop/minimal + (hidden-package + (package + (name "ruby-rubocop") + (version "1.68.0") + (source + (origin + (method git-fetch) ;no tests in distributed gem + (uri (git-reference + (url "https://github.com/rubocop/rubocop") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0pfsrgkg2dhb6a2rknciqskgxgmb9kf48rvbkhay9n8n6m712v2w")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-runtime-dependencies + (lambda _ + (substitute* "rubocop.gemspec" + (("s\\.add_dependency.*") ""))))))) + (synopsis "Ruby code style checking tool") + (description + "@code{rubocop} is a Ruby code style checking tool. It aims to enforce +the community-driven Ruby Style Guide.") + (home-page "https://github.com/rubocop/rubocop") + (license license:expat)))) + +(define-public ruby-rspec + (package + (name "ruby-rspec") + (version "3.13.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec" version)) + (sha256 + (base32 + "14xrp8vq6i9zx37vh0yp4h9m0anx9paw200l1r5ad9fmq559346l")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (propagated-inputs + (list ruby-rspec-core ruby-rspec-expectations ruby-rspec-mocks)) + (synopsis "Behavior-driven development framework for Ruby") + (description "RSpec is a behavior-driven development (BDD) framework for +Ruby. This meta-package includes the RSpec test runner, along with the +expectations and mocks frameworks.") + (home-page "https://rspec.info/") + (license license:expat))) + +(define-public ruby-rspec-2 + (package (inherit ruby-rspec) + (version "2.14.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec" version)) + (sha256 + (base32 + "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg")))) + (propagated-inputs + (list ruby-rspec-core-2 ruby-rspec-mocks-2 ruby-rspec-expectations-2)))) + +(define-public ruby-rspec-core + (package + (name "ruby-rspec-core") + (version "3.13.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-core" version)) + (sha256 + (base32 + "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (propagated-inputs + (list ruby-rspec-support)) + (synopsis "RSpec core library") + (description "Rspec-core provides the RSpec test runner and example +groups.") + (home-page "https://github.com/rspec/rspec-core") + (license license:expat))) + +(define-public ruby-rspec-core-2 + (package (inherit ruby-rspec-core) + (version "2.14.8") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-core" version)) + (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-rspec-expectations + (package + (name "ruby-rspec-expectations") + (version "3.13.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-expectations" version)) + (sha256 + (base32 + "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (propagated-inputs + (list ruby-diff-lcs ruby-rspec-support)) + (synopsis "RSpec expectations library") + (description "Rspec-expectations provides a simple API to express expected +outcomes of a code example.") + (home-page "https://github.com/rspec/rspec-expectations") + (license license:expat))) + +(define-public ruby-rspec-expectations-2 + (package (inherit ruby-rspec-expectations) + (version "2.14.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-expectations" version)) + (sha256 + (base32 + "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9")))) + (propagated-inputs + (list ruby-diff-lcs)))) + +(define-public ruby-rspec-mocks + (package + (name "ruby-rspec-mocks") + (version "3.13.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-mocks" version)) + (sha256 + (base32 + "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (propagated-inputs + (list ruby-diff-lcs ruby-rspec-support)) + (synopsis "RSpec stubbing and mocking library") + (description "Rspec-mocks provides RSpec's \"test double\" framework, with +support for stubbing and mocking.") + (home-page "https://github.com/rspec/rspec-mocks") + (license license:expat))) + +(define-public ruby-rspec-mocks-2 + (package (inherit ruby-rspec-mocks) + (version "2.14.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-mocks" version)) + (sha256 + (base32 + "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30")))) + (propagated-inputs + (list ruby-diff-lcs)))) + +;; RSpec is the dominant testing library for Ruby projects. Even RSpec's +;; dependencies use RSpec for their test suites! To avoid these circular +;; dependencies, we disable tests for all of the RSpec-related packages. +(define-public ruby-rspec-support + (package + (name "ruby-rspec-support") + (version "3.13.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-support" version)) + (sha256 + (base32 + "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (synopsis "RSpec support library") + (description "Support utilities for RSpec gems.") + (home-page "https://github.com/rspec/rspec-support") + (license license:expat))) + +(define-public ruby-sequel + (package + (name "ruby-sequel") + (version "5.47.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sequel" version)) + (sha256 + (base32 + "03pmhj4kc3ga75wy397l57bvd18jxxmrk3qsznjw93b993qgvj3z")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks. + (synopsis "Database toolkit for Ruby") + (description "Sequel provides thread safety, connection pooling and a +concise DSL for constructing SQL queries and table schemas. It includes a +comprehensive ORM layer for mapping records to Ruby objects and handling +associated records.") + (home-page "https://sequel.jeremyevans.net") + (license license:expat))) + +(define-public ruby-simplecov-json-formatter + (package + (name "ruby-simplecov-json-formatter") + (version "0.1.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "simplecov_json_formatter" version)) + (sha256 + (base32 + "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j")))) + (build-system ruby-build-system) + ;; The test suite is disabled because it requires simplecov, which + ;; requires this, introducing a dependency cycle. + (arguments (list #:tests? #f)) + (synopsis "JSON formatter for SimpleCov") + (description "This package provides a JSON formatter for SimpleCov, the +Ruby code coverage tool.") + (home-page + "https://github.com/codeclimate-community/simplecov_json_formatter") + (license license:expat))) + +(define-public ruby-simplecov + (package + (name "ruby-simplecov") + (version "0.22.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "simplecov" version)) + (sha256 + (base32 + "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py")))) + (build-system ruby-build-system) + ;; Simplecov depends on rubocop for code style checking at build time. + ;; Rubocop needs simplecov at build time. + (arguments `(#:tests? #f)) + (propagated-inputs + (list ruby-json + ruby-docile + ruby-simplecov-html + ruby-simplecov-json-formatter)) + (synopsis "Code coverage framework for Ruby") + (description "SimpleCov is a code coverage framework for Ruby with a +powerful configuration library and automatic merging of coverage across test +suites.") + (home-page "https://github.com/simplecov-ruby/simplecov") + (license license:expat))) + +(define-public ruby-simplecov-html + (package + (name "ruby-simplecov-html") + (version "0.12.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "simplecov-html" version)) + (sha256 + (base32 + "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)) ; there are no tests + (native-inputs + (list bundler)) + (synopsis "Default HTML formatter for SimpleCov code coverage tool") + (description "This package provides the default HTML formatter for +the SimpleCov code coverage tool for Ruby version 1.9 and above.") + (home-page "https://github.com/simplecov-ruby/simplecov-html") + (license license:expat))) + +(define-public ruby-sorcerer + (package + (name "ruby-sorcerer") + (version "2.0.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sorcerer" version)) + (sha256 + (base32 + "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h")))) + (build-system ruby-build-system) + (synopsis "Ripper-style abstract syntax tree to Ruby source generator") + (description "Sorcerer generates Ruby code from a Ripper-like abstract +syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small +snippets of Ruby code, expressible in a single line. Longer examples may be +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-unindent + (package + (name "ruby-unindent") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "unindent" version)) + (sha256 + (base32 + "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd")))) + (build-system ruby-build-system) + (synopsis "Ruby method to unindent strings") + (description "This module provides a @code{String#unindent} Ruby method to +unindent strings, which can be useful to unindent multiline strings embedded +in already-indented code.") + (home-page "https://github.com/mynyml/unindent") + (license license:expat))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above in alphabetic order. diff --git a/gnu/packages/ruby-xyz.scm b/gnu/packages/ruby-xyz.scm index 688bf33459..417a1e314a 100644 --- a/gnu/packages/ruby-xyz.scm +++ b/gnu/packages/ruby-xyz.scm @@ -1,4 +1,41 @@ ;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014, 2015 Pjotr Prins +;;; Copyright © 2014-2017, 2021-2022, 2024 Ludovic Courtès +;;; Copyright © 2014, 2015 Mark H Weaver +;;; Copyright © 2014, 2015 David Thompson +;;; Copyright © 2015, 2019 Ricardo Wurmus +;;; Copyright © 2015, 2016, 2017 Ben Woodcroft +;;; Copyright © 2017 Nikita +;;; Copyright © 2017, 2019-2022 Marius Bakke +;;; Copyright © 2017-2025 Efraim Flashner +;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice +;;; Copyright © 2017 Clément Lassieur +;;; Copyright © 2017, 2018, 2019 Christopher Baines +;;; Copyright © 2018 Vasile Dumitrascu +;;; Copyright © 2018 Alex Vong +;;; Copyright © 2019 Pierre Neidhardt +;;; Copyright © 2019 Mikhail Kirillov +;;; Copyright © 2019 Jelle Licht +;;; Copyright © 2019 Brian Leung +;;; Copyright © 2019 Collin J. Doering +;;; Copyright © 2019 Diego N. Barbato +;;; Copyright © 2019 Brett Gilio +;;; Copyright © 2020, 2021 Nicolas Goaziou +;;; Copyright © 2020 Michael Rohleder +;;; Copyright © 2020 Holgr Peters +;;; Copyright © 2020 Giacomo Leidi +;;; Copyright © 2021 EuAndreh +;;; Copyright © 2020 Tomás Ortín Fernández +;;; Copyright © 2021 Giovanni Biscuolo +;;; Copyright © 2022 Philip McGrath +;;; Copyright © 2022-2025 Remco van 't Veer +;;; Copyright © 2022 Taiju HIGASHI +;;; Copyright © 2023 Yovan Naumovski +;;; Copyright © 2023, 2024 gemmaro +;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen +;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2023, 2024 Hartmut Goebel +;;; Copyright © 2025 Nicolas Graves ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,19 +55,16714 @@ (define-module (gnu packages ruby-xyz) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system ruby) + #:use-module (guix deprecation) + #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix packages) - #:use-module (gnu packages)) + #:use-module (guix modules) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages) + #:use-module (gnu packages base) + #:use-module (gnu packages bison) + #:use-module (gnu packages c) + #:use-module (gnu packages check) + #:use-module (gnu packages compression) + #:use-module (gnu packages crypto) + #:use-module (gnu packages curl) + #:use-module (gnu packages databases) + #:use-module (gnu packages dbm) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages rails) + #:use-module (gnu packages readline) + #:use-module (gnu packages autotools) + #:use-module (gnu packages graphviz) + #:use-module (gnu packages haskell-xyz) + #:use-module (gnu packages java) + #:use-module (gnu packages libffi) + #:use-module (gnu packages libidn) + #:use-module (gnu packages linux) + #:use-module (gnu packages lsof) + #:use-module (gnu packages man) + #:use-module (gnu packages maths) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages networking) + #:use-module (gnu packages node) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages protobuf) + #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages ragel) + #:use-module (gnu packages rsync) + #:use-module (gnu packages sqlite) + #:use-module (gnu packages tls) + #:use-module (gnu packages valgrind) + #:use-module (gnu packages version-control) + #:use-module (gnu packages virtualization) + #:use-module (gnu packages web-browsers) + #:use-module (gnu packages serialization) + #:use-module (gnu packages xml) + #:use-module (gnu packages web) + #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check)) -;;; Commentary: -;;; -;;; Please: Try to add new module packages in alphabetic order. -;;; -;;; Code: - +(define %prawn-project-licenses + ;; This set of licenses applies to most (all?) components of the Prawn + ;; project (it is triple licensed). + (list license:ruby + license:gpl2+ + license:gpl3+)) + +(define-public ruby-commander + (package + (name "ruby-commander") + (version "4.6.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "commander" version)) + (sha256 + (base32 + "1n8k547hqq9hvbyqbx2qi08g0bky20bbjca1df8cqq5frhzxq7bx")))) + (build-system ruby-build-system) + (arguments + (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 + (list bundler ruby-rspec-core ruby-rspec-expectations + ruby-rspec-mocks ruby-simplecov)) + (home-page "https://github.com/commander-rb/commander") + (synopsis "Library for building Ruby command-line executables") + (description + "Commander aims to be a complete solution for Ruby command-line +executables. Commander bridges the gap between other terminal related +libraries (OptionParser, HighLine), while providing many new features, and an +elegant API.") + (license license:expat))) + +(define-public ruby-highline + (package + (name "ruby-highline") + (version "2.0.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "highline" version)) + (sha256 + (base32 + "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC + (native-inputs + (list bundler ruby-code-statistics)) + (synopsis + "HighLine helps you build command-line interfaces") + (description + "HighLine provides a high-level IO library that provides validation, +type conversion, and more for command-line interfaces. HighLine also includes +a menu system for providing multiple options to the user.") + (home-page "https://github.com/JEG2/highline") + (license (list license:gpl2 license:ruby)))) + +(define-public ruby-hoe + (package + (name "ruby-hoe") + (version "4.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "hoe" version)) + (sha256 + (base32 + "1rhj1zs02mpdw6f4fh3mpfmj0p5pfar7rfxm758pk7l931mm8pyn")))) + (build-system ruby-build-system) + (arguments + (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, +maintain, and release projects and includes a dynamic plug-in system allowing +for easy extensibility. Hoe ships with plug-ins for all the usual project +tasks including rdoc generation, testing, packaging, deployment, and +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-rsync + (package + (name "ruby-rsync") + (version "1.0.9") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rsync" version)) + (sha256 + (base32 + "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-coveralls-requirement + (lambda _ + (substitute* "spec/spec_helper.rb" + (("require 'coveralls'") "") + (("Coveralls.wear!") ""))))))) + (native-inputs + (list bundler rsync ruby-rspec-core ruby-rspec-expectations + ruby-rspec-mocks)) + (home-page "https://github.com/jbussdieker/ruby-rsync") + (synopsis "Ruby wrapper around rsync") + (description + "Ruby Rsync is a Ruby library that can synchronize files between remote +hosts by wrapping the @file{rsync} binary.") + (license license:expat))) + +(define-public ruby-i18n + (package + (name "ruby-i18n") + (version "1.13.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "i18n" version)) + (sha256 + (base32 + "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no tests + (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent))) + (synopsis "Internationalization library for Ruby") + (description "Ruby i18n is an internationalization and localization +solution for Ruby programs. It features translation and localization, +interpolation of values to translations, pluralization, customizable +transliteration to ASCII, flexible defaults, bulk lookup, lambdas as +translation data, custom key/scope separator, custom exception handlers, and +an extensible architecture with a swappable backend.") + (home-page "https://github.com/ruby-i18n/i18n") + (license license:expat))) + +(define-public ruby-ice-nine + (package + (name "ruby-ice-nine") + (version "0.11.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ice_nine" version)) + (sha256 + (base32 "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f)) ;Dependency on convoluted unpackaged ruby-devtools. + (synopsis "Deep Freeze Ruby Objects") + (description + "This package provides a function to deep freeze Ruby objects.") + (home-page "https://github.com/dkubb/ice_nine") + (license license:expat))) + +(define-public ruby-io-console + (package + (name "ruby-io-console") + (version "0.6.0") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/io-console/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0gwxrp29b6awkid1sf85sbh529mnq6hb86m8c2443cm6nc4vr8qb")))) + (build-system ruby-build-system) + (arguments + (list #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'delete-rakelib-files + (lambda _ + ;; These depend on git and other extraneous + ;; dependencies, and are loaded by rake. + (delete-file-recursively "rakelib")))))) + (native-inputs (list ruby-rake-compiler)) + (synopsis "Console capabilities library for IO instances") + (description "IO.console adds console capabilities to Ruby IO instances.") + (home-page "https://github.com/ruby/io-console") + (license license:bsd-2))) + +(define-public ruby-irb + (package + (name "ruby-irb") + (version "1.6.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "irb" version)) + (sha256 + (base32 + "1h9s07n5v3z029v18924ws9vdkdc80n6llp9ccx77yg1krv2g0f3")))) + (build-system ruby-build-system) + ;; XXX: Disable the test suite, as it requires debug, which requires this + ;; package (dependency cycle). + (arguments (list #:tests? #f)) + (propagated-inputs (list ruby-reline)) + (synopsis "Ruby command-line tool for REPL (Read Eval Print Loop)") + (description "IRB is an interactive Ruby command-line tool for REPL (Read +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") + (version "0.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "iruby" version)) + (sha256 + (base32 + "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn")))) + (build-system ruby-build-system) + (arguments + ;; TODO: Tests currently fail. + ;; + ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s. + ;; + ;; 1) Failure: + ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]: + ;; In [ expected + ;; + ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-ipython + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "lib/iruby/command.rb" + (("version = `") + (string-append + "version = `" + (assoc-ref inputs "python-ipython") + "/bin/")) + (("Kernel\\.exec\\('") + (string-append + "Kernel.exec('" + (assoc-ref inputs "python-ipython") + "/bin/")))))))) + (inputs + (list python-ipython)) + (propagated-inputs + (list ruby-bond + ruby-data_uri + ruby-mimemagic + ruby-multi-json + ruby-cztop + ;; Optional inputs + ruby-pry)) + (synopsis "Ruby kernel for Jupyter/IPython") + (description + "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g. +notebook).") + (home-page "https://github.com/SciRuby/iruby") + (license license:expat))) + +(define-public ruby-date + (package + (name "ruby-date") + (version "3.3.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ruby/date") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jiqjnaap1jk1r8z37iicnzqha1rhc713qmcir17f4vnz8ac8v75")))) + (build-system ruby-build-system) + (arguments (list #:test-target "default")) + (native-inputs (list ruby-rake-compiler)) + (synopsis "Ruby @code{Object} subclass with date comparison capability") + (description "This package provides a subclass of @code{Object} that +includes the @code{Comparable} module for handling dates.") + (home-page "https://github.com/ruby/date") + (license license:bsd-2))) + +(define-public ruby-time + (package + (name "ruby-time") + (version "0.3.0") + (source (origin + (method git-fetch) ; for tests + (uri (git-reference + (url "https://github.com/ruby/time") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0jd6df2lxd60wcxyaf37j8v3nnfn952d5xhg6aap9zlcdmkk4g2n")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-date)) + (native-inputs (list ruby-test-unit-ruby-core)) + (synopsis + "Extends the Time class with methods for parsing and conversion") + (description + "When this gem is @code{require}d, it extends the Time class with with +additional methods for parsing and converting Times.") + (home-page "https://github.com/ruby/time") + (license license:bsd-2))) + +(define-public ruby-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-rspec-given + (package + (name "ruby-rspec-given") + (version "3.8.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rspec-given" version)) + (sha256 + (base32 + "0xzzxjjzwrsp84p12sd6ab3jbm9kh7sbnqpxgc9mlfq3s3ll0fdj")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "rs" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-rakefile + (lambda _ + (substitute* '("Rakefile" "rakelib/gemspec.rake") + (("require '\\./lib/given/.*") "") + (("Given::VERSION") (format #f "~s" ,version)) + ;; Fix the error: "cannot load such file -- example_helper" + (("sh \"rspec") + "sh \"rspec -Ilib:examples")))) + (add-after 'extract-gemspec 'delete-failing-tests + ;; See: https://github.com/jimweirich/rspec-given/issues/57. + (lambda _ + (substitute* ".gemspec" + (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ") + "") + (("\"examples/integration/failing_messages_spec.rb\".freeze, ") + "")) + (delete-file "spec/lib/given/natural_assertion_spec.rb") + (delete-file "examples/integration/failing_messages_spec.rb")))))) + (native-inputs + (list ruby-rspec ruby-minitest)) + (propagated-inputs + (list ruby-given-core ruby-rspec)) + (synopsis "Given/When/Then for RSpec and Minitest") + (description "Given is an RSpec extension that allows the use of +Given/When/Then terminology when defining specifications, in a way similar to +the Cucumber Gherkin language.") + (home-page "https://github.com/rspec-given/rspec-given") + (license license:expat))) + +(define-public ruby-rspec-its + (package + (name "ruby-rspec-its") + (version "1.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rspec/rspec-its") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'dont-install-gems-from-gemfile + (lambda _ + (substitute* "Gemfile" + (("rspec rspec-core rspec-expectations rspec-mocks rspec-support") + "")))) + (add-before 'build 'loosen-ffi-requirement + (lambda _ + ;; Accept any version of ruby-ffi. + (substitute* "Gemfile" + ((" gem 'ffi', '~> 1\\.9\\.25'") + " gem 'ffi'")))) + (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile + (lambda _ + (substitute* "rspec-its.gemspec" + (("rake.*") "rake'\n") + (("spec.add_development_dependency 'cucumber'.*") + "spec.add_development_dependency 'cucumber'\n") + (("bundler.*") "bundler'\n") + (("\"aruba.*") "'aruba'\n"))))))) + (propagated-inputs + (list ruby-rspec-core ruby-rspec-expectations)) + (native-inputs + (list bundler ruby-cucumber ruby-ffi ruby-aruba)) + (synopsis "RSpec extension that provides the @code{its} method") + (description + "RSpec::Its provides the its method as a short-hand to specify the expected +value of an attribute. For example, one can use @code{its(:size)\\{should +eq(1)\\}}.") + (home-page "https://github.com/rspec/rspec-its") + (license license:expat))) + +;;; This variant is used to break a cycle with ruby-protobuf. +(define-public ruby-rspec-its-minimal + (hidden-package + (package + (inherit ruby-rspec-its) + (arguments + (substitute-keyword-arguments (package-arguments ruby-rspec-its) + ((#:tests? _ #f) #f))) + (native-inputs '())))) + +(define-public ruby-rspec-block-is-expected + (package + (name "ruby-rspec-block-is-expected") + (version "1.0.5") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/pboling/rspec-block_is_expected") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1zi5z12lkw3fiwgr7g61845wj73asr2vzw4zsjv45klnnfspwass")))) + (build-system ruby-build-system) + (arguments + (list #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "Rakefile" + (("require 'rubocop/rake_task'") "") + (("RuboCop::RakeTask.new") "")) + ;; Contains extraneous requirements not actually + ;; needed for the test suite. + (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") + (description "This RSpec plugin allows you to use @code{block_is_expected} +similarly to how you would use @code{is_expected} if a block was wrapping the +subject.") + (home-page "https://github.com/pboling/rspec-block_is_expected") + (license license:expat))) + +(define-public ruby-rspec-pending-for + (package + (name "ruby-rspec-pending-for") + (version "0.1.16") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/pboling/rspec-pending_for") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "107l560vm0kx25w5iy5rsk9ly8dxzr81b31284j514f4hkd0qv3m")))) + (build-system ruby-build-system) + (native-inputs (list ruby-rspec ruby-simplecov)) + (propagated-inputs (list ruby-rspec-core ruby-ruby-engine + ruby-ruby-version)) + (synopsis "Skip RSpec tests for specific Ruby engines or versions") + (description "This RSpec plugin makes it easy to mark test cases as +pending or skipped for a specific Ruby engine (e.g. MRI or JRuby) or version +combinations.") + (home-page "https://github.com/pboling/rspec-pending_for") + (license license:expat))) + +(define-public ruby-rspec-rerun + (package + (name "ruby-rspec-rerun") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rspec-rerun" version)) + (sha256 + (base32 + "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj")))) + (build-system ruby-build-system) + (arguments + '(;; No included tests + #:tests? #f)) + (propagated-inputs (list ruby-rspec)) + (synopsis "Track failed RSpec tests to re-run them") + (description + "This package provides an automated way to track, and then re-run failed +RSpec tests.") + (home-page "https://github.com/dblock/rspec-rerun") + (license license:expat))) + +(define-public ruby-rspec-stubbed-env + ;; There is no release nor tag (see: + ;; https://github.com/pboling/rspec-stubbed_env/issues/7). + (let ((revision "0") + (commit "9d767dec77a6d130f6ad83c48a00a5c81b14b9fa")) + (package + (name "ruby-rspec-stubbed-env") + (version (git-version "1.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pboling/rspec-stubbed_env") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1dy4m04h613dp0s59rknjd6h4lqs1h17mffc5kd8kh046mk8nr1p")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'streamline-requirements + (lambda _ + ;; Remove extraneous development dependencies. + (substitute* "rspec-stubbed_env.gemspec" + ((".*bundler.*") "") + ((".*rubocop.*") ""))))))) + (native-inputs (list ruby-simplecov)) + (propagated-inputs (list ruby-rspec)) + (synopsis "RSpec plugin to stub environment variables") + (description + "This RSpec plugin can be used to stub environment variables in a scoped +context for testing.") + (home-page "https://github.com/pboling/rspec-stubbed_env") + (license license:expat)))) + +(define-public ruby-rspec-wait + (package + (name "ruby-rspec-wait") + (version "0.0.9") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rspec-wait" version)) + (sha256 + (base32 + "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "rake" "spec")))))) + (native-inputs + (list bundler)) + (propagated-inputs + (list ruby-rspec)) + (home-page "https://github.com/laserlemon/rspec-wait") + (synopsis "Wait for conditions in RSpec") + (description + "RSpec::Wait strives to make it easier to test asynchronous or slow +interactions.") + (license license:expat))) + +(define-public ruby-rspec-debug + (package + (name "ruby-rspec-debug") + (version "0.2.0") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ko1/rspec-debug") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "125p1zxjznkk765nyqvkksw8x1nbm7xk4sjc1wza2fyp5hvyiddn")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-dependencies + (lambda _ + (substitute* "Gemfile" + (("~>") ">="))))))) + (native-inputs (list ruby-rspec)) + (propagated-inputs (list ruby-debug)) + (synopsis "Invoke Ruby debugger when spec fails") + (description "This package can be used to have the execution stopped for +inspection in the Ruby debugger upon encountering a failure. To use it, set +the @env{RSPEC_DEBUG} environment variable to @samp{true} then invoke the +@command{rspec} command as usual.") + (home-page "https://github.com/ko1/rspec-debug") + (license license:expat))) + +(define-public ruby-specinfra + (package + (name "ruby-specinfra") + (version "2.88.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "specinfra" version)) + (sha256 + (base32 + "07lap3sknncffpq9jw1x1mn9c5xxd058wxs5vnyz1y0lawdjfnsf")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-net-scp ruby-net-ssh ruby-net-telnet + ruby-sfl)) + (arguments + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-dependencies + (lambda _ + (substitute* "specinfra.gemspec" + (("%q.freeze, \\[.*\\]") + "%q.freeze, [\">= 0\"]"))))))) + (synopsis "Common layer for serverspec and itamae") + (description "This Gem provides a common layer for serverspec and +itamae.") + (home-page "https://github.com/mizzy/specinfra") + (license license:expat))) + +(define-public ruby-serverspec + (package + (name "ruby-serverspec") + (version "2.42.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "serverspec" version)) + (sha256 + (base32 + "0kfaqrqynly8n3dy5qrbjvx4lx6mk9a5vynwb7xwqj8bixm0mab4")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-multi-json ruby-rspec ruby-rspec-its + ruby-specinfra)) + (arguments + (list #:test-target "spec")) + (synopsis + "RSpec tests for servers configured by Puppet, Chef, Itamae, etc") + (description + "With Serverspec, you can write RSpec tests for checking your servers are +configured correctly. + +Serverspec tests your servers’ actual state by executing command locally, via +SSH, via WinRM, via Docker API and so on. So you don’t need to install any +agent softwares on your servers and can use any configuration management +tools, Puppet, Ansible, CFEngine, Itamae and so on. + +But the true aim of Serverspec is to help refactoring infrastructure code.") + (home-page "https://serverspec.org/") + (license license:expat))) + +(define-public ruby-base64 + (package + (name "ruby-base64") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "base64" version)) + (sha256 + (base32 "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; No tests bundled. + (synopsis "Base64 encoding/decoding in Ruby") + (description + "This package provides support for encoding and decoding binary data +using a Base64 representation.") + (home-page "https://github.com/ruby/base64") + (license (list license:bsd-2)))) + +(define-public ruby-bump + (package + (name "ruby-bump") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "bump" version)) + (sha256 + (base32 + "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym")))) + (build-system ruby-build-system) + (arguments + '(;; No included tests + #:tests? #f)) + (synopsis "Tool for working with Rubygems") + (description + "Bump provides commands to manage Rubygem versioning, updating to the +next patch version for example.") + (home-page "https://github.com/gregorym/bump") + (license license:expat))) + +(define-public ruby-rjb + (package + (name "ruby-rjb") + (version "1.6.7") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rjb" version)) + (sha256 + (base32 + "0ck802bm8cklhmqsgzhsa0y8lg80qy52dp3m8rlld3zc5gv1rsb9")))) + (build-system ruby-build-system) + (arguments + (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") + (description "RJB is a bridge program that connects Ruby and Java via the +Java Native Interface.") + (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge") + (license license:lgpl2.1+))) + +(define-public ruby-log4r + (package + (name "ruby-log4r") + (version "1.1.10") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "log4r" version)) + (sha256 + (base32 + "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no Rakefile in gem + (synopsis "Flexible logging library for Ruby") + (description "Comprehensive and flexible logging library written +in Ruby for use in Ruby programs. It features a hierarchical logging +system of any number of levels, custom level names, logger +inheritance, multiple output destinations per log event, execution +tracing, custom formatting, thread safteyness, XML and YAML +configuration, and more.") + (home-page "http://log4r.rubyforge.org/") + (license license:bsd-3))) + +(define-public ruby-atoulme-antwrap + (package + (name "ruby-atoulme-antwrap") + (version "0.7.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "atoulme-Antwrap" version)) + (sha256 + (base32 + "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz")))) + (build-system ruby-build-system) + ;; Test data required for most of the tests are not included. + (arguments `(#:tests? #f)) + (native-inputs + (list ruby-hoe)) + (inputs + (list ruby-rjb)) + (synopsis "Ruby wrapper for the Ant build tool") + (description "Antwrap is a Ruby module that wraps the Apache Ant build +tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby +script.") + (home-page "http://rubyforge.org/projects/antwrap/") + (license license:expat))) + +(define-public ruby-atoulme-saikuro + (package + (name "ruby-atoulme-saikuro") + (version "1.2.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "atoulme-Saikuro" version)) + (sha256 + (base32 + "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19")))) + (build-system ruby-build-system) + (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 +complexity of each method found. In addition, Saikuro counts the number of +lines per method and can generate a listing of the number of tokens on each +line of code.") + (home-page "http://www.github.com/atoulme/Saikuro") + ;; File headers contain the BSD-3 license and the README.rdoc says that + ;; "Saikuro uses the BSD license", but the LICENSE file contains the text + ;; of the Expat license. + (license license:bsd-3))) + +(define-public ruby-awesome-print + (package + (name "ruby-awesome-print") + (version "1.9.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "awesome_print" version)) + (sha256 + (base32 + "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9")))) + (build-system ruby-build-system) + (arguments + (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") + (description + "Ruby dubugging companion: pretty print Ruby objects to visualize their +structure. Supports custom object formatting via plugins.") + (home-page "https://github.com/awesome-print/awesome_print") + (license license:expat))) + +(define-public ruby-pandoc-ruby + (package + (name "ruby-pandoc-ruby") + (version "2.1.4") + (source + (origin + (method git-fetch) ;the gem lacks many test files + (uri (git-reference + (url "https://github.com/xwmx/pandoc-ruby") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ; Disable tests since they depend on pandoc behavior + ; and there are no upstream releases. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-pandoc-path + (lambda* (#:key inputs #:allow-other-keys) + (let ((pandoc (search-input-file inputs "/bin/pandoc"))) + (substitute* "lib/pandoc-ruby.rb" + (("@@pandoc_path = 'pandoc'") + (format #f "@@pandoc_path = '~a'" pandoc))) + (substitute* "test/test_pandoc_ruby.rb" + (("('|\")pandoc" _ quote) + (string-append quote pandoc)) + (("\\^pandoc") + ".*pandoc"))))) + (add-after 'unpack 'adjust-tests + ;; The tests expect filenames with spaces. Because they don't have + ;; spaces the quotes around the output are dropped automatically. + (lambda _ + (substitute* "test/test_pandoc_ruby.rb" + (("\\\\\"#\\{file\\.path\\}\\\\\"") "#{file.path}")))) + (add-after 'extract-gemspec 'remove-Gemfile.lock + (lambda _ + (delete-file "Gemfile.lock") + (substitute* "pandoc-ruby.gemspec" + (("Gemfile\\.lock") ""))))))) + (native-inputs + (list ruby-mocha)) + (inputs + (list pandoc)) + (synopsis "Ruby wrapper for Pandoc") + (description "PandocRuby is a wrapper for Pandoc, a Haskell library with +command line tools for converting one markup format to another. Pandoc can +convert documents from a variety of formats including markdown, +reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a +variety of other formats, including markdown, reStructuredText, HTML, LaTeX, +ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki +markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and +more.") + (home-page "https://github.com/xwmx/pandoc-ruby") + (license license:expat))) + +(define-public ruby-patron + (package + (name "ruby-patron") + (version "0.13.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "patron" version)) + (sha256 + (base32 + "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9")))) + (build-system ruby-build-system) + (inputs + (list curl)) + (arguments + `(#:tests? #f)) ; no included tests + (synopsis "Ruby HTTP client library based on @code{libcurl}") + (description + "Patron is a Ruby HTTP client library based on @code{libcurl}. It does +not try to expose the full power (read complexity) of @code{libcurl} but +instead tries to provide a sane API while taking advantage of @code{libcurl} +under the hood.") + (home-page "https://github.com/toland/patron") + (license license:expat))) + +(define-public ruby-slim + (package + (name "ruby-slim") + (version "5.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "slim" version)) + (sha256 + (base32 + "1rqk7jn66wgx50b18ndhbppjq55rbcwgqg1rbhnhxwiggvzisdbj")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; See: https://github.com/slim-template/slim/issues/857 and + ;; https://github.com/slim-template/slim/issues/858. + (add-after 'unpack 'skip-broken-tests + (lambda _ + (substitute* "test/core/test_embedded_engines.rb" + (("def test_render_with_markdown") + "def skipped_test_render_with_markdown")) + (substitute* "test/translator/test_translator.rb" + (("raise (\"Missing test for.*)" _ tail) + (string-append "print " tail))))) + ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/ + ;; 824862bd99d1675bc699d8fc71ba965a785c1f44. + (add-after 'unpack 'prevent-bundler-interference + (lambda _ + (substitute* "Rakefile" + (("require 'bundler/setup'") "nil") + (("Bundler::GemHelper\\.install_tasks") "nil"))))))) + (native-inputs + (list ruby-rack-test ruby-rspec-core ruby-sinatra)) + (propagated-inputs + (list ruby-temple ruby-tilt)) + (synopsis "Minimalist template language for Ruby") + (description "Slim is a template language for Ruby that aims to reduce the +syntax to the minimum while remaining clear.") + (home-page "http://slim-lang.com/") + (license license:expat))) + +(define-public ruby-asciidoctor + (package + (name "ruby-asciidoctor") + (version "2.0.20") + (source + (origin + (method git-fetch) ;the gem release lacks a Rakefile + (uri (git-reference + (url "https://github.com/asciidoctor/asciidoctor") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19qvilhwa9plg80ppspn5ys0ybl8qfyaicqbl9w316hk5ldwi1jq")))) + (build-system ruby-build-system) + (arguments + (list + #:test-target "test:all" + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'strip-version-requirements + (lambda _ + (delete-file "Gemfile") + (substitute* "asciidoctor.gemspec" + (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped) + (string-append stripped "\n"))))) + (add-after 'install 'install-man-page + (lambda* (#:key outputs #:allow-other-keys) + (install-file (search-input-file + outputs (string-append "lib/ruby/vendor_ruby/" + "gems/asciidoctor-" + #$version + "/man/asciidoctor.1")) + (string-append #$output "/share/man/man1"))))))) + (native-inputs + (list ruby-asciimath + ruby-coderay + ruby-cucumber + ruby-erubis + ruby-haml + ruby-minitest + ruby-nokogiri + ruby-open-uri-cached + ruby-rouge + ruby-rspec-expectations + ruby-simplecov + ruby-slim + ruby-tilt + ruby-erubi)) + (synopsis "Converter from AsciiDoc content to other formats") + (description "Asciidoctor is a text processor and publishing toolchain for +converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.") + (home-page "https://asciidoctor.org") + (license license:expat))) + +(define-public ruby-asciidoctor-multipage + (package + (name "ruby-asciidoctor-multipage") + (version "0.0.16") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/owenh000/asciidoctor-multipage") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0rnz7qxdw5qbi3qjplihhk468kv690njdi06yllgylc75k62ar1p")))) + (propagated-inputs (list ruby-asciidoctor ruby-slim)) + (build-system ruby-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'extract-gemspec 'strip-version-requirements + (lambda _ + (delete-file "Gemfile") + (substitute* "asciidoctor-multipage.gemspec" + (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped) + (string-append stripped "\n")))))))) + (synopsis + "Asciidoctor extension for generating HTML output using multiple pages") + (description + "Asciidoctor generates single-page documents. This extension +splits documents up into multiple HTML pages according to their headings, with +configurable levels.") + (license license:expat) + (home-page "https://github.com/owenh000/asciidoctor-multipage"))) + +(define-public ruby-prawn-icon + (package + (name "ruby-prawn-icon") + (version "3.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "prawn-icon" version)) + (sha256 + (base32 + "049k42bqy4iq9hddf7jah83b6qr8ka63w1d63illh1mf4f4dihdk")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases (modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + (substitute* '("Rakefile" "spec/spec_helper.rb") + ((".*[Bb]undler.*") "") + (("^require 'rubocop.*") "") + (("^RuboCop.*") ""))))))) + (native-inputs + (list ruby-pdf-inspector ruby-pdf-reader ruby-rspec ruby-simplecov)) + (propagated-inputs + (list ruby-prawn)) + (synopsis "Icon fonts for use with the Prawn PDF toolkit") + (description "@code{Prawn::Icon} provides various icon fonts including +FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF +toolkit.") + (home-page "https://github.com/jessedoyle/prawn-icon/") + (license %prawn-project-licenses))) + +(define-public ruby-css-parser + (package + (name "ruby-css-parser") + (version "1.7.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "css_parser" version)) + (sha256 + (base32 + "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)) ;gem doesn't ship with test suite + (propagated-inputs + (list ruby-addressable)) + (synopsis "Ruby Cascading Style Sheets (CSS) parser") + (description "This package allows loading, parsing and cascading Cascading +Style Sheets (CSS) rule sets in Ruby.") + (home-page "https://github.com/premailer/css_parser") + (license license:expat))) + +(define-public ruby-prism + (package + (name "ruby-prism") + (version "1.3.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ruby/prism.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "03bs2gbackc3c3k4p979l2p9v215jb1m5h7b44n6yzh18kaimc85")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'build + (lambda _ + (setenv "CC" ,(cc-for-target)) + (invoke "rake" "compile"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (setenv "GEM_HOME" (string-append (assoc-ref outputs "out") + "/lib/ruby/vendor_ruby")) + (invoke "rake" "install") + ;; Make build reproducible. + (for-each delete-file + (find-files (string-append (assoc-ref outputs "out") + "/lib/ruby/vendor_ruby") + "gem_make.out$"))))))) + (native-inputs + (list ruby-rake ruby-rake-compiler)) + (synopsis "Parser for Ruby source code") + (description "This package provides a parser for Ruby source code, +written in C.") + (home-page "https://ruby.github.io/prism/") + (license license:expat))) + +(define-public ruby-prawn-svg + (package + (name "ruby-prawn-svg") + (version "0.36.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "prawn-svg" version)) + (sha256 + (base32 "008p1p334h3019x5w5bqvwgmly3g5n08s63va1261nwyvfb955jv")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'do-not-use-bundler + (lambda _ + (substitute* "spec/spec_helper.rb" + ((".*[Bb]undler.*") "")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; This test fails due to the recent rspec 3.12 used + ;; (see: https://github.com/mogest/prawn-svg/issues/151). + (delete-file "spec/prawn/svg/interface_spec.rb") + (invoke "rspec" "-Ilib" "-rprawn-svg"))))))) + (native-inputs (list ruby-rspec)) + (propagated-inputs (list ruby-css-parser ruby-matrix ruby-prawn ruby-rexml)) + (synopsis "SVG renderer for the Prawn PDF library") + (description "This library allows rendering Scalable Vector Graphics (SVG) +graphics directly into a Portable Document Format (PDF) document using the +Prawn module.") + (home-page "https://github.com/mogest/prawn-svg") + (license license:expat))) + +(define-public ruby-prawn-templates + (package + (name "ruby-prawn-templates") + (version "0.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/prawnpdf/prawn-templates") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl")))) + (build-system ruby-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'do-not-use-bundler + (lambda _ + (substitute* "spec/spec_helper.rb" + ((".*[Bb]undler.*") "")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list ruby-pdf-inspector ruby-rspec)) + (propagated-inputs + (list ruby-pdf-reader ruby-prawn)) + (synopsis "Prawn extension to include or combine PDF documents") + (description "This @strong{unmaintained} package provides a Prawn +extension that allows including other Portable Document Format (PDF) documents +as background or combining several PDF documents into one. This functionality +used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because +of its many longstanding issues.") + (home-page "https://github.com/prawnpdf/prawn-templates") + (license %prawn-project-licenses))) + +(define-public ruby-polyglot + (package + (name "ruby-polyglot") + (version "0.3.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "polyglot" version)) + (sha256 + (base32 + "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)) ;no test suite + (synopsis "Augment @code{require} to load non-Ruby file types") + (description "The Polyglot library allows a Ruby module to register a +loader for the file type associated with a filename extension, and it augments +@code{require} to find and load matching files.") + (home-page "https://github.com/cjheath/polyglot") + (license license:expat))) + +(define-public ruby-treetop + (package + (name "ruby-treetop") + (version "1.6.12") + (source + (origin + (method git-fetch) ;no test suite in distributed gem + (uri (git-reference + (url "https://github.com/cjheath/treetop") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0cgs6f9z0a9dq5fc03710zsch4gmh1771wq36mq81qsql4x9vksf")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec")) + (native-inputs + (list ruby-activesupport ruby-rr ruby-rspec)) + (propagated-inputs + (list ruby-polyglot)) + (synopsis "Ruby-based parsing DSL based on parsing expression grammars") + (description "This package provides a Ruby-based Parsing Expression +Grammar (PEG) parser generator Domain Specific Language (DSL).") + (home-page "https://github.com/cjheath/treetop") + (license license:expat))) + +(define-public ruby-typhoeus + (package + (name "ruby-typhoeus") + (version "1.4.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "typhoeus" version)) + (sha256 + (base32 + "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; no included tests + (propagated-inputs + (list ruby-ethon)) + (synopsis "@code{libcurl} wrapper in Ruby") + (description + "Like a modern code version of the mythical beast with 100 serpent heads, +Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling +logic.") + (home-page "https://github.com/typhoeus/typhoeus") + (license license:expat))) + +;;; A minimal variant used to build ruby-rubocop itself. +(define ruby-rubocop-capybara-minimal + (package + (name "ruby-rubocop-capybara") + (version "2.21.0") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/rubocop/rubocop-capybara") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19r2s782r9ch2g1lxgrvk22d9qqkxi69brza16bfwp2rl2064qnc")))) + (build-system ruby-build-system) + (arguments (list #:tests? #f)) + (synopsis "Capybara plugin for RuboCop") + (description "This package provides a RuboCop plugin that can be used for +code style checking of Capybara test files (RSpec, Cucumber, Minitest).") + (home-page "https://github.com/rubocop/rubocop-capybara") + (license license:expat))) + +(define-public ruby-rubocop-capybara + (package + (inherit ruby-rubocop-capybara-minimal) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "Gemfile" + (("gem 'rubocop-rspec', '~> 2.16.0'") + "gem 'rubocop-rspec', '>= 2.16.0'") + (("gem 'danger'.*") ""))))))) + (native-inputs + (list ruby-bump + ruby-rack + ruby-rake + ruby-rspec + ruby-rubocop + ruby-rubocop-performance-minimal + ruby-rubocop-rake-minimal + ruby-rubocop-rspec-minimal + ruby-simplecov + ruby-yard)))) + +(define-public ruby-rubocop-factory-bot + (package + (name "ruby-rubocop-factory-bot") + (version "2.26.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rubocop-factory_bot" version)) + (sha256 + (base32 "1aljadsjx7affcarzbhz7pydpy6fgqb8hl951y0cmrffxpa3rqcd")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; No tests bundled. + (synopsis "Code style checking for factory_bot files") + (description + "This package provides a plugin for the @code{RuboCop} code style +enforcing & linting tool for @code{factory_bot} files.") + (home-page "https://github.com/rubocop/rubocop-factory_bot") + (license license:expat))) + +;;; A minimal variant used to build ruby-rubocop itself. +(define ruby-rubocop-rake-minimal + (package + (name "ruby-rubocop-rake") + (version "0.6.0") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/rubocop/rubocop-rake") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1r53szwglikbir1fvpz4i51p915khrrkl6rp61zcx3dcrclkr3ld")))) + (build-system ruby-build-system) + (arguments (list #:tests? #f)) ;avoid extra dependencies + (synopsis "RuboCop plugin for Rake") + (description "This package provides a RuboCop plugin for Rake.") + (home-page "https://github.com/rubocop/rubocop-rake") + (license license:expat))) + +(define-public ruby-rubocop-rake + (package + (inherit ruby-rubocop-rake-minimal) + (arguments + (list #:test-target "spec")) + (native-inputs + (list ruby-rake + ruby-rspec + ruby-rubocop + ruby-rubocop-rspec)) + (propagated-inputs + (list ruby-rubocop)))) + +;;; A minimal variant used to build ruby-rubocop itself. +(define ruby-rubocop-rspec-minimal + (package + (name "ruby-rubocop-rspec") + (version "2.26.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rubocop/rubocop-rspec") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1w9whadx60kv4vlbnk77b5yyhhfcg717r9cr334zqznqr1bqr8mh")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f ;avoid extra dependencies + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "Gemfile" + (("gem 'danger'.*") ""))))))) + (propagated-inputs (list ruby-rubocop-factory-bot)) + (synopsis "Code style checking for RSpec files") + (description "This package provides a plugin for the RuboCop code style +enforcing & linting tool.") + (home-page "https://github.com/rubocop/rubocop-rspec") + (license license:expat))) + +(define-public ruby-rubocop-rspec + (package + (inherit ruby-rubocop-rspec-minimal) + (arguments + (substitute-keyword-arguments + (package-arguments ruby-rubocop-rspec-minimal) + ((#:tests? _ #f) #t) + ((#:test-target _ "test") "spec"))) + (native-inputs + (list ruby-bump + ruby-rack + ruby-rspec + ruby-rubocop-performance-minimal + ruby-rubocop-rake-minimal + ruby-simplecov + ruby-yard)) + (propagated-inputs + (list ruby-rubocop + ruby-rubocop-ast + ruby-rubocop-capybara + ruby-rubocop-factory-bot)))) + +(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" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'skip-problematic-tests + (lambda _ + ;; Tests are actually running fine, except for a prefix. + ;; This doesn't impair functionality, ignored for now. + (delete-file + "spec/rubocop/cop/packaging/gemspec_git_spec.rb")))))) + (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") + (version "1.23.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rubocop/rubocop-performance") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0d1p6pgrcnj58q1g0np5j4vbk7wavj31b4bapi5p4gckqlnc7xjd")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ; tests require a git checkout of rubocop's source code. + #:phases + (modify-phases %standard-phases + (replace 'replace-git-ls-files + (lambda _ + (substitute* "rubocop-performance.gemspec" + (("`git ls-files -z config lib LICENSE.txt README.md`") + "`find config lib LICENSE.txt README.md \ +-type f -print0 |sort -z`")))) + (add-before 'check 'set-HOME + (lambda _ + (setenv "HOME" "/tmp")))))) + (propagated-inputs + (list ruby-rubocop ruby-rubocop-ast)) + (native-inputs + (list ruby-bump ruby-yard)) + (synopsis "Performance optimizations checkers for Ruby code") + (description "This package provides a collection of RuboCop cops to check +for performance optimizations in Ruby code.") + (home-page "https://docs.rubocop.org/rubocop-performance/") + (license license:expat))) + +(define-public ruby-rubocop-performance-minimal + (hidden-package + (package + (inherit ruby-rubocop-performance) + (arguments + (substitute-keyword-arguments (package-arguments ruby-rubocop-performance) + ((#:tests? _ #f) #f))) + (propagated-inputs '()) + (native-inputs '())))) + +(define-public ruby-stud + (package + (name "ruby-stud") + (version "0.0.23") + (source (origin + (method url-fetch) + (uri (rubygems-uri "stud" version)) + (sha256 + (base32 + "0qpb57cbpm9rwgsygqxifca0zma87drnlacv49cqs2n5iyi6z8kb")))) + (build-system ruby-build-system) + (native-inputs (list ruby-rspec)) + (arguments + (list #:phases #~(modify-phases %standard-phases + ;; No Rakefile is included, so run rspec directly. + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (synopsis "Retries, worker supervision, resource pools and more for Ruby") + (description "The Stud Ruby library adds a few things missing from the +standard Ruby library such as: +@table @code +@item {Stud::Try} +Retry on failure, with back-off, where failure is any exception. +@item {Stud::Pool} +Generic resource pools. +@item {Stud::Task} +Tasks (threads that can return values, exceptions, etc.) +@item {Stud.interval} +Interval execution (do X every N seconds). +@item {Stud::Buffer} +Batch and flush behavior. +@end itemize") + (home-page "https://github.com/jordansissel/ruby-stud") + (license license:asl2.0))) + +(define-public ruby-standard-custom + (package + (name "ruby-standard-custom") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "standard-custom" version)) + (sha256 + (base32 "0av55ai0nv23z5mhrwj1clmxpgyngk7vk6rh58d4y1ws2y2dqjj2")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard. + (propagated-inputs (list ruby-lint-roller ruby-rubocop)) + (synopsis "Plugin of custom cops for Standard Ruby") + (description + "This package provides a implementations of custom cops that are bundled +as defaults in Standard Ruby.") + (home-page "https://github.com/standardrb/standard-custom") + (license license:expat))) + +(define-public ruby-standard-performance + (package + (name "ruby-standard-performance") + (version "1.6.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "standard-performance" version)) + (sha256 + (base32 "1x298w3wmq8cavbsg903wc3arxp3xh2x8263brvy128436m732rd")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard. + (propagated-inputs (list ruby-lint-roller ruby-rubocop-performance)) + (synopsis "Standard Ruby Plugin for rubocop-performance") + (description + "This package is a Standard Ruby Plugin providing configuration for +@code{rubocop-performance}.") + (home-page "https://github.com/standardrb/standard-performance") + (license license:expat))) + +(define-public ruby-standard + (package + (name "ruby-standard") + (version "1.37.0") + (source + (origin + (method git-fetch) ;no test suite in distributed gem + (uri (git-reference + (url "https://github.com/testdouble/standard") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0gm9fn6fz41aya34xz7kzda8xxs7h98n7cjx66qbcy2w0qhs40wc")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-HOME + (lambda _ + ;; Some tests fail otherwise. + (setenv "HOME" "/tmp"))) + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "standard.gemspec" + (("\"rubocop\", \".*\"") + (string-append + "\"rubocop\", \"~> " + #$(package-version + (this-package-input "ruby-rubocop")) + "\"")) + (("\"rubocop-performance\", \".*\"") + (string-append + "\"rubocop-performance\", \"~> " + #$(package-version + (this-package-input "ruby-rubocop-performance")) + "\""))))) + (add-after 'unpack 'delete-problematic-tests + ;; These tests fail for unknown reasons (see: + ;; https://github.com/testdouble/standard/issues/532). + (lambda _ + (delete-file "test/standard_test.rb") + (substitute* "test/standard/base_test.rb" + ((".*test_configures_all_rubocop_cops.*" all) + (string-append all + " skip('fails on guix')\n")))))))) + (native-inputs + (list ruby-simplecov)) + (propagated-inputs + (list ruby-language-server-protocol + ruby-lint-roller + ruby-rubocop + ruby-rubocop-performance + ruby-standard-custom + ruby-standard-performance)) + (synopsis "Ruby Style Guide, with linter & automatic code fixer") + (description "Standard is a port of StandardJS. Like StandardJS, it aims +to save time in the following ways: +@itemize +@item No configuration. +@item Automatically format code. +@item Catch style issues and programmer errors early. +@end itemize") + (home-page "https://github.com/testdouble/standard") + (license license:expat))) + +(define-public ruby-chunky-png + (package + (name "ruby-chunky-png") + (version "1.4.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wvanbergen/chunky_png") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "05qwj72dy2fcy0n2jnf3bfriybfj36m7s6pv9xash6295dbcp901")))) + (build-system ruby-build-system) + (arguments + (list + #:ruby ruby-3.1 + #: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") + (description "ChunkyPNG is a pure Ruby library that can read and write +Portable Network Graphics (PNG) images without depending on an external image +library. It tries to be memory efficient and reasonably fast. It has +features such as: +@itemize +@item +Decoding support for any image that the PNG standard allows. This includes all +standard color modes, all bit depths, all transparency, and interlacing and +filtering options. +@item +Encoding support for images of all color modes (true color, grayscale, and +indexed) and transparency for all these color modes. The best color mode is +chosen automatically, based on the amount of used colors. +@item Read/write access to the image's pixels. +@item Read/write access to all image metadata that is stored in chunks. +@item +Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per +pixel, depending on the hardware). +@item +Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using +integer math and a highly optimized saving routine. +@item Interoperability with RMagick. +@end itemize + +ChunkyPNG is vulnerable to decompression bombs and can run out of memory when +loading a specifically crafted PNG file. This is hard to fix in pure Ruby. +Deal with untrusted images in a separate process, e.g., by using @code{fork} +or a background processing library.") + (home-page "https://github.com/wvanbergen/chunky_png/wiki") + (license license:expat))) + +(define-public ruby-text-hyphen + (package + (name "ruby-text-hyphen") + (version "1.5.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "text-hyphen" version)) + (sha256 + (base32 + "01js0wxz84cc5hzxgqbcqnsa0y6crhdi6plmgkzyfm55p0rlajn4")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-hoe)) + (synopsis "Ruby library to hyphenate words in various languages") + (description "Text::Hyphen is a Ruby library to hyphenate words in various +languages using Ruby-fied versions of TeX hyphenation patterns. It will +properly hyphenate various words according to the rules of the language the +word is written in. The algorithm is based on that of the TeX typesetting +system by Donald E. Knuth.") + (home-page "https://github.com/halostatue/text-hyphen") + ;; The whole is licensed under the Expat license, but parts use various + ;; versions of the LaTeX Project Public License. + (license license:expat))) + +(define-public ruby-open-uri-cached + (package + (name "ruby-open-uri-cached") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "open-uri-cached" version)) + (sha256 + (base32 + "03v0if3jlvbclnd6jgjk94fbhf0h2fq1wxr0mbx7018sxzm0biwr")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ;no test suite + (synopsis "OpenURI with transparent disk caching") + (description "OpenURI with transparent disk caching, which is +useful to avoid making excessive queries, for example when scraping +web pages.") + (home-page "https://github.com/tigris/open-uri-cached") + (license license:expat))) + +(define-public ruby-asciidoctor-pdf + (package + (name "ruby-asciidoctor-pdf") + (version "2.3.19") + (source + (origin + (method git-fetch) ;no test suite in the distributed gem + (uri (git-reference + (url "https://github.com/asciidoctor/asciidoctor-pdf") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1l8my8jj4aww2yad80n6f7hs76lq5gicld8dy014pw90pk3x43mp")) + (patches + (search-patches + "ruby-asciidoctor-pdf-support-prawn-svg-0_36.patch")))) + (build-system ruby-build-system) + (arguments + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + ;; The tests rely on the Gem being installed, so move the check + ;; phase after the install phase. + (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? + (invoke "rspec" "-t" "~visual" "-t" "~cli" + "-t" "~network"))))))) + (native-inputs + (list ruby-chunky-png + ruby-coderay + ruby-pdf-inspector + ruby-rouge + ruby-rspec)) + (propagated-inputs + (list ruby-asciidoctor + ruby-concurrent + ruby-prawn + ruby-prawn-icon + ruby-prawn-svg + ruby-prawn-table + ruby-prawn-templates + ruby-text-hyphen + ruby-treetop + ruby-ttfunk)) + (synopsis"AsciiDoc to Portable Document Format (PDF)} converter") + (description "Asciidoctor PDF is an extension for Asciidoctor that +converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn +PDF library. It has features such as: +@itemize +@item Direct AsciiDoc to PDF conversion +@item Configuration-driven theme (style and layout) +@item Scalable Vector Graphics (SVG) support +@item PDF document outline (i.e., bookmarks) +@item Table of contents page(s) +@item Document metadata (title, authors, subject, keywords, etc.) +@item Internal cross reference links +@item Syntax highlighting with Rouge, Pygments, or CodeRay +@item Page numbering +@item Customizable running content (header and footer) +@item +“Keep together” blocks (i.e., page breaks avoided in certain block content) +@item Orphaned section titles avoided +@item Autofit verbatim blocks (as permitted by base_font_size_min setting) +@item Table border settings honored +@item Font-based icons +@item Custom TrueType (TTF) fonts +@item Double-sided printing mode (margins alternate on recto and verso pages) +@end itemize") + (home-page "https://asciidoctor.org/docs/asciidoctor-pdf") + (license license:expat))) + +(define-public ruby-ast + (package + (name "ruby-ast") + (version "2.4.2") + (source + (origin + (method git-fetch) ;no test included in gem from v2.4.1 + (uri (git-reference + (url "https://github.com/whitequark/ast") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0vm94yml8rknr7z034vg6s3fpx6lml2prz9fn3hr67cx0143bb4h")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-coveralls-requirement + (lambda _ + (substitute* "test/helper.rb" + (("require 'coveralls'") "") + (("Coveralls::SimpleCov::Formatter") "")))) + (add-after 'extract-gemspec 'remove-unnecessary-requirements + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "ast.gemspec" + ((".*coveralls.*") "\n") + (("%q.*") "%q.freeze, [\">= 0\"])\n") + (("%q.*") "%q.freeze, [\">= 0\"])\n") + (("%q.*") "%q.freeze, [\">= 0\"])\n") + (("12\\.3") "13.0"))))))) + (native-inputs + (list bundler + ruby-bacon + ruby-bacon-colored-output + ruby-json-pure + ruby-kramdown + ruby-mime-types + ruby-racc + ruby-rest-client + ruby-simplecov + ruby-yard)) + (synopsis "Library for working with Abstract Syntax Trees") + (description + "@code{ast} is a Ruby library for working with Abstract Syntax Trees. +It does this through immutable data structures.") + (home-page "https://whitequark.github.io/ast/") + (license license:expat))) + +(define-public ruby-sporkmonger-rack-mount + ;; Testing the addressable gem requires a newer commit than that released, so + ;; use an up to date version. + (let ((revision "1") + (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3")) + (package + (name "ruby-sporkmonger-rack-mount") + (version (git-version "0.8.3" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sporkmonger/rack-mount") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq")))) + (build-system ruby-build-system) + (arguments + ;; Tests currently fail so disable them. + ;; https://github.com/sporkmonger/rack-mount/pull/1 + `(#:tests? #f)) + (propagated-inputs (list ruby-rack)) + (synopsis "Stackable dynamic tree based Rack router") + (description + "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to +continue trying routes if the response returns pass. This allows multiple +routes to be nested or stacked on top of each other.") + (home-page "https://github.com/sporkmonger/rack-mount") + (license license:expat)))) + +(define-public ruby-ci-reporter + (package + (name "ruby-ci-reporter") + (version "2.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "ci_reporter" version)) + (sha256 + (base32 + "0qcafasmjjr8a5gzr4k92ncm6h2943skwllhjzwz8spawdwc7dla")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "rspec")) + (propagated-inputs + (list ruby-builder ruby-rexml)) + (native-inputs + (list bundler ruby-rspec)) + (synopsis "Generate XML reports of runs test") + (description + "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows +you to generate XML reports of your test runs. The resulting files can be +read by a continuous integration system that understands Ant's JUnit report +format.") + (home-page "https://github.com/nicksieger/ci_reporter") + (license license:expat))) + +(define-public ruby-console + (package + (name "ruby-console") + (version "1.16.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "console" version)) + (sha256 + (base32 + "0y1bv3kd1l9p0k5n3anvvjxdrcq113pyngz2g29i9mvdgbbx7kq2")))) + (build-system ruby-build-system) + ;; XXX: Disable test suite to avoid dependency cycles with ruby-samovar. + (arguments (list #:tests? #f)) + (propagated-inputs (list ruby-fiber-local)) + (synopsis "Console logging library for Ruby") + (description "This gem provides beautiful console logging for Ruby +applications. It implements fast, buffered log output and has the following +features: +@itemize +@item Thread safe global logger with per-fiber context +@item Carry along context with nested loggers +@item Enable/disable log levels per class +@item Detailed logging of exceptions +@item Beautiful logging to the terminal or structured logging using JSON. +@end itemize") + (home-page "https://github.com/socketry/console") + (license license:expat))) + +(define-public ruby-contracts + (package + (name "ruby-contracts") + (version "0.17.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "contracts" version)) + (sha256 + (base32 + "1sclvlwnlxfaj1595xd0rn3x3w0ljic3vqgnx6476lr7x8xbpbiv")))) + (build-system ruby-build-system) + (arguments + (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") + (description + "This library provides contracts for Ruby. A contract describes the +correct inputs and output for a method, and will raise an error if a incorrect +value is found.") + (home-page "https://github.com/egonSchiele/contracts.ruby") + (license license:bsd-2))) + +(define-public ruby-crack + (package + (name "ruby-crack") + (version "0.4.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "crack" version)) + (sha256 + (base32 + "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (for-each (lambda (file) + (display file)(display "\n") + (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file)) + (find-files "test" ".*rb$")))))))) + (synopsis "Simple JSON and XML parsing for Ruby") + (description + "@code{crack} provides really simple JSON and XML parsing, extracted from +code in Merb and Rails.") + (home-page "https://github.com/jnunemaker/crack") + (license license:expat))) + +(define-public ruby-clamp + (package + (name "ruby-clamp") + (version "1.3.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "clamp" version)) + (sha256 + (base32 + "08m0syh06bhx8dqn560ivjg96l5cs5s3l9jh2szsnlcdcyl9jsjg")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'do-not-require-rubocop + (lambda _ + (substitute* "Rakefile" + (("require \"rubocop/rake_task\"") + "") + (("RuboCop::RakeTask.new") + ""))))))) + (native-inputs (list ruby-rspec)) + (synopsis "Command-line parsing library for Ruby") + (description "Clamp provides an object-model for command-line utilities. +It handles parsing of command-line options, and generation of usage help.") + (home-page "https://github.com/mdub/clamp") + (license license:expat))) + +(define-public ruby-cliver + (package + (name "ruby-cliver") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "cliver" version)) + (sha256 + (base32 + "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3 + ;; would be nice, but the tests look to be incompatible: + ;; + ;; NoMethodError: undefined method `last_comment' + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list bundler ruby-rspec-2)) + (synopsis "Assertions for command-line dependencies in Ruby") + (description + "@code{cliver} provides a way to detect missing command-line +dependencies, including versions.") + (home-page "https://github.com/yaauie/cliver") + (license license:expat))) + +(define-public ruby-czmq-ffi-gen + (package + (name "ruby-czmq-ffi-gen") + (version "0.13.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "czmq-ffi-gen" version)) + (sha256 + (base32 + "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f ;; Tests are not included in the release on rubygems.org + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-lib_dirs + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb" + (("lib\\_dirs = \\[.*\\]") + (string-append "lib_dirs = ['" + (assoc-ref inputs "czmq") "/lib" + "']"))) + (substitute* "lib/czmq-ffi-gen/libzmq.rb" + (("lib\\_dirs = \\[.*\\]") + (string-append "lib_dirs = ['" + (assoc-ref inputs "zeromq") "/lib" + "']")))))))) + (inputs + (list zeromq czmq)) + (propagated-inputs (list ruby-ffi)) + (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)") + (description + "These Ruby bindings are not intended to be directly used, but rather +used by higher level bindings like those provided by CZTop.") + (home-page + "https://github.com/paddor/czmq-ffi-gen") + (license license:isc))) + +(define-public ruby-cztop + (package + (name "ruby-cztop") + (version "0.12.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "cztop" version)) + (sha256 + (base32 + "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-lib_paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "lib/cztop/poller/zmq.rb" + (("lib\\_paths = \\[.*\\]") + (string-append "lib_paths = ['" + (assoc-ref inputs "zeromq") "/lib" + "']")))))))) + (native-inputs + (list bundler ruby-rspec)) + (inputs + (list zeromq)) + (propagated-inputs + (list ruby-czmq-ffi-gen)) + (synopsis "CZMQ Ruby bindings") + (description + "CZMQ Ruby bindings, based on the generated low-level FFI bindings of +CZMQ. The focus of of CZTop is on being easy to use and providing first class +support for security mechanisms.") + (home-page "https://github.com/paddor/cztop") + (license license:isc))) + +(define-public ruby-saikuro-treemap + (package + (name "ruby-saikuro-treemap") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "saikuro_treemap" version)) + (sha256 + (base32 + "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950")))) + (build-system ruby-build-system) + ;; Some of the tests fail because the generated JSON has keys in a + ;; different order. This is a problem with the test suite rather than any + ;; of the involved libraries. + (arguments `(#:tests? #f)) + (propagated-inputs + (list ruby-json-pure ruby-atoulme-saikuro)) + (synopsis "Generate complexity treemap based on saikuro analysis") + (description + "This gem generates a treemap showing the complexity of Ruby code on +which it is run. It uses Saikuro under the covers to analyze Ruby code +complexity.") + (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap") + (license license:expat))) + +(define-public ruby-oauth2 + (package + (name "ruby-oauth2") + (version "2.0.9") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://gitlab.com/oauth-xx/oauth2") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "191j1f4gjw8wij1jy2fvddgi8cv1mm0ki7v0b0795clix1avnj29")))) + (build-system ruby-build-system) + (arguments + (list #:modules '((guix build ruby-build-system) + (guix build utils) + (ice-9 regex) + (ice-9 textual-ports)) + #: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-after 'unpack 'skip-problematic-test + (lambda _ + ;; XXX: substitute* can't match 2 lines. + (with-atomic-file-replacement + "spec/oauth2/client_spec.rb" + (lambda (in out) + (let* ((pattern "\ + context 'when parse: :xml but response is JSON' do\n\ + it 'returns a configured AccessToken' do\n") + (content (get-string-all in)) + (matched (string-match pattern content))) + (if matched + (format out "~a skip('fails on guix')~%~a" + (string-take content (match:end matched)) + (string-drop content (match:end matched))) + (display content out)))))))))) + (native-inputs + (list bundler + ruby-addressable + ruby-backports + ruby-rexml + ruby-rspec-block-is-expected + ruby-rspec-pending-for + ruby-rspec-stubbed-env + ruby-silent-stream)) + (propagated-inputs + (list ruby-faraday + ruby-jwt + ruby-multi-xml + ruby-rack + ruby-snaky-hash + ruby-version-gem)) + (synopsis "Ruby wrapper for the OAuth 2.0") + (description + "This package provides a Ruby wrapper for the OAuth 2.0 protocol built +with a similar style to the original OAuth spec.") + (home-page "https://github.com/oauth-xx/oauth2") + (license license:expat))) + +(define-public ruby-omniauth + (package + (name "ruby-omniauth") + (version "2.1.1") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/omniauth/omniauth") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1mm7a4ll7ymamrbsl63yi6i34qpwmh2nh5a9kj961gja1iz2gyd1")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "spec/helper.rb" + ;; This condition is used to require coveralls and + ;; simplecov; override it to avoid these extraneous + ;; requirements. + (("RUBY_VERSION >= '1.9'") + "false") + (("require 'rack/freeze'") ""))))))) + (native-inputs (list ruby-rspec)) + (propagated-inputs (list ruby-hashie ruby-rack ruby-rack-test + ruby-rack-protection)) + (synopsis "Generalized Rack framework for multiple-provider authentication") + (description + "This package provides a generalized Rack framework for multiple-provider +authentication.") + (home-page "https://github.com/omniauth/omniauth") + (license license:expat))) + +(define-public ruby-omniauth-oauth2 + (package + (name "ruby-omniauth-oauth2") + (version "1.8.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "omniauth-oauth2" version)) + (sha256 + (base32 + "0y4y122xm8zgrxn5nnzwg6w39dnjss8pcq2ppbpx9qn7kiayky5j")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "spec/helper.rb" + ;; This condition is used to require coveralls and + ;; simplecov; override it to avoid these extraneous + ;; requirements. + (("RUBY_VERSION >= \"1.9\"") + "false"))))))) + (propagated-inputs (list ruby-oauth2 ruby-omniauth)) + (native-inputs (list ruby-rspec ruby-rack-test ruby-webmock)) + (synopsis "Abstract OAuth2 strategy for OmniAuth") + (description + "This library provides a generic OAuth2 strategy for OmniAuth. It +doesn't provide a way to gather user information, so should be used as a +building block for authentication strategies.") + (home-page "https://github.com/omniauth/omniauth-oauth2") + (license license:expat))) + +(define-public ruby-open4 + (package + (name "ruby-open4") + (version "1.3.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "open4" version)) + (sha256 + (base32 + "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "rakefile" + ;; Update the Rakefile so it works + (("-rubygems") "-rrubygems") + (("Config") "RbConfig")))) + (add-before 'check 'set-LIB + (lambda _ + ;; This is used in the rakefile when running the tests + (setenv "LIB" "open4")))))) + (synopsis "Open child processes from Ruby and manage them easily") + (description + "@code{Open4} is a Ruby library to run child processes and manage their +input and output.") + (home-page "https://github.com/ahoward/open4") + (license license:ruby))) + +(define-public ruby-options + (package + (name "ruby-options") + (version "2.3.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "options" version)) + (sha256 + (base32 + "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f ;; TODO: NameError: uninitialized constant Config + #:phases + (modify-phases %standard-phases + (add-before 'check 'set-LIB + (lambda _ + ;; This is used in the Rakefile, and setting it avoids an issue + ;; with running the tests. + (setenv "LIB" "options")))))) + (synopsis "Ruby library to parse options from *args cleanly") + (description + "The @code{options} library helps with parsing keyword options in Ruby +functions.") + (home-page "https://github.com/ahoward/options") + (license license:ruby))) + +(define-public ruby-erubi + (package + (name "ruby-erubi") + (version "1.11.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jeremyevans/erubi") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0y4qskz260fjwbnjps5z5yygjwgh6ds0f97lfa9gsmh6zqa1lvvx")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec")) + (native-inputs (list ruby-minitest + ruby-minitest-global-expectations)) + (synopsis "ERB template engine for Ruby") + (description + "Erubi is a ERB template engine for Ruby. It is a simplified fork of +Erubis") + (home-page "https://github.com/jeremyevans/erubi") + (license license:expat))) + +(define-public ruby-erubis + (package + (name "ruby-erubis") + (version "2.7.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "erubis" version)) + (sha256 + (base32 + "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; tests do not run properly with Ruby 2.0 + (synopsis "Implementation of embedded Ruby (eRuby)") + (description + "Erubis is a fast implementation of embedded Ruby (eRuby) with several +features such as multi-language support, auto escaping, auto trimming spaces +around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails +support.") + (home-page "http://www.kuwata-lab.com/erubis/") + (license license:expat))) + +(define-public ruby-ethon + (package + (name "ruby-ethon") + (version "0.12.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ethon" version)) + (sha256 + (base32 + "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ; no included tests + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'libcurl-use-absolute-reference + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "lib/ethon/curls/settings.rb" + (("libcurl', 'libcurl\\.so\\.4") + (search-input-file inputs "/lib/libcurl.so")))))))) + (inputs + (list curl)) + (propagated-inputs + (list ruby-ffi)) + (synopsis "Very lightweight @code{libcurl} wrapper") + (description + "Ethon is a very basic @code{libcurl} wrapper using ffi.") + (home-page "https://github.com/typhoeus/ethon") + (license license:expat))) + +(define-public ruby-execjs + (package + (name "ruby-execjs") + (version "2.7.0") + (source + (origin + ;; fetch from github as the gem does not contain testing code + (method git-fetch) + (uri (git-reference + (url "https://github.com/rails/execjs") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6")))) + (build-system ruby-build-system) + (native-inputs + (list bundler + ;; The test suite tests all the available backends. Currently, this just + ;; means the node backend. + ;; + ;; PASSED: test:node + ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript, + ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8 + node-lts)) + (synopsis "Run JavaScript code from Ruby") + (description + "ExecJS lets you run JavaScript code from Ruby. It automatically picks a +runtime to evaluate your JavaScript program, then returns the result to you as +a Ruby object.") + (home-page "https://github.com/rails/execjs") + (license license:expat))) + +(define-public ruby-fakefs + (package + (name "ruby-fakefs") + (version "2.8.0") + (home-page "https://github.com/fakefs/fakefs") + (source (origin + ;; The Rubygems release does not contain tests. + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0a3vq6cllml279j77hxipmbln31pjw6di3zdgpzqvhqgazv55v10")))) + (build-system ruby-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'replace-git-ls-files + (lambda _ + (substitute* "fakefs.gemspec" + (("`git ls-files lib README.md LICENSE`") + "`find lib README.md LICENSE -type f | sort`")))) + (add-before 'check 'remove-version-constraints + (lambda _ + ;; Drop hard version requirements for test dependencies. + (substitute* "fakefs.gemspec" + (("(.*add_development_dependency .*), .*" _ dep) + (string-append dep "\n")))))))) + (native-inputs + (list ruby-bump ruby-maxitest ruby-pry ruby-rubocop ruby-rspec)) + (synopsis "Fake file system for Ruby") + (description + "This package provides a fake file system for use in test suites. It +avoids the need for manually creating temporary directories, or dealing +with platform intricacies in @code{File} and @code{FileUtils}.") + (license license:expat))) + +(define-public ruby-orderedhash + (package + (name "ruby-orderedhash") + (version "0.0.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "orderedhash" version)) + (sha256 + (base32 + "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no test suite + (synopsis "Ruby library providing an order-preserving hash") + (description "Orderedhash is a Ruby library providing a hash +implementation that preserves the order of items and features some array-like +extensions.") + (home-page "http://codeforpeople.com/lib/ruby/orderedhash/") + (license license:public-domain))) + +(define-public ruby-libxml + (package + (name "ruby-libxml") + (version "3.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "libxml-ruby" version)) + (sha256 + (base32 + "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54")))) + (build-system ruby-build-system) + (inputs + (list zlib libxml2)) + (arguments + '(#:tests? #f ; test suite hangs for unknown reason + #:gem-flags + (list "--no-document" ; TODO: Re-enable when documentation + ; generation works + "--" + (string-append "--with-xml2-include=" + (assoc-ref %build-inputs "libxml2") + "/include/libxml2" )))) + (synopsis "Ruby bindings for GNOME Libxml2") + (description "The Libxml-Ruby project provides Ruby language bindings for +the GNOME Libxml2 XML toolkit.") + (home-page "https://xml4r.github.com/libxml-ruby") + (license license:expat))) + +(define-public ruby-lino + (package + (name "ruby-lino") + (version "3.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "lino" version)) + (sha256 + (base32 + "1zq9dza040fgjvr9imh7z2lgxrcyc5ac100rqimsnsf9bpfz3fsm")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No included tests + (propagated-inputs + (list ruby-hamster ruby-open4)) + (synopsis "Build and execute commands in Ruby") + (description + "@code{Lino} provides an interface to run external commands. It provides +an interface to add options as well as managing the standard input, output and +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")) + (patches + (search-patches + "ruby-x25519-automatic-fallback-non-x86_64.patch")))) + (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") + (version "1.1.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "xml-simple" version)) + (sha256 + (base32 + "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no test suite + (synopsis "Simple Ruby library for XML processing") + (description "This library provides a simple API for XML processing in +Ruby.") + (home-page "https://github.com/maik/xml-simple") + (license license:ruby))) + +(define-public ruby-xpath + (package + (name "ruby-xpath") + (version "3.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "xpath" version)) + (sha256 + (base32 + "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd")))) + (build-system ruby-build-system) + (arguments (list #:phases #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec" "spec" ))))))) + (native-inputs (list ruby-pry ruby-rspec)) + (propagated-inputs (list ruby-nokogiri)) + (synopsis "Ruby DSL for generating XPath expressions") + (description "XPath is a Ruby domain-specific language (DSL) for +generating XPath expressions.") + (home-page "https://github.com/teamcapybara/xpath") + (license license:expat))) + +(define-public ruby-thor + (package + (name "ruby-thor") + (version "1.2.2") + (source (origin + ;; Pull from git because the gem has no tests. + (method git-fetch) + (uri (git-reference + (url "https://github.com/rails/thor") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1k3z2mlhaig5ycapjxwybb19z7ca0q1876i6csfmv2j0hf1hnc0z")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-coveralls-dependency + (lambda _ + ;; Do not hook the test suite into the online coveralls service. + (substitute* "Gemfile" + ((".*coveralls.*") "")) + (substitute* "spec/helper.rb" + (("require \"coveralls\"") "") + (("Coveralls::SimpleCov::Formatter") "")))) + (add-after 'unpack 'disable-problematic-tests + (lambda _ + ;; These tests attempt to check the git repository for + ;; tabs vs spaces, double vs single quotes, etc, and + ;; depend on the git checkout. + (delete-file "spec/quality_spec.rb") + (substitute* "spec/parser/options_spec.rb" + ;; This test fails for unknown reasons (see: + ;; https://github.com/rails/thor/issues/814). + (("it \"raises an error for unknown switches" all) + (string-append "x" all))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec" "spec" ))))))) + (native-inputs (list ruby-rspec ruby-simplecov ruby-webmock)) + (synopsis "Ruby toolkit for building command-line interfaces") + (description "Thor is a toolkit for building powerful command-line +interfaces.") + (home-page "http://whatisthor.com/") + (license license:expat))) + +(define-public ruby-lumberjack + (package + (name "ruby-lumberjack") + (version "1.0.13") + (source (origin + (method url-fetch) + (uri (rubygems-uri "lumberjack" version)) + (sha256 + (base32 + "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-rspec ruby-timecop)) + (synopsis "Logging utility library for Ruby") + (description "Lumberjack is a simple logging utility that can be a drop in +replacement for Logger or ActiveSupport::BufferedLogger. It provides support +for automatically rolling log files even with multiple processes writing the +same log file.") + (home-page "https://github.com/bdurand/lumberjack") + (license license:expat))) + +(define-public ruby-rbnacl + (package + (name "ruby-rbnacl") + (version "7.1.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rbnacl" version)) + (sha256 + (base32 + "0y8yzianlkc9w6sbqy8iy8l0yym0y6x7p5rjflkfixq76fqmhvzk")))) + (build-system ruby-build-system) + (arguments + (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/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-rgl + (package + (name "ruby-rgl") + (version "0.6.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rgl" version)) + (sha256 + (base32 + "0dji1k9knrf8cxm5psd3pgd9i8f7cfq182jwjpi1pwxw15axf496")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + (substitute* "Gemfile" + ;; Caring about coverage is a not a packager's task but a + ;; developer's + ;;(("gem \"simplecov\"") "") + ;; CodeClimate is an online service, and is unnecessary for + ;; running the tests + (("gem \"codeclimate-test-reporter\", .*") "\n"))))))) + (native-inputs (list ruby-test-unit ruby-simplecov ruby-yard graphviz-minimal)) + (propagated-inputs (list ruby-pairing-heap ruby-rexml ruby-stream)) + (synopsis "Framework for graph data structures and algorithms") + (description "RGL is a framework for graph data structures and algorithms. +The design of the library is much influenced by the Boost Graph Library (BGL) +which is written in C++.") + (home-page "https://github.com/monora/rgl") + (license license:bsd-2))) + +(define-public ruby-hkdf + (package + (name "ruby-hkdf") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jtdowney/hkdf") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1xqwdmxfnhagivwgb5v9ilwpb4jxlsqwj7pnj43d65zzg5m8p9r5")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "default")) + (native-inputs + (list ruby-rspec)) + (synopsis "HMAC-based Key Derivation Function") + (description + "This package provides a Ruby implementation of RFC5869: @acronym{HKDF, +HMAC-based Extract-and-Expand Key Derivation Function}. The goal of HKDF is to +take some source key material and generate suitable cryptographic keys from it.") + (home-page "https://github.com/jtdowney/hkdf") + (license license:expat))) + +(define-public ruby-nenv + (package + (name "ruby-nenv") + (version "0.3.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "nenv" version)) + (sha256 + (base32 + "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; no tests included + (native-inputs + (list ruby-rspec bundler)) + (synopsis "Ruby interface for modifying the environment") + (description "Nenv provides a convenient wrapper for Ruby's ENV to modify +and inspect the environment.") + (home-page "https://github.com/e2/nenv") + (license license:expat))) + +(define-public ruby-ptools + (package + (name "ruby-ptools") + (version "1.5.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "ptools" version)) + (sha256 + (base32 + "0damllbshkxycrwjv80sz78h76dw7r9z54d17mb5cbha1daq9q2d")))) + (build-system ruby-build-system) + (arguments + (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} +class with many additional methods modelled after common POSIX tools, such as +@code{File.which} for finding executables, @code{File.tail} to print the last +lines of a file, @code{File.wc} to count words, and so on.") + (home-page "https://github.com/djberg96/ptools") + (license license:artistic2.0))) + +(define-public ruby-permutation + (package + (name "ruby-permutation") + (version "0.1.8") + (source (origin + (method url-fetch) + (uri (rubygems-uri "permutation" version)) + (sha256 + (base32 + "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-rakefile + (lambda _ + (substitute* "Rakefile" + (("require 'rake/gempackagetask'") + "require 'rubygems/package_task'") + (("include Config") "")))) + (replace 'check + (lambda _ + (invoke "ruby" "-Ilib" "test/test.rb")))))) + (synopsis "Library to perform operations with sequence permutations") + (description "This package provides a Ruby library to perform different +operations with permutations of sequences, such as strings and arrays.") + (home-page "https://flori.github.io/permutation") + (license license:gpl2))) ; GPL 2 only + +(define-public ruby-shellany + (package + (name "ruby-shellany") + (version "0.0.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "shellany" version)) + (sha256 + (base32 + "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "default" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-version-test + (lambda _ + (substitute* "spec/shellany_spec.rb" + (("^RSpec") "require \"shellany\"\nRSpec"))))))) + (native-inputs + (list ruby-rspec ruby-nenv bundler)) + (synopsis "Capture command output") + (description "Shellany is a Ruby library providing functions to capture +the output produced by running shell commands.") + (home-page "https://rubygems.org/gems/shellany") + (license license:expat))) + +(define-public ruby-notiffany + (package + (name "ruby-notiffany") + (version "0.1.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "notiffany" version)) + (sha256 + (base32 + "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk")))) + (build-system ruby-build-system) + ;; Tests are not included in the gem. + (arguments `(#:tests? #f)) + (propagated-inputs + (list ruby-shellany ruby-nenv)) + (native-inputs + (list bundler)) + (synopsis "Wrapper library for notification libraries") + (description "Notiffany is a Ruby wrapper library for notification +libraries such as Libnotify.") + (home-page "https://github.com/guard/notiffany") + (license license:expat))) + +(define-public ruby-forking-test-runner + (package + (name "ruby-forking-test-runner") + (version "1.6.0") + (home-page "https://github.com/grosser/forking_test_runner") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "spec" + ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has + ;; 1.4.1, which in turn breaks the tests that use ActiveRecord. + #:tests? #f + #:phases (modify-phases %standard-phases + (replace 'replace-git-ls-files + (lambda _ + (substitute* "forking_test_runner.gemspec" + (("`git ls-files lib/ bin/ MIT-LICENSE`") + "`find lib/ bin/ MIT-LICENSE -type f | sort`")))) + (add-before 'check 'remove-version-constraints + (lambda _ + ;; Ignore hard coded version constraints for the tests. + (delete-file "Gemfile.lock"))) + (add-before 'check 'set-HOME + (lambda _ + ;; Many tests invoke Bundler, and fails when Bundler + ;; warns that /homeless-shelter does not exist. + (setenv "HOME" "/tmp")))))) + (native-inputs + (list ruby-activerecord ruby-bump ruby-rspec ruby-sqlite3 ruby-wwtd)) + (propagated-inputs + (list ruby-parallel-tests)) + (synopsis "Run every test in a fork") + (description + "This package is a wrapper around @code{parallel_tests} that runs every +test in a fork to avoid pollution and get clean output per test.") + (license license:expat))) + +(define-public ruby-formatador + (package + (name "ruby-formatador") + (version "0.2.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "formatador" version)) + (sha256 + (base32 + "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0")))) + (build-system ruby-build-system) + ;; Circular dependency: Tests require ruby-shindo, which requires + ;; ruby-formatador at runtime. + (arguments `(#:tests? #f)) + (synopsis "Ruby library to format text on stdout") + (description "Formatador is a Ruby library to format text printed to the +standard output stream.") + (home-page "https://github.com/geemus/formatador") + (license license:expat))) + +(define-public ruby-fuubar + (package + (name "ruby-fuubar") + (version "2.3.2") + (source + (origin + ;; Fetch from the git repository, as the gem package doesn't include + ;; the tests. + (method git-fetch) + (uri (git-reference + (url "https://github.com/thekompanee/fuubar") + (commit (string-append "releases/v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259")))) + (build-system ruby-build-system) + (arguments + '(;; TODO: Some tests fail, unsure why. + ;; 21 examples, 7 failures + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'delete-certificate + (lambda _ + ;; Remove 's.cert_chain' as we do not build with a private key + (substitute* "fuubar.gemspec" + ((".*cert_chain.*") "") + ((".*signing_key.*") "")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list bundler)) + (propagated-inputs + (list ruby-rspec-core ruby-progressbar)) + (synopsis "Fuubar is an RSpec formatter that uses a progress bar") + (description + "Fuubar is an RSpec formatter that uses a progress bar instead of a +string of letters and dots as feedback. It also stops on the first test +failure.") + (home-page "https://github.com/thekompanee/fuubar") + (license license:expat))) + +(define-public ruby-haml + (package + (name "ruby-haml") + (version "5.0.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "haml" version)) + (sha256 + (base32 + "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No included tests + (propagated-inputs + (list ruby-tilt ruby-temple)) + (synopsis "Haml is a Ruby library to generate HTML documents") + (description + "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of +HTML or XML that is designed to express the structure of documents using +indentation rather than closing tags. It was originally envisioned as a +plugin for Ruby on Rails, but it can function as a stand-alone templating +engine.") + (home-page "https://haml.info/") + (license license:expat))) + +(define-public ruby-hamster + (package + (name "ruby-hamster") + (version "3.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "hamster" version)) + (sha256 + (base32 + "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar")))) + (build-system ruby-build-system) + (arguments + (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 + (list ruby-rspec)) + (synopsis "Efficient, immutable, thread-safe collection classes for Ruby") + (description + "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector}, +@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an +immutable queue or stack).") + (home-page "https://github.com/hamstergem/hamster") + (license license:expat))) + +(define-public ruby-hashdiff + (package + (name "ruby-hashdiff") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "hashdiff" version)) + (sha256 + (base32 + "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; Run tests directly via rspec to avoid depending on rubocop. + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list bundler ruby-rspec-2)) + (synopsis "HashDiff computes the smallest difference between two hashes") + (description + "HashDiff is a Ruby library to compute the smallest difference between +two hashes.") + (home-page "https://github.com/liufengyun/hashdiff") + (license license:expat))) + +(define-public ruby-hydra-minimal + ;; No releases yet. + (let ((commit "a4cab705a8a281e4356cb6a05a1946443ad9d53b") + (revision "1")) + (package + (name "ruby-hydra-minimal") + (version (git-version "0.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 + "1swzab7i4cqk1bck7p5m3bh526jh0v6m9qq720r3270zbjc8x8z3")))) + (build-system ruby-build-system) + (arguments + ;; 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)))) + +;; Pinned variant for use by texlive +(define-public ruby-hydra-minimal/pinned + (hidden-package + (package + (inherit ruby-hydra-minimal) + (arguments + (cons* #:ruby ruby/pinned + (package-arguments ruby-hydra-minimal)))))) + +(define-public ruby-hydra + (package + (inherit ruby-hydra-minimal) + (name "ruby-hydra") + (arguments + (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)) + (description + "ruby-hydra is a Ruby library for working with hyphenation patterns."))) + +(define-public ruby-shindo + (package + (name "ruby-shindo") + (version "0.3.11") + (source (origin + (method url-fetch) + (uri (rubygems-uri "shindo" version)) + (sha256 + (base32 + "1wccg3a4g3agfyszipkdnbcgsazcfwdbz1gv51q8m17m9plvpzdp")))) + (build-system ruby-build-system) + (arguments + (list + #:test-target "tests" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda _ + (substitute* "tests/tests_helper.rb" + (("-rrubygems") "")))) + ;; Move the 'check phase to after 'install, to use installed shindo. + (delete 'check) + (add-after 'install 'configure-tests + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "GEM_PATH" + (string-append + (getenv "GEM_PATH") ":" + #$output "/lib/ruby/vendor_ruby")) + (setenv "PATH" + (string-append + (getenv "PATH") ":" #$output "/bin"))))) + (add-after 'configure-tests 'check + (assoc-ref %standard-phases 'check))))) + (propagated-inputs + (list ruby-formatador)) + (synopsis "Simple depth first Ruby testing") + (description "Shindo is a simple depth first testing library for Ruby.") + (home-page "https://github.com/geemus/shindo") + (license license:expat))) + +(define-public ruby-rubygems-tasks + (package + (name "ruby-rubygems-tasks") + (version "0.2.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rubygems-tasks" version)) + (sha256 + (base32 + "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx")))) + (build-system ruby-build-system) + ;; Tests need Internet access. + (arguments `(#:tests? #f)) + (synopsis "Rake tasks for managing and releasing Ruby Gems") + (description "Rubygems-task provides Rake tasks for managing and releasing +Ruby Gems.") + (home-page "https://github.com/postmodern/rubygems-tasks") + (license license:expat))) + +(define-public ruby-rubyzip + (package + (name "ruby-rubyzip") + (version "2.3.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rubyzip/rubyzip") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "03p8c990n6c1r4g64w0vv7z2iaswisl07l2f1lbh1s78cvmlmfxx")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-rubocop + (lambda _ + (substitute* "Rakefile" + (("require 'rubocop/rake_task'") "") + (("RuboCop::RakeTask.new") "")))) + (add-before 'check 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "test/gentestfiles.rb" + (("/usr/bin/zip") (which "zip"))))) + (add-after 'patch-source-shebangs 'unpatch-some-source-shebangs + (lambda _ + ;; The tests compare zipped files with data test files; since the + ;; zip files do not have their shebangs patched, the data files + ;; compared with their extracted version must also be left + ;; un-patched. + (substitute* (find-files "test/data" "\\.(txt|rb)$") + (((which "ruby")) + "/usr/bin/env ruby"))))))) + (native-inputs + (list bundler ruby-simplecov zip unzip)) + (synopsis "Ruby module is for reading and writing zip files") + (description + "The rubyzip module provides ways to read from and create zip files.") + (home-page "https://github.com/rubyzip/rubyzip") + (license license:bsd-2))) + +(define-public ruby-silent-stream + (package + (name "ruby-silent-stream") + (version "1.0.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "silent_stream" version)) + (sha256 + (base32 + "10381fpvjzfjvhgfyv700607fpa29firgf52w5w5536m4fh6x63m")))) + (build-system ruby-build-system) + (synopsis "ActiveSupport stream silencing without ActiveSupport") + (description "SilentStream is an extraction of some parts of +ActiveSupport's Kernel Reporting Core Extensions around silencing IO +streams.") + (home-page "https://github.com/pboling/silent_stream") + (license license:expat))) + +(define-public ruby-simplecov-lcov + (package + (name "ruby-simplecov-lcov") + (version "0.8.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "simplecov-lcov" version)) + (sha256 + (base32 + "1h8kswnshgb9zidvc88f4zjy4gflgz3854sx9wrw8ppgnwfg6581")))) + (build-system ruby-build-system) + ;; The test suite fails half of its tests; it seems to rely on older + ;; versions of simplecov, rspec, possibly others (see: + ;; https://github.com/fortissimo1997/simplecov-lcov/issues/29). + (arguments (list #:tests? #f + #:test-target "spec")) + (native-inputs + (list ruby-activesupport + ruby-coveralls + ruby-rspec + ruby-simplecov)) + (synopsis "SimpleCov formatter to generate a lcov style coverage") + (description "This package provides a SimpleCov formatter to generate a +lcov-style coverage report.") + (home-page "https://github.com/fortissimo1997/simplecov-lcov") + (license license:expat))) + +(define-public ruby-snaky-hash + (package + (name "ruby-snaky-hash") + (version "2.0.1") + (source (origin + (method git-fetch) + (uri (git-reference ;for tests + (url "https://gitlab.com/oauth-xx/snaky_hash") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0zmixxzi2g2d75zii65bq037j4g67p25l6aqddbmmwizspsp5az6")))) + (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* "snaky_hash.gemspec" + (("spec.signing_key =.*") + "spec.signing_key = nil"))))))) + (native-inputs (list ruby-rspec ruby-rspec-block-is-expected)) + (propagated-inputs (list ruby-hashie ruby-version-gem)) + (synopsis "Hash keys and look-ups normalization Ruby library") + (description "The SnakyHash Ruby library provides classes for normalizing +hash keys and look-ups, and a pseudo-object interface.") + (home-page "https://gitlab.com/oauth-xx/snaky_hash") + (license license:expat))) + +(define-public ruby-useragent + (package + (name "ruby-useragent") + (version "0.16.10") + (source (origin + (method url-fetch) + (uri (rubygems-uri "useragent" version)) + (sha256 + (base32 + "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no test suite + (synopsis "HTTP user agent parser for Ruby") + (description "UserAgent is a Ruby library that parses and compares HTTP +User Agents.") + (home-page "https://github.com/gshutler/useragent") + (license license:expat))) + +(define-public ruby-backports + (package + (name "ruby-backports") + (version "3.11.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "backports" version)) + (sha256 + (base32 + "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g")))) + (build-system ruby-build-system) + (arguments + '(;; TODO: This should be default, but there is one test failure + #:test-target "all_spec")) + (native-inputs + (list ruby-mspec ruby-activesupport)) + (synopsis "Backports of the features in newer Ruby versions") + (description + "Backports enables more compatibility across Ruby versions by providing +backports of some features.") + (home-page "https://github.com/marcandre/backports") + (license license:expat))) + +(define-public ruby-bacon + (package + (name "ruby-bacon") + (version "1.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "bacon" version)) + (sha256 + (base32 + "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai")))) + (build-system ruby-build-system) + (synopsis "Small RSpec clone") + (description "Bacon is a small RSpec clone providing all essential +features.") + (home-page "https://github.com/chneukirchen/bacon") + (license license:expat))) + +(define-public ruby-bacon-bits + (package + (name "ruby-bacon-bits") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "bacon-bits" version)) + (sha256 + (base32 + "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx")))) + (build-system ruby-build-system) + (arguments + ;; No tests + '(#:tests? #f)) + (propagated-inputs (list ruby-bacon)) + (synopsis "Extensions to Bacon, for disabling tests, before and after +blocks and more") + (description + "This extends the bacon testing framework with useful extensions to +disable tests, have before and after blocks that run once and more.") + (home-page "https://github.com/cldwalker/bacon-bits") + (license license:expat))) + +(define-public ruby-bacon-colored-output + (package + (name "ruby-bacon-colored-output") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "bacon-colored_output" version)) + (sha256 + (base32 + "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx")))) + (build-system ruby-build-system) + (arguments + '(;; No included tests + #:tests? #f)) + (propagated-inputs + (list ruby-bacon)) + (synopsis "Colored output for Bacon test framework") + (description + "This package adds color through ANSI escape codes to Bacon test +output.") + (home-page "https://github.com/whitequark/bacon-colored_output") + (license license:expat))) + +(define-public ruby-bake + (package + (name "ruby-bake") + (version "0.18.2") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ioquatix/bake") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19yi1fxzz9n580gig3p3j6nxbgcfcassa6b0q07jkqrzxdqn7xhn")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'sanitize-dependencies + (lambda _ + ;; These dependencies are not needed to build and run tests + ;; and contain circular dependencies. + (substitute* "gems.rb" + ((".*'bake-modernize'.*") "") + ((".*'bake-gem'.*") "") + ((".*'bake-github-pages'.*") "") + ((".*'utopia-project'.*") "")))) + (add-before 'build 'drop-signing-key-requirement + (lambda _ + (substitute* "bake.gemspec" + (("spec.signing_key =.*") + "spec.signing_key = nil")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs (list ruby-covered ruby-rspec)) + (propagated-inputs (list ruby-samovar)) + (synopsis "Replacement for rake with a simpler syntax") + (description "Bake is a task execution tool, inspired by Rake, but +codifying many of the use cases which are typically implemented in an ad-hoc +manner.") + (home-page "https://github.com/ioquatix/bake") + (license license:expat))) + +(define-public ruby-bake-test + (package + (name "ruby-bake-test") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "bake-test" version)) + (sha256 + (base32 + "1p6kfpncj0s4zyynrrq6c735jvh0dnwyv7kfqym4rpyka4f85qdp")))) + (build-system ruby-build-system) + ;; XXX: Disable the test suite to avoid a circular dependency with + ;; ruby-sus. + (arguments (list #:tests? #f)) + (propagated-inputs (list ruby-bake)) + (synopsis "Test suite automatic runner for Ruby") + (description "@command{bake-test} automatically discovers how to run local +test suites for Ruby projects. It supports @command{rspec}, @command{sus}, as +well as @samp{rake}.") + (home-page "https://github.com/ioquatix/bake-test") + (license license:expat))) + +(define-public ruby-bake-test-external + (package + (name "ruby-bake-test-external") + (version "0.3.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "bake-test-external" version)) + (sha256 + (base32 + "0749xc7jkz1c5gsq1giwhrqy6s6xqm48bdvs414372881wki2jmh")))) + (build-system ruby-build-system) + ;; The test suite relies on git and network access to clone external + ;; repositories. + (arguments (list #:tests? #f)) + (propagated-inputs (list ruby-bake)) + (synopsis "Continuous integration extension for Bake") + (description "Bake Test External adds a @samp{test:external} action to the +@command{bake} command to run the test suites of dependent projects to check +for breakage.") + (home-page "https://github.com/ioquatix/bake-test-external") + (license license:expat))) + +(define-public ruby-connection-pool + (package + (name "ruby-connection-pool") + (version "2.4.1") + (source (origin + (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 + "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") + (description "Connection_pool provides a generic connection pooling +interface for Ruby programs.") + (home-page "https://github.com/mperham/connection_pool") + (license license:expat))) + +(define-public ruby-fast-gettext + (package + (name "ruby-fast-gettext") + (version "4.1.0") + (home-page "https://github.com/grosser/fast_gettext") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "04p9s0r67xgvckab9ydb3fbnrc7g20p5c05z2zsacynlkp9x5jp9")))) + (build-system ruby-build-system) + (arguments + (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 + ruby-activesupport + ruby-bump + ruby-forking-test-runner + ruby-i18n + ruby-rubocop + ruby-rubocop-packaging + ruby-rspec + ruby-single-cov + ruby-sqlite3 + ruby-wwtd)) + (synopsis "Fast implementation of @code{GetText}") + (description + "This package provides an alternative implementation of the Ruby +@code{GetText} library that is approximately 12x faster yet thread safe.") + ;; Some parts are covered by the Ruby license, see file headers. + (license (list license:expat license:ruby)))) + +(define-public ruby-fiber-local + (package + (name "ruby-fiber-local") + (version "1.0.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/socketry/fiber-local") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0pp5b81h0lysdnphgprkixh1az0fkrgir5sbcp0mm8arxf3f8m90")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'sanitize-dependencies + (lambda _ + ;; This pulls in extraneous maintenance dependencies. + (delete-file "gems.rb") + ;; Depending on ruby-covered would introduce a dependency + ;; cycle with it. + (substitute* '("fiber-local.gemspec" "spec/spec_helper.rb") + ((".*covered.*") "")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs (list ruby-rspec)) + (synopsis "Ruby module to simplify fiber-local state management") + (description "This package provides a class-level mixin to make managing +fiber-local state easy. It provides easy access to a fiber-local state from a +fiber, and defaults to a shared thread-local state.") + (home-page "https://github.com/socketry/fiber-local") + (license license:expat))) + +(define-public ruby-flores + (let ((commit "92fded00b04b1e3d308edb7440d7b7ab2c89ab5e") + (revision "0")) + (package + (name "ruby-flores") + (version (git-version "0.0.8" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jordansissel/ruby-flores") + (commit commit))) + (sha256 + (base32 "0jvnw0jli2zzxklfk751vfbi4acf9lijppk67346j3b2qxqi8xms")) + (patches + (search-patches "ruby-flores-fix-deprecations.patch")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-gemspec + (lambda _ + (substitute* "flores.gemspec" + ;; Since this is not a git repository, do not call 'git'. + (("git ls-files") "find . -type f |sort")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (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 +help tests uncover more bugs.") + (home-page "https://github.com/jordansissel/ruby-flores") + (license license:asl2.0)))) + +(define-public ruby-ipaddr + (package + (name "ruby-ipaddr") + (version "1.2.6") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/ipaddr") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0h3z8i1fa8s4gx48322fflhpkzghd4bmd9109hglsgdkic7b0dyp")))) + (build-system ruby-build-system) + (native-inputs (list ruby-test-unit-ruby-core)) + (synopsis "Manipulate IP addresses") + (description "This package provides a set of methods to manipulate an IP +address. Both IPv4 and IPv6 are supported.") + (home-page "https://github.com/ruby/ipaddr") + (license license:bsd-2))) + +(define-public ruby-fake-ftp + (package + (name "ruby-fake-ftp") + (version "0.3.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "fake_ftp" version)) + (sha256 + (base32 + "1zl9q9m4x7lz9890g0h1qqj7hcxnwzpjfnfbxadjblps7b5054q4")))) + (build-system ruby-build-system) + (native-inputs (list ruby-rspec ruby-rubocop ruby-simplecov)) + (arguments + '(#:test-target "spec")) + (synopsis "Fake FTP server for use with ruby tests") + (description "This package allows you to test FTP implementations in ruby. +It is a minimal single-client FTP server that can be bound to any arbitrary +port on localhost.") + (home-page "https://rubygems.org/gems/fake_ftp") + (license license:expat))) + +(define-public ruby-net-telnet + (package + (name "ruby-net-telnet") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "net-telnet" version)) + (sha256 + (base32 + "16nkxc79nqm7fd6w1fba4kb98vpgwnyfnlwxarpdcgywz300fc15")))) + (build-system ruby-build-system) + (synopsis "Telnet client functionality") + (description "This package provides telnet client functionality.") + (home-page "https://github.com/ruby/net-telnet") + (license license:bsd-2))) + +(define-public ruby-net-ftp + (package + (name "ruby-net-ftp") + (version "0.3.4") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/net-ftp") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "11b1sw7c4c7xrhn5li5m0wylw42hp52jp6pqacyb43hkw1m5zr36")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-net-protocol ruby-time)) + (synopsis "File Transfer Protocol client library") + (description "This class implements the File Transfer Protocol. If you +have used a command-line FTP program, and are familiar with the commands, you +will be able to use this class easily. Some extra features are included to +take advantage of Ruby's style and strengths.") + (home-page "https://github.com/ruby/net-ftp") + (license license:bsd-2))) + +(define-public ruby-net-http-persistent + (package + (name "ruby-net-http-persistent") + (version "4.0.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "net-http-persistent" version)) + (sha256 + (base32 + "0i1as2lgnw7b4jid0gw5glv5hnxz36nmfsbr9rmxbcap72ijgy03")))) + (build-system ruby-build-system) + (native-inputs + (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.") + (home-page "https://github.com/drbrain/net-http-persistent") + (license license:expat))) + +(define-public ruby-net-imap + (package + (name "ruby-net-imap") + (version "0.3.4") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/net-imap") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0nx49i1n9q1wpancqaac2srrpb8mb43mc8wryyqyhpgki2grwyxw")))) + (build-system ruby-build-system) + (arguments + ;; The test suite appears to rely on RFCs it tries fetching from the + ;; network (see: https://github.com/ruby/net-imap/issues/136). + (list #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-before 'replace-git-ls-files 'adjust-for-git-ls-files + (lambda _ + ;; Adjust the git ls-files invocation so that it matches + ;; the expected pattern. + (substitute* "net-imap.gemspec" + (("`git ls-files -z 2>/dev/null`") + "`git ls-files -z`"))))))) + (propagated-inputs (list ruby-date ruby-net-protocol)) + (synopsis "Ruby client api for Internet Message Access Protocol") + (description "@code{Net::IMAP} implements Internet Message Access +Protocol (IMAP) client functionality. The protocol is described in +@url{https://tools.ietf.org/html/rfc3501, IMAP}.") + (home-page "https://github.com/ruby/net-imap") + (license license:bsd-2))) + +(define-public ruby-net-pop + (package + (name "ruby-net-pop") + (version "0.1.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ruby/net-pop") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "05vz6a56va2rbr7ld78gdzwy1j5mzs98cz82ax5aqa83pzzk6jld")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-net-protocol)) + (synopsis "Ruby client library for POP3") + (description "This library provides functionality for retrieving email via +POP3, the Post Office Protocol version 3, as specified by +@url{http://www.ietf.org/rfc/rfc1939.txt, RFC1939}.") + (home-page "https://github.com/ruby/net-pop") + (license license:bsd-2))) + +(define-public ruby-net-smtp + (package + (name "ruby-net-smtp") + (version "0.3.3") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/net-smtp") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ca2wh45xvc09rv6v6sz3vbnkzrjzk5c4l6dk50zk4dwxvghma8r")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'regenerate-certificate + ;; On version 0.5.0 a Makefile was introduced to regenerated + ;; the certificates, and instead of calling openssl directory + ;; we could do (with-directory-excursion "test/net/fixtures" + ;; (invoke "make" "regen_certs"). However the certificate is + ;; expired versions before 0.5.0 as well. + (lambda _ + (with-directory-excursion "test/net/fixtures" + (invoke + "openssl" "req" "-new" "-key" "server.key" "-out" + "server.csr" "-subj" + "/C=JP/ST=Shimane/O=Ruby Core Team/OU=Ruby Test/CN=localhost") + (invoke "openssl" "req" "-new" "-x509" "-days" "3650" + "-key" "server.key" "-out" "cacert.pem" "-subj" + (string-append + "/C=JP/ST=Shimane/L=Matz-e city/O=Ruby " + "Core Team/CN=Ruby Test " + "CA/emailAddress=security@ruby-lang.org")) + (invoke "openssl" "x509" "-days" "3650" "-CA" "cacert.pem" + "-CAkey" "server.key" "-set_serial" "00" "-in" + "server.csr" "-req" "-out" "server.crt"))))))) + (native-inputs (list openssl)) + (propagated-inputs (list ruby-net-protocol)) + (synopsis "Simple Mail Transfer Protocol client library for Ruby") + (description "This library provides functionality to send Internet mail +via SMTP, the Simple Mail Transfer Protocol. The SMTP protocol specification +is known as @url{http://www.ietf.org/rfc/rfc2821.txt, RFC2821}.") + (home-page "https://github.com/ruby/net-smtp") + (license license:bsd-2))) + +(define-public ruby-pleaserun + (package + (name "ruby-pleaserun") + (version "0.0.32") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pleaserun" version)) + (sha256 + (base32 + "1aykf0l8327bqkkf5xd9jcglsib973zpy37cfnlf4j0vp0cdpn2d")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (substitute* "pleaserun.gemspec" + ;; Mustache is pinned at 0.99.8, for portability with + ;; older Rubies. + (("dependency\\(%q.freeze.*") + "dependency(%q.freeze)\n")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; The cli_spec.rb test fails non-deterministically with + ;; a Errno::EISDIR error (see: + ;; https://github.com/jordansissel/pleaserun/issues/155) + (invoke "rspec" "--exclude-pattern" + "spec/pleaserun/cli_spec.rb"))))))) + (native-inputs (list ruby-flores ruby-rspec)) + (propagated-inputs (list ruby-cabin + ruby-clamp + ruby-dotenv + ruby-insist + ruby-mustache + ruby-stud)) + (synopsis "Init scripts and service definitions generation tool") + (description "Pleaserun is a tool to generate startup scripts and service +definitions. It targets service managers such as systemd, Upstart, launchd, +sysv init, and runit.") + (home-page "https://github.com/jordansissel/pleaserun") + (license license:asl2.0))) + +(define-public ruby-power-assert + (package + (name "ruby-power-assert") + (version "1.1.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "power_assert" version)) + (sha256 + (base32 + "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No included tests + (native-inputs + (list bundler)) + (synopsis "Assert library with descriptive assertion messages") + (description "Power-assert is an assertion library providing descriptive +assertion messages for tests.") + (home-page "https://github.com/k-tsj/power_assert") + (license (list license:bsd-2 license:ruby)))) + +(define-public ruby-powerpack + (package + (name "ruby-powerpack") + (version "0.1.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "powerpack" version)) + (sha256 + (base32 + "1f71axvlhnxja0k17qqxdi4qh5ck807hqg4i3j6cgy8fgzmyg7rg")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec")) + (native-inputs + (list bundler ruby-rspec ruby-yard)) + (synopsis "Useful extensions to core Ruby classes") + (description + "This package provides a few useful extensions to core Ruby classes, +including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and +@code{String}.") + (home-page "https://github.com/bbatsov/powerpack") + (license license:expat))) + +(define-public ruby-locale + (package + (name "ruby-locale") + (version "2.1.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "locale" version)) + (sha256 + (base32 + "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x")))) + (build-system ruby-build-system) + ;; ruby-test-unit is required to run tests, but that needs ruby-packnga, + ;; which needs ruby-gettext, which needs ruby-locale. To break the + ;; dependency cycle we disable tests. + (arguments `(#:tests? #f)) + (native-inputs + (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 +localization.") + (home-page "https://github.com/ruby-gettext/locale") + (license (list license:lgpl3+ license:ruby)))) + +(define-public ruby-temple + (package + (name "ruby-temple") + (version "0.10.0") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/judofyr/temple") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0rr9fnlcgj9nm3b6hzzjsvcw8x3y7z48j7slk7xxff2mh8s7y3y0")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'replace-git-ls-files 'replace-more-git-ls-files + (lambda _ + (substitute* "temple.gemspec" + ;; There no longer are test, spec or features + ;; directories. + ((".*`git ls-files -- \\{test,spec,features}/\\*`.*") + "") + ;; There isn't any bin directory either. + ((".*`git ls-files -- bin/\\*`.*") + "")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs (list ruby-bacon ruby-erubi ruby-rspec ruby-tilt)) + (synopsis "Template compilation framework in Ruby") + (description "Temple is an abstraction and framework for compiling +templates to pure Ruby.") + (home-page "https://github.com/judofyr/temple") + (license license:expat))) + +(define-public ruby-text + (package + (name "ruby-text") + (version "1.3.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "text" version)) + (sha256 + (base32 + "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg")))) + (build-system ruby-build-system) + (synopsis "Collection of text algorithms for Ruby") + (description + "This package provides a collection of text algorithms: Levenshtein, +Soundex, Metaphone, Double Metaphone, Porter Stemming.") + (home-page "https://github.com/threedaymonk/text") + (license license:expat))) + +(define-public ruby-gdbm + (package + (name "ruby-gdbm") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "gdbm" version)) + (sha256 + (base32 "0xxygf50b2fvy8lcn2vip27vq32p607d3lwd1diplvkajijq8q8b")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; No bundled tests. + (inputs (list gdbm)) + (synopsis "Ruby extension for GNU dbm") + (description "This package provides a Ruby extension for GNU dbm.") + (home-page "https://github.com/ruby/gdbm") + (license license:bsd-2))) + +(define-public ruby-gettext + (package + (name "ruby-gettext") + (version "3.4.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "gettext" version)) + (sha256 + (base32 + "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 ruby-erubi)) + (native-inputs + (list bundler ruby-yard/minimal)) + (synopsis "GNU gettext-like program for Ruby") + (description + "Gettext is a GNU gettext-like program for Ruby. The catalog +file (po-file) used is the same as that used by GNU gettext, allowing you to +use GNU gettext tools for maintenance.") + (home-page "https://ruby-gettext.github.com/") + (license (list license:lgpl3+ license:ruby)))) + +(define-public ruby-packnga + (package + (name "ruby-packnga") + (version "1.0.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "packnga" version)) + (sha256 + (base32 + "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4")))) + (build-system ruby-build-system) + ;; ruby-test-unit is required to run tests, but that needs ruby-packnga. + ;; To break the dependency cycle we disable tests. + (arguments `(#:tests? #f)) + (propagated-inputs + (list ruby-gettext ruby-yard)) + (native-inputs + (list bundler)) + (synopsis "Utility library to package internationalized libraries") + (description + "Packnga is a library to translate to many languages using YARD.") + (home-page "https://ranguba.org/packnga/") + (license license:lgpl2.0+))) + +(define-public ruby-test-construct + (package + (name "ruby-test-construct") + (version "2.0.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "test_construct" version)) + (sha256 + (base32 + "17q7rw92l7r4zh6rkvzrn4dyl8p8p77217vaa1wf7nsv8k5541vy")))) + (build-system ruby-build-system) + (native-inputs + (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 +temporary files and directories during tests.") + (home-page "https://github.com/bhb/test_construct") + (license license:expat))) + +(define-public ruby-test-unit + (package + (name "ruby-test-unit") + (version "3.6.0") + (source (origin + (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 + "0w1m432q3y5v9lkak8yyxadak3z17bsp6afni97i4zjdgfz7niz2")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-power-assert)) + (native-inputs + (list bundler ruby-packnga ruby-yard)) + (synopsis "Unit testing framework for Ruby") + (description "@code{Test::Unit} is unit testing framework for Ruby, based +on xUnit principles. These were originally designed by Kent Beck, creator of +extreme programming software development methodology, for Smalltalk's SUnit. +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-test-unit-ruby-core + (package + (name "ruby-test-unit-ruby-core") + (version "1.0.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "test-unit-ruby-core" version)) + (sha256 + (base32 "1i7fa4hlj6xiqvjaikagwrmiyc21jzyswvd4grjbfqysziwsxygc")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f)) ; contains no tests + (synopsis "Additional test assertions for Ruby standard libraries") + (description "This package provides additional test assertions for Ruby +standard libraries.") + (home-page "https://github.com/ruby/test-unit-ruby-core") + (license license:ruby))) + +(define-public ruby-mapping + (package + (name "ruby-mapping") + (version "1.1.1") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ioquatix/mapping") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0yhmqp8mprjqf9m7wzc4hhi50qbfax86r89w852csns0ijaffjjs")))) + (build-system ruby-build-system) + (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 +class to a given output model. It is useful for versioning external +interfaces (e.g. JSON APIs) or processing structured data from one format to +another.") + (home-page "https://github.com/ioquatix/mapping") + (license license:expat))) + +(define-public ruby-markaby + (package + (name "ruby-markaby") + (version "0.9.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "markaby" version)) + (sha256 + (base32 + "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i")))) + (build-system ruby-build-system) + (arguments + (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 + (list bundler ruby-rspec-2)) + (synopsis "Write HTML pages in pure Ruby") + (description + "Markaby allows writing HTML packages in pure Ruby. This is similar to +the functionality provided by @acronym{ERB, Embedded Ruby}, but without the +mixture of HTML and additional ERB syntax.") + (home-page "https://markaby.github.io/") + (license license:expat))) + +(define-public ruby-maruku + (package + (name "ruby-maruku") + (version "0.7.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "maruku" version)) + (sha256 + (base32 + "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x")))) + (build-system ruby-build-system) + (arguments + '(;; TODO: 3 tests seem to fail due to HTML encoding issues + #:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list ruby-rspec ruby-simplecov ruby-nokogiri-diff)) + (synopsis "Markdown interpreter in Ruby") + (description + "Maruku is a Markdown interpreter in Ruby. It can export Markdown to +HTML, and PDF through LaTeX.") + (home-page "https://github.com/bhollis/maruku") + (license license:expat))) + +(define-public ruby-metaclass + (package + (name "ruby-metaclass") + (version "0.0.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "metaclass" version)) + (sha256 + (base32 + "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5")))) + (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\""))))))))) + (native-inputs + (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 +objects.") + (home-page "https://github.com/floehopper/metaclass") + (license license:expat))) + +(define-public ruby-mkmf-lite + (package + (name "ruby-mkmf-lite") + (version "0.5.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "mkmf-lite" version)) + (sha256 + (base32 + "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 +for use as a library. It does not create packages, builds, or log files of +any kind. Instead, it provides mixin methods that you can use in FFI or tests +to check for the presence of header files, constants, and so on.") + (home-page "https://github.com/djberg96/mkmf-lite") + (license license:asl2.0))) + +(define-public ruby-msgpack + (package + (name "ruby-msgpack") + (version "1.7.5") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/msgpack/msgpack-ruby") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0d759pjgxgrxw18kmk81yv9brc141b4d8gszlp4vdnpvwvb96nln")))) + (build-system ruby-build-system) + (arguments (list #:test-target "spec")) + (native-inputs + (list ruby-rake-compiler + ruby-ruby-memcheck + ruby-rspec + ruby-yard)) + (synopsis "Efficient object serialization library for Ruby") + (description "MessagePack is a binary-based efficient object serialization +library. It enables to exchange structured objects between many languages +like JSON. Unlike JSON, it is very fast and small.") + (home-page "https://msgpack.org/") + (license license:asl2.0))) + +(define-public ruby-mspec + (package + (name "ruby-mspec") + (version "1.9.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mspec" version)) + (sha256 + (base32 + "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd")))) + (build-system ruby-build-system) + (arguments + '(;; TODO: 3 test failures + ;; ./spec/mocks/mock_spec.rb:82 + ;; ./spec/utils/name_map_spec.rb:151 + ;; ./spec/utils/name_map_spec.rb:155 + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'extract-gemspec 'change-dependency-constraints + (lambda _ + (substitute* "mspec.gemspec" + (("rake.*") "rake>)\n") + (("rspec.*") "rspec>)\n")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec" "spec"))))))) + (native-inputs + (list bundler ruby-rake ruby-rspec)) + (synopsis "MSpec is a specialized framework for RubySpec") + (description + "MSpec is a specialized framework that is syntax-compatible with RSpec 2 +for basic features. MSpec contains additional features that assist in writing +specs for Ruby implementations in ruby/spec.") + (home-page "http://rubyspec.org") + (license license:expat))) + +(define-public ruby-mysql2 + (package + (name "ruby-mysql2") + (version "0.5.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/brianmario/mysql2") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv")))) + (build-system ruby-build-system) + (arguments + '(;; TODO: Tests require a running MySQL/MariaDB service + #:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'replace-git-ls-files + (lambda _ + (substitute* "mysql2.gemspec" + (("git ls-files .*`") "find . -type f |sort`")))) + (add-before 'install 'set-MAKEFLAGS + (lambda* (#:key outputs #:allow-other-keys) + (setenv "MAKEFLAGS" + (string-append + "V=1 " + "prefix=" (assoc-ref outputs "out"))))) + ;; Move the 'check phase to after 'install, as then you can test + ;; using the installed mysql2 gem in the store. + (delete 'check) + (add-after 'install 'check + (lambda* (#:key outputs tests? #:allow-other-keys) + (setenv "GEM_PATH" + (string-append + (getenv "GEM_PATH") + ":" + (assoc-ref outputs "out") "/lib/ruby/vendor_ruby")) + (when tests? + (invoke "rspec"))))))) + (inputs + `(("mariadb-dev" ,mariadb "dev") + ("zlib" ,zlib))) + (native-inputs + (list ruby-rspec ruby-rake-compiler)) + (synopsis "MySQL library for Ruby, binding to libmysql") + (description + "This package provides a simple, fast MySQL library for Ruby, binding to +libmysql.") + (home-page "https://github.com/brianmario/mysql2") + (license license:expat))) + +(define-public ruby-blankslate + (package + (name "ruby-blankslate") + (version "3.1.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "blankslate" version)) + (sha256 + (base32 + "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ (invoke "rspec" "spec/")))))) + (native-inputs + (list bundler ruby-rspec)) + (synopsis "Abstract base class with no predefined methods") + (description + "BlankSlate provides an abstract base class with no predefined +methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful +as a base class when writing classes that depend upon +@code{method_missing} (e.g. dynamic proxies).") + (home-page "https://github.com/masover/blankslate") + (license license:expat))) + +(define-public ruby-bond + (package + (name "ruby-bond") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "bond" version)) + (sha256 + (base32 + "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90")))) + (build-system ruby-build-system) + (arguments + ;; The test suite fails (see: + ;; https://github.com/cldwalker/bond/issues/46). + `(#:tests? #f)) + (native-inputs + (list ruby-bacon ruby-bacon-bits ruby-mocha-on-bacon)) + (synopsis "Bond can provide custom autocompletion for arguments, methods +and more") + (description + "Bond can autocomplete argument(s) to methods, uniquely completing per +module, per method and per argument. Bond provides a configuration system and +a DSL for creating custom completions and completion rules. Bond can also +load completions that ship with gems. Bond is able to offer more than irb's +completion since it uses the full line of input when completing as opposed to +irb's last-word approach.") + (home-page "http://tagaholic.me/bond/") + (license license:expat))) + +(define-public ruby-idn-ruby + (package + (name "ruby-idn-ruby") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "idn-ruby" version)) + (sha256 + (base32 + "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (delete 'check) + (add-after 'install 'check + (lambda* (#:key tests? outputs #:allow-other-keys) + (when tests? + (let* ((gem-file (cadr (find-files "." "\\.gem"))) + (name-and-version (basename gem-file ".gem"))) + (apply invoke + "ruby" "--verbose" + (string-append "-I" + (assoc-ref outputs "out") + "/lib/ruby/vendor_ruby/gems/" + name-and-version + "/lib") + (find-files "./test" ".*\\.rb"))))))))) + (inputs + (list libidn)) + (synopsis "Ruby Bindings for the GNU LibIDN library") + (description + "Ruby Bindings for the GNU LibIDN library, an implementation of the +Stringprep, Punycode and IDNA specifications. These are used to encode and +decode internationalized domain + names according to the IDNA2003 +specifications. + +Included are the most important parts of the Stringprep, Punycode and IDNA +APIs like performing Stringprep processings, encoding to and decoding from +Punycode strings and converting entire domain names to and from the ACE +encoded form.") + (home-page "https://github.com/deepfryed/idn-ruby") + (license license:asl2.0))) + +(define-public ruby-insist + (package + (name "ruby-insist") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "insist" version)) + (sha256 + (base32 + "0bw3bdwns14mapbgb8cbjmr0amvwz8y72gyclq04xp43wpp5jrvg")))) + (build-system ruby-build-system) + (arguments (list #:phases #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "ruby" "test/testing.rb"))))))) + (synopsis "Testing tool for Ruby") + (description "This package provides a simple block-driven assertion +library for both testing and for production code that attempts to make test +definitions more readable.") + (home-page "https://github.com/jordansissel/ruby-insist/") + (license license:asl2.0))) + +(define-public ruby-introspection + (package + (name "ruby-introspection") + (version "0.0.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "introspection" version)) + (sha256 + (base32 + "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-metaclass)) + (native-inputs + (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 +definitions on a Ruby object.") + (home-page "https://github.com/floehopper/introspection") + (license license:expat))) + +(define-public ruby-redcarpet + (package + (name "ruby-redcarpet") + (version "3.5.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "redcarpet" version)) + (sha256 + (base32 + "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; The gem archive does not include the conformance tests. + (add-after 'unpack 'disable-conformance-tests + (lambda _ + (substitute* "Rakefile" + (("task :test => %w\\[test:unit test:conformance\\]") + "task :test => %w[test:unit]"))))))) + (native-inputs + (list bundler ruby-test-unit ruby-rake-compiler)) + (synopsis "Extensible Markdown to (X)HTML converter") + (description + "Redcarpet is an extensible Ruby library for Markdown processing and +conversion to (X)HTML.") + (home-page "https://github.com/vmg/redcarpet") + (license license:expat))) + +(define-public ruby-reline + (package + (name "ruby-reline") + (version "0.3.3") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/reline") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1papa4f4prjml9qk6yydi4k5a4zgbzmxmbhd8fz9kfg1i34s35cw")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-io-console)) + (synopsis "GNU Readline or Editline implementation in Ruby") + (description "Reline is a pure Ruby alternative GNU Readline or Editline +implementation.") + (home-page "https://github.com/ruby/reline") + (license (list license:bsd-2 license:ruby)))) ;dual license + +(define-public ruby-rerun + (package + (name "ruby-rerun") + (version "0.13.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rerun" version)) + (sha256 + (base32 + "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No included tests + (propagated-inputs + (list ruby-listen)) + (synopsis "Run a process, and restart when some monitored files change") + (description + "Rerun is a tool to launch programs, then monitor the file system, and +restart the program when any of the monitored files change. It's written in +Ruby, but can be used for all programs.") + (home-page "https://github.com/alexch/rerun/") + (license license:expat))) + +(define-public ruby-maxitest + (package + (name "ruby-maxitest") + (version "5.1.0") + (home-page "https://github.com/grosser/maxitest") + (source (origin + ;; Pull from git because the gem does not contain tests. + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0qj410krfm497ggmf71xpnabbb6814y0585by4nlzyjvg9hpgg3m")))) + (build-system ruby-build-system) + (arguments + (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-rspec + ruby-wwtd)) + (propagated-inputs + (list ruby-minitest)) + (synopsis "Minitest with extra features") + (description + "Maxitest is a wrapper around Minitest with extra functionality such +as timeouts, an @command{mtest} executable that can run tests by line +number, support for interrupted tests, better backtraces, and more.") + (license license:expat))) + +(define-public ruby-mocha + (package + (name "ruby-mocha") + (version "2.0.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "mocha" version)) + (sha256 + (base32 + "18xn9gm9yypavy9yck71fplan19hy5697mwd1rwzz7vizh3ip7bd")))) + (build-system ruby-build-system) + (arguments + (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-psych-3 + ruby-introspection)) + (synopsis "Mocking and stubbing library for Ruby") + (description + "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which +allows mocking and stubbing of methods on real (non-mock) classes.") + (home-page "https://mocha.jamesmead.org/") + ;; 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") + (version "0.2.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mocha-on-bacon" version)) + (sha256 + (base32 + "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp")))) + (build-system ruby-build-system) + (arguments + ;; rubygems.org release missing tests + '(#:tests? #f)) + (propagated-inputs (list ruby-mocha)) + (synopsis "Mocha adapter for Bacon") + (description + "This package provides a Mocha adapter for Bacon, allowing you to use the +Mocha stubbing and mocking library with Bacon, a small RSpec clone.") + (home-page + "https://github.com/alloy/mocha-on-bacon") + (license license:expat))) + +(define-public ruby-net-ssh + (package + (name "ruby-net-ssh") + (version "7.1.0") + (source (origin + (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 + "1dkbyzpl31jygnnva5sa754vk42q1fih4qz5ipqw5gqiafrrlb91")))) + (build-system ruby-build-system) + (native-inputs + (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 +with processes on remote servers, via SSH2.") + (home-page "https://github.com/net-ssh/net-ssh") + (license license:expat))) + +(define-public ruby-net-scp + (package + (name "ruby-net-scp") + (version "4.0.1.rc3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/net-ssh/net-scp") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "136mb8idxdkxkadx827027nyxcsvvv2wivz5dnjqy8g6ic0h9dzn")))) + (build-system ruby-build-system) + (native-inputs + (list bundler ruby-test-unit ruby-mocha-1)) + (propagated-inputs + (list ruby-net-ssh)) + (synopsis "Pure-Ruby SCP client library") + (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP +client protocol.") + (home-page "https://github.com/net-ssh/net-scp") + (license license:expat))) + +(define-public ruby-net-sftp + (package + (name "ruby-net-sftp") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "net-sftp" version)) + (sha256 + (base32 + "0r33aa2d61hv1psm0l0mm6ik3ycsnq8symv7h84kpyf2b7493fv5")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-net-ssh)) + (synopsis "Pure Ruby implementation of the SFTP client protocol") + (description + "@code{Net::SFTP} is a pure Ruby implementation of the SFTP +protocol (specifically, versions 1 through 6 of the SFTP protocol). Note that +this is the “Secure File Transfer Protocol”, typically run over an SSH +connection, and has nothing to do with the FTP protocol.") + (home-page "https://github.com/net-ssh/net-sftp") + (license license:expat))) + +(define-public ruby-minima + (package + (name "ruby-minima") + (version "2.5.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minima" version)) + (sha256 + (base32 + "1gk7jmriiswda1ykjzpsw9cpiya4m9n0yrh0h6xnrc8zcfy543jj")))) + (arguments + (list #:phases #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "jekyll" "build")) + ;; Without the following, an attempt to remove + ;; minima-.gem is made during installation, + ;; which will fail. + (delete-file #$(string-append "_site/minima-" + version ".gem"))))))) + (build-system ruby-build-system) + (propagated-inputs (list jekyll ruby-jekyll-feed ruby-jekyll-seo-tag)) + (synopsis "Beautiful, minimal theme for Jekyll") + (description + "Minima is a one-size-fits-all Jekyll theme for writers. It's Jekyll's +default (and first) theme. It's what you get when you run @code{jekyll new}.") + (home-page "https://github.com/jekyll/minima") + (license license:expat))) + +(define-public ruby-minitest-around + (package + (name "ruby-minitest-around") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-around" version)) + (sha256 + (base32 + "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions + (lambda _ + (substitute* "minitest-around.gemspec" + (("%q.*") "%q, [\">= 0\"])\n"))))))) + (propagated-inputs + (list ruby-minitest)) + (native-inputs + (list bundler ruby-cucumber ruby-bump ruby-test-construct)) + (synopsis "Run code around tests in Minitest") + (description + "This library provides a way to run code around tests in Minitest, +written using either the unit test or spec style.") + (home-page "https://github.com/splattael/minitest-around") + (license license:expat))) + +(define-public ruby-minitest-retry + (package + (name "ruby-minitest-retry") + (version "0.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minitest-retry" version)) + (sha256 + (base32 + "1c1zq0b1a9y0hbqphq4ybijnjldlis1g6kyhx92q2ynnqfmzhfga")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-minitest)) + (synopsis "Minitest extension to re-run failing tests") + (description "This package provides the @code{Minitest::Retry} class, +which extends Minitest to allow retrying tests when they fail.") + (home-page "https://github.com/y-yagi/minitest-retry") + (license license:expat))) + +(define-public ruby-minitest-sprint + (package + (name "ruby-minitest-sprint") + (version "1.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minitest-sprint" version)) + (sha256 + (base32 + "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-hoe ruby-minitest)) + (synopsis "Fast test suite runner for minitest") + (description "Minitest-sprint is a test runner for minitest that makes it +easier to re-run individual failing tests.") + (home-page "https://github.com/seattlerb/minitest-sprint") + (license license:expat))) + +(define-public ruby-minitest-stub-const + (package + (name "ruby-minitest-stub-const") + (version "0.6") ;for Rakefile + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/adammck/minitest-stub-const") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0cz4r9fxplx94c7wakx0998n2gv7l21prn8pfpw6z2c33k3g2xar")))) + (build-system ruby-build-system) + (synopsis "Stub constants for the duration of a block in MiniTest") + (description "This package provides a MiniTest extension to stub constants +for the duration of a block in MiniTest.") + (home-page "https://github.com/adammck/minitest-stub-const") + (license license:expat))) + +(define-public ruby-minitest-bacon + (package + (name "ruby-minitest-bacon") + (version "1.0.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minitest-bacon" version)) + (sha256 + (base32 + "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-hoe)) + (inputs + (list ruby-minitest)) + (synopsis "Bacon compatibility library for minitest") + (description "Minitest-bacon extends minitest with bacon-like +functionality, making it easier to migrate test suites from bacon to minitest.") + (home-page "https://github.com/seattlerb/minitest-bacon") + (license license:expat))) + +(define-public ruby-minitest-power-assert + (package + (name "ruby-minitest-power-assert") + (version "0.3.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minitest-power_assert" version)) + (sha256 + (base32 + "1dazl6nbxjvvmi5jamrsygkz396s29b7cd841ni6qy4izk8jd9b7")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-minitest ruby-power-assert)) + (synopsis "Power Assert implementation for Minitest") + (description "This gem provides a Power Assert implementation for +Minitest. It is inspired by the @code{test-unit-power_assert} gem.") + (home-page "https://github.com/hsbt/minitest-power_assert") + (license license:bsd-2))) + +(define-public ruby-minitest-profile + (package + (name "ruby-minitest-profile") + (version "0.0.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minitest-profile" version)) + (sha256 + (base32 + "13h4nwbq6yv7hsaa7dpj90lry4rc5qqnpzvm9n2s57mm2xi31xfa")))) + (build-system ruby-build-system) + (synopsis "Display the slowest tests in a MiniTest suite") + (description "This package provides a MiniTest plugin for displaying the +slowest tests in a minitest suite.") + (home-page "https://github.com/nmeans/minitest-profile") + (license license:expat))) + +(define-public ruby-minitest-proveit + (package + (name "ruby-minitest-proveit") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minitest-proveit" version)) + (sha256 + (base32 + "0k1hpr8lgkgygfivgcsnnib7xjlf9ribgpn7yidvb4q0l0q2yfmr")))) + (build-system ruby-build-system) + (native-inputs (list ruby-hoe)) + (propagated-inputs (list ruby-minitest)) + (synopsis "Assertion-based tests extension for MiniTest") + (description "The @code{minitest-proveit} MiniTest extension ensures all +tests to prove success (via at least one assertion) rather than rely on the +absence of failure.") + (home-page "https://github.com/seattlerb/minitest-proveit") + (license license:expat))) + +(define-public ruby-minitest-reporters + (package + (name "ruby-minitest-reporters") + (version "1.3.6") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-reporters" version)) + (sha256 + (base32 + "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; Remove the requirement on Rubocop, as it isn't useful to run, and + ;; including it as an input can lead to circular dependencies. + (add-after 'unpack 'remove-rubocop-from-Rakefile + (lambda _ + (substitute* "Rakefile" + (("require 'rubocop/rake\\_task'") "") + (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each")))) + (add-after 'extract-gemspec 'remove-rubocop-from-gemspec + (lambda _ + (substitute* "minitest-reporters.gemspec" + ((".*%q.*") "\n"))))))) + (propagated-inputs + (list ruby-ansi ruby-builder ruby-minitest ruby-progressbar)) + (native-inputs + (list bundler ruby-maruku)) + (synopsis "Enhanced reporting for Minitest tests") + (description + "@code{minitest/reporters} provides a custom Minitest runner to improve +how the test state is reported. A number of different reporters are +available, including a spec reporter, progress bar reporter, a HTML +reporter.") + (home-page "https://github.com/kern/minitest-reporters") + (license license:expat))) + +(define-public ruby-minitest-rg + (package + (name "ruby-minitest-rg") + (version "5.2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-rg" version)) + (sha256 + (base32 + "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354")))) + (build-system ruby-build-system) + (arguments + ;; Some tests fail even outside Guix, so disable tests. + ;; https://github.com/blowmage/minitest-rg/issues/12 + ;; https://github.com/blowmage/minitest-rg/pull/13 + `(#:tests? #f)) + (propagated-inputs + (list ruby-minitest)) + (synopsis "Coloured output for Minitest") + (description + "@code{minitest-rg} changes the colour of the output from Minitest.") + (home-page "https://blowmage.com/minitest-rg/") + (license license:expat))) + +(define-public ruby-minitest-global-expectations + (package + (name "ruby-minitest-global-expectations") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-global_expectations" + version)) + (sha256 + (base32 + "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-minitest)) + (synopsis "Adjust minitest behaviour for calling expectation methods") + (description + "Minitest-global_expectations allows continued use of expectation methods +on all objects. Calling expectation methods on all objects was deprecated in +minitest 5.12, and is planned to be removed from minitest 6.") + (home-page "https://github.com/jeremyevans/minitest-global_expectations") + (license license:expat))) + +(define-public ruby-daemons + (package + (name "ruby-daemons") + (version "1.2.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "daemons" version)) + (sha256 + (base32 + "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; no test suite + (synopsis "Daemonize Ruby programs") + (description "Daemons provides a way to wrap existing Ruby scripts to be +run as a daemon and to be controlled by simple start/stop/restart commands.") + (home-page "https://github.com/thuehlinger/daemons") + (license license:expat))) + +(define-public ruby-dalli + (package + (name "ruby-dalli") + (version "3.2.4") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/petergoldstein/dalli") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1hhqqv1j3zd2y0vr6maaabsflrvkf1x0i6z8n725mhqydp3f9gwp")))) + (build-system ruby-build-system) + ;; Disable tests to avoid a dependency cycle with ruby-activesupport, + ;; through ruby-ruby-prof. + (arguments (list #:tests? #f)) + (synopsis "High performance memcached client for Ruby") + (description "Dalli is a high performance pure Ruby client for accessing +memcached servers. Dalli supports: + +@itemize +@item Simple and complex memcached configurations +@item Fail-over between memcached instances +@item Fine-grained control of data serialization and compression +@item Thread-safe operation +@item SSL/TLS connections to memcached +@item SASL authentication. +@end itemize + +The name is a variant of Salvador Dali for his famous painting The Persistence +of Memory.") + (home-page "https://github.com/petergoldstein/dalli") + (license license:expat))) + +(define-public ruby-data_uri + (package + (name "ruby-data_uri") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "data_uri" version)) + (sha256 + (base32 + "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky")))) + (build-system ruby-build-system) + (synopsis "URI class for parsing data URIs") + (description + "Data @acronym{URI, universal resource identifier}s allow resources to be +embedded inside a URI. The URI::Data class provides support for parsing these +URIs using the normal URI.parse method.") + (home-page "https://github.com/dball/data_uri") + (license license:expat))) + +(define-public ruby-debug + (package + (name "ruby-debug") + (version "1.7.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "debug" version)) + (sha256 + (base32 + "0x59508j69w9p275gabysv521n210pd3n060gqfgsiqjms1h0ldf")))) + (build-system ruby-build-system) + (arguments (list #:test-target "test_all")) + (propagated-inputs (list ruby-irb ruby-reline)) + (synopsis "Debugging functionality for Ruby") + (description "Debugging functionality for Ruby. This is completely +rewritten debug.rb which was contained by the ancient Ruby versions. It is +included with Ruby itself, but this package is made available so that the +latest version can be made available independently from Ruby.") + (home-page "https://github.com/ruby/debug") + (license license:bsd-2))) + +(define-public ruby-deep-merge + (package + (name "ruby-deep-merge") + (version "1.2.1") + (home-page "https://github.com/danielsdeleo/deep_merge") + ;; The Rubygem source does not contain the gemspec required for tests. + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-minitest)) + (synopsis "Recursively merge hashes") + (description + "Deep Merge is a set of utility functions for @code{Hash}. It permits +you to merge elements inside a hash together recursively.") + (license license:expat))) + +(define-public ruby-delayed-job + (package + (name "ruby-delayed-job") + (version "4.1.11") + (source (origin + (method url-fetch) + (uri (rubygems-uri "delayed_job" version)) + (sha256 + (base32 + "0s2xg72ljg4cwmr05zi67vcyz8zib46gvvf7rmrdhsyq387m2qcq")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-bundler + (lambda _ + (substitute* "Rakefile" + (("require 'bundler/setup'") "") + (("Bundler::GemHelper\\.install_tasks") "")))) + (add-after 'unpack 'disable-rubocop + (lambda _ + (substitute* "Rakefile" + (("require 'rubocop/rake_task'") "") + (("RuboCop::RakeTask.new") "")))) + (add-after 'extract-gemspec 'remove-dependency-on-actionmailer + (lambda _ + (substitute* "spec/helper.rb" + (("require 'action_mailer'") "")) + (substitute* "delayed_job.gemspec" + (("\"spec/performable_mailer_spec.rb\".freeze, ") "")) + (delete-file "spec/performable_mailer_spec.rb")))))) + (native-inputs + (list ruby-activerecord + ruby-rspec + ruby-simplecov + ruby-simplecov-lcov + ruby-zeitwerk + ruby-mini-portile-2)) + (propagated-inputs + (list ruby-activesupport)) + (synopsis "Asynchronous background tasks execution library") + (description "Delayed_job (or DJ) encapsulates the common pattern of +asynchronously executing longer tasks in the background. It is a direct +extraction from Shopify where the job table is responsible for a multitude of +core tasks.") + (home-page "https://github.com/collectiveidea/delayed_job") + (license license:expat))) + +(define-public ruby-git + (package + (name "ruby-git") + (version "1.3.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "git" version)) + (sha256 + (base32 + "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ; no tests + #:phases (modify-phases %standard-phases + (add-after 'install 'patch-git-binary + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Make the default git binary an absolute path to the + ;; store. + (let ((git (search-input-file inputs "/bin/git")) + (config (string-append + (assoc-ref outputs "out") + "/lib/ruby/vendor_ruby/gems/git-" + ,version "/lib/git/config.rb"))) + (substitute* (list config) + (("'git'") + (string-append "'" git "'"))))))))) + (inputs + (list git)) + (synopsis "Ruby wrappers for Git") + (description "Ruby/Git is a Ruby library that can be used to create, read +and manipulate Git repositories by wrapping system calls to the git binary.") + (home-page "https://github.com/schacon/ruby-git") + (license license:expat))) + +(define-public ruby-hocon + (package + (name "ruby-hocon") + (version "1.4.0") + (home-page "https://github.com/puppetlabs/ruby-hocon") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "04wgv0pwrghawnl6qp346z59fvp9v37jymq8p0lsrzxa6nvrykmk")))) + (build-system ruby-build-system) + (arguments + (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") + (description + "This package provides Ruby support for the @acronym{HOCON, +Human-Optimized Config Object Notation} configuration file format. It +supports parsing and modifying HOCON and JSON files, and rendering parsed +objects back to a @code{String}.") + (license license:asl2.0))) + +(define-public ruby-slop + (package + (name "ruby-slop") + (version "4.10.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "slop" version)) + (sha256 + (base32 + "1iyrjskgxyn8i1679qwkzns85p909aq77cgx2m4fs5ygzysj4hw4")))) + (build-system ruby-build-system) + (synopsis "Ruby command line option parser") + (description "Slop provides a Ruby domain specific language for gathering +options and parsing command line flags.") + (home-page "https://github.com/leejarvis/slop") + (license license:expat))) + +(define-public ruby-slop-3 + (package (inherit ruby-slop) + (version "3.6.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "slop" version)) + (sha256 + (base32 + "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n")))))) + +(define-public ruby-multi-xml + (package + (name "ruby-multi-xml") + (version "0.6.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "multi_xml" version)) + (sha256 + (base32 + "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No included tests + (synopsis "Swappable XML backends for Ruby") + (description + "@code{MultiXml} provides swappable XML backends utilizing either LibXML, +Nokogiri, Ox, or REXML.") + (home-page "https://github.com/sferik/multi_xml") + (license license:expat))) + +(define-public ruby-multipart-parser + (package + (name "ruby-multipart-parser") + (version "0.1.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "multipart-parser" version)) + (sha256 + (base32 + "0xb4p475yrfm883h9kn80a021myn17dvs50wpa1djzcmlq7p0882")))) + (build-system ruby-build-system) + (arguments + (list + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'skip-failing-test + ;; One test fails for unknown reasons (see: + ;; https://github.com/danabr/multipart-parser/issues/7). + (lambda _ + (substitute* "test/multipart_parser/reader_test.rb" + (("def test_long" all) + (string-append all "\n return true")))))))) + (synopsis "Parser for multipart MIME messages") + (description "@code{multipart-parser} is a simple parser for multipart +MIME messages, written in Ruby, based on felixge/node-formidable's parser. It +has the following characteristics: +@itemize +@item Pure Ruby +@item Event-driven API +@item Only supports one level of multipart parsing +@item Does not perform I/O +@item Does not depend on any other library. +@end itemize") + (home-page "https://github.com/danabr/multipart-parser") + (license license:expat))) + +(define-public ruby-multipart-post + (package + (name "ruby-multipart-post") + (version "2.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "multipart-post" version)) + (sha256 + (base32 + "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x")))) + (build-system ruby-build-system) + (native-inputs + (list bundler)) + (synopsis "Multipart POST library for Ruby") + (description "Multipart-Post Adds multipart POST capability to Ruby's +net/http library.") + (home-page "https://github.com/nicksieger/multipart-post") + (license license:expat))) + +(define-public ruby-multi-json + (package + (name "ruby-multi-json") + (version "1.15.0") + (source + (origin + (method git-fetch) + ;; Tests are not distributed at rubygems.org so download from GitHub + ;; instead. + (uri (git-reference + (url "https://github.com/intridea/multi_json") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0mkdvy6i00yyksjvnv6znh7wf89j9506qzzjq6bsbmbkyqrszp4d")))) + (build-system ruby-build-system) + (arguments + (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") + (description + "This package provides a common interface to multiple JSON libraries, +including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem, +NSJSONSerialization, gson.rb, JrJackson, and OkJson.") + (home-page "https://github.com/intridea/multi_json") + (license license:expat))) + +(define-public ruby-arr-pm + (package + (name "ruby-arr-pm") + (version "0.0.12") + (source (origin + (method url-fetch) + (uri (rubygems-uri "arr-pm" version)) + (sha256 + (base32 + "0fddw0vwdrr7v3a0lfqbmnd664j48a9psrjd3wh3k4i3flplizzx")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs (list ruby-flores ruby-insist ruby-rspec ruby-stud)) + (synopsis "RPM reader/writer library written in Ruby") + (description "This library allows reading and writing RPM packages. It is +used by the @command{fpm} tool. It is written in pure Ruby because +@code{librpm} is not available on all systems and requires many +dependencies.") + (home-page "https://github.com/jordansissel/ruby-arr-pm") + (license license:asl2.0))) + +(define-public ruby-arel + (package + (name "ruby-arel") + (version "9.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "arel" version)) + (sha256 + (base32 + "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; no tests + (home-page "https://github.com/rails/arel") + (synopsis "SQL AST manager for Ruby") + (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for +Ruby. It simplifies the generation of complex SQL queries and adapts to +various relational database implementations.") + (license license:expat))) + +(define-public ruby-minitar + ;; We package from the GitHub source to fix the security issue reported at + ;; https://github.com/halostatue/minitar/issues/16. + (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4")) + (package + (name "ruby-minitar") + (version (string-append "0.5.4-1." (string-take commit 8))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/halostatue/minitar") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; missing a gemspec + (synopsis "Ruby library and utility for handling tar archives") + (description + "Archive::Tar::Minitar is a pure-Ruby library and command-line utility +that provides the ability to deal with POSIX tar archive files.") + (home-page "http://www.github.com/atoulme/minitar") + (license (list license:gpl2+ license:ruby))))) + +(define-public ruby-nokogiri + (package + (name "ruby-nokogiri") + (version "1.15.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sparklemotion/nokogiri") + (commit "a6ad20b3edc8f020043ccfe5d9ec6ae9af103720"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1n0vlg6v58jw3qzgyihz1dh5fvp4js1qgdh75j0kn47nvyiw3jxj")) + (patches (search-patches "ruby-nokogiri.patch")))) + (build-system ruby-build-system) + (arguments + (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://nokogiri.org/") + (license license:expat))) + +(define-public ruby-method-source + (package + (name "ruby-method-source") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "method_source" version)) + (sha256 + (base32 + "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-git-ls-files + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Rakefile" + (("git ls-files") "find . -type f"))))))) + (native-inputs + (list ruby-rspec)) + (synopsis "Retrieve the source code for Ruby methods") + (description "Method_source retrieves the source code for Ruby methods. +Additionally, it can extract source code from Proc and Lambda objects or just +extract comments.") + (home-page "https://github.com/banister/method_source") + (license license:expat))) + +(define-public ruby-coderay + (package + (name "ruby-coderay") + (version "1.1.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "coderay" version)) + (sha256 + (base32 + "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; missing test files + (synopsis "Ruby syntax highlighting library") + (description "Coderay is a Ruby library that provides syntax highlighting +for select languages.") + (home-page "http://coderay.rubychan.de") + (license license:expat))) + +(define-public ruby-cuke-modeler + (package + (name "ruby-cuke-modeler") + (version "3.20.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/enkessler/cuke_modeler") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0xbnx1blxm4kfhfwfh58n2ja40p2kfw8hbbz60dlzvghz25vcwy6")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "default" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'improve-reproducibility + (lambda _ + (substitute* + "testing/rspec/spec/unit/cuke_modeler_unit_spec.rb" + (("#\\{Time.now.year\\}") "")))) + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "Gemfile" + ;; Cucumber appears pinned to an older version for no + ;; particular reason (see: + ;; https://github.com/enkessler/cuke_modeler/issues/14). + (("'cucumber', '2.2.0'") + "'cucumber', '>= 2.2.0'") + (("^gherkin_major_version_used = .*") + (string-append + "gherkin_major_version_used = " + #$(car + (string-split + (package-version + (this-package-input "ruby-cucumber-gherkin")) #\.)) + "\n"))) + ;; Disable Bundler. + (substitute* "bin/console" + (("require 'bundler/setup'") "")) + (substitute* "rakefiles/testing_tasks.rb" + (("'bundle', 'exec', ") "")) + ;; Remove extraneous dependencies. + (substitute* "cuke_modeler.gemspec" + ((".*bundler.*") "") + ((".*rubocop.*") "") + ((".*yard.*") "")) + (substitute* "Rakefile" + (("Rainbow.enabled = true") "") + (("require_relative 'rakefiles/documentation_tasks'") "") + (("require_relative 'rakefiles/other_tasks'") "") + (("require_relative 'rakefiles/release_tasks'") ""))))))) + (native-inputs + (list ruby-childprocess + ruby-cucumber + ruby-rainbow + ruby-rspec + ruby-simplecov + ruby-simplecov-lcov)) + (propagated-inputs (list ruby-cucumber-gherkin)) + (synopsis "Gherkin test suite analysis tool") + (description "CukeModeler facilitates modeling a test suite that is +written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by +providing an abstraction layer on top of the Abstract Syntax Tree (AST) that +the @code{cucumber-gherkin} generates when parsing features, as well as +providing models for feature files and directories in order to be able to have +a fully traversable model tree of a test suite's structure. These models can +then be analyzed or manipulated more easily than the underlying AST layer.") + (home-page "https://github.com/enkessler/cuke_modeler") + (license license:expat))) + +(define-public ruby-parallel-tests + (package + (name "ruby-parallel-tests") + (version "4.9.0") + (home-page "https://github.com/grosser/parallel_tests") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (string-append name version)) + (sha256 + (base32 + "0ljb17i1bvlr0y1avwishcrg60h48bj6iwgkp8yrck08wcs7b338")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "spec" ;avoid rubocop dependency + #:phases (modify-phases %standard-phases + (add-after 'patch-source-shebangs 'patch-shell-invocations + (lambda _ + (substitute* '("lib/parallel_tests/tasks.rb" + "spec/parallel_tests/tasks_spec.rb") + (("/bin/sh") (which "sh")) + (("/bin/bash") (which "bash"))))) + (add-before 'check 'relax-requirements + (lambda _ + ;; Remove hard coded version constraints, instead just + ;; use whatever versions are available in Guix. + (delete-file "Gemfile.lock") + (substitute* "Gemfile" + (("'minitest',.*") + "'minitest'\n") + (("'cucumber',.*") + "'cucumber'\n") + ;; Do not depend on a git-fetched spinach version. + (("gem 'spinach',.*") + "gem 'spinach'\n") + ((".*rubocop.*") "")))) + (add-before 'check 'disable-rails-test + (lambda _ + ;; XXX: This test attempts to download and run the test + ;; suites of multiple Rails versions(!) directly. + (delete-file "spec/rails_spec.rb"))) + (add-before 'check 'disable-problematic-tests + (lambda _ + ;; This test fails, probably because of the newer + ;; Cucumber version used here. + (delete-file "spec/parallel_tests/cucumber/\ +failure_logger_spec.rb") )) + (add-before 'check 'set-HOME + (lambda _ + ;; Some tests check the output of Bundler, and fail when + ;; Bundler warns that /homeless-shelter does not exist. + (setenv "HOME" "/tmp")))))) + (native-inputs + (list ruby-bump + ruby-cucumber + ruby-cuke-modeler + ruby-minitest + ruby-rake + ruby-rspec + ruby-spinach)) + (propagated-inputs + (list ruby-parallel)) + (synopsis "Run tests in parallel") + (description + "This package can speed up @code{Test::Unit}, @code{RSpec}, +@code{Cucumber}, and @code{Spinach} tests by running them concurrently +across multiple CPU cores.") + (license license:expat))) + +(define-public ruby-parser + (package + (name "ruby-parser") + (version "3.3.7.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "parser" version)) + (sha256 + (base32 + "16qi2qhpszm842awxghmsp64yvvawafq96w5jw98irz3f4bh2jbl")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; tests not included in gem + (native-inputs (list bundler ruby-cliver ruby-simplecov)) + (inputs (list ragel)) + (propagated-inputs (list ruby-ast ruby-racc)) + (synopsis "Ruby parser written in pure Ruby") + (description + "This package provides a Ruby parser written in pure Ruby.") + (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.17.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sexp_processor" version)) + (sha256 + (base32 + "0vzz9mhg4kkdqf179pm30i204h7iskanxrk53j0csf0qrrs4iajd")))) + (build-system ruby-build-system) + (native-inputs + (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. +Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and +@code{Environment}") + (home-page "https://github.com/seattlerb/sexp_processor") + (license license:expat))) + +(define-public ruby-ruby-parser + (package + (name "ruby-ruby-parser") + (version "3.20.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby_parser" version)) + (sha256 + (base32 + "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 + bison + ruby-minitest)) + (propagated-inputs + (list ruby-sexp-processor)) + (home-page "https://github.com/seattlerb/ruby_parser/") + (synopsis "Ruby parser written in pure Ruby") + (description "The ruby_parser (RP) package provides a Ruby parser written +in pure Ruby. It outputs S-expressions which can be manipulated and converted +back to Ruby via the @code{ruby2ruby} library.") + (license license:expat))) + +(define-public ruby-ruby-version + (package + (name "ruby-ruby-version") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "ruby_version" version)) + (sha256 + (base32 + "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'delete-gem-files + ;; There are some pre-built files in the source, and + ;; registered in the .gemspec (see: + ;; https://github.com/janlelis/ruby_version/issues/1). + (lambda _ + (delete-file-recursively "pkg") + (substitute* "ruby_version.gemspec" + (("\"pkg/ruby_version-1.0.0.gem\".freeze, ") + "") + (("\"pkg/ruby_version-1.0.1.gem\".freeze, ") + "")))) + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (delete-file "Gemfile.lock") + (substitute* "ruby_version.gemspec" + (("\"Gemfile.lock\".freeze, ") "") + ;; Allow a newers versions of development dependencies. + (("~>") ">="))))))) + (native-inputs (list ruby-rdoc ruby-rubygems-tasks ruby-rspec)) + (synopsis "Ruby class for checking the Ruby version") + (description "This package provides a @code{RubyVersion} class which +offers a convenient Domain Specific Language (DSL) for checking for the right +Ruby version.") + (home-page "https://github.com/janlelis/ruby_version") + (license license:expat))) + +(define-public ruby-prawn-manual-builder + (package + (name "ruby-prawn-manual-builder") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "prawn-manual_builder" version)) + (sha256 + (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f ; no included tests + #:phases + (modify-phases %standard-phases + (add-after 'extract-gemspec 'patch-gemspec + (lambda _ + (substitute* ".gemspec" + ;; Loosen the requirement for pdf-inspector + (("~> 1\\.0\\.7") ">= 0"))))))) + (propagated-inputs + (list ruby-coderay)) + (synopsis "Tool for writing manuals for Prawn and Prawn accessories") + (description + "This package provides a tool for writing manuals for Prawn and Prawn +accessories") + (home-page "https://github.com/prawnpdf/prawn-manual_builder") + (license %prawn-project-licenses))) + +(define-public ruby-progress_bar + (package + (name "ruby-progress_bar") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "progress_bar" version)) + (sha256 + (base32 + "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "spec")) + (propagated-inputs + (list ruby-highline ruby-options)) + (native-inputs + (list bundler ruby-rspec ruby-timecop)) + (synopsis + "Ruby library for displaying progress bars") + (description + "ProgressBar is a simple library for displaying progress bars. The +maximum value is configurable, and additional information can be displayed +like the percentage completion, estimated time remaining, elapsed time and +rate.") + (home-page "https://github.com/paul/progress_bar") + (license license:wtfpl2))) + +(define-public ruby-progressbar + (package + (name "ruby-progressbar") + (version "1.10.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby-progressbar" version)) + (sha256 + (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf")))) + (build-system ruby-build-system) + (arguments + '(;; TODO: There looks to be a circular dependency with ruby-fuubar. + #:tests? #f)) + (synopsis "Text progress bar library for Ruby") + (description + "Ruby/ProgressBar is an flexible text progress bar library for Ruby. +The output can be customized with a formatting system.") + (home-page "https://github.com/jfelchner/ruby-progressbar") + (license license:expat))) + +(define-public ruby-latest-ruby + (package + (name "ruby-latest-ruby") + (version "3.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "latest_ruby" version)) + (sha256 + (base32 + "15rqwgxzpnkzdiz8m02jra0zq5sx0fiz61vkfrj1ls6slqfhnzqg")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No Rakefile + (synopsis "Answers the question of what the latest Ruby version is") + (description "Knows about MRI, Rubinius, JRuby, MagLev and MacRuby.") + (home-page "https://github.com/kyrylo/latest_ruby") + (license license:zlib))) + +(define-public ruby-pry + (package + (name "ruby-pry") + (version "0.14.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "pry" version)) + (sha256 + (base32 + "0k9kqkd9nps1w1r1rb7wjr31hqzkka2bhi8b518x78dcxppm9zn4")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no tests + (propagated-inputs + (list ruby-coderay ruby-method-source)) + (synopsis "Ruby REPL") + (description "Pry is an IRB alternative and runtime developer console for +Ruby. It features syntax highlighting, a plugin architecture, runtime +invocation, and source and documentation browsing.") + (home-page "https://cobaltbluemedia.com/pryrepl/") + (license license:expat))) + +(define-public ruby-pry-doc + (package + (name "ruby-pry-doc") + (version "1.4.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pry-doc" version)) + (sha256 + (base32 + "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 + (synopsis "Provides YARD and extended documentation support for Pry") + (description + "Pry Doc is a Pry REPL plugin. It provides extended documentation +support for the REPL by means of improving the @code{show-doc} and +@code{show-source} commands. With help of the plugin the commands are +be able to display the source code and the docs of Ruby methods and +classes implemented in C.") + (home-page "https://github.com/pry/pry-doc") + (license license:expat))) + +(define-public ruby-single-cov + (package + (name "ruby-single-cov") + (version "1.9.1") + (home-page "https://github.com/grosser/single_cov") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1w4k81f2mdg620m6pwkrqayddnz9mr8qx0myqn33mw8k6imfip05")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "spec" ;to avoid rubocop requirement + #:phases (modify-phases %standard-phases + (replace 'replace-git-ls-files + (lambda _ + (substitute* "single_cov.gemspec" + (("`git ls-files lib/ bin/ MIT-LICENSE`") + ;; There no longer appear to be a 'bin' + ;; sub-directory. + "`find lib/ MIT-LICENSE -type f | sort`")))) + (add-before 'check 'remove-version-constraints + (lambda _ + (delete-file "Gemfile.lock"))) + (add-before 'check 'relax-requirements + (lambda _ + ;; Remove extraneous requirements. + (substitute* "Rakefile" + ((".*require.*bump.*") "")) + (substitute* "Gemfile" + ((".*gem \"bump\".*") "") + ((".*gem \"rubocop\".*") "")))) + (add-before 'check 'disable-failing-test + (lambda _ + ;; XXX: This test copies assets from minitest, but can + ;; not cope with the files being read-only. Just skip + ;; it for now. + (substitute* "specs/single_cov_spec.rb" + (("it \"complains when coverage is bad\"") + "xit \"complains when coverage is bad\""))))))) + (native-inputs (list ruby-minitest ruby-rspec ruby-simplecov)) + (synopsis "Code coverage reporting tool") + (description + "This package provides actionable code coverage reports for Ruby +projects. It has very little overhead and can be easily integrated with +development tools to catch coverage problems early.") + (license license:expat))) + +(define-public ruby-oedipus-lex + (package + (name "ruby-oedipus-lex") + (version "2.6.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "oedipus_lex" version)) + (sha256 + (base32 + "06l4d3l75vhdcmnavnkzr7bd39rb0njxhkbmwrw6ni64z2hlj7w7")))) + (build-system ruby-build-system) + (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. +It is based primarily on generating code much like you would a hand-written +lexer. It uses StrScanner within a multi-level case statement. As such, +Oedipus matches on the first match, not the longest.") + (home-page "https://github.com/seattlerb/oedipus_lex") + (license license:expat))) + +(define-public ruby-guard + (package + (name "ruby-guard") + (version "2.13.0") + (source (origin + (method git-fetch) + ;; The gem does not include a Rakefile, nor does it contain a + ;; gemspec file, nor does it come with the tests. This is why + ;; we fetch the tarball from Github. + (uri (git-reference + (url "https://github.com/guard/guard") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ; tests require cucumber + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-git-ls-files + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "guard.gemspec" + (("git ls-files -z") "find . -type f -print0")))) + (replace 'build + (lambda _ + (invoke "gem" "build" "guard.gemspec")))))) + (propagated-inputs + (list ruby-formatador + ruby-listen + ruby-lumberjack + ruby-nenv + ruby-notiffany + ruby-pry + ruby-shellany + ruby-thor)) + (native-inputs + (list bundler ruby-rspec)) + (synopsis "Tool to handle events on file system modifications") + (description + "Guard is a command line tool to easily handle events on file system +modifications. Guard automates various tasks by running custom rules whenever +file or directories are modified.") + (home-page "https://guardgem.org/") + (license license:expat))) + +(define-public ruby-spinach + (package + (name "ruby-spinach") + (version "0.12.0") + (home-page "https://github.com/codegram/spinach") + (source (origin + (method url-fetch) + (uri (rubygems-uri "spinach" version)) + (sha256 + (base32 + "1v9nvpvlgjx698dc4q2p1l45sxm5fjjzfxayrkyzb9nv0q0xfjsp")))) + (build-system ruby-build-system) + (arguments + ;; FIXME: Disable tests altogether because they depend on 'capybara' + ;; which in turn depends on many other unpackaged gems. Enable once + ;; capybara is available. + '(#:tests? #f)) + (propagated-inputs + (list ruby-colorize ruby-gherkin-ruby)) + (synopsis "Gherkin-based BDD framework") + (description + "Spinach is a high-level @acronym{BDD, Behavior-driven development} +framework that leverages the expressive @code{Gherkin} language to help you +define executable specifications of your code.") + (license license:expat))) + +(define-public ruby-timers + (package + (name "ruby-timers") + (version "4.3.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/socketry/timers") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1vvahlhk6i1xks1bsha6s64pjjxhagmzvvf1q9h6z3lpcba43rpx")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-before 'build 'prune-gems.rb + (lambda _ + (substitute* "gems.rb" + ;; These are only required for maintenance. + ((".*gem \"bake-modernize\".*") "") + ((".*gem \"bake-gem\".*") "") + ;; Not actually required by the tests. + ((".*gem 'benchmark-ips'.*") "") + ((".*gem \"ruby-prof\".*") "")))) + (add-before 'build 'remove-missing-signing-key + (lambda _ + ;; Otherwise, the build fails with ENOENT. + (substitute* "timers.gemspec" + ((".*spec.signing_key.*") "")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "bake" "test"))))))) + (native-inputs + (list ruby-covered + ruby-bake-test + ruby-bake-test-external + ruby-sus)) + (synopsis "Collection of Ruby timer classes") + (description "Timers offers a collections of one-shot and periodic timers, +intended for use with event loops such as async.") + (home-page "https://github.com/socketry/timers") + (license license:expat))) + +(define-public ruby-tilt + (package + (name "ruby-tilt") + (version "2.2.0") + (source + (origin + (method git-fetch) ;the distributed gem lacks tests + (uri (git-reference + (url "https://github.com/jeremyevans/tilt") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "056zm4vzx9xjwl7zgmb17hzb91qx5cvzk60wvsxchfybvl03gn5d")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'set-SASS_IMPLEMENTATION + (lambda _ + (setenv "SASS_IMPLEMENTATION" "sassc")))))) + (propagated-inputs + (list ruby-pandoc-ruby ruby-sassc)) + (native-inputs + (list bundler ruby-yard ruby-builder ruby-erubis ruby-markaby)) + (synopsis "Generic interface to multiple Ruby template engines") + (description + "Tilt is a thin interface over a number of different Ruby template +engines in an attempt to make their usage as generic as possible.") + (home-page "https://github.com/rtomayko/tilt/") + (license license:expat))) + +(define-public ruby-thread-safe + (package + (name "ruby-thread-safe") + (version "0.3.6") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "thread_safe" version)) + (sha256 + (base32 + "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; needs simplecov, among others + (synopsis "Thread-safe utilities for Ruby") + (description "The thread_safe library provides thread-safe collections and +utilities for Ruby.") + (home-page "https://github.com/ruby-concurrency/thread_safe") + (license license:asl2.0))) + +(define-public ruby-tzinfo + (package + (name "ruby-tzinfo") + (version "2.0.6") + (source + (origin + (method git-fetch) + (uri (git-reference + ;; Pull from git because the gem has no tests. + (url "https://github.com/tzinfo/tzinfo") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1n1gzjqwwnx209h8d054miva0y7x17db2ahy7jav5r25ibhh7rgm")))) + (build-system ruby-build-system) + (arguments + (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')")))) + (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 + (list ruby-concurrent)) + (native-inputs + (list ruby-simplecov)) + (synopsis "Time zone library for Ruby") + (description "TZInfo is a Ruby library that provides daylight savings +aware transformations between times in different time zones.") + (home-page "https://tzinfo.github.io") + (license license:expat))) + +(define-public ruby-tzinfo-data + (package + (name "ruby-tzinfo-data") + (version "1.2023.3") + (source + (origin + (method git-fetch) + ;; Download from GitHub because the rubygems version does not contain + ;; Rakefile or tests. + (uri (git-reference + (url "https://github.com/tzinfo/tzinfo-data") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1v3fpfmw485lsc9bfqfcasb9j25g9ywfpmmk648l2vdsh7nipilf")))) + (build-system ruby-build-system) + (arguments + (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" + `(("tzdata2023c.tar.gz" + ,(origin + (method url-fetch) + (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz") + (sha256 + (base32 + "0p4nvp5bdxxdqh269nvvcfrpycbbfwm31al5whwbpsaa3dfhnl9z")))) + ("tzdata2023c.tar.gz.asc" + ,(origin + (method url-fetch) + (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz.asc") + (sha256 + (base32 + "0mrmhczs5qnj1zp6gh4pg6fm0iblr2jmzy0fgh9slinwxmn7pv6m")))) + ("tzcode2023c.tar.gz" + ,(origin + (method url-fetch) + (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz") + (sha256 + (base32 + "1rqln88ki0jagi372nqyn7bs03rf2l33081sy2835mwsn4mpzla6")))) + ("tzcode2023c.tar.gz.asc" + ,(origin + (method url-fetch) + (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz.asc") + (sha256 + (base32 + "0jbx8xjv75qfh7bxa2xmrf97r37057y89rhmrq1gz8s6b8qlzb2i"))))))))) + (synopsis "Data from the IANA Time Zone database") + (description + "This library provides @code{TZInfo::Data}, which contains data from the +IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.") + (home-page "https://tzinfo.github.io") + (license license:expat))) + +(define-public ruby-rb-inotify + (package + (name "ruby-rb-inotify") + (version "0.10.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rb-inotify" version)) + (sha256 + (base32 + "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005")))) + (build-system ruby-build-system) + (arguments + (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 + (list ruby-yard)) + (synopsis "Ruby wrapper for Linux's inotify") + (description "rb-inotify is a simple wrapper over the @code{inotify} Linux +kernel subsystem for monitoring changes to files and directories.") + (home-page "https://github.com/nex3/rb-inotify") + (license license:expat))) + +(define-public ruby-pry-editline + (package + (name "ruby-pry-editline") + (version "1.1.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pry-editline" version)) + (sha256 + (base32 + "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)) ; no tests included + (native-inputs + (list bundler)) + (synopsis "Open the current REPL line in an editor") + (description + "This gem provides a plugin for the Ruby REPL to enable opening the +current line in an external editor.") + (home-page "https://github.com/tpope/pry-editline") + (license license:expat))) + +(define-public ruby-sdoc + (package + (name "ruby-sdoc") + (version "1.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sdoc" version)) + (sha256 + (base32 + "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'set-rubylib-and-patch-gemfile + (lambda _ + (setenv "RUBYLIB" "lib") + (substitute* "sdoc.gemspec" + (("s.add_runtime_dependency.*") "\n") + (("s.add_dependency.*") "\n")) + (substitute* "Gemfile" + (("gem \"rake\".*") + "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))))))) + (propagated-inputs + (list ruby-json)) + (native-inputs + (list bundler ruby-minitest ruby-hoe)) + (synopsis "Generate searchable RDoc documentation") + (description + "SDoc is an RDoc documentation generator to build searchable HTML +documentation for Ruby code.") + (home-page "https://github.com/voloko/sdoc") + (license license:expat))) + +(define-public ruby-tins + (package + (name "ruby-tins") + (version "1.29.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "tins" version)) + (sha256 + (base32 + "0nzp88y19rqlcizp1nw8m44fvfxs9g3bhjpscz44dwfawfrmr0cb")))) + (build-system ruby-build-system) + ;; This gem needs gem-hadar at development time, but gem-hadar needs tins + ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding + ;; the gemspec. + (arguments + `(#:tests? #f ; there are no tests + #:phases + (modify-phases %standard-phases + (replace 'build + (lambda _ + ;; "lib/spruz" is a symlink. Leaving it in the gemspec file + ;; causes an error. + (substitute* "tins.gemspec" + (("\"lib/spruz\", ") "")) + (invoke "gem" "build" "tins.gemspec")))))) + (propagated-inputs + (list ruby-sync)) + (synopsis "Assorted tools for Ruby") + (description "Tins is a Ruby library providing assorted tools.") + (home-page "https://github.com/flori/tins") + (license license:expat))) + +(define-public ruby-gemtext + (package + (name "ruby-gemtext") + (version "1.0.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "gemtext" version)) + (sha256 + (base32 "1z559f5z0zvwnqgnny0zf4mppiary020ljxwpw3bdxi2hr9aj3gp")))) + (build-system ruby-build-system) + (synopsis "Gemtext parser for Ruby") + (description + "This package is a Ruby parser library for Gemtext (hypertext format +which is intended to serve as the native response format of the Gemini +file transfer protocol) and produces a document object of various +nodes.") + (home-page "https://github.com/exastencil/gemtext") + (license license:expat))) + +(define-public ruby-gem-hadar + (package + (name "ruby-gem-hadar") + (version "1.11.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "gem_hadar" version)) + (sha256 + (base32 + "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5")))) + (build-system ruby-build-system) + ;; This gem needs itself at development time. We disable rebuilding of the + ;; gemspec to avoid this loop. + (arguments + `(#:tests? #f ; there are no tests + #:phases + (modify-phases %standard-phases + (replace 'build + (lambda _ + (invoke "gem" "build" "gem_hadar.gemspec")))))) + (propagated-inputs + (list git-minimal/pinned ruby-tins ruby-yard)) + (synopsis "Library for the development of Ruby gems") + (description + "This library contains some useful functionality to support the +development of Ruby gems.") + (home-page "https://github.com/flori/gem_hadar") + (license license:expat))) + +(define-public ruby-term-ansicolor + (package + (name "ruby-term-ansicolor") + (version "1.7.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "term-ansicolor" version)) + (sha256 + (base32 + "1xq5kci9215skdh27npyd3y55p812v4qb4x2hv3xsjvwqzz9ycwj")))) + (build-system ruby-build-system) + ;; 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 + (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)) + (synopsis "Ruby library to control the attributes of terminal output") + (description + "This Ruby library uses ANSI escape sequences to control the attributes +of terminal output.") + (home-page "https://flori.github.io/term-ansicolor/") + ;; There is no mention of the "or later" clause. + (license license:gpl2))) + +(define-public ruby-immutable-struct + (let ((commit "bb67ad8fa2117e8031c3f4333b4c25c8bcd3afff") + (revision "0")) + (package + (name "ruby-immutable-struct") + (version (git-version "2.4.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/stitchfix/immutable-struct") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0vsr2spypjf0i7ppg2a0gj3mjj5k3dyqsx224cbsxw51p6cc11c1")))) + (build-system ruby-build-system) + (arguments + (list + #: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 + "This package provides a library to help 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 "1.7.0") + (source + (origin + (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 + "18d1qkf2rbbvc2f0dxni85i2l2g8zn5kzh0v8zr1b86r1wjy6rvd")))) + (build-system ruby-build-system) + (arguments + (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 ruby-immutable-struct)) + (synopsis "Ruby wrapper around the Terraform command line interface") + (description + "This package provides a Ruby wrapper around the Terraform command line +interface so that Terraform can be more easily invoked from Ruby code.") + (home-page "https://github.com/infrablocks/ruby_terraform") + (license license:expat))) + +(define-public ruby-pstree + (package + (name "ruby-pstree") + (version "0.3.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pstree" version)) + (sha256 + (base32 + "0ld3ng37y92kv9vqnachw1l3n07hsc8hrnjs9d840liw0mysf1vp")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-gem-hadar bundler)) + (synopsis "Create a process tree data structure") + (description + "This library uses the output of the @code{ps} command to create a +process tree data structure for the current host.") + (home-page "https://github.com/flori/pstree") + ;; 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") + (version "0.9.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "utils" version)) + (sha256 + (base32 + "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-tins ruby-term-ansicolor ruby-pstree ruby-pry-editline)) + (native-inputs + (list ruby-gem-hadar bundler)) + (synopsis "Command line tools for working with Ruby") + (description + "This package provides assorted command line tools that may be useful +when working with Ruby code.") + (home-page "https://github.com/flori/utils") + ;; There is no mention of the "or later" clause. + (license license:gpl2))) + +(define-public ruby-jaro-winkler + (package + (name "ruby-jaro-winkler") + (version "1.5.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "jaro_winkler" version)) + (sha256 + (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no included tests + (synopsis "Ruby implementation of Jaro-Winkler distance algorithm") + (description + "@code{jaro_winkler} is an implementation of Jaro-Winkler distance +algorithm. It is written as a C extension and will fallback to a pure Ruby +implementation on platforms where this is unsupported.") + (home-page "https://github.com/tonytonyjan/jaro_winkler") + (license license:expat))) + +(define-public ruby-json-pure + (package + (name "ruby-json-pure") + (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 + (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.io/json/") + (license license:ruby))) + +(define-public ruby-jwt + (package + (name "ruby-jwt") + (version "2.7.1") + (source + (origin + ;; 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 + "12ss6knfis6a6a41qndalnlvq3yykhpg6igzll8qyssnnwi9zdw7")))) + (build-system ruby-build-system) + (arguments + (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") + (description + "This package provides a pure Ruby implementation of the RFC 7519 OAuth +@acronym{JWT, JSON Web Token} standard.") + (home-page "https://github.com/jwt/ruby-jwt") + (license license:expat))) + +;; Even though this package only provides bindings for a Mac OSX API it is +;; required by "ruby-listen" at runtime. +(define-public ruby-rb-fsevent + (package + (name "ruby-rb-fsevent") + (version "0.10.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rb-fsevent" version)) + (sha256 + (base32 + "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8")))) + (build-system ruby-build-system) + ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs + ;; "listen", which needs "rb-fsevent" at runtime. + (arguments `(#:tests? #f)) + (synopsis "FSEvents API with signals catching") + (description + "This library provides Ruby bindings for the Mac OSX FSEvents API.") + (home-page "https://rubygems.org/gems/rb-fsevent") + (license license:expat))) + +(define-public ruby-listen + (package + (name "ruby-listen") + (version "3.8.0") + (source + (origin + ;; The gem does not include a Rakefile, so fetch from the Git + ;; repository. + (method git-fetch) + (uri (git-reference + (url "https://github.com/guard/listen") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1skkglml094dw1xr4742in1rwwa84ld0mz4nkw6qa8pwhx48x2n5")))) + (build-system ruby-build-system) + (arguments + (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 + (list ;; ruby-thor is used for the command line interface, and is referenced + ;; in the wrapper, and therefore just needs to be an input. + ruby-thor)) + (propagated-inputs + (list ruby-rb-fsevent ruby-rb-inotify)) + (synopsis "Listen to file modifications") + (description "The Listen gem listens to file modifications and notifies +you about the changes.") + (home-page "https://github.com/guard/listen") + (license license:expat))) + +(define-public ruby-loofah + (package + (name "ruby-loofah") + (version "2.21.3") + (home-page "https://github.com/flavorjones/loofah") + (source + (origin + ;; Build from git because the gem lacks tests. + (method git-fetch) + (uri (git-reference (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1lh7cf56y1b0h090ahphvz7grq581phsamdl0rq59y0q9bqwrhg0")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-hoe ruby-hoe-markdown ruby-rr)) + (propagated-inputs + (list ruby-nokogiri ruby-crass)) + (synopsis "Ruby library for manipulating and transforming HTML/XML") + (description + "Loofah is a general library for manipulating and transforming HTML/XML +documents and fragments. It's built on top of Nokogiri and libxml2.") + (license license:expat))) + +(define-public ruby-crass + (package + (name "ruby-crass") + (version "1.0.6") + (home-page "https://github.com/rgrove/crass") + (source (origin + ;; The gem does not contain tests, so pull from git. + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40")))) + (build-system ruby-build-system) + (synopsis "Pure Ruby CSS parser") + (description + "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.") + (license license:expat))) + +;;; The ruby-nokogumbo package has been absorbed into ruby-nokogiri. +(define-public ruby-nokogumbo + (deprecated-package "ruby-nokogumbo" ruby-nokogiri)) + +(define-public ruby-samovar + (package + (name "ruby-samovar") + (version "2.1.4") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ioquatix/samovar") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "05pc5xlbv44anx0sfqssh0xhxg297bvl5slsl7k1vnka4k5fhax6")))) + (build-system ruby-build-system) + (native-inputs (list ruby-covered ruby-rspec)) + (propagated-inputs (list ruby-console ruby-mapping)) + (synopsis "Flexible option parser for Ruby") + (description "Samovar is a modern framework for building command-line +tools and applications. It provides a declarative class-based DSL for +building command-line parsers that include automatic documentation generation. +It helps you keep your functionality clean and isolated where possible.") + (home-page "https://github.com/ioquatix/samovar") + (license license:expat))) + +(define-public ruby-sanitize + (package + (name "ruby-sanitize") + (version "6.0.0") + (home-page "https://github.com/rgrove/sanitize") + (source (origin + (method git-fetch) + ;; The gem does not include the Rakefile, so we download the + ;; source from Github. + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0p1a28vx95vscy9xzzyyddzgb9496x42a5i2ka39cpxbl5f3gkl0")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-crass ruby-nokogiri)) + (native-inputs (list ruby-minitest)) + (synopsis "Whitelist-based HTML and CSS sanitizer") + (description + "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of +acceptable elements, attributes, and CSS properties, Sanitize will remove all +unacceptable HTML and/or CSS from a string.") + (license license:expat))) + +(define-public ruby-sync + (package + (name "ruby-sync") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sync" version)) + (sha256 + (base32 + "1z9qlq4icyiv3hz1znvsq1wz2ccqjb1zwd6gkvnwg6n50z65d0v6")))) + (build-system ruby-build-system) + (synopsis "Ruby module with a two-phase lock and counter") + (description "This package provides a Ruby module that provides a two-phase +lock with a counter.") + (home-page "https://github.com/ruby/sync") + (license license:bsd-2))) + +(define-public ruby-oj + (package + (name "ruby-oj") + (version "3.13.9") + (source + (origin + (method git-fetch) + ;; Version on rubygems.org does not contain Rakefile, so download from + ;; GitHub instead. + (uri (git-reference + (url "https://github.com/ohler55/oj") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0a24zd28y58nyhjxgrpn2k9p72vzj3zbmdrcsbhwbdycj7nn9fpd")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "test_all" + #:phases + (modify-phases %standard-phases + (add-before 'check 'disable-bundler + (lambda _ + (substitute* "Rakefile" + (("Bundler\\.with_clean_env") "1.times") + (("bundle exec ") ""))))))) + (native-inputs + (list bundler ruby-rspec ruby-rake-compiler)) + (synopsis "JSON parser for Ruby optimized for speed") + (description + "Oj is a JSON parser and generator for Ruby, where the encoding and +decoding of JSON is implemented as a C extension to Ruby.") + (home-page "https://www.ohler.com/oj/") + (license (list license:expat ; Ruby code + license:bsd-3)))) ; extension code + +(define-public ruby-ox + (package + (name "ruby-ox") + (version "2.6.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ox" version)) + (sha256 + (base32 + "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no tests + (synopsis "Optimized XML library for Ruby") + (description + "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby +written as a native C extension. It was designed to be an alternative to +Nokogiri and other Ruby XML parsers for generic XML parsing and as an +alternative to Marshal for Object serialization.") + (home-page "https://www.ohler.com/ox") + (license license:expat))) + +(define-public ruby-redcloth + (package + (name "ruby-redcloth") + (version "4.3.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "RedCloth" version)) + (sha256 + (base32 + "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + ;; Redcloth has complicated rake tasks to build various versions for + ;; multiple targets using RVM. We don't want this so we just use the + ;; existing gemspec. + (replace 'build + (lambda _ + (invoke "gem" "build" "redcloth.gemspec")))))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-diff-lcs" ,ruby-diff-lcs) + ("ruby-rspec-2" ,ruby-rspec-2))) + (synopsis "Textile markup language parser for Ruby") + (description + "RedCloth is a Ruby parser for the Textile markup language.") + (home-page "http://redcloth.org") + (license license:expat))) + +(define-public ruby-pg + (let ((commit "378b7a35c12292625460ef2f33373de7114bf255") + (revision "0")) + (package + (name "ruby-pg") + (version (git-version "1.5.9" revision commit)) + (home-page "https://github.com/ged/ruby-pg") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1aq6kakyghgbb4yykxxl9ziaaa7jbdbyc7vz6avyxhlby1jkj0m8")) + (patches + (search-patches "ruby-pg-fix-connect-timeout.patch")))) + (build-system ruby-build-system) + (arguments + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'compile + (lambda _ + (invoke "rake" "compile"))) + ;; Some tests rely on postgresql_lib_path.rb, but it is not + ;; available until the gem is installed. Run tests after + ;; installing to work around it. + (delete 'check) + (add-after 'install 'check + (lambda* (#:key tests? #:allow-other-keys) + (let ((new-gem (string-append #$output + "/lib/ruby/vendor_ruby"))) + (setenv "GEM_PATH" + (string-append (getenv "GEM_PATH") ":" new-gem)) + (when tests? + (invoke "rspec")))))))) + (native-inputs (list ruby-rake-compiler ruby-hoe ruby-rspec)) + (inputs (list postgresql)) + (synopsis "Ruby interface to PostgreSQL") + (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works +with PostgreSQL 9.3 and later.") + (license license:ruby)))) + +(define-public ruby-byebug + (package + (name "ruby-byebug") + (version "11.1.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/deivid-rodriguez/byebug") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Remove wrappers that try to setup a bundle environment. + (with-directory-excursion "bin" + (for-each delete-file '("bundle" "rake" "rubocop")) + ;; ruby-minitest doesn't come with a launcher, so fix the one + ;; provided. + (substitute* "minitest" + (("load File\\.expand_path\\(\"bundle\".*") "") + (("require \"bundler/setup\".*") ""))))))) + (build-system ruby-build-system) + (arguments + (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 + ruby-minitest + ruby-pry + ruby-rake-compiler + ruby-rubocop + ruby-yard)) + (synopsis "Debugger for Ruby 2") + (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2 +TracePoint C API for execution control and the Debug Inspector C API for call +stack navigation. The core component provides support that front-ends can +build on. It provides breakpoint handling and bindings for stack frames among +other things and it comes with a command line interface.") + (home-page "https://github.com/deivid-rodriguez/byebug") + (license license:bsd-2))) + +(define-public ruby-netrc + (package + (name "ruby-netrc") + (version "0.11.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "netrc" version)) + (sha256 + (base32 + "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + ;; There is no Rakefile and minitest can only run one file at once, + ;; so we have to iterate over all test files. + (lambda _ + (for-each (lambda (file) + (invoke "ruby" "-Itest" file)) + (find-files "./test" "test_.*\\.rb")))) + (add-before 'check 'patch-tests-for-newer-ruby + (lambda _ + (substitute* "test/test_netrc.rb" + (("Dir.pwd, '.netrc'") "Netrc.home_path, '.netrc'"))))))) + (native-inputs + (list ruby-minitest)) + (synopsis "Library to read and update netrc files") + (description + "This library can read and update netrc files, preserving formatting +including comments and whitespace.") + (home-page "https://github.com/geemus/netrc") + (license license:expat))) + +(define-public ruby-unf-ext + (package + (name "ruby-unf-ext") + (version "0.0.8.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "unf_ext" version)) + (sha256 + (base32 + "1yj2nz2l101vr1x9w2k83a0fag1xgnmjwp8w8rw4ik2rwcz65fch")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'build 'build-ext + (lambda _ (invoke "rake" "compile:unf_ext"))) + (add-before 'check 'lose-rake-compiler-dock-dependency + (lambda _ + ;; rake-compiler-dock is listed in the gemspec, but only + ;; required when cross-compiling. + (substitute* "unf_ext.gemspec" + ((".*rake-compiler-dock.*") ""))))))) + (native-inputs + (list bundler ruby-rake-compiler ruby-test-unit)) + (synopsis "Unicode normalization form support library") + (description + "This package provides unicode normalization form support for Ruby.") + (home-page "https://github.com/knu/ruby-unf_ext") + (license license:expat))) + +(define-public ruby-tdiff + ;; Use a newer than released snapshot so that rspec-2 is not required. + (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2")) + (package + (name "ruby-tdiff") + (version (string-append "0.3.3-1." (string-take commit 8))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/postmodern/tdiff") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4")))) + (build-system ruby-build-system) + (native-inputs + (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 +tree-like structures. It is similar to Ruby's built-in @code{TSort} module.") + (home-page "https://github.com/postmodern/tdiff") + (license license:expat)))) + +(define-public ruby-nokogiri-diff + ;; Use a newer than released snapshot so that rspec-2 is not required. + (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5")) + (package + (name "ruby-nokogiri-diff") + (version (string-append "0.2.0-1." (string-take commit 8))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/postmodern/nokogiri-diff") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-tdiff + ruby-nokogiri)) + (native-inputs + (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 +differences (added or removed nodes) between two XML/HTML documents.") + (home-page "https://github.com/postmodern/nokogiri-diff") + (license license:expat)))) + +(define-public ruby-racc + (package + (name "ruby-racc") + (version "1.5.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "racc" version)) + (sha256 + (base32 + "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; Fails while parsing test instructions. + (native-inputs + (list ruby-hoe ruby-rake-compiler)) + (synopsis "LALR(1) parser generator for Ruby") + (description + "Racc is a LALR(1) parser generator. It is written in Ruby itself, and +generates Ruby program.") + (home-page "https://i.loveruby.net/en/projects/racc/") + (license (list + ;; Generally licensed under the LGPL2.1, and some files also + ;; available under the same license as Ruby. + license:lgpl2.1 + license:ruby)))) + +(define-public ruby-rack + (package + (name "ruby-rack") + ;; Do not upgrade to version 3, as Rails doesn't support it yet. + (version "2.2.7") + (source + (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/rack/rack") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "02r41fr61x0jfhraizc6bsgs40p8mlpvnzix71zwmcvibg384ify")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'fix-tests + (lambda _ + ;; This test fails in the build environment (and passes outside + ;; of it). + (substitute* "test/spec_files.rb" + (("res.body.must_equal expected_body") "")) + ;; A few of the tests use the length of a file on disk for + ;; Content-Length and Content-Range headers. However, this file + ;; has a shebang in it which an earlier phase patches, growing + ;; the file size from 193 to 239 bytes when the store prefix is + ;; "/gnu/store". + (let ((size-diff (- (string-length (which "ruby")) + (string-length "/usr/bin/env ruby")))) + (substitute* '("test/spec_files.rb") + (("208" bytes) + (number->string (+ (string->number bytes) size-diff))) + (("bytes(.)22-33" all delimiter) + (string-append "bytes" + delimiter + (number->string (+ 22 size-diff)) + "-" + (number->string (+ 33 size-diff))))))))))) + (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, +it unifies the API for web servers, web frameworks, and software in between +into a single method call.") + (home-page "https://github.com/rack/rack") + (license license:expat))) + +(define-public ruby-rack-next + (package + (inherit ruby-rack) + (name "ruby-rack") + (version "3.0.7") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/rack/rack") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0msf14655nfcq1kgmib6932lgzm9nw3nb0m3c7nh6nj4sx30yxfr")))) + (arguments '()))) + +(define-public ruby-rackup + (package + (name "ruby-rackup") + (version "2.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rack/rackup") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19b7sy700zjwaw7x47qpxvhnnz5hrp5bhrxfyljgagrli824dajy")))) + (build-system ruby-build-system) + (native-inputs (list ruby-minitest-global-expectations)) + (inputs (list ruby-rack-next ruby-webrick)) + (synopsis "Command line interface (CLI) for running for Rack applications") + (description "This package provides a command line interface for running +for Rack applications.") + (home-page "https://github.com/rack/rackup") + (license license:expat))) + +(define-public ruby-rackup-1 + (package + (inherit ruby-rackup) + (name "ruby-rackup") + (version "1.0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rack/rackup") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1xdfxsz7jx2gwfq212y9mca6q0i5s7kyqbfcscy1315awg57ynyp")))))) + +(define-public ruby-rack-cache + (package + (name "ruby-rack-cache") + (version "1.13.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rack-cache" version)) + (sha256 + (base32 + "1cqpax628h2mhnsjfg91c3klxwx2pkvaj061cisb0saqa99b0jgm")))) + (build-system ruby-build-system) + (arguments + (list + ;; The test suite depends on ruby-memcached, which is not available in + ;; Guix and bundles a very dated copy of memcached (undesirable). + #:tests? #f)) + (propagated-inputs (list ruby-rack)) + (synopsis "Component to enable HTTP caching for Rack-based applications") + (description "Rack::Cache is suitable as a drop-in component to enable +HTTP caching for Rack-based applications that produce freshness (Expires, +Cache-Control) and/or validation (Last-Modified, ETag) information.") + (home-page "https://github.com/rtomayko/rack-cache") + (license license:expat))) + +(define-public ruby-rack-test + (package + (name "ruby-rack-test") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rack-test" version)) + (sha256 + (base32 + "1ysx29gk9k14a14zsp5a8czys140wacvp91fja8xcja0j1hzqq8c")))) + (build-system ruby-build-system) + (arguments + ;; Disable tests because of circular dependencies: requires sinatra, + ;; which requires rack-protection, which requires rack-test. Instead + ;; simply require the library. + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "ruby" "-Ilib" "-r" "rack/test"))))))) + (propagated-inputs + (list ruby-rack)) + (synopsis "Testing API for Rack applications") + (description + "Rack::Test is a small, simple testing API for Rack applications. It can +be used on its own or as a reusable starting point for Web frameworks and +testing libraries to build on.") + (home-page "https://github.com/rack/rack-test") + (license license:expat))) + +(define-public ruby-rack-session + (package + (name "ruby-rack-session") + ;; Stay on version 1 until all the rack users such as Rails can use rack 3 + ;; (rack-session 2 requires rack 3). + (version "1.0.1") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/rack/rack-session") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0rv955wd7ckp5jgy5c229wmajh48jpcy8s0iv5i8ma61wf7qw0i1")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-minitest-global-expectations + ruby-minitest-sprint)) + (propagated-inputs + (list ruby-rack)) + (synopsis "Session management for Rack") + (description "This package provides a session management implementation +for Rack.") + (home-page "https://github.com/rack/rack-session") + (license license:expat))) + +(define-public ruby-rack-protection + (package + (name "ruby-rack-protection") + (version "3.0.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rack-protection" version)) + (sha256 + (base32 + "1a12m1mv8dc0g90fs1myvis8vsgr427k1arg1q4a9qlfw6fqyhis")))) + (build-system ruby-build-system) + (arguments + '(;; Tests missing from the gem. + #:tests? #f)) + (propagated-inputs + (list ruby-rack)) + (native-inputs + (list bundler ruby-rspec-2 ruby-rack-test)) + (synopsis "Rack middleware that protects against typical web attacks") + (description "Rack middleware that can be used to protect against typical +web attacks. It can protect all Rack apps, including Rails. For instance, it +protects against cross site request forgery, cross site scripting, +clickjacking, directory traversal, session hijacking and IP spoofing.") + (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection") + (license license:expat))) + +(define-public ruby-rainbow + (package + (name "ruby-rainbow") + (version "3.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rainbow" version)) + (sha256 + (base32 + "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; Run rspec directly, to avoid requiring Rubocop which is used from + ;; the Rakefile. + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list bundler ruby-rspec)) + (synopsis "Colorize printed text on ANSI terminals") + (description + "@code{rainbow} provides a string presenter object to colorize strings by +wrapping them in ANSI escape codes.") + (home-page "https://github.com/sickill/rainbow") + (license license:expat))) + +(define-public ruby-rr + (package + (name "ruby-rr") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rr" version)) + (sha256 + (base32 + "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; test files not included + (native-inputs + (list bundler ruby-rspec)) + (synopsis "Ruby test double framework") + (description + "RR is a test double framework that features a rich selection of double +techniques and a terse syntax.") + (home-page "https://rr.github.io/rr/") + (license license:expat))) + +(define-public ruby-rest-client + (package + (name "ruby-rest-client") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rest-client" version)) + (sha256 + (base32 + "1qs74yzl58agzx9dgjhcpgmzfn61fqkk33k1js2y5yhlvc5l19im")))) + (build-system ruby-build-system) + (arguments + (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-accept-1 + ruby-http-cookie + ruby-mime-types + ruby-netrc)) + (native-inputs + (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, +inspired by the Sinatra microframework style of specifying actions: +@code{get}, @code{put}, @code{post}, @code{delete}.") + (home-page "https://github.com/rest-client/rest-client") + (license license:expat))) + +(define-public ruby-rubocop-ast + (package + (name "ruby-rubocop-ast") + (version "1.37.0") + (source + (origin + (method git-fetch) ;no test suite in distributed gem + (uri (git-reference + (url "https://github.com/rubocop/rubocop-ast") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ww1vxcx6qaih4g68mrbq4xlgrqbv8w7cqxdaz629sazpw2hkycs")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases (modify-phases %standard-phases + (add-after 'unpack 'relax-dependencies + (lambda _ + (substitute* "Gemfile" + (("gem 'simplecov', '~> 0.10', '< 0.18'") + "gem 'simplecov', '~> 0.10'")))) + (add-before 'build 'generate-lexer + (lambda _ + (setenv "RUBOCOP_VERSION" "none") + (invoke "rake" "generate"))) + (replace 'replace-git-ls-files + (lambda _ + (substitute* "rubocop-ast.gemspec" + (("`git ls-files(.*)`" _ files) + (format #f "`find ~a -type f| sort`" files)))))))) + (native-inputs + (list ruby-bump + ruby-oedipus-lex + ruby-prism + ruby-racc + ruby-rake + ruby-rspec + ruby-simplecov)) + (propagated-inputs + (list ruby-parser)) + (synopsis "RuboCop's AST extensions and NodePattern functionality") + (description "Rubocop::AST extends @code{ruby-parser} with classes used +by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular: +@itemize +@item @code{RuboCop::AST::Node} +@item @code{RuboCop::AST::NodePattern} +@end itemize") + (home-page "https://rubocop.org/") + (license license:expat))) + +(define-public ruby-rexml + (package + (name "ruby-rexml") + (version "3.2.5") + (source + (origin + (method git-fetch) ;no tests in distributed gem + (uri (git-reference + (url "https://github.com/ruby/rexml") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "13n6vaa80drqic2wri4q6k22qzvsn683vp5s8c9dllil6x04kn0x")))) + (build-system ruby-build-system) + (synopsis "XML toolkit for Ruby") + (description "Inspired by Electric XML library for Java, REXML aims to be +easy-to-use API, small and fast. It supports both tree and stream document +parsing.") + (home-page "https://github.com/ruby/rexml") + (license license:bsd-2))) + +(define-public ruby-character-set + (package + (name "ruby-character-set") + (version "1.4.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "character_set" version)) + (sha256 + (base32 + "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser + (synopsis "Ruby library to manipulate Unicode") + (description "CharacterSet is a C-extended Ruby library to work with sets +of Unicode code points. It can read and write these sets in various formats +and implements the @code{stdlib} @code{Set} interface for them. It also +offers an alternate paradigm of @code{String} processing which grants much +better performance than @code{Regexp} and @code{String} methods from the +@code{stdlib} where applicable. Many parts can be used independently, e.g.: +@itemize +@item @code{CharacterSet::Character} +@item @code{CharacterSet::Parser} +@item @code{CharacterSet::Writer} +@item @code{RangeCompressor} +@end itemize") + (home-page "https://github.com/jaynetics/character_set") + (license license:expat))) + +(define-public ruby-range-compressor + (package + (name "ruby-range-compressor") + (version "1.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/janosch-x/range_compressor") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1zmc44si5ac2h7r1x4f1j8z5yr6wz528c7dssh0g70fmczs3pfga")))) + (build-system ruby-build-system) + (arguments + (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 + 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 +following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.") + (home-page "https://github.com/janosch-x/range_compressor") + (license license:expat))) + +(define-public ruby-regexp-property-values + (let ((commit "03007a66c912949a7130b973cc0eca109c20811f") + (revision "1")) + (package + (name "ruby-regexp-property-values") + (version (git-version "1.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference ;no test suite in distributed gem + (url "https://github.com/jaynetics/regexp_property_values") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1zsax784p16zdkf60lyq9z924zvsafhx9ckxx9srsgkyiqrifi1s")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "default")) + (native-inputs + (list ruby-character-set ruby-rake ruby-rake-compiler + ruby-range-compressor ruby-rspec)) + (synopsis "Inspect Ruby's regex engine property values") + (description "This small library lets you see which property values are +supported by the regular expression engine of the Ruby version you are running +and can directly read out their code point ranges. In other words, it +determines all supported values for @code{\\p{value}} expressions and what +they match.") + (home-page "https://github.com/jaynetics/regexp_property_values") + (license license:expat)))) + +(define-public ruby-regexp-parser + (package + (name "ruby-regexp-parser") + (version "2.6.0") + (source + (origin + (method git-fetch) ;bin/test missing from gem + (uri (git-reference + (url "https://github.com/ammar/regexp_parser") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "07dx96gjvpa07dsdnzpwhhwc7qpxakjgws7d7wbnkbs20fyvx55x")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "default" + #:phases (modify-phases %standard-phases + (add-before 'build 'compile-scanner.rb + (lambda _ + (invoke "rake" "build") + ;; XXX: This is needed otherwise the install + ;; phase fails to delete the installed cached + ;; gem file. + (delete-file-recursively "pkg")))))) + (native-inputs + (list ragel ruby-ice-nine ruby-regexp-property-values ruby-rspec)) + (synopsis "Regular expression parser library for Ruby") + (description "A Ruby gem for tokenizing, parsing, and transforming regular +expressions. It comprises the following components: +@itemize +@item A scanner/tokenizer based on Ragel, +@item A lexer that produces a stream of token objects, +@item A parser that produces a tree of Expression objects. +@end itemize") + (home-page "https://github.com/ammar/regexp_parser") + (license license:expat))) + +(define-public ruby-test-queue + (package + (name "ruby-test-queue") + (version "0.4.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "test-queue" version)) + (sha256 + (base32 + "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list ruby-rspec)) + (synopsis "Minitest/RSpec parallel test runner for CI environments") + (description "The test-queue module is a parallel test runner, +built using a centralized queue to ensure optimal distribution of +tests between workers. It is specifically optimized for Continuous +Integration (CI) environments: build statistics from each run are +stored locally and used to sort the queue at the beginning of the next +run.") + (home-page "https://github.com/tmm1/test-queue") + (license license:expat))) + +(define-public ruby-rubocop + (package + (name "ruby-rubocop") + ;; XXX: Also update ruby-rubocop-minimal in ruby-build.scm. + (version "1.68.0") + (source + (origin + (method git-fetch) ;no tests in distributed gem + (uri (git-reference + (url "https://github.com/rubocop/rubocop") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0pfsrgkg2dhb6a2rknciqskgxgmb9kf48rvbkhay9n8n6m712v2w")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "default" + ;; TODO: Figure out why test hangs. + #:tests? ,(not (or (%current-target-system) + (target-riscv64?))) + #:phases + (modify-phases %standard-phases + (add-before 'check 'set-home + (lambda _ + (setenv "HOME" (getcwd)))) + ;; Rubocop depends on itself for tests, directly and indirectly. By + ;; regenerating the TODO list we test rubocop against itself and + ;; forgo adjusting the test suite to our environment each release. + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (make-file-writable ".rubocop_todo.yml") + (invoke "./exe/rubocop" "--auto-gen-config"))))))) + (native-inputs + (list ruby-pry + ruby-rake + ruby-rspec + ruby-rubocop-ast + ruby-rubocop-capybara-minimal + ruby-rubocop-factory-bot + ruby-rubocop-minimal + ruby-rubocop-performance-minimal + ruby-rubocop-rake-minimal + ruby-rubocop-rspec-minimal + ruby-simplecov + ruby-stackprof + ruby-test-queue + ruby-webmock + ruby-yard)) + (propagated-inputs + (list ruby-json + ruby-language-server-protocol + ruby-parallel + ruby-parser + ruby-progressbar + ruby-rainbow + ruby-regexp-parser + ruby-rexml + ruby-rubocop-ast + ruby-unicode-display-width)) + (synopsis "Ruby code style checking tool") + (description + "@code{rubocop} is a Ruby code style checking tool. It aims to enforce +the community-driven Ruby Style Guide.") + (home-page "https://github.com/rubocop/rubocop") + (license license:expat))) + +(define-public ruby-contest + (package + (name "ruby-contest") + (version "0.1.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "contest" version)) + (sha256 + (base32 + "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf")))) + (build-system ruby-build-system) + (synopsis "Write declarative tests using nested contexts") + (description + "Contest allows writing declarative @code{Test::Unit} tests using nested +contexts without performance penalties.") + (home-page "https://github.com/citrusbyte/contest") + (license license:expat))) + +(define-public ruby-creole + (package + (name "ruby-creole") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "creole" version)) + (sha256 + (base32 + "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-bacon)) + (synopsis "Creole markup language converter") + (description + "Creole is a lightweight markup language and this library for converting +creole to @code{HTML}.") + (home-page "https://github.com/minad/creole") + (license license:ruby))) + +(define-public ruby-middleware + (package + (name "ruby-middleware") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "middleware" version)) + (sha256 + (base32 + "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ;no test suite + (synopsis "Implementation of a middleware abstraction for Ruby") + (description "Middleware is a generalized implementation of a middleware +abstraction for Ruby.") + (home-page "https://github.com/mitchellh/middleware") + (license license:expat))) + +(define-public ruby-benchmark-ips + (package + (name "ruby-benchmark-ips") + (version "2.12.0") + (source + (origin + (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 + "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") + (description "Benchmark-ips enhances the Ruby Benchmark module with the +iterations per second count. For short snippets of code, it can automatically +figure out how many times to run the code to get interesting data.") + (home-page "https://github.com/evanphx/benchmark-ips") + (license license:expat))) + +(define-public ruby-ffi-rzmq-core + (package + (name "ruby-ffi-rzmq-core") + (version "1.0.7") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ffi-rzmq-core" version)) + (sha256 + (base32 + "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-libzmq-search-path + (lambda* (#:key inputs #:allow-other-keys) + (let ((zeromq (assoc-ref inputs "zeromq"))) + (substitute* "lib/ffi-rzmq-core/libzmq.rb" + (("/usr/local/lib") + (string-append zeromq "/lib")))))) + (replace 'check + (lambda _ + (invoke "rspec")))))) + (native-inputs + (list ruby-rspec)) + (inputs + (list zeromq)) + (propagated-inputs (list ruby-ffi)) + (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library") + (description "This library only provides the FFI wrapper for the ZeroMQ +networking library. It can be used to implement a Ruby API for the ZeroMQ +library.") + (home-page "https://github.com/chuckremes/ffi-rzmq-core") + (license license:expat))) + +(define-public ruby-ffi-rzmq + (package + (name "ruby-ffi-rzmq") + (version "2.0.7") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ffi-rzmq" version)) + (sha256 + (base32 + "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg")))) + (build-system ruby-build-system) + (arguments '(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list ruby-rspec)) + (propagated-inputs + (list ruby-ffi-rzmq-core)) + (synopsis "High-level Ruby wrapper for the ZeroMQ networking library") + (description "This library provides a high-level API that wraps the ZeroMQ +networking library using the Ruby foreign function interface (FFI). It is a +pure Ruby wrapper, hence is compatible with any Ruby runtime that has support +for FFI.") + (home-page "https://github.com/chuckremes/ffi-rzmq") + (license license:expat))) + +(define-public ruby-sawyer + (package + (name "ruby-sawyer") + (version "0.9.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sawyer" version)) + (sha256 + (base32 + "1jks1qjbmqm8f9kvwa81vqj39avaj9wdnzc531xm29a55bb74fps")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-addressable ruby-faraday)) + (synopsis "Experimental hypermedia agent for Ruby") + (description "Sawyer is an experimental hypermedia agent for Ruby built on +top of Faraday.") + (home-page "https://github.com/lostisland/sawyer") + (license license:expat))) + +(define-public ruby-octokit + (package + (name "ruby-octokit") + (version "6.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/octokit/octokit.rb") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "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-rbnacl + ruby-rspec + ruby-simplecov + ruby-webmock + ruby-vcr-expat)) + (propagated-inputs (list ruby-faraday ruby-sawyer)) + (synopsis "Ruby toolkit for the GitHub API") + (description "Octokit wraps the GitHub API in a flat API client that +follows Ruby conventions and requires little knowledge of REST.") + (home-page "https://github.com/octokit/octokit.rb") + (license license:expat))) + +(define-public ruby-hashicorp-checkpoint + (package + (name "ruby-hashicorp-checkpoint") + (version "0.1.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "hashicorp-checkpoint" version)) + (sha256 + (base32 + "1z6mwzvd7p2wqhmk07dwrhvm0ncgqm7pxn0pr2k025rwsspp9bsd")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f)) ;; no need to test, useless outside HashiCorp anyway + (synopsis "Internal HashiCorp service to check version information") + (description "This package is probably useless outside of internal +HashiCorp use. It is open source for disclosure and because HashiCorp's open +source projects must be able to link to it.") + (home-page "https://github.com/hashicorp/ruby-checkpoint") + (license license:mpl2.0))) + +(define-public ruby-vagrant-cloud + (package + (name "ruby-vagrant-cloud") + (version "3.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hashicorp/vagrant_cloud") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bnjd8b86lrgj5ar1l7pg5if95bv0sxa75mz7x2ikqyz6q8rmjb3")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec")) + (native-inputs (list ruby-rspec ruby-webmock)) + (propagated-inputs (list ruby-excon ruby-log4r ruby-rexml)) + (synopsis "Vagrant Cloud API library") + (description "This library provides the functionality to create, modify, +and delete boxes, versions, and providers on HashiCorp's Vagrant Cloud.") + (home-page "https://github.com/hashicorp/vagrant_cloud") + (license license:asl2.0))) + +(define-public ruby-libvirt + (package + (name "ruby-libvirt") + (version "0.8.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "ruby-libvirt" version)) + (sha256 + (base32 + "0v6vj5vs9v01zr00bflqpfczhwcyc6jdf8k2dqn42lq6d87si77d")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f)) ; tests require access to libvirt socket + (native-inputs (list pkg-config)) + (inputs (list libvirt)) + (synopsis "Ruby bindings for libvirt") + (description "This package provides Ruby language binding for libvirt's +native C API.") + (home-page "https://ruby.libvirt.org/") + (license license:lgpl2.1+))) + +(define-public ruby-fog-core + (package + (name "ruby-fog-core") + (version "2.4.0") + (source (origin + (method git-fetch) ; for tests + (uri (git-reference + (url "https://github.com/fog/fog-core") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "184vpi81az7raz98652m7d98ikabdl9di37dgal0adr76q57j03c")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'set-home + (lambda _ + (setenv "HOME" "/tmp")))))) + (native-inputs (list ruby-minitest-stub-const)) + (propagated-inputs (list ruby-builder ruby-excon ruby-formatador + ruby-mime-types)) + (synopsis "Shared classes and tests for fog providers and services") + (description "@code{fog} is a Ruby cloud services library. This package +provides shared classes and tests for @code{fog} providers and services.") + (home-page "https://github.com/fog/fog-core") + (license license:expat))) + +(define-public ruby-fog-json + (package + (name "ruby-fog-json") + (version "1.2.0") + (source (origin + (method git-fetch) ; for tests + (uri (git-reference + (url "https://github.com/fog/fog-json") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0f4hbmhy22b1gbkzd3pnj5xvljp6bl7inc2y4fxh29nrmcn4pgb0")))) + (build-system ruby-build-system) + (native-inputs (list ruby-minitest)) + (propagated-inputs (list ruby-fog-core ruby-multi-json)) + (synopsis "JSON parsing tools used by @code{fog} providers") + (description "This package containse the JSON parsing tools shared between +a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud +services library.") + (home-page "https://github.com/fog/fog-json") + (license license:expat))) + +(define-public ruby-fog-xml + (package + (name "ruby-fog-xml") + (version "0.1.5") + (source (origin + (method git-fetch) ; for tests + (uri (git-reference + (url "https://github.com/fog/fog-xml") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1v896k9j44axhgvwjvk1j0amy27a9fm6ynv656fxqa1m2wib6dzh")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + ;; Run tests via bundler so rake picks up the minitest gem from + ;; native-inputs, not the one installed otherwise. This is required + ;; since turn@0.9.7 needs minitest@4 and can not be upgraded to + ;; minitest@5. + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "bundle" "exec" "rake"))))))) + (native-inputs (list ruby-minitest ruby-pry ruby-coveralls)) + (propagated-inputs (list ruby-fog-core ruby-nokogiri)) + (synopsis "XML parsing tools used by @code{fog} providers") + (description "This package containse the XML parsing tools shared between +a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud +services library.") + (home-page "https://github.com/fog/fog-xml") + (license license:expat))) + +(define-public ruby-fog-libvirt + (package + (name "ruby-fog-libvirt") + (version "0.12.0") + (source (origin + (method git-fetch) ; for tests + (uri (git-reference + (url "https://github.com/fog/fog-libvirt") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0b1qafb0l24anmr8fviwhp9vj14g0fic0mkg9n1i11h68zhqkj2v")))) + (build-system ruby-build-system) + (native-inputs (list ruby-minitest-stub-const ruby-mocha ruby-net-ssh + ruby-netrc ruby-octokit ruby-pry ruby-rubocop + ruby-shindo ruby-simplecov ruby-yard )) + (propagated-inputs (list ruby-fog-core ruby-fog-json ruby-fog-xml + ruby-json ruby-libvirt)) + (synopsis "Ruby libvirt provider, either standalone or as a module for +@code{fog}") + (description "This library can be used as a module for @code{fog} or as +standalone libvirt provider. @code{fog} is a Ruby cloud services library.") + (home-page "https://github.com/fog/fog-libvirt") + (license license:expat))) + +(define-public ruby-pry-byebug + (package + (name "ruby-pry-byebug") + (version "3.10.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/deivid-rodriguez/pry-byebug") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0z8rhvmr9qmlbk8c8h6jbig5qd5xbdg9qihvx3g0cv1whqzbfikq")))) + (build-system ruby-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'sanitize-dependencies + (lambda _ + (substitute* "Rakefile" + ((".*chandler/tasks.*") "")))) + (add-before 'check 'set-home + (lambda _ + (setenv "HOME" (getcwd))))))) + (native-inputs (list ruby-rubocop ruby-simplecov)) + (propagated-inputs (list ruby-byebug ruby-pry)) + (synopsis "Step-by-step debugging and stack navigation in Pry") + (description "This package adds step-by-step debugging and stack +navigation capabilities to @code{pry}, using @code{byebug}.") + (home-page "https://github.com/deivid-rodriguez/pry-byebug") + (license license:expat))) + +(define-public ruby-stackprof + (package + (name "ruby-stackprof") + (version "0.2.27") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "stackprof" version)) + (sha256 + (base32 "03788mbipmihq2w7rznzvv0ks0s9z1321k1jyr6ffln8as3d5xmg")))) + (build-system ruby-build-system) + (arguments + (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") + ;; This test is known to fail on 32-bit systems. + ;; /gnu/store/...-stackprof-0.2.27.gem + (("def test_raw") "def skip_test_raw")))) + (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 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, +wallclock and object allocation samplers.") + (home-page "https://github.com/tmm1/stackprof") + (license license:expat))) + +(define-public ruby-bindex + (package + (name "ruby-bindex") + (version "0.8.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "bindex" version)) + (sha256 + (base32 "0zmirr3m02p52bzq4xgksq4pn8j641rx5d4czk68pv9rqnfwq7kv")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "default" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'avoid-bundler + (lambda _ + (substitute* "Rakefile" + (("^Bundler::.*") ""))))))) + (native-inputs (list bundler ruby-rake-compiler)) + (synopsis "Bindings for Ruby exceptions") + (description + "This package provides bindings for any kind of Ruby exceptions.") + (home-page "https://github.com/gsamokovarov/bindex") + (license license:expat))) + +(define-public ruby-binding-of-caller + (package + (name "ruby-binding-of-caller") + (version "0.8.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "binding_of_caller" version)) + (sha256 + (base32 + "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g")))) + (build-system ruby-build-system) + ;; Attempting to run the test suite fails with a rake deprecation error + ;; (see: https://github.com/banister/binding_of_caller/issues/76). + (arguments '(#:tests? #f)) + (propagated-inputs + (list ruby-debug-inspector)) + (synopsis "Retrieve the binding of a method's caller") + (description "The @code{binding_of_caller} module provides the +@code{Binding#of_caller} method. It allows accessing bindings from upper +frames in the call stack and can evaluate code in that context.") + (home-page "https://github.com/banister/binding_of_caller") + (license license:expat))) + +(define-public ruby-pry-stack-explorer + (package + (name "ruby-pry-stack-explorer") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "pry-stack_explorer" version)) + (sha256 + (base32 + "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ;no test suite in gem release + (propagated-inputs + (list ruby-binding-of-caller ruby-pry)) + (synopsis "Call-stack navigation plugin for the Pry REPL") + (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that +add support to navigate the call-stack.") + (home-page "https://github.com/pry/pry-stack_explorer") + (license license:expat))) + +(define-public ruby-varint + (package + (name "ruby-varint") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "varint" version)) + (sha256 + (base32 + "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ;no test suite + (synopsis "Variable length integers (varint) C extension for Ruby") + (description "This package provides a small C extension to speed up +variable length integers (varint) in Ruby Protocol Buffers.") + (home-page "https://github.com/liquidm/varint") + (license license:bsd-3))) + +(define-public ruby-version-gem + (package + (name "ruby-version-gem") + (version "1.1.3") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://gitlab.com/oauth-xx/version_gem") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "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"))))))) + (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} +module based on a @code{Version::VERSION} constant string wile not interfering +with gemspec parsing where the @code{VERSION} string is traditionally used.") + (home-page "https://gitlab.com/oauth-xx/version_gem") + (license license:expat))) + +;;; Note: Do NOT update to a newer version; this is the last commit that is +;;; still licensed as free software, the project having switched to the +;;; Hippocratic license afterward (see: +;;; https://github.com/vcr/vcr/issues/959). +(define-public ruby-vcr-expat + (let ((revision "0") + (commit-dont-touch "842b2bf89099dc91f2c643d0d85d1abd54eb7e85")) ; + (package + (name "ruby-vcr-expat") + (version (git-version "5.0.0" revision commit-dont-touch)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vcr/vcr") + (commit commit-dont-touch))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "02mzifd2655kjh35bbry01n66jjcjrsw6ncqlybfkjcaqrw2zalv")))) + (build-system ruby-build-system) + (arguments (list #:tests? #f)) ;avoid all dependencies + (home-page "https://github.com/vcr/vcr") + (synopsis "HTTP interaction recorder [old version]") + (description "Record your test suite's HTTP interactions and replay them +during future test runs for fast, deterministic, accurate tests. This is an +older version of VCR that is free software under the Expat license. The +project later switched to the Hippocratic license, which is non-free. +@emph{Do not use it in new free software projects}.") + (license license:expat)))) + +(define-public ruby-ruby-prof + (package + (name "ruby-ruby-prof") + (version "1.4.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby-prof" version)) + (sha256 + (base32 + "09n13bzm1p956z318xx1v7ikqdp2i971v7p3kwf3170axz368ccy")))) + (build-system ruby-build-system) + (arguments + ;; FIXME: Investigate why the tests fail on i686-linux. + `(#:tests? ,(not (or (%current-target-system) + (target-x86-32?))) + #:phases + (modify-phases %standard-phases + ;; The LineNumbersTest test fails non-deterministically (see: + ;; https://github.com/ruby-prof/ruby-prof/issues/276). + (add-after 'extract-gemspec 'delete-flaky-test + (lambda _ + (delete-file "test/line_number_test.rb") + (substitute* "ruby-prof.gemspec" + (("\"test/line_number_test\\.rb\"\\.freeze, ") "")))) + (add-before 'check 'compile + (lambda _ + (invoke "rake" "compile")))))) + (native-inputs (list bundler ruby-minitest ruby-rake-compiler ruby-rdoc)) + (synopsis "Fast code profiler for Ruby") + (description "RubyProf is a fast code profiler for Ruby. Its features +include: +@table @asis +@item Speed +Being a C extension, it is many times faster than the standard Ruby profiler. +@item Measurement Modes +It can measure program wall time, process time, object allocations and memory +usage. +@item Reports +A variety of text and cross-referenced HTML reports can be generated. +@item Threads +Profiling multiple threads simultaneously is supported. +@end table") + (home-page "https://github.com/ruby-prof/ruby-prof") + (license license:bsd-2))) + +(define-public ruby-ruby-memcheck + (package + (name "ruby-ruby-memcheck") + (version "1.3.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Shopify/ruby_memcheck") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "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 + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "lib/ruby_memcheck/configuration.rb" + (("DEFAULT_VALGRIND = \"valgrind\"") + (format #f "DEFAULT_VALGRIND = ~s" + (search-input-file inputs "bin/valgrind")))))) + (add-before 'replace-git-ls-files 'standardize-git-ls-files + (lambda _ + (substitute* "ruby_memcheck.gemspec" + (("%x\\(git ls-files -z)") + "`git ls-files -z`"))))))) + (native-inputs (list ruby-rake-compiler ruby-rspec)) + (inputs (list valgrind/pinned)) + (propagated-inputs (list ruby-nokogiri)) + (synopsis "Valgrind memcheck tool for Ruby") + (description "The @code{ruby_memcheck} gem provides a sane way to use +Valgrind's memcheck on your native extension gem, that filters out all the +false positives caused by Ruby not freeing all of the memory it allocates +during shutdown.") + (home-page "https://github.com/Shopify/ruby_memcheck") + (license license:expat))) + +(define-public ruby-memory-profiler + (package + (name "ruby-memory-profiler") + (version "1.0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/SamSaffron/memory_profiler") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1z1x0rymfv45gh1y3s46w5pga5y8cvgn228jiwlnhc8hin3zig84")))) + (build-system ruby-build-system) + (synopsis "Memory profiling routines for Ruby") + (description + "This package provides memory profiling routines for Ruby.") + (home-page "https://github.com/SamSaffron/memory_profiler") + (license license:expat))) + +(define-public ruby-gherkin-ruby + (package + (name "ruby-gherkin-ruby") + (version "0.3.2") + (home-page "https://github.com/codegram/gherkin-ruby") + (source (origin + (method url-fetch) + (uri (rubygems-uri "gherkin-ruby" version)) + (sha256 + (base32 + "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1")))) + (build-system ruby-build-system) + (synopsis "Pure Ruby Gherkin parser") + (description + "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than +200 lines of code.") + ;; XXX: No license information anywhere but Readme.md. + (license license:expat))) + +(define-public ruby-aruba + (package + (name "ruby-aruba") + (version "2.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cucumber/aruba") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1mmlgqhi6yww3z34hmrrnha2rygkv6kx0q962z31dqxjkcv23yfd")))) + (build-system ruby-build-system) + (arguments + (list + ;; XXX: Only run the "spec" target and not the "cucumber" one, as it is + ;; slow and has multiple unexplained test failures. + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda _ + ;; This test file relies on a dynamically generated script; + ;; patch its #!/bin/bash shebang. + (substitute* "spec/aruba/api/commands_spec.rb" + (("/bin/bash") + (which "bash"))))) + (add-before 'check 'relax-requirements + ;; Many development requirements are not actually needed. + (lambda _ + (substitute* "aruba.gemspec" + (("\\[\">= 0.18.0\", \"< 0.22.0\"]") ;simplecov + "\">= 0.18.0\"") + ((".*appraisal.*") "") + ((".*pry.*") "") + ((".*kramdown.*") "") + ((".*rubocop.*") "") + ((".*yard-junk.*") "")) + (substitute* "Rakefile" + ((".*require \"rubocop/rake_task\".*") "") + ((".*require \"yard-junk/rake\".*") "") + ((".*RuboCop::RakeTask.new.*") "") + ((".*YardJunk::Rake.define_task.*") "")))) + ;; The tests rely on the Gem being installed, so move the check + ;; phase after the install phase. + (delete 'check) + (add-after 'install 'check + (assoc-ref %standard-phases 'check)) + (add-before 'check 'set-GEM_PATH + (lambda _ + (setenv "GEM_PATH" (string-append + (getenv "GEM_PATH") ":" + #$output "/lib/ruby/vendor_ruby")))) + (add-before 'check 'set-home + (lambda _ + (setenv "HOME" "/tmp")))))) + (native-inputs + (list ruby-rake-manifest + ruby-rspec + ruby-simplecov)) + (propagated-inputs + (list bundler + ruby-childprocess + ruby-contracts + ruby-cucumber + ruby-rspec-expectations + ruby-thor)) + (synopsis "Test command-line applications with Cucumber, RSpec or Minitest") + (description + "Aruba is an extension for Cucumber, RSpec and Minitest for testing +command-line applications. It supports applications written in any +language.") + (home-page "https://github.com/cucumber/aruba") + (license license:expat))) + +(define-public ruby-sys-uname + (package + (name "ruby-sys-uname") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sys-uname" version)) + (sha256 + (base32 + "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec")) + (propagated-inputs (list ruby-ffi)) + (native-inputs (list ruby-rspec)) + (synopsis "Ruby interface for gathering system information") + (description "The sys-uname library provides an interface for gathering +information about your current platform. It allows retrieving information +such as the OS name, OS version, system name, etc.") + (home-page "https://github.com/djberg96/sys-uname") + (license license:asl2.0))) + +(define-public ruby-cucumber + (package + (name "ruby-cucumber") + (version "8.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cucumber/cucumber-ruby") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1dz880fdz6rfbh1nwwcq21v65byik46jnf9gppnrqf3p5k61i55r")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-rubocop + ;; Remove extraneous Lint checks. + (lambda _ + (substitute* "Rakefile" + (("require 'rubocop/rake_task'") + "") + (("RuboCop::RakeTask.new") + "")))) + (add-after 'extract-gemspec 'strip-version-requirements + (lambda _ + (delete-file "Gemfile") ;do not use Bundler + (substitute* "cucumber.gemspec" + ;; The dependency specifications are often trailing + ;; behind and appear stricter than necessary, since the + ;; test suite passes with the newer component versions. + (("(.*add_.*dependency '[_A-Za-z0-9-]+')(.*)" + _ stripped rest) + (string-append stripped " # " rest "\n"))))) + (add-before 'check 'set-home + (lambda _ + (setenv "HOME" (getcwd))))))) + (propagated-inputs + (list ruby-builder + ruby-cucumber-ci-environment + ruby-cucumber-core + ruby-cucumber-gherkin + ruby-cucumber-html-formatter + ruby-cucumber-messages + ruby-cucumber-wire + ruby-diff-lcs + ruby-mime-types + ruby-multi-test + ruby-sys-uname)) + (native-inputs + (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 +plain language. It's designed to support a Behaviour Driven Development (BDD) +software development workflow.") + (home-page "https://cucumber.io/") + (license license:expat))) + +(define ruby-cucumber-without-tests + (package (inherit ruby-cucumber) + (arguments + '(#:tests? #f)) + (native-inputs + '()))) + +(define-public ruby-covered + (package + (name "ruby-covered") + (version "0.20.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "covered" version)) + (sha256 + (base32 + "04fpj493jn23ah5fq93956a5h2xj3z0hrckvc26fxcfsg5pbwypa")))) + (build-system ruby-build-system) + (arguments + ;; XXX: The test suite is disabled to avoid dependency cycles with + ;; ruby-samovar, through ruby-bake. + (list #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (substitute* ".gemspec" + (("\">= 3.2\"") + "\">= 2.7\""))))))) + (propagated-inputs (list ruby-console ruby-msgpack)) + (synopsis "Modern approach to code coverage in Ruby") + (description "Covered uses modern Ruby features to generate comprehensive +coverage, including support for templates which are compiled into Ruby. It +has the following features: +@itemize +@item +Incremental coverage -- if you run your full test suite, and the run a subset, +it will still report the correct coverage - so you can incrementally work on +improving coverage. +@item +Integration with RSpec, Minitest, Travis & Coveralls - no need to configure +anything - out of the box support for these platforms. +@item +It supports coverage of views -- templates compiled to Ruby code can be +tracked for coverage reporting. +@end itemize") + (home-page "https://github.com/ioquatix/covered") + (license license:expat))) + +(define-public ruby-coveralls + (package + (name "ruby-coveralls") + (version "0.8.23") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "coveralls" version)) + (sha256 + (base32 + "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "default" + #:phases #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'disable-problematic-tests + (lambda _ + (substitute* "spec/coveralls/coveralls_spec.rb" + ;; This test fails for unknown reasons (perhaps + ;; networking); skip it. + (("it \"sends existing test results\"" all) + (string-append "x" all))) + ;; 3 simplecov tests fail, perhaps due to using a + ;; newer simplecov version. + (delete-file "spec/coveralls/simplecov_spec.rb") + (substitute* "coveralls-ruby.gemspec" + (("\"spec/coveralls/simplecov_spec.rb\".freeze, ") + "")))) + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (substitute* "coveralls-ruby.gemspec" + (("%q.freeze, \\[\"~> 0.16.1\"]") + "%q.freeze"))))))) + (native-inputs + (list git-minimal/pinned + ruby-pry + ruby-rspec + ruby-truthy + ruby-vcr-expat + ruby-webmock)) + (propagated-inputs + (list ruby-json + ruby-term-ansicolor + ruby-thor + ruby-tins + ruby-simplecov)) + (synopsis "Ruby implementation of the Coveralls API") + (description "This package provides a Ruby implementation of the Coveralls +API.") + (home-page "https://coveralls.io") + (license license:expat))) + +(define-public ruby-skiptrace + (package + (name "ruby-skiptrace") + (version "0.8.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "skiptrace" version)) + (sha256 + (base32 + "1qpjy6pqd8hx4w7bai64jsr10mwbpnnb65wcbssyqcnalimi1s12")))) + (build-system ruby-build-system) + (arguments + (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{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/skiptrace") + (license license:expat))) + +(define-public ruby-bio-logger + (package + (name "ruby-bio-logger") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "bio-logger" version)) + (sha256 + (base32 + "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; rake errors, missing shoulda + (propagated-inputs + (list ruby-log4r)) + (synopsis "Log4r wrapper for Ruby") + (description "Bio-logger is a wrapper around Log4r adding extra logging +features such as filtering and fine grained logging.") + (home-page "https://github.com/pjotrp/bioruby-logger-plugin") + (license license:expat))) + +(define-public ruby-yajl-ruby + (package + (name "ruby-yajl-ruby") + (version "1.4.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "yajl-ruby" version)) + (sha256 + (base32 + "1lni4jbyrlph7sz8y49q84pb0sbj82lgwvnjnsiv01xf26f4v5wc")))) + (build-system ruby-build-system) + (arguments + (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") + (description + "Ruby C bindings to the Yajl JSON stream-based parser library. The API +is compatible with the JSON gem, so yajl-ruby can act as a drop in +replacement. + +A modified copy of yajl is used, and included in the package.") + (home-page "https://github.com/brianmario/yajl-ruby") + (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h + license:bsd-3)))) ; Included, modified copy of yajl + +(define-public ruby-yard + (package + (name "ruby-yard") + (version "0.9.34") + (source + (origin + (method git-fetch) + ;; Tests do not pass if we build from the distributed gem. + (uri (git-reference + (url "https://github.com/lsegal/yard") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "10jq0hyzyy0d6l63jxld32g36fhrclkb3rwnyp47igcik73kbagb")))) + (build-system ruby-build-system) + (arguments + (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 + ;; # 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 +documentation that can be exported to a number of formats very easily, and +also supports extending for custom Ruby constructs such as custom class level +definitions.") + (home-page "https://yardoc.org") + (license license:expat))) + +(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 + (name "ruby-spectroscope") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "spectroscope" version)) + (sha256 + (base32 + "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (with-output-to-file ".test" + (lambda _ + (display + "\ +require 'ae/should' +require 'rspec' + +include RSpec + +Test.run :default do |run| + run.files << 'spec/*_spec.rb' +end"))) + (invoke "ruby" "-Ilib" "-rrubytest" ".test")))))) + (native-inputs + (list ruby-ae ruby-rspec)) + (propagated-inputs + (list ruby-rubytest)) + (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest") + (description "Spectroscope is a Behavior-Driven Development (BDD) +framework built on RubyTest, designed to emulate RSpec in most respects. It +is assertion framework independent so any number of assertion systems can be +used, such as Assay or AE.") + (home-page "http://rubyworks.github.com/spectroscope/") + (license license:bsd-2))) + +(define-public ruby-tomparse + (package + (name "ruby-tomparse") + (version "0.4.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "tomparse" version)) + (sha256 + (base32 + "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8")))) + (build-system ruby-build-system) + ;; TODO: Tests require citron and rulebow, not yet packaged. + (arguments '(#:tests? #f)) + (synopsis "TomDoc parser for Ruby") + (description "TomParse is a TomDoc parser for Ruby. It takes a code +comment as input and parses it into a convenient object-oriented structure in +accordance with the TomDoc standard. See +@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the +TomDoc format.") + (home-page "http://rubyworks.github.com/tomparse/") + (license license:bsd-2))) + +(define-public ruby-yard-tomdoc + (package + (name "ruby-yard-tomdoc") + (version "0.7.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "yard-tomdoc" version)) + (sha256 + (base32 + "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z")))) + (build-system ruby-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "rubytest" "-Ilib" "-Itest" "test/")))))) + (native-inputs + (list ruby-rubytest-cli ruby-spectroscope ruby-ae)) + (propagated-inputs + (list ruby-tomparse ruby-yard)) + (synopsis "TomDoc syntax for YARD") + (description "This module adds support for the TomDoc documentation format +to YARD, a documentation generation tool for Ruby.") + (home-page "http://rubyworks.github.com/yard-tomdoc/") + (license license:expat))) + +(define-public ruby-clap + (package + (name "ruby-clap") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "clap" version)) + (sha256 + (base32 + "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q")))) + (build-system ruby-build-system) + ;; Clap needs cutest for running tests, but cutest needs clap. + (arguments `(#:tests? #f)) + (synopsis "Command line argument parsing for simple applications") + (description + "Clap provides command line argument parsing features. It covers the +simple case of executing code based on the flags or parameters passed.") + (home-page "https://github.com/djanowski/cutest") + (license license:expat))) + +(define-public ruby-cutest + (package + (name "ruby-cutest") + (version "1.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cutest" version)) + (sha256 + (base32 + "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-clap)) + (synopsis "Run tests in separate processes") + (description + "Cutest runs tests in separate processes to avoid shared state.") + (home-page "https://github.com/djanowski/cutest") + (license license:expat))) + +(define-public ruby-pygmentize + (package + (name "ruby-pygmentize") + (version "0.0.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pygmentize" version)) + (sha256 + (base32 + "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-pygmentize-path + (lambda _ + (substitute* "lib/pygmentize.rb" + (("\"/usr/bin/env python.*") + (string-append "\"" (which "pygmentize") "\"\n"))))) + (add-after 'build 'do-not-use-vendor-directory + (lambda _ + ;; Remove bundled pygments sources + ;; FIXME: ruby-build-system does not support snippets. + (delete-file-recursively "vendor") + (substitute* "pygmentize.gemspec" + (("\"vendor/\\*\\*/\\*\",") ""))))))) + (inputs + `(("pygments" ,python-pygments))) + (native-inputs + (list ruby-cutest ruby-nokogiri)) + (synopsis "Thin Ruby wrapper around pygmentize") + (description + "Pygmentize provides a simple way to call pygmentize from within a Ruby +application.") + (home-page "https://github.com/djanowski/pygmentize") + (license license:expat))) + +(define-public ruby-event-emitter + (package + (name "ruby-event-emitter") + (version "0.2.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "event_emitter" version)) + (sha256 + (base32 + "148k9qv8102l3m6klc24dwip79f9y4bjr5z19dckd7ffbjyrf9n7")))) + (build-system ruby-build-system) + (arguments + (list #:phases #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (substitute* "event_emitter.gemspec" + (("~> 1.15") ">= 1.15"))))))) + (synopsis "Ruby port of EventEmitter from Node.js") + (description + "This package provides a Ruby port of EventEmitter from Node.js.") + (home-page "https://shokai.github.io/event_emitter/") + (license license:expat))) + +(define-public ruby-eventmachine + (package + (name "ruby-eventmachine") + (version "1.2.7") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "eventmachine" version)) + (sha256 + (base32 + "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; test suite tries to connect to google.com + (inputs + (list openssl)) + (native-inputs + (list ruby-rake-compiler)) + (synopsis "Single-threaded network event framework for Ruby") + (description + "EventMachine implements a single-threaded engine for arbitrary network +communications. EventMachine wraps all interactions with sockets, allowing +programs to concentrate on the implementation of network protocols. It can be +used to create both network servers and clients.") + ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted. + (home-page "https://github.com/eventmachine/eventmachine") + (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT + +(define-public ruby-ruby-engine + (package + (name "ruby-ruby-engine") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby_engine" version)) + (sha256 + (base32 + "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'extract-gemspec 'clean-up + (lambda _ + (delete-file "Gemfile.lock") + (substitute* "ruby_engine.gemspec" + ;; Remove unnecessary imports that would entail further + ;; dependencies. + ((".*.freeze, \\[\"~> 10.0\"\\]") + "%q.freeze, [\">= 10.0\"]") + ;; Soften the rspec dependency + (("%q.freeze, \\[\"~> 2.4\"\\]") + "%q.freeze, [\">= 2.4\"]")) + (substitute* "Rakefile" + (("require 'rubygems/tasks'") "") + (("Gem::Tasks.new") "")) + ;; Remove extraneous .gem file that otherwise gets installed. + (delete-file-recursively "pkg")))))) + (native-inputs + (list bundler ruby-rake ruby-rspec)) + (synopsis "Simplifies checking for Ruby implementation") + (description + "@code{ruby_engine} provides an RubyEngine class that can be used to +check which implementation of Ruby is in use. It can provide the interpreter +name and provides query methods such as @code{RubyEngine.mri?}.") + (home-page "https://github.com/janlelis/ruby_engine") + (license license:expat))) + +(define-public ruby-mimemagic + (package + (name "ruby-mimemagic") + (version "0.3.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mimemagic" version)) + (sha256 + (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; This phase breaks the tests, as it patches some of the test data. + (delete 'patch-source-shebangs)))) + (native-inputs + (list ruby-bacon)) + (synopsis "Ruby library for MIME detection by extension or content") + (description + "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by +extension or content, using the freedesktop.org.xml shared-mime-info +database.") + (home-page "https://github.com/minad/mimemagic") + (license license:expat))) + +(define-public ruby-mini-mime + (package + (name "ruby-mini-mime") + (version "1.1.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mini_mime" version)) + (sha256 + (base32 + "0lbim375gw2dk6383qirz13hgdmxlan0vc5da2l072j3qw6fqjm5")))) + (build-system ruby-build-system) + (synopsis "Lightweight mime type lookup toy") + (description "This package provides a lightweight mime type lookup toy.") + (home-page "https://github.com/discourse/mini_mime") + (license license:expat))) + +(define-public ruby-fileutils + (package + (name "ruby-fileutils") + (version "1.7.0") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/fileutils") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0m68gaqclnc2wflilmrnr19kky2gr6fjf6k3yq02sf9scs281kid")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'disable-problematic-tests + (lambda _ + (substitute* "test/fileutils/test_fileutils.rb" + ;; The 'test_chown' tests depends on /etc/groups, which + ;; doesn't exist in the build environment. + (("def test_chown.*" all) + (string-append all " return true\n")) + ;; The 'test_cp_r_dev' expects a RuntimeError to be raised + ;; when copying a char device to a directory, but this is not + ;; triggered in the build environment, for reasons unknown. + (("def test_cp_r_dev.*" all) + (string-append all " return true\n")))))))) + (synopsis "Ruby utility library to manipulate files") + (description "The FileUtils Ruby library includes Several file utility +methods for copying, moving, removing, etc.") + (home-page "https://github.com/ruby/fileutils") + (license license:bsd-2))) + +(define-public ruby-sqlite3 + (package + (name "ruby-sqlite3") + (version "2.5.0") + (source + (origin + (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 + "1fanv7bv5lszd5g752yy8nmpjhrl9gqwbbkbis2xbh83y96f2zfm")))) + (build-system ruby-build-system) + (arguments + (list + #:gem-flags #~(list "--" "--enable-system-libraries") + #:modules '((guix build ruby-build-system) + (guix build utils) + (ice-9 rdelim) + (ice-9 textual-ports)) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + ;; Don't try to format C code, remove rubocop-rake. + (delete-file "rakelib/format.rake") + ;; Don't try to run valgrind-like memory tests. + ;; This cuts all lines after Minitest::TestTask.create + (with-atomic-file-replacement + "rakelib/test.rake" + (lambda (in out) + (let loop () + (let ((line (read-line in))) + (cond + ((eof-object? line) #f) + ((string-prefix? "Minitest::TestTask.create" line) #f) + (else + (format out "~a~%" line) + (loop))))))))) + (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-rake-compiler-dock)) + (synopsis "Interface with SQLite3 databases") + (description + "This module allows Ruby programs to interface with the SQLite3 database +engine.") + (home-page + "https://github.com/sparklemotion/sqlite3-ruby") + (license license:bsd-3))) + +(define-public ruby-sqlite3-1.4 + (package/inherit ruby-sqlite3 + (name "ruby-sqlite3") + (version "1.4.4") + (source + (origin + (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 + "0ngirjbai3f5ki2sf6m4gxbbrjpr3b35bz5nrz1cifyw1jk6a6sr")))) + (arguments + (substitute-keyword-arguments (package-arguments ruby-sqlite3) + ((#:tests? #t #t) #f) + ((#:phases phases #~%standard-phases) + #~(modify-phases #$phases + (delete 'relax-requirements) + (add-after 'unpack 'fix-version + (lambda _ + (substitute* "sqlite3.gemspec" + (("s\\.version = .*") + (format #f "s.version = ~s~%" #$version))))))))))) + +(define-public ruby-shoulda-context + (package + (name "ruby-shoulda-context") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "shoulda-context" version)) + (sha256 + (base32 + "0d1clcp92jv8756h09kbc55qiqncn666alx0s83za06q5hs4bpvs")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Do not run tests to avoid circular dependence with rails. + ;; Instead just import the library to test. + (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))) + (synopsis "Test::Unit context framework extracted from Shoulda") + (description + "@code{shoulda-context} is the context framework extracted from Shoulda. +Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds +context, setup, and should blocks combine to produce natural test method +names.") + (home-page "https://github.com/thoughtbot/shoulda-context") + (license license:expat))) + +(define-public ruby-shoulda-matchers + (package + (name "ruby-shoulda-matchers") + (version "5.3.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "shoulda-matchers" version)) + (sha256 + (base32 + "11igjgh16dl5pwqizdmclzlzpv7mbmnh8fx7m9b5kfsjhwxqdfpn")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Do not run tests to avoid circular dependence with rails. Instead + ;; just import the library to test. + (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))) + (propagated-inputs + (list ruby-activesupport)) + (synopsis "Collection of testing matchers extracted from Shoulda") + (description + "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that +test common Rails functionality. These tests would otherwise be much longer, +more complex, and error-prone.") + (home-page "https://github.com/thoughtbot/shoulda-matchers") + (license license:expat))) + +(define-public ruby-shoulda + (package + (name "ruby-shoulda") + (version "4.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "shoulda" version)) + (sha256 + (base32 + "02lww34kn1g6lidp4rx4rs6bqvirrzxlfw1y2wm11aif8f622xz6")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Don't run tests to avoid circular dependence with rails. + ;; Instead just import the library to test. + (invoke "ruby" "-Ilib" "-r" "shoulda")))) + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (substitute* "shoulda.gemspec" + ;; An older version of shoulda-matchers (4.0) is used, out of + ;; little maintenance rather than because of an real + ;; incompatibility (see: + ;; https://github.com/thoughtbot/shoulda/issues/275). + ((", \\[\"~> 4.0\"]") ""))))))) + (propagated-inputs + (list ruby-shoulda-context ruby-shoulda-matchers)) + (synopsis "Context framework and matchers for testing") + (description + "@code{shoulda} is a meta-package combining @code{shoulda-context} and +@code{shoulda-matchers} providing tools for writing tests.") + (home-page "https://github.com/thoughtbot/shoulda") + (license license:expat))) + +(define-public ruby-unf + (package + (name "ruby-unf") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "unf" version)) + (sha256 + (base32 + "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'add-dependency-to-bundler + (lambda _ + ;; test-unit is required but not provided by the bundler + ;; environment. This is fixed in the upstream repository but fix + ;; has not been released. + (substitute* "Gemfile" + (("^gemspec") "gem 'test-unit'\ngemspec"))))))) + (propagated-inputs + (list ruby-unf-ext)) + (native-inputs + (list ruby-shoulda bundler ruby-test-unit)) + (synopsis "Unicode Normalization Form support to Ruby and JRuby") + (description + "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form +support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and +@code{java.text.Normalizer} on JRuby.") + (home-page "https://github.com/knu/ruby-unf") + (license license:bsd-2))) + +(define-public ruby-warden + (package + (name "ruby-warden") + (version "1.2.8") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "warden" version)) + (sha256 + (base32 + "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No included tests + (propagated-inputs + (list ruby-rack)) + (synopsis "Rack middleware providing authentication") + (description + "Warden is a Rack-based middleware that provides a mechanism for +authentication in Ruby web applications.") + (home-page "https://github.com/wardencommunity/warden") + (license license:expat))) + +(define-public ruby-warden-oauth2 + (package + (name "ruby-warden-oauth2") + (version "0.0.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "warden-oauth2" version)) + (sha256 + (base32 + "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + (substitute* "Gemfile" + ;; All of these gems relate to development, and are unnecessary + ;; when running the tests + (("gem 'guard-bundler'") "") + (("gem 'guard'") "") + (("gem 'guard-rspec'") "") + (("gem 'rb-fsevent'") "") + (("gem 'pry'") "") + (("gem 'growl'") "")))) + ;; The test suite doesn't work with rspec@2, and this is incompatible + ;; with the current version of Rake, so invoke Rspec directly + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "bundle" "exec" "rspec"))))))) + (propagated-inputs + (list ruby-warden)) + (native-inputs + (list bundler ruby-rspec-2 ruby-rack-test)) + (synopsis "OAuth 2.0 strategies for Warden") + (description + "This library extends Warden to support OAuth 2.0 authorized API +requests.") + (home-page "https://github.com/opperator/warden-oauth2") + (license license:expat))) + +(define-public ruby-webmock + (package + (name "ruby-webmock") + (version "3.11.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "webmock" version)) + (sha256 + (base32 + "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v")))) + (build-system ruby-build-system) + (native-inputs + (list bundler ruby-rspec)) + (propagated-inputs + (list ruby-addressable ruby-crack ruby-hashdiff)) + (synopsis "Allows stubbing and setting expectations on HTTP requests") + (description + "WebMock allows stubbing HTTP requests and setting expectations on HTTP +requests. This is useful when testing software.") + (home-page "https://github.com/bblimke/webmock") + (license license:expat))) + +(define-public ruby-webmock-2 + (package + (inherit ruby-webmock) + (name "ruby-webmock") + (version "2.3.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "webmock" version)) + (sha256 + (base32 + "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5")))))) + +(define-public ruby-unicode-display-width + (package + (name "ruby-unicode-display-width") + (version "2.4.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "unicode-display_width" version)) + (sha256 + (base32 + "1gi82k102q7bkmfi7ggn9ciypn897ylln1jk9q67kjhr39fj043a")))) + (build-system ruby-build-system) + (arguments + '(;; Test data not included. + #:tests? #f)) + (synopsis "Determine the monospace display width of Ruby strings") + (description + "@code{Unicode::DisplayWidth} is a Ruby library which can determine the +display width of strings in Ruby.") + (home-page "https://github.com/janlelis/unicode-display_width") + (license license:expat))) + +;; There is another gem called 'ruby-version' so we use an underscore in this +;; name +(define-public ruby_version + (package + (name "ruby_version") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby_version" version)) + (sha256 + (base32 + "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-dependencies + (lambda _ + ;; Remove the Gemfile.lock, as we want to use Guix packages at + ;; whatever versions. + (delete-file "Gemfile.lock") + ;; Remove the included gem files as they unnecessary. + (delete-file-recursively "pkg/") + ;; Accept any version of rake, rdoc and rspec + (substitute* "ruby_version.gemspec" + (("%q)\n") + (("%q)\n") + (("%q)\n")) + ;; Do not use bundler. + (substitute* "Rakefile" + (("Bundler\\.setup.*") "nil\n"))))))) + (native-inputs + (list ruby-rdoc ruby-rspec ruby-rubygems-tasks)) + (synopsis "Ruby library to help check the Ruby version") + (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify +checking for the right Ruby version in software.") + (home-page "https://github.com/janlelis/ruby_version") + (license license:expat))) + +(define-public ruby-websocket-client-simple + (package + (name "ruby-websocket-client-simple") + (version "0.6.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "websocket-client-simple" version)) + (sha256 + (base32 + "1ypl4xvlh5c99zbn20sifv7gv04zi20ly464vsgikfrpn5f37bid")))) + (build-system ruby-build-system) + (arguments (list #:test-target "default")) + (native-inputs (list ruby-eventmachine ruby-websocket-eventmachine-server)) + (propagated-inputs (list ruby-event-emitter ruby-websocket)) + (synopsis "Simple WebSocket client for Ruby") + (description "This package provides a simple WebSocket client for Ruby.") + (home-page "https://github.com/ruby-jp/websocket-client-simple") + (license license:expat))) + +(define-public ruby-websocket-eventmachine-base + (package + (name "ruby-websocket-eventmachine-base") + (version "1.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "websocket-eventmachine-base" version)) + (sha256 + (base32 + "0wiz61mcwgs3k21cdr5l9b4jpg29gl6mflfampww2v525yc3hr1r")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f)) ;no test suite + (propagated-inputs (list ruby-eventmachine ruby-websocket + ruby-websocket-native)) + (synopsis "WebSocket base for Ruby client and server") + (description "This package provides a WebSocket base for a Ruby client and +server.") + (home-page "https://github.com/imanel/websocket-eventmachine-base") + (license license:expat))) + +(define-public ruby-websocket-eventmachine-server + (package + (name "ruby-websocket-eventmachine-server") + (version "1.0.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "websocket-eventmachine-server" version)) + (sha256 + (base32 + "0iqpzc8s028nck1flqaj784gvyn64wy1h3svpa4y2847wklg8sms")))) + (build-system ruby-build-system) + ;; TODO: The test suite requires Autobahn, not yet packaged in Guix. + (arguments (list #:tests? #f)) + (propagated-inputs (list ruby-websocket-eventmachine-base)) + (synopsis "WebSocket server for Ruby") + (description "This package provides a WebSocket server for Ruby.") + (home-page "https://github.com/imanel/websocket-eventmachine-server") + (license license:expat))) + +(define-public ruby-websocket-native + (package + (name "ruby-websocket-native") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "websocket-native" version)) + (sha256 + (base32 + "1kgvd3gyzh7hk0ddzn85jrs4csxm54qnvla95ldyn6rzgfbjchdn")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-before 'check 'disable-problematic-tests + (lambda _ + (substitute* "spec/websocket_spec.rb" + (("it \"should have mask_native defined\"" all) + (string-append "x" all))))) + (add-after 'build 'compile + (lambda _ + (invoke "rake" "compile")))))) + (native-inputs (list ruby-rake-compiler ruby-rspec)) + (synopsis "Native Ruby extension for the WebSocket gem") + (description "This package provides a native extension that can increase +performance by about 25% compared to the pure Ruby WebSocket implementation.") + (home-page "https://github.com/imanel/websocket-ruby-native") + (license license:expat))) + +(define-public ruby-websocket-driver + (package + (name "ruby-websocket-driver") + (version "0.7.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "websocket-driver" version)) + (sha256 + (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no included tests + (propagated-inputs + (list ruby-websocket-extensions)) + (synopsis "WebSocket protocol handler with pluggable I/O") + (description + "@code{websocket-driver} provides a complete implementation of the +WebSocket protocols that can be hooked up to any TCP library") + (home-page "https://github.com/faye/websocket-driver-ruby") + (license license:expat))) + +(define-public ruby-websocket-extensions + (package + (name "ruby-websocket-extensions") + (version "0.1.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "websocket-extensions" version)) + (sha256 + (base32 + "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270")))) + (build-system ruby-build-system) + (arguments + '(;; No included tests + #:tests? #f)) + (synopsis "Generic extension manager for WebSocket connections") + (description + "@code{websocket-extensions} provides a container for registering +extension plugins.") + (home-page "https://github.com/faye/websocket-extensions-ruby") + (license license:expat))) + +(define-public ruby-domain-name + (package + (name "ruby-domain-name") + (version "0.5.20190701") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "domain_name" version)) + (sha256 + (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-versions + (lambda _ + ;; Fix NameError that appears to already be fixed upstream. + (substitute* "Rakefile" + (("DomainName::VERSION") + "Bundler::GemHelper.gemspec.version")) + ;; Loosen unnecessarily strict test-unit version specification. + (substitute* "domain_name.gemspec" + ((".freeze, \\[\\\"~> 2.5.5") ", [\">0")) + #t))))) + (propagated-inputs + (list ruby-unf)) + (native-inputs + (list ruby-shoulda bundler ruby-test-unit)) + (synopsis "Domain name manipulation library") + (description + "@code{domain_name} is a Domain name manipulation library. It parses a +domain name ready for extracting the registered domain and TLD (Top Level +Domain). It can also be used for cookie domain validation based on the Public +Suffix List.") + (home-page "https://github.com/knu/ruby-domain_name") + (license license:bsd-2))) + +(define-public ruby-dotenv + (package + (name "ruby-dotenv") + (version "3.1.7") + (source (origin + (method git-fetch) ;for the tests + (uri (git-reference + (url "https://github.com/bkeepers/dotenv") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19j0acy12si537hwi4q54q8n5ycmlvfd2ik5y6r7jir6ww06l8yx")))) + (build-system ruby-build-system) + (arguments + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'do-not-build-dotenv-rails + (lambda _ + ;; The repository includes the definitions of two packages, + ;; 'dotenv' and 'dotenv-rails'. Since we want to package them + ;; separately, remove the dotenv-rails and associated Rake + ;; tasks. + (delete-file "dotenv-rails.gemspec") + (delete-file "spec/dotenv/rails_spec.rb") + (delete-file "spec/dotenv/log_subscriber_spec.rb") + (substitute* "spec/spec_helper.rb" + (("require \"dotenv\"" all) + (string-append "require \"pathname\"\n" all))) + (substitute* "Rakefile" + (("DotenvRailsGemHelper.install_tasks name: \"dotenv-rails\"") + "") + ((", \"dotenv-rails:.*\"") + "")))) + (replace 'replace-git-ls-files + (lambda _ + (substitute* "dotenv.gemspec" + (("`git ls-files (README.md LICENSE lib bin) \\| ([^`]*`)" + all files command) + (string-append + "`find " files " -type f | sort | " command)))))))) + (native-inputs (list ruby-standard ruby-rspec)) + (synopsis "Ruby library for setting environment variables") + (description "Dotenv is a Ruby library for setting environment variables +defined in a @file{.env} file.") + (home-page "https://github.com/bkeepers/dotenv") + (license license:expat))) + +(define-public ruby-dotenv-rails + (package + (inherit ruby-dotenv) + (name "ruby-dotenv-rails") + (arguments + (substitute-keyword-arguments (package-arguments ruby-dotenv) + ((#:phases phases '%standard-phases) + #~(modify-phases #$phases + (delete 'do-not-build-dotenv-rails) + (add-after 'unpack 'delete-Gemfile + (lambda _ + ;; It defines extraneous dependencies; remove it. + (delete-file "Gemfile"))) + (add-after 'unpack 'remove-extraneous-gemspec + (lambda _ + (delete-file "dotenv.gemspec") + (substitute* "Gemfile" + ((".*\"dotenv\".*") "")) + (substitute* "Rakefile" + ;; Remove the dotenv-related Rake tasks. + (("Bundler::GemHelper.install_tasks name: \"dotenv\"") + "") + (("\"dotenv:[^\"]*\", ") + "")))) + (replace 'replace-git-ls-files + (lambda _ + (substitute* "dotenv-rails.gemspec" + (("`git ls-files lib \\| grep rails`") + "`find lib -type f | sort | grep rails`")))))))) + (native-inputs (list ruby-rspec ruby-spring ruby-standard)) + (propagated-inputs (list ruby-dotenv ruby-railties)) + (synopsis "Ruby library for setting environment variables in Rails project") + (description "Dotenv is a Ruby library for setting environment variables +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.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "http-cookie" version)) + (sha256 + (base32 + "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk")))) + (build-system ruby-build-system) + (arguments + (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 + (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 +RFC 6265. It has been designed with security, standards compliance and +compatibility in mind, to behave just the same as today's major web browsers. +It has built-in support for the legacy @code{cookies.txt} and +@code{cookies.sqlite} formats of Mozilla Firefox.") + (home-page "https://github.com/sparklemotion/http-cookie") + (license license:expat))) + +(define-public ruby-httpclient + (package + (name "ruby-httpclient") + (version "2.8.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "httpclient" version)) + (sha256 + (base32 + "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99")))) + (build-system ruby-build-system) + (arguments + '(;; TODO: Some tests currently fail + ;; ------ + ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings, + ;; 2 omissions, 0 notifications + ;; 91.866% passed + ;; ------ + ;; 6.49 tests/s, 22.41 assertions/s + #:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "ruby" + "-Ilib" + "test/runner.rb"))))))) + (native-inputs + (list ruby-rack)) + (synopsis + "Make HTTP requests with support for HTTPS, Cookies, authentication and more") + (description + "The @code{httpclient} ruby library provides functionality related to +HTTP. Compared to the @code{net/http} library, @code{httpclient} also provides +Cookie, multithreading and authentication (digest, NTLM) support. + +Also provided is a @command{httpclient} command, which can perform HTTP +requests either using arguments or with an interactive prompt.") + (home-page "https://github.com/nahi/httpclient") + (license license:ruby))) + +(define-public ruby-ansi + (package + (name "ruby-ansi") + (version "1.5.0") + (source + (origin + (method git-fetch) + ;; Fetch from GitHub as the gem does not contain testing code. + (uri (git-reference + (url "https://github.com/rubyworks/ansi") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Disable testing to break the cycle ansi, ae, ansi, as well as the + ;; cycle ansi, qed, ansi. Instead simply test that the library can + ;; be require'd. + (replace 'check + (lambda _ + (invoke "ruby" "-Ilib" "-r" "ansi"))) + (add-before 'validate-runpath 'replace-broken-symlink + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (file (string-append + out "/lib/ruby/vendor_ruby/gems/ansi-" + ,version "/lib/ansi.yml"))) + ;; XXX: This symlink is broken since ruby 2.4. + ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html + (delete-file file) + (symlink "../.index" file))))))) + (synopsis "ANSI escape code related libraries") + (description + "This package is a collection of ANSI escape code related libraries +enabling ANSI colorization and stylization of console output. Included in the +library are the @code{Code} module, which defines ANSI codes as constants and +methods, a @code{Mixin} module for including color methods, a @code{Logger}, a +@code{ProgressBar}, and a @code{String} subclass. The library also includes a +@code{Terminal} module which provides information about the current output +device.") + (home-page "https://rubyworks.github.io/ansi/") + (license license:bsd-2))) + +(define-public ruby-systemu + (package + (name "ruby-systemu") + (version "2.6.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "systemu" version)) + (sha256 + (base32 + "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'set-version + (lambda _ + (setenv "VERSION" ,version)))))) + (synopsis "Capture of stdout/stderr and handling of child processes") + (description + "Systemu can be used on any platform to return status, stdout, and stderr +of any command. Unlike other methods like @code{open3} and @code{popen4} +there is no danger of full pipes or threading issues hanging your process or +subprocess.") + (home-page "https://github.com/ahoward/systemu") + (license license:ruby))) + +(define-public ruby-bcrypt + (package + (name "ruby-bcrypt") + (version "3.1.20") + ;; FIXME: Unbundle the bcrypt library used. + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bcrypt-ruby/bcrypt-ruby") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0q6h8kmjb34hg6qjv31v374n3cavv00drsfyzv6nybdwipgyg62i")))) + (build-system ruby-build-system) + (arguments (list #:test-target "default")) ;compile + spec + (native-inputs (list ruby-rake-compiler ruby-rspec)) + (synopsis "Ruby bcrypt wrapper") + (description "This Ruby library provides a simple wrapper to bcrypt, a +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") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "bio-commandeer" version)) + (sha256 + (base32 + "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + ;; Run test without calling 'rake' so that jeweler is + ;; not required as an input. + (lambda _ + (invoke "rspec" "spec/bio-commandeer_spec.rb")))))) + (propagated-inputs + (list ruby-bio-logger ruby-systemu)) + (native-inputs + (list bundler ruby-rspec)) + (synopsis "Simplified running of shell commands from within Ruby") + (description + "Bio-commandeer provides an opinionated method of running shell commands +from within Ruby. The advantage of bio-commandeer over other methods of +running external commands is that when something goes wrong, messages printed +to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra +detail to ease debugging.") + (home-page "https://github.com/wwood/bioruby-commandeer") + (license license:expat))) + +(define-public ruby-rubytest + (package + (name "ruby-rubytest") + (version "0.8.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rubytest" version)) + (sha256 + (base32 + "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz")))) + (build-system ruby-build-system) + (arguments + ;; Disable regular testing to break the cycle rubytest, qed, brass, + ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead + ;; simply test that the library can be require'd. + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "ruby" "-Ilib" "-r" "rubytest")))))) + (propagated-inputs + (list ruby-ansi)) + (synopsis "Universal test harness for Ruby") + (description + "Rubytest is a testing meta-framework for Ruby. It can handle any +compliant test framework and can run tests from multiple frameworks in a +single pass.") + (home-page "https://rubyworks.github.io/rubytest") + (license license:bsd-2))) + +(define-public ruby-brass + (package + (name "ruby-brass") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "brass" version)) + (sha256 + (base32 + "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka")))) + (build-system ruby-build-system) + (arguments + ;; Disable tests to break the cycle brass, lemon, ae, qed, brass. + ;; Instead simply test that the library can be require'd. + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "ruby" "-Ilib" "-r" "brass"))))))) + (synopsis "Basic foundational assertions framework") + (description + "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic +foundational assertions framework for other assertion and test frameworks to +make use of.") + (home-page "https://rubyworks.github.io/brass") + (license license:bsd-2))) + +(define-public ruby-qed + (package + (name "ruby-qed") + (version "2.9.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "qed" version)) + (sha256 + (base32 + "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "ruby" "-Ilib" "bin/qed"))))))) + (native-inputs + (list ruby-ae-bootstrap)) + (propagated-inputs + (list ruby-ansi ruby-brass)) + (synopsis "Test framework utilizing literate programming techniques") + (description + "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for +@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven +Development} (BDD) utilizing Literate Programming techniques. QED sits +somewhere between lower-level testing tools like @code{Test::Unit} and +requirement specifications systems like Cucumber.") + (home-page "https://rubyworks.github.io/qed") + (license license:bsd-2))) + +(define-public ruby-que + (package + (name "ruby-que") + (version "1.0.0.beta3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "que" version)) + (sha256 + (base32 + "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No included tests + (synopsis "Job queue using PostgreSQL written in Ruby") + (description + "This package provides a job queue that uses PostgreSQL for storing jobs +and locking between worker processes.") + (home-page "https://github.com/chanks/que") + (license license:expat))) + +(define-public ruby-queue-classic + (package + (name "ruby-queue-classic") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "queue_classic" version)) + (sha256 + (base32 + "0npyhajf2fc80apkw9s2kj0n254w5lcl4xpjidg5d5w1fb19abh6")))) + (build-system ruby-build-system) + (arguments (list #:tests? #f)) ;tests require a postgresql server + (native-inputs (list ruby-activerecord ruby-minitest-reporters)) + (propagated-inputs (list ruby-pg)) + (synopsis "Queuing library for Ruby") + (description "@code{queue_classic} is a queuing library for Ruby +applications (Rails, Sinatra, etc.) @code{queue_classic} features +asynchronous job polling, database maintained locks and has a single +dependency, @code{pg}.") + (home-page "https://github.com/QueueClassic/queue_classic") + (license license:expat))) + +(define-public ruby-pairing-heap + (package + (name "ruby-pairing-heap") + (version "3.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pairing_heap" version)) + (sha256 + (base32 + "059kqpw53cancnp0bp7y1s74y1955riw33w3lqfbnms4b4mdh5zj")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "Rakefile" + (("require \"standard/rake\"") "") + ((":\"standard:fix\",") ""))))))) + (synopsis "Priority queue in pure Ruby") + (description "This package provides a performant priority queue in pure +ruby with support for changing priority using pairing heap data structure") + (home-page "https://github.com/mhib/pairing_heap") + (license license:expat))) + +(define-public ruby-ae + (package + (name "ruby-ae") + (version "1.8.2") + (source + (origin + (method git-fetch) + ;; Fetch from github so tests are included. + (uri (git-reference + (url "https://github.com/rubyworks/ae") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "qed")))) + (add-before 'validate-runpath 'replace-broken-symlink + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (file (string-append + out "/lib/ruby/vendor_ruby/gems/ae-" + ,version "/lib/ae.yml"))) + ;; XXX: This symlink is broken since ruby 2.4. + ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html + (delete-file file) + (symlink "../.index" file))))))) + (propagated-inputs + (list ruby-ansi)) + (native-inputs + (list ruby-qed)) + (synopsis "Assertions library") + (description + "Assertive Expressive (AE) is an assertions library specifically designed +for reuse by other test frameworks.") + (home-page "https://rubyworks.github.io/ae/") + (license license:bsd-2))) + +(define-public ruby-ae-bootstrap + (hidden-package + (package/inherit ruby-ae + (arguments + (substitute-keyword-arguments + (package-arguments ruby-ae) + ((#:tests? _ #t) #f))) + (native-inputs '())))) + +(define-public ruby-lemon + (package + (name "ruby-lemon") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "lemon" version)) + (sha256 + (base32 + "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check (lambda _ (invoke "qed")))))) + (propagated-inputs + (list ruby-ae ruby-ansi ruby-rubytest)) + (native-inputs + (list ruby-qed)) + (synopsis "Test framework correlating code structure and test unit") + (description + "Lemon is a unit testing framework that enforces highly formal +case-to-class and unit-to-method test construction. This enforcement can help +focus concern on individual units of behavior.") + (home-page "https://rubyworks.github.io/lemon") + (license license:bsd-2))) + +(define-public ruby-rubytest-cli + (package + (name "ruby-rubytest-cli") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rubytest-cli" version)) + (sha256 + (base32 + "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; no tests + (propagated-inputs + (list ruby-ansi ruby-rubytest)) + (synopsis "Command-line interface for rubytest") + (description + "Rubytest CLI is a command-line interface for running tests for +Rubytest-based test frameworks. It provides the @code{rubytest} executable.") + (home-page "https://rubyworks.github.io/rubytest-cli") + (license license:bsd-2))) + +(define-public ruby-hashery + (package + (name "ruby-hashery") + (version "2.1.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "hashery" version)) + (sha256 + (base32 + "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "qed") + (invoke "rubytest" "-Ilib" "-Itest" "test/")))))) + (native-inputs + (list ruby-rubytest-cli ruby-qed ruby-lemon)) + (synopsis "Hash-like classes with extra features") + (description + "The Hashery is a tight collection of @code{Hash}-like classes. +Included are the auto-sorting @code{Dictionary} class, the efficient +@code{LRUHash}, the flexible @code{OpenHash} and the convenient +@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which +defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's +standard @code{Hash} making it possible to subclass and augment to fit any +specific use case.") + (home-page "https://rubyworks.github.io/hashery") + (license license:bsd-2))) + +(define-public ruby-rc4 + (package + (name "ruby-rc4") + (version "0.1.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby-rc4" version)) + (sha256 + (base32 + "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "rspec" "spec/rc4_spec.rb")))))) + (native-inputs + (list ruby-rspec-2)) + (synopsis "Implementation of the RC4 algorithm") + (description + "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.") + (home-page "https://github.com/caiges/Ruby-RC4") + (license license:expat))) + +(define-public ruby-afm + (package + (name "ruby-afm") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "afm" version)) + (sha256 + (base32 + "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8")))) + (build-system ruby-build-system) + (native-inputs + (list bundler)) + (synopsis "Read Adobe Font Metrics (afm) files") + (description + "This library provides methods to read @dfn{Adobe Font Metrics} (afm) +files and use the data therein.") + (home-page "https://github.com/halfbyte/afm") + (license license:expat))) + +(define-public ruby-ascii85 + (package + (name "ruby-ascii85") + (version "1.0.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "Ascii85" version)) + (sha256 + (base32 + "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs")))) + (build-system ruby-build-system) + (native-inputs + (list bundler)) + (synopsis "Encode and decode Ascii85 binary-to-text encoding") + (description + "This library provides methods to encode and decode Ascii85 +binary-to-text encoding. The main modern use of Ascii85 is in PostScript and +@dfn{Portable Document Format} (PDF) file formats.") + (home-page "https://github.com/datawraith/ascii85gem") + (license license:expat))) + +(define-public ruby-ttfunk + (package + (name "ruby-ttfunk") + (version "1.7.0") + (source + (origin + (method git-fetch) + ;; Fetch from github as the gem does not contain testing code. + (uri (git-reference + (url "https://github.com/prawnpdf/ttfunk") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jyxn928mpyb1sikjd93s3v8fmh33232pq41ziaph513j7am6fi5")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" ;avoid the rubocop target + #: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* "ttfunk.gemspec" + ((".*spec.signing_key.*") ""))))))) + (native-inputs (list ruby-prawn-dev)) + (synopsis "Font metrics parser for the Prawn PDF generator") + (description + "TTFunk is a TrueType font parser written in pure Ruby. It is used as +part of the Prawn PDF generator.") + (home-page "https://github.com/prawnpdf/ttfunk") + ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE + ;; for details." + (license %prawn-project-licenses))) + +(define-public ruby-puma + (package + (name "ruby-puma") + (version "6.6.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 + "1pdd7s403pi4y75s1sb4jkghhmm2w9zcqifj7z7yx4z0qfs7lvzv")))) + (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") + ;; The Openssl certificate has expired, causing these tests to fail. + (skip-tests "test/test_puma_server_ssl.rb" + "test_verify_fail_if_client_expired_cert" + "test_verify_client_cert" + "test_server_ssl_with_cert_pem_and_key_pem") + (skip-tests "test/test_integration_ssl.rb" + "test_ssl_run_with_curl_client") + (skip-tests "test/test_web_concurrency_auto.rb" "\ +test_web_concurrency_with_concurrent_ruby_unavailable") + (skip-tests "test/helpers/integration.rb" + "test_puma_started_log_writing")))) + (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-rackup-1 + ruby-rake-compiler + ruby-webrick)) + (inputs + (list openssl + ruby-nio4r)) + (propagated-inputs + (list ruby-concurrent-ruby)) + (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))) + +(define-public ruby-hoe-git + (package + (name "ruby-hoe-git") + (version "1.6.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "hoe-git" version)) + (sha256 + (base32 + "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-hoe-3)) + (synopsis "Hoe plugins for tighter Git integration") + (description + "This package provides a set of Hoe plugins for tighter Git integration. +It provides tasks to automate release tagging and pushing and changelog +generation.") + (home-page "https://github.com/jbarnette/hoe-git") + (license license:expat))) + +(define-public ruby-hoe-markdown + (package + (name "ruby-hoe-markdown") + (version "1.4.0") + (home-page "https://github.com/flavorjones/hoe-markdown") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0wb0yjdx9gx9r0cahpx42pblvglgh1i9pdfxjavq7f40nan2g076")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "spec" + #:phases (modify-phases %standard-phases + (add-before 'check 'disable-bundler-dependency + (lambda _ + (substitute* "spec/spec_helper.rb" + (("require.*bundler/setup.*") + ""))))))) + (native-inputs + (list ruby-rspec)) + (propagated-inputs + (list ruby-rake)) + (synopsis "Hoe plugin with Markdown helpers") + (description + "This package provides a Hoe plugin with various Markdown helpers, which +can be used to e.g. hyperlink Markdown documentation between project files.") + (license license:expat))) + +(define-public ruby-timecop + (package + (name "ruby-timecop") + (version "0.9.6") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "timecop" version)) + (sha256 + (base32 + "0dlx4gx0zh836i7nzna03xdl7fc233s5z6plnr6k3kw46ah8d1fc")))) + (build-system ruby-build-system) + (arguments + (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 + ruby-pry)) + (synopsis "Test mocks for time-dependent functions") + (description + "Timecop provides \"time travel\" and \"time freezing\" capabilities, +making it easier to test time-dependent code. It provides a unified method to +mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single +call.") + (home-page "https://github.com/travisjeffery/timecop") + (license license:expat))) + +(define-public ruby-concurrent-ruby + (package + (name "ruby-concurrent-ruby") + (version "1.3.5") + (source (origin + (method git-fetch) + (uri (git-reference ;for tests + (url "https://github.com/ruby-concurrency/concurrent-ruby") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0f0apna8k9cwnpa4lddwimywxzznrd4rjv4m0lka2i54z49iky73")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ;the test suite is run in ruby-concurrent-ruby-edge + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'delete-unwanted-gemspecs + (lambda _ + (for-each delete-file + '("concurrent-ruby-ext.gemspec" + "concurrent-ruby-edge.gemspec")))) + (add-after 'unpack 'do-not-install-concurrent_ruby.jar + (lambda _ + ;; This file is only built when building the Java + ;; extension. + (substitute* "concurrent-ruby.gemspec" + (("'lib/concurrent-ruby/concurrent/concurrent_ruby.jar'") + ""))))))) + (synopsis "Concurrency library for Ruby") + (description "Concurrent Ruby includes concurrency tools such as agents, +futures, promises, thread pools, actors, supervisors, and more. It is +inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency +patterns.") + (home-page "https://github.com/ruby-concurrency/concurrent-ruby") + (license license:expat))) + +;;; The 'gem' is called 'concurrent-ruby'; reversing its name was confusing +;;; and failed to be picked by the gem importer (which led to this newer +;;; package). +(define-public ruby-concurrent + (deprecated-package "ruby-concurrent" ruby-concurrent-ruby)) + +(define-public ruby-concurrent-ruby-ext + (package + (inherit ruby-concurrent-ruby) + (name "ruby-concurrent-ruby-ext") + (arguments + (list + #:tests? #f ;tested as part of concurrent-ruby-edge + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'delete-unwanted-gemspecs + (lambda _ + (for-each delete-file + '("concurrent-ruby.gemspec" + "concurrent-ruby-edge.gemspec"))))))) + (native-inputs (list ruby-rake-compiler)) + (propagated-inputs (list ruby-concurrent-ruby)) + (synopsis "C extensions for concurrent-ruby") + (description "This package provides C extensions to optimize the +concurrent-ruby gem when running under the Matz's Ruby Interpreter (MRI, also +known as CRuby)."))) + +(define-public ruby-concurrent-ruby-edge + (package + (inherit ruby-concurrent-ruby) + (name "ruby-concurrent-ruby-edge") + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'delete-unwanted-gemspecs + (lambda _ + (for-each delete-file + '("concurrent-ruby.gemspec" + "concurrent-ruby-ext.gemspec")))) + ;; The tests rely on the Gem being installed, so move the check + ;; phase after the install phase. + (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? + (invoke "rake" "ci"))))))) + (native-inputs + (list ruby-rake-compiler + ruby-rake-compiler-dock + ruby-rspec + ruby-timecop + ruby-yard)) + (propagated-inputs + (list ruby-concurrent-ruby ruby-concurrent-ruby-ext)) + (synopsis "Edge features and additions to the @code{concurrent-ruby} gem") + (description "The @code{concurrent-ruby-edge} gem includes +@code{concurrent-ruby} features that are under active development and may +change frequently. They are expected not to keep backward +compatibility (there may also lack tests and documentation), although semantic +versions are obeyed though. Features developed in @code{concurrent-ruby-edge} +are expected to move to @code{concurrent-ruby} when final."))) + +(define-public ruby-pkg-config + (package + (name "ruby-pkg-config") + (version "1.2.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "pkg-config" version)) + (sha256 + (base32 + "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar")))) + (build-system ruby-build-system) + (arguments + ;; Tests require extra files not included in the gem. + `(#:tests? #f)) + (synopsis "Detect libraries for compiling Ruby native extensions") + (description + "@code{pkg-config} can be used in your extconf.rb to properly detect need +libraries for compiling Ruby native extensions.") + (home-page "https://github.com/ruby-gnome2/pkg-config") + (license license:lgpl2.0+))) + +(define-public ruby-net-http-digest-auth + (package + (name "ruby-net-http-digest-auth") + (version "1.4.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "net-http-digest_auth" version)) + (sha256 + (base32 + "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-hoe + ruby-minitest)) + (synopsis "RFC 2617 HTTP digest authentication library") + (description + "This library implements HTTP's digest authentication scheme based on +RFC 2617. This enables the use of the digest authentication scheme instead +of the more insecure basic authentication scheme.") + (home-page "https://github.com/drbrain/net-http-digest_auth") + (license license:expat))) + +(define-public ruby-mail + (package + (name "ruby-mail") + (version "2.8.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mail" version)) + (sha256 + (base32 "1bf9pysw1jfgynv692hhaycfxa8ckay1gjw5hz3madrbrynryfzc")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-mini-mime)) + (arguments + '(#:tests? #f)) ; no rakefile + (synopsis "Mail library for Ruby") + (description + "Mail is an internet library for Ruby that is designed to handle email +generation, parsing and sending. The purpose of this library is to provide +a single point of access to handle all email functions, including sending +and receiving emails. All network type actions are done through proxy +methods to @code{Net::SMTP}, @code{Net::POP3} etc. + +Mail has been designed with a very simple object oriented system that +really opens up the email messages you are parsing, if you know what you +are doing, you can fiddle with every last bit of your email directly.") + (home-page "https://github.com/mikel/mail") + (license license:expat))) + +(define-public ruby-net-protocol + (package + (name "ruby-net-protocol") + (version "0.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ruby/net-protocol") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0niivmjx7bc6vsylc1ag17mw6mnvjxw02s7cin1f0422xyr8msq9")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-timeout)) + (synopsis "Abstract interface for Ruby network clients") + (description "This Ruby library provides an abstract interface for network +clients.") + (home-page "https://github.com/ruby/net-protocol") + (license (list license:bsd-2)))) + +(define-public ruby-email-reply-trimmer + (package + (name "ruby-email-reply-trimmer") + (version "0.1.13") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "email_reply_trimmer" version)) + (sha256 + (base32 + "1jgcxifm48xq5dz9k47q43pqm5bfnf14l62l3bqhmv8f6z8dw4ki")))) + (build-system ruby-build-system) + (synopsis "Trim replies from plain text email") + (description "EmailReplyTrimmer is a Ruby small library to trim replies +from plain text email.") + (home-page "https://github.com/discourse/email_reply_trimmer") + (license license:expat))) + +(define-public ruby-mathn + (package + (name "ruby-mathn") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mathn" version)) + (sha256 + (base32 + "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p")))) + (build-system ruby-build-system) + (native-inputs + (list bundler ruby-rake-compiler)) + (synopsis "Extends math operations for increased precision") + (description + "This gem makes mathematical operations more precise in Ruby and +integrates other mathematical standard libraries. Prior to Ruby 2.5, +@code{mathn} was part of the Ruby standard library.") + (home-page "https://github.com/ruby/mathn") + (license license:bsd-2))) + +(define-public ruby-code-statistics + (package + (name "ruby-code-statistics") + (version "0.2.13") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "code_statistics" version)) + (sha256 + (base32 + "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; Not all test code is included in gem. + (synopsis "Port of the rails 'rake stats' method") + (description + "This gem is a port of the rails 'rake stats' method so it can be made +more robust and work for non rails projects.") + (home-page "https://github.com/danmayer/code_statistics") + (license license:expat))) + +(define-public ruby-ruby2-keywords + (package + (name "ruby-ruby2-keywords") + (version "0.0.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ruby/ruby2_keywords") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jhqb152zfr2yrxj6j8rzakkwdkg5viggwnnqrrfxwwy63msdi97")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'delete-extraneous-rake-files + (lambda _ + (for-each delete-file '("rakelib/changelogs.rake" + "rakelib/epoch.rake" + "rakelib/version.rake")))) + (add-after 'extract-gemspec 'adjust-files + (lambda _ + (substitute* "ruby2_keywords.gemspec" + ;; This file is not present in the git checkout. + ((".*\"ChangeLog\",.*") ""))))))) + (synopsis "Shim library for Module#ruby2_keywords") + (description "Provides empty @code{Module#ruby2_keywords} method, for the +forward source-level compatibility against @command{ruby2.7} and +@command{ruby3}.") + (home-page "https://github.com/ruby/ruby2_keywords") + (license license:bsd-2))) + +(define-public ruby-rubypants + (package + (name "ruby-rubypants") + (version "0.6.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rubypants" version)) + (sha256 + (base32 + "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; need Codecov + (synopsis "Port of the smart-quotes library SmartyPants") + (description + "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The +original SmartyPants is a web publishing plug-in for Movable Type, Blosxom, +and BBEdit that easily translates plain ASCII punctuation characters into +smart typographic punctuation HTML entities.") + (home-page "https://github.com/jmcnevin/rubypants") + (license license:bsd-2))) + +(define-public ruby-org-ruby + (package + (name "ruby-org-ruby") + (version "0.9.12") + (source (origin + (method url-fetch) + (uri (rubygems-uri "org-ruby" version)) + (sha256 + (base32 + "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no rakefile + (propagated-inputs + (list ruby-rubypants)) + (synopsis "Org-mode parser written in Ruby") + (description + "Org-ruby is an org-mode parser written in Ruby. The most significant +thing this library does today is convert org-mode files to HTML or Textile or +Markdown.") + (home-page "https://github.com/wallyqs/org-ruby") + (license license:expat))) + +(define-public ruby-rake-manifest + (package + (name "ruby-rake-manifest") + (version "0.2.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mvz/rake-manifest") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "16k2yvg773c25kp2vhzhp01rhf53k0nhrcmpv34k1fridw90r2k8")))) + (build-system ruby-build-system) + (arguments + (list + #:test-target "default" + #:phases + #~(modify-phases %standard-phases + (delete 'check) ;moved after the install phase + (add-after 'install 'check + (assoc-ref %standard-phases 'check)) + (add-before 'check 'set-GEM_PATH + (lambda _ + (setenv "GEM_PATH" (string-append + (getenv "GEM_PATH") ":" + #$output "/lib/ruby/vendor_ruby"))))))) + (native-inputs (list ruby-rspec ruby-simplecov)) + (synopsis "Rake tasks to generate and check a manifest file") + (description "This package provides Rake tasks to generate and check a +manifest file.") + (home-page "https://github.com/mvz/rake-manifest") + (license license:expat))) + +(define-public ruby-sfl + (package + (name "ruby-sfl") + (version "2.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sfl" version)) + (sha256 + (base32 + "1qm4hvhq9pszi9zs1cl9qgwx1n4wxq0af0hq9sbf6qihqd8rwwwr")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ;; some tests fail, gem is a dummy for ruby >= 1.9 anyway + #:test-target "spec")) + (synopsis "Spawn for Ruby 1.8") + (description "This pure ruby library provides @code{spawn()} which is +almost perfectly compatible with ruby 1.9's.") + (home-page "https://github.com/ujihisa/spawn-for-legacy") + (license license:bsd-2))) + +(define-public ruby-childprocess + (package + (name "ruby-childprocess") + (version "4.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "childprocess" version)) + (sha256 + (base32 + "1lvcp8bsd35g57f7wz4jigcw2sryzzwrpcgjwwf3chmjrjcww5in")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ;; one failing test, even with fixes below + #:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "spec/spec_helper.rb" + (("#!/bin/sh\\\\n") (string-append "#!" (which "sh") "\\n")))))))) + (native-inputs + (list ruby-coveralls ruby-rspec)) + (synopsis "Control external programs running in the background, in Ruby") + (description "@code{childprocess} provides a gem to control external +programs running in the background, in Ruby.") + (home-page "https://github.com/enkessler/childprocess") + (license license:expat))) + +(define-public ruby-public-suffix + (package + (name "ruby-public-suffix") + (version "4.0.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "public_suffix" version)) + (sha256 + (base32 + "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; Remove the requirement on Rubocop, as it isn't useful to run, and + ;; including it as an input can lead to circular dependencies. + (add-after 'unpack 'remove-rubocop-from-Rakefile + (lambda _ + (substitute* "Rakefile" + (("require \"rubocop/rake\\_task\"") "") + (("RuboCop::RakeTask\\.new") ""))))))) + (native-inputs + (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, +written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix +is one under which Internet users can (or historically could) directly +register names. Some examples of public suffixes are @code{.com}, +@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of +all known public suffixes.") + (license license:expat))) + +(define-public ruby-addressable + (package + (name "ruby-addressable") + (version "2.8.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "addressable" version)) + (sha256 + (base32 + "1ypdmpdn20hxp5vwxz3zc04r5xcwqc25qszdlg41h8ghdqbllwmw")))) + (build-system ruby-build-system) + (arguments + '(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-bundler + (lambda _ + (substitute* "spec/spec_helper.rb" + (("require 'bundler/setup'") "")))) + (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile + (lambda _ + (substitute* "Gemfile" + (("git: 'https://github.com/sporkmonger/rack-mount.git',") "") + ((".*launchy.*") "") + ((".*rake.*") "gem 'rake'\n") + ((".*redcarpet.*") "")))) + (add-before 'check 'delete-network-dependent-test + (lambda _ + (delete-file "spec/addressable/net_http_compat_spec.rb")))))) + (native-inputs + (list bundler + ruby-idn-ruby + ruby-rspec + ruby-rspec-its-minimal + ruby-simplecov + ruby-sporkmonger-rack-mount + ruby-yard/minimal)) + (propagated-inputs + (list ruby-public-suffix)) + (home-page "https://github.com/sporkmonger/addressable") + (synopsis "Alternative URI implementation") + (description "Addressable is a replacement for the URI implementation that +is part of Ruby's standard library. It more closely conforms to RFC 3986, +RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.") + (license license:asl2.0))) + +(define-public ruby-colorize + (package + (name "ruby-colorize") + (version "0.8.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "colorize" version)) + (sha256 + (base32 + "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b")))) + (build-system ruby-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'check 'remove-codeclimate-dependency + (lambda _ + (substitute* "test/test_colorize.rb" + ;; Do not hook the tests into the online CodeClimate + ;; service which is unnecessary for these tests. + (("require 'codeclimate-test-reporter'") + "") + (("CodeClimate.*") ""))))))) + (synopsis "Add color effects to the @code{String} class") + (description + "This package extends the @code{String} class and adds a +@code{ColorizedString} with methods to set text color, background color, +and text effects.") + (home-page "https://github.com/fazibear/colorize") + (license license:gpl2+))) + +(define-public ruby-colorator + (package + (name "ruby-colorator") + (version "1.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "colorator" version)) + (sha256 + (base32 + "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72")))) + (build-system ruby-build-system) + (arguments + ;; No test target + `(#:tests? #f)) + (home-page "http://octopress.org/colorator/") + (synopsis "Terminal color library") + (description "Colorator is a Ruby gem that helps you colorize your text +for the terminal.") + (license license:expat))) + +(define-public ruby-command-line-reporter + (package + (name "ruby-command-line-reporter") + (version "4.0.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "command_line_reporter" version)) + (sha256 + (base32 + "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll")))) + (build-system ruby-build-system) + (arguments + ;; No Rakefile + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'fix-dependencies + (lambda _ + (substitute* ".gemspec" + ;; colored is unmaintained + (("colored") "colorator") + ;; colorator version + (("= 1.2") "= 1.1"))))))) + (propagated-inputs (list ruby-colorator)) + (home-page "https://github.com/wbailey/command_line_reporter") + (synopsis "Report production while executing Ruby scripts") + (description "This gem provides a DSL that makes it easy to write reports +of various types in ruby. It eliminates the need to litter your source with +puts statements, instead providing a more readable, expressive interface to +your application.") + (license license:asl2.0))) + +(define-public ruby-command-line-reporter-3 + (package + (inherit ruby-command-line-reporter) + (version "3.3.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "command_line_reporter" version)) + (sha256 + (base32 + "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71")))))) + +(define-public ruby-kpeg + (package + (name "ruby-kpeg") + (version "1.3.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "kpeg" version)) + (sha256 + (base32 + "0jxddpyb23digcd8b1b02gn94057a7mw17680c3c8s3bcb5xqfnp")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-hoe)) + (synopsis "PEG library for Ruby") + (description "KPeg is a simple PEG library for Ruby. It provides an API as +well as native grammar to build the grammar. KPeg supports direct left +recursion of rules via the +@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization} +technique.") + (home-page "https://github.com/evanphx/kpeg") + (license license:expat))) + +(define-public ruby-rdoc + (package + (name "ruby-rdoc") + (version "6.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ruby/rdoc") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0dy997zi7k17c2yjlq1y7zl9yaiym1f4jgfh84qqzhwl1qm6v41j")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'generate + ;; 'gem build' doesn't honor Rakefile dependencies (see: + ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977). + (lambda _ + (invoke "rake" "generate")))))) + (native-inputs (list bundler ruby-kpeg ruby-racc ruby-rubocop + ruby-test-unit-ruby-core)) + (home-page "https://ruby.github.io/rdoc/") + (synopsis "HTML and command-line documentation utility") + (description "RDoc produces HTML and command-line documentation for Ruby +projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying +documentation from the command-line.") + (license license:gpl2+))) + +(define-public ruby-sass-listen + (package + (name "ruby-sass-listen") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sass-listen" version)) + (sha256 + (base32 + "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df")))) + (build-system ruby-build-system) + (arguments + ;; No test target + `(#:tests? #f)) + (propagated-inputs + (list ruby-rb-fsevent ruby-rb-inotify)) + (home-page "https://github.com/sass/listen") + (synopsis "File modification notification library") + (description "The Listen gem listens to file modifications and notifies you +about the changes.") + (license license:expat))) + +(define-public ruby-terminfo + (let ((commit "f4a597d92dcc465e7b343f9afb8cd45607c8e969") + (revision "0")) + (package + (name "ruby-terminfo") + (version (git-version "0.2" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/genki/ruby-terminfo") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0b24sqf0jwj8m106nh35hjayw1kiyrpramb6vg7fnz32mqni6hdi")))) + (build-system ruby-build-system) + (arguments + (list + #: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" "-Ilib:test" "-Ilib:." f)) + (find-files "test" "^test_.*\\.rb$"))))) + (replace 'install + (lambda _ + (invoke "make" "install" (string-append "prefix=" #$output))))))) + (inputs + (list ncurses)) + (native-inputs + (list ruby-rubygems-tasks ruby-rdoc)) + (home-page "http://www.a-k-r.org/ruby-terminfo/") + (synopsis "Terminfo binding for Ruby") + (description "Ruby-terminfo provides terminfo binding for Ruby.") + (license license:bsd-3)))) + +(define-public ruby-diffy + (package + (name "ruby-diffy") + (version "3.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "diffy" version)) + (sha256 + (base32 + "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg")))) + (build-system ruby-build-system) + (arguments + ;; No tests + `(#:tests? #f)) + (native-inputs + (list ruby-rspec)) + (home-page "https://github.com/samg/diffy") + (synopsis "Convenient diffing in ruby") + (description "Diffy provides a convenient way to generate a diff from two +strings or files.") + (license license:expat))) + +(define-public ruby-sass-spec + (package + (name "ruby-sass-spec") + (version "3.5.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sass/sass-spec") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-command-line-reporter-3 + ruby-diffy)) + (arguments + (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 +the @file{spec} directory.") + (license license:expat))) + +(define-public ruby-sass + (package + (name "ruby-sass") + (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 + (list ruby-sass-spec ruby-mathn ruby-cmath)) + (home-page "https://sass-lang.com/") + (synopsis "CSS extension language") + (description "Sass is a CSS extension language. It extends CSS with +features that don't exist yet like variables, nesting, mixins and inheritance.") + (license license:expat))) + +(define-public ruby-sassc + (package + (name "ruby-sassc") + (version "2.4.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sassc" version)) + (sha256 + (base32 + "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c")))) + (build-system ruby-build-system) + (arguments + '(#:modules ((guix build ruby-build-system) + (guix build utils) + (ice-9 textual-ports)) + #:phases + (modify-phases %standard-phases + ;; TODO: This would be better as a snippet, but the ruby-build-system + ;; doesn't seem to support that + (add-after 'unpack 'remove-libsass + (lambda _ + (delete-file-recursively "ext") + (with-atomic-file-replacement "sassc.gemspec" + (lambda (in out) + (let* ((gemspec (get-string-all in)) + (index (string-contains gemspec "libsass_dir"))) + (display (string-append + (string-take gemspec index) + "\nend\n") + out)))))) + (add-after 'unpack 'dont-check-the-libsass-version + (lambda _ + (substitute* "test/native_test.rb" + (("assert_equal.*Native\\.version") "")))) + (add-after 'unpack 'remove-git-from-gemspec + (lambda _ + (substitute* "sassc.gemspec" + (("`git ls-files -z`") "`find . -type f -print0 |sort -z`")))) + (add-after 'unpack 'remove-extensions-from-gemspec + (lambda _ + (substitute* "sassc.gemspec" + (("\\[\"ext/extconf.rb\"\\]") "[]")))) + (add-after 'unpack 'fix-Rakefile + (lambda _ + (substitute* "Rakefile" + (("test: 'compile:libsass'") ":test")))) + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + (substitute* "test/test_helper.rb" + (("require \"pry\"") "")))) + (add-before 'build 'patch-native.rb + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "lib/sassc/native.rb" + ((".*gem_root = spec.gem_dir") "") + (("ffi_lib .*\n") + (string-append + "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'"))))) + ;; The gemspec still references the libsass files, so just keep the + ;; one in the gem. + (delete 'extract-gemspec)))) + (propagated-inputs + (list ruby-ffi ruby-rake)) + (inputs + (list libsass)) + (native-inputs + (list bundler ruby-rake-compiler ruby-minitest-around + ruby-test-construct)) + (synopsis "Use libsss from Ruby") + (description + "This library provides Ruby q@acronym{FFI, Foreign Function Interface} +bindings to the libsass library. This enables rendering +@acronym{SASS,Syntactically awesome style sheets} from Ruby code.") + (home-page "https://github.com/sass/sassc-ruby") + (license license:expat))) + +(define-public ruby-jekyll-sass-converter + (package + (name "ruby-jekyll-sass-converter") + (version "2.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-sass-converter" version)) + (sha256 + (base32 + "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-sass)) + (arguments + ;; No rakefile + `(#:tests? #f)) + (home-page "https://github.com/jekyll/jekyll-sass-converter") + (synopsis "Sass converter for Jekyll") + (description "This gem provide built-in support for the Sass converter +in Jekyll.") + (license license:expat))) + +(define-public ruby-jekyll-watch + (package + (name "ruby-jekyll-watch") + (version "2.1.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-watch" version)) + (sha256 + (base32 + "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-listen)) + (arguments + ;; No rakefile + `(#:tests? #f)) + (home-page "https://github.com/jekyll/jekyll-watch") + (synopsis "Jekyll auto-rebuild support") + (description "This gems add the @code{--watch} switch to the jekyll CLI +interface. It allows Jekyll to rebuild your site when a file changes.") + (license license:expat))) + +(define-public ruby-parallel + (package + (name "ruby-parallel") + (version "1.21.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/grosser/parallel") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1xqjcvl3gq3shvrqp8wc3fbqibzh4mf1yczq6np9gd79558dwj3w")))) + (build-system ruby-build-system) + (arguments + `(;; TODO 3 test failures + ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not + ;; open unnecessary pipes + ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with + ;; SQLite in processes + ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with + ;; SQLite in threads + #:tests? #f + #:test-target "rspec-rerun:spec" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-Gemfile + (lambda _ + (substitute* "Gemfile" + (("gem 'rspec-legacy_formatters'") "") + (("gem 'activerecord.*$") "gem 'activerecord'\n")))) + (add-before 'check 'delete-Gemfile.lock + (lambda _ + ;; Bundler isn't being used for fetching dependencies, so + ;; delete the Gemfile.lock + (delete-file "Gemfile.lock"))) + (add-before 'build 'patch-gemspec + (lambda _ + (substitute* "parallel.gemspec" + (("git ls-files") "find"))))))) + (native-inputs + (list ruby-rspec + ruby-rspec-rerun + bundler + ruby-activerecord + ruby-progressbar + ruby-bump + procps + lsof + ruby-mysql2 + ruby-sqlite3 + ruby-i18n)) + (home-page "https://github.com/grosser/parallel") + (synopsis "Parallel processing in Ruby") + (description "Parallel allows you to run any code in parallel Processes +(to use all CPUs) or Threads(to speedup blocking operations). It is best +suited for map-reduce or e.g. parallel downloads/uploads.") + (license license:expat))) + +(define-public ruby-cabin + (package + (name "ruby-cabin") + (version "0.9.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cabin" version)) + (sha256 + (base32 + "0b3b8j3iqnagjfn1261b9ncaac9g44zrx1kcg81yg4z9i513kici")))) + (build-system ruby-build-system) + (arguments (list #:tests? #f)) ;no Rakefile in released gem + (synopsis "Structured and contextual logging experiments in Ruby") + (description "This Ruby library provides an experimental logging system +that tries to make logging more flexible and more consumable than plain-text +logging.") + (home-page "https://github.com/jordansissel/ruby-cabin") + (license license:asl2.0))) + +(define-public ruby-capybara + (package + (name "ruby-capybara") + (version "3.38.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "capybara" version)) + (sha256 + (base32 + "123198zk2ak8mziwa5jc3ckgpmsg08zn064n3aywnqm9s1bwjv3v")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f ;sinatra is currently broken with rack 3 + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'remove-extraneous-requirements + (lambda _ + (substitute* "spec/spec_helper.rb" + ((".*require 'selenium_statistics'.*") "") + ((".*SeleniumStatistics.print_results.*") "")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec" "spec"))))))) + (native-inputs + (list ruby-puma + ruby-rspec + ruby-selenium-webdriver + ruby-sinatra)) + (propagated-inputs + (list ruby-addressable + ruby-launchy + ruby-matrix + ruby-mini-mime + ruby-nokogiri + ruby-rack + ruby-rack-test + ruby-regexp-parser + ruby-xpath)) + (synopsis "Integration testing tool for rack-based web applications") + (description "Capybara is an integration testing tool for rack based web +applications. It simulates how a user would interact with a website.") + (home-page "https://github.com/teamcapybara/capybara") + (license license:expat))) + +(define-public ruby-cane + (package + (name "ruby-cane") + (version "3.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cane" version)) + (sha256 + (base32 + "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://github.com/square/cane") + (propagated-inputs + (list ruby-parallel)) + (synopsis "Code quality threshold checking") + (description "Cane fails your build if code quality thresholds are not met.") + (license license:asl2.0))) + +(define-public ruby-morecane + (package + (name "ruby-morecane") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "morecane" version)) + (sha256 + (base32 + "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771")))) + (build-system ruby-build-system) + (home-page "https://github.com/yob/morecane") + (arguments `(#:tests? #f)); No rakefile + (propagated-inputs + (list ruby-parallel)) + (synopsis "Extra checks for cane") + (description "The cane gem provides a great framework for running quality +checks over your ruby project as part of continuous integration build. It +comes with a few checks out of the box, but also provides an API for loading +custom checks. This gem provides a set of additional checks.") + (license license:expat))) + +(define-public ruby-pdf-reader + (package + (name "ruby-pdf-reader") + (version "2.4.0") + (source (origin + (method git-fetch) ;no test in distributed gem archive + (uri (git-reference + (url "https://github.com/yob/pdf-reader") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai")))) + (build-system ruby-build-system) + (arguments `(#:test-target "spec" + #:phases (modify-phases %standard-phases + (add-after 'unpack 'do-not-use-bundler + (lambda _ + (substitute* "spec/spec_helper.rb" + ((".*[Bb]undler.*") ""))))))) + (native-inputs + (list ruby-rspec ruby-cane ruby-morecane)) + (propagated-inputs + (list ruby-afm ruby-ascii85 ruby-hashery ruby-rc4 ruby-ttfunk)) + (home-page "https://github.com/yob/pdf-reader") + (synopsis "PDF parser in Ruby") + (description "The PDF::Reader library implements a PDF parser conforming as +much as possible to the PDF specification from Adobe. It provides programmatic +access to the contents of a PDF file with a high degree of flexibility.") + (license license:gpl3+))) + +(define-public ruby-pdf-inspector + (let ((revision "1") + (commit "00ee4c92ff917118785ebec188e81effc968abeb")) + (package + (name "ruby-pdf-inspector") + (version (git-version "1.3.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/prawnpdf/pdf-inspector") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases (modify-phases %standard-phases + (add-before 'build 'drop-signing-key-requirement + (lambda _ + (substitute* "pdf-inspector.gemspec" + (("spec.signing_key =.*") + "spec.signing_key = nil")))) + (replace 'check + (lambda _ + (substitute* "pdf-inspector.gemspec" + ((".*rubocop.*") "") + ((".*yard.*") "")) + (invoke "rspec")))))) + (native-inputs + (list ruby-rspec)) + (propagated-inputs + (list ruby-pdf-reader)) + (home-page "https://github.com/prawnpdf/pdf-inspector") + (synopsis "Analysis classes for inspecting PDF output") + (description "This library provides a number of PDF::Reader based tools for +use in testing PDF output. Presently, the primary purpose of this tool is to +support the tests found in Prawn, a pure Ruby PDF generation library.") + (license %prawn-project-licenses)))) + +(define-public ruby-pdf-core + (package + (name "ruby-pdf-core") + (version "0.9.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pdf-core" version)) + (sha256 + (base32 + "1fz0yj4zrlii2j08kaw11j769s373ayz8jrdhxwwjzmm28pqndjg")))) + (build-system ruby-build-system) + (arguments + ; No test target + `(#:tests? #f)) + (home-page "https://github.com/prawnpdf/pdf-core") + (synopsis "Low level PDF features for Prawn") + (description "This is an experimental gem that extracts low-level PDF +functionality from Prawn.") + (license license:gpl3+))) + +(define-public ruby-prawn-dev + (package + (name "ruby-prawn-dev") + (version "0.3.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "prawn-dev" version)) + (sha256 + (base32 + "1hbzzgm0nwc6h8pyv8h9xx068bf676rispxcz4a0sm8nykz54z4x")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ;no test suite + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'drop-rubocop-dependency + ;; Rubocop depends on Prawn. Remove it to avoid the + ;; dependency cycle when using this tool to build + ;; Prawn components. + (lambda _ + (substitute* "lib/prawn/dev/tasks.rb" + (("require 'rubocop/rake_task'") + "") + (("RuboCop::RakeTask.new") + "")) + (substitute* ".gemspec" + ((".*add.*dependency.*(rubocop|simplecov).*") + ""))))))) + (propagated-inputs (list ruby-rake ruby-rspec ruby-yard)) + (synopsis "Shared tools for Prawn projects development") + (description "Prawn-dev contains tools to aid the development of the +various Prawn projects.") + (home-page "https://prawnpdf.org/") + (license license:expat))) + +(define-public ruby-prawn + ;; There hasn't been a new release since 2017/03/17. + (package + (name "ruby-prawn") + (version "2.4.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/prawnpdf/prawn") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1h1gww12wcdscij0lnd21p9zcbwrwc3miini5ppannc2birmj9ja")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'drop-signing-key-requirement + (lambda _ + (substitute* "prawn.gemspec" + (("spec.signing_key =.*") + "spec.signing_key = nil")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; The Prawn manual test fails (see: + ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude + ;; it. + (invoke "rspec" + "--exclude-pattern" "prawn_manual_spec.rb"))))))) + (propagated-inputs + (list ruby-matrix + ruby-pdf-core + ruby-ttfunk)) + (native-inputs + (list ruby-pdf-inspector + ruby-prawn-manual-builder + ruby-prawn-dev)) + (home-page "https://prawnpdf.org/api-docs/2.0/") + (synopsis "PDF generation for Ruby") + (description "Prawn is a pure Ruby PDF generation library.") + (license %prawn-project-licenses))) + +(define-public ruby-prawn-table + (package + (name "ruby-prawn-table") + (version "0.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "prawn-table" version)) + (sha256 + (base32 + "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-prawn ruby-pdf-inspector)) + (native-inputs + `(("bundler" ,bundler) + ("ruby-yard" ,ruby-yard) + ("ruby-mocha" ,ruby-mocha) + ("ruby-coderay" ,ruby-coderay) + ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder) + ("ruby-simplecov" ,ruby-simplecov) + ("ruby-rspec-2" ,ruby-rspec-2))) + (arguments + '(;; TODO: 1 test fails + ;; Failure/Error: pdf.page_count.should == 1 + ;; expected: 1 + ;; got: 2 (using ==) + ;; # ./spec/table_spec.rb:1308 + ;; + ;; 225 examples, 1 failure + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'check 'patch-gemspec + (lambda _ + (substitute* "prawn-table.gemspec" + ;; Loosen the requirement for pdf-inspector + (("~> 1\\.1\\.0") ">= 0") + ;; Loosen the requirement for pdf-reader + (("~> 1\\.2") ">= 0")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (home-page "https://github.com/prawnpdf/prawn-table") + (synopsis "Tables support for Prawn") + (description "This gem provides tables support for Prawn.") + (license license:gpl3+))) + +(define-public ruby-kramdown + (package + (name "ruby-kramdown") + (version "2.3.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "kramdown" version)) + (sha256 + (base32 + "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); FIXME: some test failures + (native-inputs + (list ruby-prawn ruby-prawn-table)) + (home-page "https://kramdown.gettalong.org/") + (synopsis "Markdown parsing and converting library") + (description "Kramdown is a library for parsing and converting a superset +of Markdown. It is completely written in Ruby, supports standard Markdown +(with some minor modifications) and various extensions that have been made +popular by the PHP @code{Markdown Extra} package and @code{Maruku}.") + (license license:expat))) + +(define-public ruby-kramdown-parser-gfm + (package + (name "ruby-kramdown-parser-gfm") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "kramdown-parser-gfm" version)) + (sha256 + (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ;no rakefile + (propagated-inputs + (list ruby-kramdown)) + (synopsis "Kramdown parser for the GFM dialect of Markdown") + (description + "This is a parser for kramdown that converts Markdown documents in the +GFM dialect to HTML.") + (home-page "https://github.com/kramdown/parser-gfm") + (license license:expat))) + +(define-public ruby-http-parser.rb + (package + (name "ruby-http-parser.rb") + (version "0.6.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "http_parser.rb" version)) + (sha256 + (base32 + "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi")))) + (build-system ruby-build-system) + (arguments + ;; No tests + `(#:tests? #f)) + (native-inputs + (list ruby-rake-compiler ruby-rspec)) + (home-page "https://github.com/tmm1/http_parser.rb") + (synopsis "HTTP parser un Ruby") + (description "This gem is a simple callback-based HTTP request/response +parser for writing http servers, clients and proxies.") + (license license:expat))) + +(define-public ruby-excon + (package + (name "ruby-excon") + (version "0.109.0") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/excon/excon") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "199niqbpzj70k3n6ybg4vbcw3qm76kwic4nl9747l1n0v49aaj24")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ;; some tests require DNS + #:phases + #~(modify-phases %standard-phases + (replace 'replace-git-ls-files + (lambda _ + (substitute* "excon.gemspec" + (("`git ls-files -- data/. lib/.`") + "`find data lib -type f`")))) + (add-before 'check 'disable-server-spec-checks + (lambda _ ;; TODO: Remove this if ruby-unicorn is available. + ;; Some of the tests in this file require ruby-unicorn, which is + ;; not yet packaged for guix and would pull in a lot of other + ;; dependencies. + (delete-file "spec/excon/test/server_spec.rb")))))) + (native-inputs + (list + ruby-activesupport + ruby-eventmachine + ruby-json + ruby-open4 + ruby-puma + ruby-rspec + ruby-shindo + ruby-sinatra + ruby-webrick)) + (synopsis "Usable, fast, simple Ruby HTTP 1.1") + (description "Excon was designed to be simple, fast and performant. It +works great as a general HTTP(s) client and is particularly well suited to +usage in API clients.") + (home-page "https://github.com/excon/excon") + (license license:expat))) + +(define-public ruby-em-websocket + (package + (name "ruby-em-websocket") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "em-websocket" version)) + (sha256 + (base32 + "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3")))) + (build-system ruby-build-system) + (arguments + ;; No tests + `(#:tests? #f)) + (propagated-inputs + (list ruby-eventmachine ruby-http-parser.rb)) + (native-inputs + (list bundler ruby-rspec)) + (home-page "https://github.com/igrigorik/em-websocket") + (synopsis "EventMachine based WebSocket server") + (description "Em-websocket is an EventMachine based WebSocket server +implementation.") + (license license:expat))) + +(define-public ruby-rouge + (package + (name "ruby-rouge") + (version "3.26.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rouge" version)) + (sha256 + (base32 + "197k0vskf72wxx0gzwld2jzg27bb7982xlvnzy9adlvkzp7nh8vf")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "http://rouge.jneen.net/") + (synopsis "Code highlighter") + (description "Rouge is a code highlighter written in Ruby. It supports more +than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output +is compatible with stylesheets designed for pygments.") + (license (list + ;; rouge is licensed under expat + license:expat + ;; pygments is licensed under bsd-2 + license:bsd-2)))) + +(define-public ruby-hashie + (let ((commit "73510552ba580867e9882fe092568916cbcd810b") + (revision "0")) + (package + (name "ruby-hashie") + (version (git-version "5.0.0" revision commit)) + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/hashie/hashie") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "08rpx040h6vgx6ynk6w029f7z7c8aj2p4v135k2l1zxvnw617ddw")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'disable-bundler + (lambda _ + (substitute* "Rakefile" + ((".*require 'bundler'.*") "") + ((".*Bundler.setup.*") "") + (("Bundler::GemHelper\\.install_tasks") "")))) + (add-after 'unpack 'disable-rubocop + (lambda _ + (substitute* "Rakefile" + (("require 'rubocop/rake_task'") "") + (("RuboCop::RakeTask.new") "")))) + (add-after 'unpack 'relax-requirements + (lambda _ + ;; Contains multiple extraneous dependencies. + (delete-file "Gemfile")))))) + (native-inputs (list ruby-json ruby-pry ruby-rspec ruby-rspec-pending-for)) + (home-page "https://github.com/hashie/hashie") + (synopsis "Extensions to Ruby Hashes") + (description "Hashie is a collection of classes and mixins that make Ruby +hashes more powerful.") + (license license:expat)))) + +(define-public ruby-heredoc-unindent + (package + (name "ruby-heredoc-unindent") + (version "1.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "heredoc_unindent" version)) + (sha256 + (base32 + "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw")))) + (build-system ruby-build-system) + (native-inputs + (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 +as the ones produced by indented heredocs. In other words, it strips out +leading whitespace chars at the beginning of each line, but only as much as +the line with the smallest margin. + +It is acknowledged that many strings defined by heredocs are just code and +fact is that most parsers are insensitive to indentation. If, however, the +strings are to be used otherwise, be it for printing or testing, the extra +indentation will probably be an issue and hence this gem.") + (license license:expat))) + +(define-public ruby-safe-yaml + (package + (name "ruby-safe-yaml") + (version "1.0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dtao/safe_yaml") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-rspec ruby-hashie ruby-heredoc-unindent)) + (arguments + (list + ;; Tests are broken since the move to ruby@3. + ;; There's ongoing effort on the Jekyll dependent + ;; to remove this orphan dependency. + #:tests? #f ; broken since move to ruby@3 + #: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 +YAML.load suitable for accepting user input in Ruby applications.") + (license license:expat))) + +(define-public ruby-yaml-lint + ;; No tags for releases. + (let ((commit "d6a253f7d33234a9c24660d582cf7014e882c0c2") + (revision "0")) + (package + (name "ruby-yaml-lint") + (version (git-version "0.1.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Pryz/yaml-lint") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0zk0jwzmcaaiyixjvkzdb54xhiqcnjkma72nkv0vm5csaphfdjkx")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list ruby-coveralls ruby-rspec ruby-simplecov)) + (synopsis "Simple YAML check tool") + (description + "@code{yaml-lint} will simply try to load the YAML file with the built-in +Ruby yaml library.") + (home-page "https://github.com/Pryz/yaml-lint") + (license license:expat)))) + +(define-public ruby-matrix + (package + (name "ruby-matrix") + (version "0.4.2") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/matrix") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1asxr0jzh39lk5f8a9wm5avykrcy0v2wgd1bl3cszjczh99xy5k2")))) + (build-system ruby-build-system) + (synopsis "@code{Matrix} and @code{Vector} classes implementation for Ruby") + (description "This Ruby library provides an implementation of the +@code{Matrix} and @code{Vector} classes. The @code{Matrix} class represents a +mathematical matrix. It provides methods for creating matrices, operating on +them arithmetically and algebraically, and determining their mathematical +properties (trace, rank, inverse, determinant, eigensystem, etc.). The +@code{Vector} class represents a mathematical vector, which is useful in its +own right, and also constitutes a row or column of a @code{Matrix}.") + (home-page "https://github.com/ruby/matrix") + (license license:bsd-2))) + +(define-public ruby-m + (package + (name "ruby-m") + (version "1.6.1") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/qrush/m") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1aycfc8l1bsln1y300fv75fknn4amjcvc4rm2kd8hb6cqivjq5rg")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'sanitize-dependencies + (lambda _ + (delete-file "Gemfile") + (delete-file "Gemfile.lock") + ;; Rocco is unmaintained as of 2023/01/08; avoid depending on + ;; it. + (substitute* "m.gemspec" + ;; The rdiscount and rocco dependencies are used for + ;; generating the documentation. + ((".*rdiscount.*") "") + ((".*rocco.*") "") + ((".*appraisal.*") "") + ((".*coveralls.*") "")) + (substitute* "Rakefile" + ;; ruby-appraisal is not packaged, and is used to test against + ;; various dependencies; circumvent its use. + ((".*require 'appraisal'.*") "") + ((".*require 'coveralls'.*") "") + (("appraisal [:graphic:]+ rake") + "rake") + (("Coveralls.push!") "")))) + (add-before 'replace-git-ls-files 'pre-replace-git-ls-files + (lambda _ + (substitute* "m.gemspec" + (("git ls-files -- bin/\\*") + "find bin -type f -not -regex '.*\\.gem$' | sort") + (("git ls-files -- \\{test,spec,features}/\\*") + "find test -type f -not -regex '.*\\.gem$' | sort")))) + (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? + (invoke "rake" "test"))))))) + (native-inputs (list ruby-activesupport)) + (propagated-inputs (list ruby-method-source ruby-rake)) + (synopsis "Ruby test runner that can run tests by line number") + (description "@code{m} stands for metal, a better test/unit and +@code{minitest} test runner that can run tests by line number.") + (home-page "https://github.com/qrush/m") + (license license:expat))) + +(define-public ruby-mercenary + (package + (name "ruby-mercenary") + (version "0.4.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "mercenary" version)) + (sha256 + (base32 + "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj")))) + (build-system ruby-build-system) + (arguments `(#:test-target "spec")) + (native-inputs + (list bundler)) + (home-page "https://github.com/jekyll/mercenary") + (synopsis "Command-line apps library in Ruby") + (description "Mercenary is a lightweight and flexible library for writing +command-line apps in Ruby.") + (license license:expat))) + +(define-public ruby-launchy + (package + (name "ruby-launchy") + (version "2.5.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "launchy" version)) + (sha256 + (base32 + "06r43899384das2bkbrpsdxsafyyqa94il7111053idfalb4984a")))) + (build-system ruby-build-system) + (native-inputs (list curl links ruby-simplecov)) + (propagated-inputs (list ruby-addressable)) + (synopsis "Ruby helper class for launching applications") + (description + "Launchy is helper class for launching applications in a fire and forget +manner. The aim of Launchy is to provide a common approach to launching +external applications from within Ruby programs.") + (home-page "https://github.com/copiousfreetime/launchy") + (license license:isc))) + +(define-public ruby-liquid + (package + (name "ruby-liquid") + (version "5.4.0") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/Shopify/liquid") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1qdnvd1f9zs6wyilcgxyh93wis7ikbpimjxfpbkpk2ngr1m2c8la")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (delete 'check) ;moved after the install phase + (add-after 'install 'check + (assoc-ref %standard-phases 'check)) + (add-before 'check 'set-GEM_PATH + (lambda _ + (setenv "GEM_PATH" (string-append + (getenv "GEM_PATH") ":" + #$output "/lib/ruby/vendor_ruby")))) + (add-before 'check 'delete-problematic-tests + (lambda _ + ;; The following test fails with 'Unknown tag' errors (see: + ;; https://github.com/Shopify/liquid/issues/1699). + (delete-file "test/integration/tags/inline_comment_test.rb")))))) + (native-inputs (list ruby-liquid-c-bootstrap ruby-rspec ruby-stackprof)) + (home-page "https://shopify.github.io/liquid/") + (synopsis "Template language") + (description "Liquid is a template language written in Ruby. It is used +to load dynamic content on storefronts.") + (license license:expat))) + +(define-public ruby-liquid-4 + (package + (inherit ruby-liquid) + (name "ruby-liquid") + (version "4.0.4") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/Shopify/liquid") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0cr321nd0zkbxirgdfmz37xx7j26zfnicjh585fi20vx60frry83")))) + (arguments (list #:tests? #f)))) ;avoid required an older ruby-liquid-c + +;;; This variant is purposefully incomplete, lacking ruby-liquid so that it +;;; can be used for ruby-liquid's test suite. +(define ruby-liquid-c-bootstrap + (package + (name "ruby-liquid-c-bootstrap") + (version "4.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "liquid-c" version)) + (sha256 + (base32 + "0jl37jz9hbfbhknryx4myxqx4n1f5dzyzmf1sapkcbw93xyrmkch")))) + (build-system ruby-build-system) + (arguments (list #:tests? #f)) + (native-inputs (list ruby-rake-compiler)) + (synopsis "Liquid performance extension in C") + (description "This package provides a Partial native implementation of the +liquid ruby gem in C that makes it operate about three times faster.") + (home-page "https://github.com/shopify/liquid-c") + (license license:expat))) + +(define-public ruby-liquid-c + (package/inherit ruby-liquid-c-bootstrap + (name "ruby-liquid-c") + (arguments + (list + ;; Only run the unit tests, because the test:integration target fails + ;; with "File does not exist: test_helper" (see: + ;; https://github.com/Shopify/liquid-c/issues/188). + #:test-target "test:unit" + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (substitute* "Gemfile" + ;; Do not attempt to fetch a gem from git. + (("git_source\\(:github) do \\|repo_name\\|") + "if false") + ((", github: \"Shopify/liquid\", ref: \"master\"") + "") + ;; Remove extraneous dependencies. + ((".*byebug.*") "") + ((".*rubocop.*") "") + ;; Relax spy version specification. + (("gem \"spy\", \"0.4.1\"") + "gem \"spy\", \">= 0.4.1\""))))))) + (native-inputs + (list ruby-benchmark-ips + ruby-rake-compiler + ruby-ruby-memcheck + ruby-spy + ruby-stackprof)) + (propagated-inputs + (list ruby-liquid)))) + +(define-public ruby-localhost + (package + (name "ruby-localhost") + (version "1.1.10") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/socketry/localhost") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1yp70w15wpfk613ap5f4y15yx4n2qqwa67vqc2f4lv7npf3llcz0")))) + (build-system ruby-build-system) + (arguments + ;; XXX: The test suite requires sus-fixtures-async, which requires async, + ;; only available for Ruby 3.0. + (list #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'remove-missing-signing-key + (lambda _ + ;; Otherwise, the build fails with ENOENT. + (substitute* "localhost.gemspec" + ((".*spec.signing_key.*") ""))))))) + (synopsis "API for generating per-user self-signed root certificates") + (description "This package provides @code{localhost}, a Ruby library for +Managing a local certificate authority for self-signed, localhost development +servers.") + (home-page "https://github.com/socketry/localhost") + (license license:expat))) + +(define-public ruby-forwardable-extended + (package + (name "ruby-forwardable-extended") + (version "2.6.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "forwardable-extended" version)) + (sha256 + (base32 + "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters + (home-page "https://github.com/envygeeks/forwardable-extended") + (synopsis "Delegation to hashes and instance variables in Forwardable") + (description "Forwardable Extended provides more @code{Forwardable} +methods for your source as @code{Forwardable::Extended}.") + (license license:expat))) + +(define-public ruby-pathutil + (package + (name "ruby-pathutil") + (version "0.16.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pathutil" version)) + (sha256 + (base32 + "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-forwardable-extended)) + (native-inputs + (list bundler ruby-rspec)) + ;; Fails with: cannot load such file -- + ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task + (arguments `(#:tests? #f)) + (home-page "https://github.com/envygeeks/pathutil") + (synopsis "Extended implementation of Pathname") + (description "Pathutil tries to be a faster pure Ruby implementation of +Pathname.") + (license license:expat))) + +(define-public ruby-terminal-table + (package + (name "ruby-terminal-table") + (version "3.0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tj/terminal-table") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1c3f7ng3lxq962n8sbmlsvjx6srh5i801wzsyhxmfz2g880f5jps")))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'remove-unnecessary-dependencies + (lambda _ + (substitute* "terminal-table.gemspec" + (("s.add_runtime_dependency.*") "\n") + (("s.add_development_dependency.*") "\n")) + (substitute* "Gemfile" + ((".*tins.*") "\n")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-unicode-display-width)) + (native-inputs + (list ruby-rspec ruby-term-ansicolor)) + (home-page "https://github.com/tj/terminal-table") + (synopsis "Simple, feature rich ASCII table generation library") + (description + "Terminal Table is a fast and simple, yet feature rich +table generator written in Ruby. It supports ASCII and +Unicode formatted tables.") + (license license:expat))) + +(define-public jekyll + (package + (name "jekyll") + (version "4.3.4") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/jekyll/jekyll") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0sz285x5ppbifrnixi9sdzv28kg4x3qbzds3qniiwh1ip9hi1yk4")))) + (build-system ruby-build-system) + (arguments + (list #:modules '((guix build ruby-build-system) + (guix build utils) + (ice-9 ftw) + (srfi srfi-26)) + ;; The cucumber acceptance suite is not run as it depends on an old + ;; version (5). + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'disable-problematic-tests + ;; TODO: Package the missing test inputs. + (lambda _ + (with-directory-excursion "test" + ;; Requires 'jekyll-coffeescript'. + (delete-file "test_coffeescript.rb") + ;; Requires 'tomlrb'. + (delete-file "test_configuration.rb") + (substitute* "test_filters.rb" + ;; The sassify tests fail due to white space + ;; differences (see: + ;; https://github.com/jekyll/jekyll/issues/9322). + ((".*s?ssify with simple string.*" all) + (string-append all + " skip('fails on guix')\n"))) + ;; Requires kramdown-syntax-coderay. + (delete-file "test_kramdown.rb") + ;; Requires 'test-theme', usually made available from the + ;; local checkout via Bundler (not used here). + (delete-file "test_layout_reader.rb") + ;; Requires a large amount of un-packaged dependencies. + (delete-file "test_plugin_manager.rb") + ;; Requires 'classifier-reborn'. + (delete-file "test_related_posts.rb") + ;; This one causes a test failure similar to the ones for + ;; sassify above. + (delete-file "test_sass.rb") + ;; This would require running the tests via 'bundle + ;; exec', but the Gemfile contains too many (extraneous) + ;; dependencies. + (delete-file "test_site.rb") + ;; Delete the theme tests, as they require 'test-theme', + ;; usually made available from the local checkout via the + ;; Gemfile/bundler (not used here). + (for-each delete-file + (scandir + "." (cut string-prefix? "test_theme" <>))) + ;; This one also relies on 'test-theme'. + (delete-file "test_liquid_renderer.rb") + ;; This test assumes internet connectivity, negate it, as + ;; there's no Internet in the build container. + (substitute* "test_utils.rb" + (("assert Utils::Internet\\.connected\\?") + "refute Utils::Internet.connected?")) + ;; These tests fail non-deterministically (see: + ;; https://github.com/jekyll/jekyll/issues/9323). + (delete-file "test_new_command.rb") + (delete-file "test_collections.rb")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Invoke the test scripts manually, as 'rake test' + ;; doesn't show any failure details, making debugging + ;; needlessly difficult. + (for-each (lambda (f) + (invoke "ruby" "-I" "test" f)) + (find-files "test" "^test_.*\\.rb$")))))))) + (native-inputs + (list bundler + ruby-httpclient + ruby-minitest-profile + ruby-minitest-reporters + ruby-nokogiri + ruby-rspec + ruby-rspec-mocks + ruby-shoulda + ruby-simplecov)) + (propagated-inputs + (list ruby-addressable + ruby-colorator + ruby-em-websocket + ruby-i18n + ruby-jekyll-sass-converter + ruby-jekyll-watch + ruby-kramdown-parser-gfm + ruby-liquid-4 + ruby-mercenary + ruby-pathutil + ruby-rouge + ruby-safe-yaml + ruby-sassc + ruby-terminal-table + ruby-webrick)) + (home-page "https://jekyllrb.com/") + (synopsis "Static site generator") + (description "Jekyll is a simple, blog aware, static site generator.") + (license license:expat))) + +(define-public ruby-jekyll-paginate-v2 + (package + (name "ruby-jekyll-paginate-v2") + (version "3.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-paginate-v2" version)) + (sha256 + (base32 + "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0")))) + (build-system ruby-build-system) + (propagated-inputs + (list jekyll)) + (home-page "https://github.com/sverrirs/jekyll-paginate-v2") + (synopsis "Pagination Generator for Jekyll 3") + (description "The Pagination Generator forms the core of the pagination +logic in Jekyll. It calculates and generates the pagination pages.") + (license license:expat))) + +(define-public ruby-faraday-net-http + (package + (name "ruby-faraday-net-http") + (version "3.0.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "faraday-net_http" version)) + (sha256 + (base32 + "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8")))) + (build-system ruby-build-system) + ;; Do not run the test suite here as it would introduce a dependency cycle + ;; with ruby-faraday, which uses it as part of its test suite. + (arguments (list #:tests? #f)) + (synopsis "Faraday adapter for Net::HTTP") + (description "This gem is a Faraday adapter for the @code{Net::HTTP} +library. Faraday is an HTTP client library that provides a common interface +over many adapters.") + (home-page "https://github.com/lostisland/faraday-net_http") + (license license:expat))) + +(define-public ruby-faraday + (package + (name "ruby-faraday") + (version "2.7.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lostisland/faraday") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ya6jqa7ryr4i62mmzjjxzd8i8y0pyw0cbhifd758rs6lvkzmxa3")))) + (build-system ruby-build-system) + (arguments (list #:test-target "spec")) + (native-inputs + (list ruby-coveralls + ruby-pry + ruby-rack + ruby-rspec + ruby-simplecov + ruby-webmock)) + ;; Propagate faraday-net-http as this is the default adapter used, and + ;; many Ruby projects assumes it is available. + (propagated-inputs (list ruby-ruby2-keywords ruby-faraday-net-http)) + (synopsis "Ruby HTTP/REST API client library") + (description "Faraday is a HTTP/REST API client library which provides a +common interface over different adapters.") + (home-page "https://github.com/lostisland/faraday") + (license license:expat))) + +(define-public ruby-nio4r + (package + (name "ruby-nio4r") + (version "2.5.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "nio4r" version)) + (sha256 + (base32 + "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-unnecessary-dependencies + (lambda _ + (substitute* "spec/spec_helper.rb" + ;; Coveralls is for uploading test coverage information to an + ;; online service, and thus unnecessary for building the Guix + ;; package + (("require \"coveralls\"") "") + (("Coveralls\\.wear!") "") + ;; Remove rspec/retry as we are not retrying the tests + (("require \"rspec/retry\"") "") + (("config\\.display_try_failure_messages = true") "") + (("config\\.verbose_retry = true") "")))) + (add-before 'check 'compile + (lambda _ + (invoke "rake" "compile"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list bundler ruby-rake-compiler ruby-rspec ruby-rubocop)) + (synopsis "New I/O for Ruby") + (description + "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby +for scalable network clients and servers.") + (home-page "https://github.com/socketry/nio4r") + (license license:expat))) + +(define-public ruby-language-server-protocol + (package + (name "ruby-language-server-protocol") + (version "3.17.0.3") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/mtsmfm/language_server-protocol-ruby") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0f2g301fz99c6nkca39s9227brlycznv8a9r4b4i99rg25m91lc6")))) + (build-system ruby-build-system) + (arguments + (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" + (("git ls-files -z([^`]*)" _ files) + (string-append "find " files + " -type f -not -regex '.*\\.gem$'" + " -print0 | sort -z")))))))) + (native-inputs + (list ruby-activesupport + ruby-benchmark-ips + ruby-m + ruby-minitest + 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.") + (home-page "https://github.com/mtsmfm/language_server-protocol-ruby") + (license license:expat))) + +(define-public ruby-spy + (package + (name "ruby-spy") + (version "1.0.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "spy" version)) + (sha256 + (base32 + "0g2mma8q17m26k5s864ndlvvqllhcivwg2wdigjvb7z06iw17gds")))) + (build-system ruby-build-system) + (arguments + (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.*") ""))))))) + (native-inputs + (list ruby-coveralls + ruby-minitest-reporters + ruby-pry + ruby-rspec-core + ruby-rspec-expectations)) + (synopsis "Mocking library for Ruby") + (description "Spy is a mocking library. By default, it will raise an +error if you attempt to stub a method that doesn't exist or call the stubbed +method with the wrong arity.") + (home-page "https://github.com/ryanong/spy") + (license license:expat))) + +(define-public ruby-subprocess + (package + (name "ruby-subprocess") + (version "1.5.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "subprocess" version)) + (sha256 + (base32 + "0v49ahfx9b75qg42sl8a3l367g2vihc16g8z5f2raxpxjl1wh2s2")))) + (build-system ruby-build-system) + ;; Do not run the test suite, as there its test dependency ruby-sord would + ;; introduce a cycle with ruby-sorbet-runtime. + (arguments (list #:tests? #f)) + (native-inputs (list ruby-minitest ruby-pry)) + (synopsis "Ruby library to control and communicate with spawned processes") + (description "This Ruby library is controlling and communicating with +spawned processes. It is designed after Python's @code{subprocess} module.") + (home-page "https://github.com/stripe/subprocess") + (license license:expat))) + +(define-public ruby-sus + (package + (name "ruby-sus") + (version "0.20.3") + (source (origin + (method git-fetch) ;for gems.rb + (uri (git-reference + (url "https://github.com/ioquatix/sus") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0j4rkh9li79674h3lfkxlcdygscmb22l77i7hwhxl3gw103gkpdr")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-before 'build 'prune-gems.rb + (lambda _ + (substitute* "gems.rb" + (("gem \"bake-modernize\"") "") + (("gem \"bake-gem\"") "") + (("gem \"utopia-project\"") "")))) + (add-before 'build 'remove-missing-signing-key + (lambda _ + ;; Otherwise, the build fails with ENOENT. + (substitute* "sus.gemspec" + ((".*spec.signing_key.*") "")))) + (delete 'check) ;moved after install + (add-after 'install 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "CONSOLE_LEVEL" "debug") + (setenv "HOME" "/tmp") + ;; 'bundle exec' must be used to workaround a problem + ;; when using bake test and GEM_PATH (see: + ;; https://github.com/ioquatix/bake/issues/11). + (invoke "bundle" "exec" "bake" "test")))) + (add-before 'check 'set-paths + (lambda _ + (setenv "PATH" (string-append (getenv "PATH") ":" + #$output "/bin")) + (setenv "GEM_PATH" (string-append + (getenv "GEM_PATH") ":" + #$output "/lib/ruby/vendor_ruby"))))))) + (native-inputs (list ruby-bake-test ruby-bake-test-external ruby-covered)) + (synopsis "Fast and scalable test runner for Ruby") + (description "This package provides a fast and scalable test runner for Ruby.") + (home-page "https://github.com/ioquatix/sus") + (license license:expat))) + +(define-public ruby-syntax-tree + (package + (name "ruby-syntax-tree") + (version "6.1.1") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby-syntax-tree/syntax_tree") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0356lgvqp22nkqlrgszf7myfdg4arclg278awh34zyby1cx6hb2k")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + ;; The tests rely on the Gem being installed, so move the check + ;; phase after the install phase. + (delete 'check) + (add-after 'install 'check + (lambda* (#:key tests? #:allow-other-keys) + (setenv "GEM_PATH" (string-append + #$output "/lib/ruby/vendor_ruby:" + (getenv "GEM_PATH"))) + (when tests? + (invoke "rake" "test"))))))) + (native-inputs (list ruby-rubocop-ast ruby-simplecov)) + (propagated-inputs (list ruby-prettier-print)) + (synopsis "Fast Ruby parser and formatter") + (description "Syntax Tree is a suite of tools built on top of the internal +CRuby parser. It provides the ability to generate a syntax tree from source, +as well as the tools necessary to inspect and manipulate that syntax tree. It +can be used to build formatters, linters, language servers, and more.") + (home-page "https://github.com/ruby-syntax-tree/syntax_tree") + (license license:expat))) + +(define-public ruby-stringio + (package + (name "ruby-stringio") + (version "3.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ruby/stringio") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jgi2w5y0z0x9mfapr2pdlag4wvn03fpf5kbai8bscyh8nn79yka")))) + (build-system ruby-build-system) + (native-inputs (list ruby-rake-compiler ruby-test-unit-ruby-core)) + (synopsis "Pseudo `IO` class from and to `String`") + (description "Pseudo `IO` class from and to `String`.") + (home-page "https://github.com/ruby/stringio") + (license license:bsd-2))) + +(define-public ruby-stream + (package + (name "ruby-stream") + (version "0.5.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "stream" version)) + (sha256 + (base32 + "016m9v81vpj14d8g5ins91zc4pzl7vf5f1gxl7jhfsfy601k7cv2")))) + (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'remove-version-constraints + (lambda _ + (delete-file "Gemfile.lock")))))) + (native-inputs (list bundler ruby-stringio ruby-webrick ruby-yard)) + (synopsis "Interface for external iterators") + (description "Module Stream defines an interface for external iterators.") + (home-page "https://github.com/monora/stream") + (license license:bsd-2))) + +(define sorbet-version "0.5.10610.20230106174520-1fa668010") + +(define sorbet-monorepo + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sorbet/sorbet") + (commit sorbet-version))) + (file-name (string-append "sorbet-" sorbet-version "-checkout")) + (sha256 + (base32 + "0f21dl06alxwn6xgdxyrkd58plmmsv04z2bcls9ld4cfzsrs5537")))) + +(define (make-sorbet-gem-source gem) + "Return the source of GEM, a sub-directory." + (computed-file + (string-append "ruby-sorbet-" gem "-" sorbet-version "-checkout") + (with-imported-modules (source-module-closure '((guix build utils))) + #~(begin + (use-modules (guix build utils)) + (copy-recursively (string-append #$sorbet-monorepo + "/gems/sorbet-" #$gem) + #$output))))) + +(define-public ruby-sorbet-runtime + (package + (name "ruby-sorbet-runtime") + (version sorbet-version) + (source (make-sorbet-gem-source "runtime")) + (build-system ruby-build-system) + ;; 25 out of 841 tests currently fail, seemingly due to invalid + ;; assumptions about file names in the build environment (see: + ;; https://github.com/sorbet/sorbet/issues/6650). + (arguments (list #:tests? #f)) + (native-inputs + (list ruby-minitest + ruby-mocha + ruby-rubocop + ruby-rubocop-performance + ruby-concurrent-ruby + ruby-pry + ruby-parser + ruby-subprocess)) + (synopsis "Runtime type checking component for Sorbet") + (description "Sorbet's runtime type checking component. Sorbet is a +powerful type checker for Ruby.") + (home-page "https://sorbet.org") + (license license:asl2.0))) + +(define-public ruby-mustache + (package + (name "ruby-mustache") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mustache" version)) + (sha256 + (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-simplecov" ,ruby-simplecov) + ("test-patch" + ,(search-patch "ruby-mustache-1.1.1-fix-race-condition-tests.patch")))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (invoke "patch" "-p1" "--batch" "-i" + (assoc-ref inputs "test-patch"))))))) + (synopsis "Framework-agnostic way to render logic-free views") + (description + "Mustache is a framework-agnostic way to render logic-free views. +Think of Mustache as a replacement for your views. Instead of views +consisting of ERB or HAML with random helpers and arbitrary logic, +your views are broken into two parts: a Ruby class and an HTML +template.") + (home-page "https://github.com/mustache/mustache") + (license license:expat))) + +(define-public ruby-mustermann + (package + (name "ruby-mustermann") + (version "3.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mustermann" version)) + (sha256 + (base32 + "0rwbq20s2gdh8dljjsgj5s6wqqfmnbclhvv2c2608brv7jm6jdbd")))) + (build-system ruby-build-system) + (arguments + ;; No tests. + '(#:tests? #f)) + (synopsis "Library implementing patterns that behave like regular expressions") + (description "Given a string pattern, Mustermann will turn it into an +object that behaves like a regular expression and has comparable performance +characteristics.") + (home-page "https://github.com/sinatra/mustermann") + (license license:expat))) + +(define-public ruby-prettier-print + (package + (name "ruby-prettier-print") + (version "1.2.1") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby-syntax-tree/prettier_print") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00cg40jc0il1hpsrpsrqwhsxmx7day9lxp1ksrm08zxzsrz9ykqz")))) + (build-system ruby-build-system) + (native-inputs (list ruby-simplecov)) + (synopsis "Compatible and featureful implementation of @code{prettyprint}") + (description "This package provides a drop-in replacement for the +@code{prettyprint} gem, with more functionality.") + (home-page "https://github.com/ruby-syntax-tree/prettier_print") + (license license:expat))) + +(define-public ruby-html-proofer + (package + (name "ruby-html-proofer") + (version "5.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gjtorikian/html-proofer") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "01ksss3ikppc45z2q33bx8bb9785bqlp1rdqascaqg9mhs392adk")))) + (build-system ruby-build-system) + (arguments + (list + ;; Tests require vcr, which is under the Hippocratic license, which is + ;; not a free software license (see: + ;; https://www.gnu.org/licenses/license-list.html#hippocratic). + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (substitute* "html-proofer.gemspec" + (("required_ruby_version = \\[\">= 3.1\"") + "required_ruby_version = [\">= 2.6\"")))) + (replace 'replace-git-ls-files + (lambda _ + ;; The html-proofer.gemspec file contains 'all_files = %x(git + ;; ls-files -z).split("\x0")', but the original phase matches on + ;; `git ls-files -z`. + ;; TODO: Improve ruby-build-system patterns on core-updates. + (substitute* "html-proofer.gemspec" + (("git ls-files -z") + "find . -type f -not -regex '.*\\.gem$' -print0 \ +| sort -z | cut -zc3-"))))))) + (propagated-inputs + (list ruby-addressable + ruby-mercenary + ruby-nokogiri + ruby-parallel + ruby-rainbow + ruby-typhoeus + ruby-yell)) + (synopsis "Test your rendered HTML files to make sure they're accurate") + (description + "HTMLProofer is a set of tests to validate your HTML output. These +tests check if your image references are legitimate, if they have alt tags, +if your internal links are working, and so on. It's intended to be an +all-in-one checker for your output.") + (home-page "https://github.com/gjtorikian/html-proofer") + (license license:expat))) + +(define-public ruby-htmlentities + (package + (name "ruby-htmlentities") + (version "4.3.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "htmlentities" version)) + (sha256 + (base32 + "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (map (lambda (file) + (invoke "ruby" "-Itest" file)) + (find-files "./test" ".*_test\\.rb"))))))) + (synopsis "Encode and decode (X)HTML entities") + (description + "This package provides a module for encoding and decoding (X)HTML +entities.") + (home-page "https://github.com/threedaymonk/htmlentities") + (license license:expat))) + +;;; FIXME: Currently broken with rack 3, awaiting the merge for +;;; https://github.com/sinatra/sinatra/pull/1857 and a new release. +(define-public ruby-sinatra + (package + (name "ruby-sinatra") + (version "3.0.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sinatra" version)) + (sha256 + (base32 + "1ryfja9yd3fq8n1p5yi3qnd0pjk7bkycmxxmbb1bj0axlr1pdv20")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-mustermann ruby-rack ruby-rack-protection ruby-tilt)) + (synopsis "DSL for quick web applications creation in Ruby") + (description + "Sinatra is a DSL for quickly creating web applications in Ruby with +minimal effort.") + (home-page "https://sinatrarb.com/") + (license license:expat))) + +(define-public ruby-timeout + (package + (name "ruby-timeout") + (version "0.4.3") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/timeout") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1mw2dwyp2j05fl2gmw8cj132kk145sbxj5i0whpxcnddlc8gw781")))) + (build-system ruby-build-system) + (native-inputs (list ruby-test-unit-ruby-core)) + (synopsis "Timeout library for Ruby") + (description "Timeout provides a way to auto-terminate a potentially +long-running operation if it hasn't finished in a fixed amount of time.") + (home-page "https://github.com/ruby/timeout") + (license (list license:bsd-2)))) + +(define-public ruby-thin + (package + (name "ruby-thin") + (version "1.7.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "thin" version)) + (sha256 + (base32 + "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f")))) + (build-system ruby-build-system) + (arguments + ;; No tests. + '(#:tests? #f)) + (propagated-inputs + (list ruby-daemons ruby-eventmachine ruby-rack)) + (synopsis "Thin and fast web server for Ruby") + (description "Thin is a Ruby web server that glues together 3 Ruby libraries: +@itemize +@item the Mongrel parser, +@item Event Machine, a network I/O library with high scalability, performance +and stability, +@item Rack, a minimal interface between webservers and Ruby frameworks. +@end itemize\n") + (home-page "https://github.com/macournoyer/thin") + (license license:ruby))) + +(define-public ruby-truthy + (package + (name "ruby-truthy") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "truthy" version)) + (sha256 + (base32 + "19silgd65j3qwfk5w891p9wcmzdmi9ddm2kg5zbvvqn2h9lkfzmd")))) + (build-system ruby-build-system) + (arguments (list #:phases #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (substitute* "spec/spec_helper.rb" + (("require 'spec'") + "require 'rspec'")) + (invoke "rspec"))))))) + (native-inputs (list ruby-rspec)) + (synopsis "Object truthiness-related Ruby library") + (description "This library makes it easier to discover the truth values of +various Ruby objects.") + (home-page "https://github.com/ymendel/truthy") + (license license:expat))) + +(define-public ruby-skinny + (package + (name "ruby-skinny") + (version "0.2.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "skinny" version)) + (sha256 + (base32 + "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f ; No included tests + #:phases + (modify-phases %standard-phases + (add-before 'build 'patch-gemspec + (lambda _ + (substitute* ".gemspec" + ((".freeze, \\[\\\"~> 1.0.0\"") + ", [\">= 1.0.0\"") + ((".freeze, \\[\\\"< 1.7\", ") ", ["))))))) + (propagated-inputs + (list ruby-eventmachine ruby-thin)) + (synopsis "Simple, upgradable WebSockets for Ruby Thin") + (description "Skinny is a simple, upgradable WebSockets for Ruby, using +the Thin library.") + (home-page "https://github.com/sj26/skinny") + (license license:expat))) + +(define-public ruby-sys-filesystem + (package + (name "ruby-sys-filesystem") + (version "1.3.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sys-filesystem" version)) + (sha256 + (base32 + "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01")))) + (build-system ruby-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'check 'set-HOME + (lambda _ + ;; Some tests attempt to stat $HOME. Let them. + (setenv "HOME" "/tmp")))))) + (propagated-inputs + (list ruby-ffi)) + (native-inputs + (list ruby-mkmf-lite)) + (synopsis "Gather file system information") + (description + "The @code{sys-filesystem} library provides a cross-platform interface +for gathering file system information, such as disk space and mount points.") + (home-page "https://github.com/djberg96/sys-filesystem") + (license license:asl2.0))) + +(define-public mailcatcher + (package + (name "mailcatcher") + (version "0.7.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mailcatcher" version)) + (sha256 + (base32 + "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n")))) + (build-system ruby-build-system) + (arguments + ;; Tests require web/assets which is not included in the output. We + ;; might be able to fix this by adding the Git repository to the GEM_PATH + ;; of the tests. See ruby-mysql2. + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'patch-gemspec + (lambda _ + (substitute* ".gemspec" + ((".freeze, \\[\\\"= 1.0.9.1") + ", [\">= 1.0.9.1") + ((".freeze, \\[\\\"~> 1.5") ", [\">= 1.5") + ((".freeze, \\[\\\"~> 1.5.0") ", [\">= 1.5.0") + ((".freeze, \\[\\\"~> 1.2") ", [\">= 1.2")))) + (add-before 'build 'loosen-dependency-contraint + (lambda _ + (substitute* "lib/mail_catcher.rb" + (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"") + (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"") + (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"") + (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))))))) + (inputs + (list ruby-eventmachine + ruby-mail + ruby-rack + ruby-sinatra + ruby-skinny + ruby-sqlite3 + ruby-thin)) + (synopsis "SMTP server which catches messages to display them a browser") + (description + "MailCatcher runs a super simple SMTP server which catches any message +sent to it to display in a web interface. Run mailcatcher, set your favourite +app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server, +then check out http://127.0.0.1:1080 to see the mail.") + (home-page "https://mailcatcher.me") + (license license:expat))) + +(define-public ruby-backport + (package + (name "ruby-backport") + (version "1.1.2") + (source + (origin + ;; The gem does not include test code, so fetch from the Git repository. + (method git-fetch) + (uri (git-reference + (url "https://github.com/castwide/backport") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec")) + (native-inputs + (list bundler ruby-rspec)) + (inputs + (list ruby-simplecov)) + (synopsis "Pure Ruby library for event-driven IO") + (description + "This package provides a pure Ruby library for event-driven IO.") + (home-page "https://github.com/castwide/backport") + (license license:expat))) + +(define-public ruby-json-schema + (package + (name "ruby-json-schema") + (version "2.8.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "json-schema" version)) + (sha256 + (base32 + "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (replace 'build + (lambda _ + (invoke "gem" "build" ".gemspec")))))) + (propagated-inputs + (list ruby-addressable)) + (synopsis "Ruby JSON Schema Validator") + (description "This library provides Ruby with an interface for validating +JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy +support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1 +is also included.") + (home-page "https://github.com/ruby-json-schema/json-schema") + (license license:expat))) + +(define-public swagger-diff + (package + (name "swagger-diff") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "swagger-diff" version)) + (sha256 + (base32 + "18kbrijkafs3vfsbaqz0cqfj7jrz3aj8xr4fgn5if63wlximybv2")))) + (build-system ruby-build-system) + (arguments + (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 + (list bundler ruby-rspec-core ruby-rspec-expectations)) + (synopsis + "Compare Open API Initiative specification files") + (description + "Swagger::Diff is a utility for comparing two different Open API +Initiative (OAI) specifications (formerly known as Swagger specifications). +It is intended to determine whether a newer API specification is +backwards-compatible with an older API specification.") + (home-page "https://github.com/civisanalytics/swagger-diff") + (license license:bsd-3))) + +(define-public ruby-reverse-markdown + (package + (name "ruby-reverse-markdown") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "reverse_markdown" version)) + (sha256 + (base32 + "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-nokogiri)) + (native-inputs + (list bundler ruby-rspec ruby-kramdown ruby-simplecov)) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (synopsis "Convert HTML into Markdown") + (description + "This Ruby module allows you to map simple HTML back into +Markdown---e.g., if you want to import existing HTML data in your +application.") + (home-page "https://github.com/xijo/reverse_markdown") + (license license:wtfpl2))) + +(define-public ruby-solargraph + (package + (name "ruby-solargraph") + (version "0.40.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "solargraph" version)) + (sha256 + (base32 + "1gf049rm0yvw4r8r5yyi890idbfg8qh0dikqx5prvkh11srl73bz")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-backport + bundler + ruby-benchmark + ruby-e2mmap + ruby-jaro-winkler + ruby-kramdown + ruby-kramdown-parser-gfm + ruby-maruku + ruby-nokogiri + ruby-parser + ruby-reverse-markdown + ruby-rubocop + ruby-thor + ruby-tilt + ruby-yard)) + (native-inputs + (list ruby-rspec ruby-pry ruby-simplecov ruby-webmock)) + ;; FIXME: can't figure out how to run the tests properly: + + ;; An error occurred while loading spec_helper. + ;; Failure/Error: return gem_original_require(path) + ;; LoadError: + ;; cannot load such file -- spec_helper + (arguments + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (synopsis + "IDE tools for code completion, inline documentation, and static analysis") + (description + "Solargraph provides a comprehensive suite of tools for Ruby +programming: intellisense, diagnostics, inline documentation, and type +checking.") + (home-page "https://solargraph.org/") + (license license:expat))) + +(define-public ruby-wayback-machine-downloader + (package + (name "ruby-wayback-machine-downloader") + (version "2.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri + "wayback_machine_downloader" + version)) + (sha256 + (base32 + "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; no tests + (synopsis "Download archived websites from the Wayback Machine") + (description + "Wayback Machine Downloader is a command line tool for downloading +websites from the Internet Archive's Wayback Machine (archive.org). +It allows fine grained control over what to download by specifying +which snapshots to consider and what files to include.") + (home-page + "https://github.com/hartator/wayback-machine-downloader") + (license license:expat))) + +(define-public ruby-zeitwerk + (package + (name "ruby-zeitwerk") + (version "2.7.1") + (source + (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/fxn/zeitwerk") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19qmcdpbh4bl878zd1w19064yjkpb8sxaydcasqfa7p8cfg3hnsr")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-minitest + ruby-minitest-focus + ruby-minitest-proveit + ruby-minitest-reporters + ruby-warning)) + (synopsis "Efficient and thread-safe code loader for Ruby") + (description + "Zeitwerk implements constant autoloading with Ruby semantics. Each gem +and application may have their own independent autoloader, with its own +configuration, inflector, and logger. Supports autoloading, reloading, and +eager loading.") + (home-page "https://github.com/fxn/zeitwerk") + (license license:expat))) + +(define-public ruby-warning + (package + (name "ruby-warning") + (version "1.5.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "warning" version)) + (sha256 + (base32 "0lwcf7fsz1sda1fdbqq1i4q9kzg4f5vwrzgfg1vpa1hcxagw84hg")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; No tests bundled. + (synopsis "Custom processing for warnings") + (description + "This package adds custom processing for warnings for Ruby, including the +ability to ignore specific warning messages, ignore warnings in specific +files/directories, include backtraces with warnings, treat warnings as errors, +deduplicate warnings, and add custom handling for all warnings in specific +files/directories.") + (home-page "https://github.com/jeremyevans/ruby-warning") + (license license:expat))) + +(define-public ruby-wwtd + (package + (name "ruby-wwtd") + (version "1.4.1") + (home-page "https://github.com/grosser/wwtd") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Remove bundled library. + (delete-file "spec/rake-12.3.0.gem"))))) + (build-system ruby-build-system) + (arguments + '(;; XXX: Tests need multiple versions of ruby, wants to run + ;; `bundle install`, etc. + #:tests? #f + #:phases (modify-phases %standard-phases + (replace 'replace-git-ls-files + (lambda _ + (substitute* "wwtd.gemspec" + (("git ls-files lib/ bin/`") + "find lib/ bin/ -type f |sort`")))) + (add-before 'check 'remove-version-constraints + (lambda _ + (delete-file "Gemfile.lock"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "rspec" "spec/") + (format #t "test suite not run~%"))))))) + (native-inputs + (list ruby-bump ruby-rspec)) + (synopsis "Run @file{.travis.yml} files locally") + (description + "WWTD is a @dfn{Travis Simulator} that lets you run test matrices +defined in @file{.travis.yml} on your local machine, using @code{rvm}, +@code{rbenv}, or @code{chruby} to test different versions of Ruby.") + (license license:expat))) + +(define-public ruby-rugged + ;; The last release is old and doesn't build anymore (see: + ;; https://github.com/libgit2/rugged/issues/951). + (let ((commit "6379f23cedd5f527cf6a5c229627e366b590a22d") + (revision "0")) + (package + (name "ruby-rugged") + (version (git-version "1.6.2" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/libgit2/rugged") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0yac7vm0l2jsdsxf2k7xbny4iyzsy8fhiy2g5sphhffp7xgynny8")))) + (build-system ruby-build-system) + (arguments + (list #:gem-flags + #~(list "--" "--use-system-libraries") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'adjust-extconf.rb + (lambda _ + ;; Neither using --with-git2-dir=$prefix nor providing + ;; pkg-config allows locating the libgit2 prefix (see: + ;; https://github.com/libgit2/rugged/issues/955). + (substitute* "ext/rugged/extconf.rb" + (("LIBGIT2_DIR = File.join.*'vendor', 'libgit2'.*") + (format #f "LIBGIT2_DIR = ~s~%" + #$(this-package-input "libgit2")))))) + (delete 'check) ;moved after the install phase + (add-after 'install 'check + (assoc-ref %standard-phases 'check)) + (add-before 'check 'set-GEM_PATH + (lambda _ + (setenv "GEM_PATH" (string-append + (getenv "GEM_PATH") ":" + #$output "/lib/ruby/vendor_ruby")))) + (add-before 'check 'disable-problematic-tests + (lambda _ + (with-directory-excursion "test" + (for-each delete-file + ;; These tests require an actual libgit2 git + ;; repository checkout. + '("blame_test.rb" + "blob_test.rb" + "cherrypick_test.rb" + "config_test.rb" + "commit_test.rb" + "diff_test.rb" + "index_test.rb" + "merge_test.rb" + "note_test.rb" + "object_test.rb" + "patch_test.rb" + "rebase_test.rb" + "reference_test.rb" + "remote_test.rb" + "repo_apply_test.rb" + "repo_ignore_test.rb" + "repo_pack_test.rb" + "repo_reset_test.rb" + "repo_test.rb" + "revert_test.rb" + "settings_test.rb" + "status_test.rb" + "submodule_test.rb" + "tag_test.rb" + "tree_test.rb" + "walker_test.rb")) + (delete-file-recursively "online"))))))) + (native-inputs (list git-minimal/pinned ruby-rake-compiler)) + (inputs (list libgit2)) + (synopsis "Ruby bindings to the libgit2 linkable C Git library") + (description "Rugged is a library for accessing libgit2 in Ruby. It gives +you the speed and portability of libgit2 with the beauty of the Ruby +language.") + (home-page "https://www.rubydoc.info/gems/rugged") + (license license:expat)))) + +(define-public ruby-yell + (package + (name "ruby-yell") + (version "2.2.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "yell" version)) + (sha256 + (base32 + "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "rake" "examples")))))) ; there is no test target. + (synopsis + "Extensible logging library for Ruby") + (description + "Yell is a comprehensive logging replacement for Ruby. It defines +multiple adapters, various log level combinations and message formatting +options.") + (home-page "https://github.com/rudionrails/yell") + (license license:expat))) + +(define-public ruby-e2mmap + (package + (name "ruby-e2mmap") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "e2mmap" version)) + (sha256 + (base32 + "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ;; There is a rakefile but no tests + (synopsis + "Module for defining custom exceptions with specific messages") + (description + "Exception2MessageMapper (e2mmap) is a helper module for easily defining +exceptions with predefined messages.") + (home-page "https://github.com/ruby/e2mmap") + (license license:bsd-2))) + +(define-public ruby-benchmark + (package + (name "ruby-benchmark") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "benchmark" version)) + (sha256 + (base32 + "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg")))) + (build-system ruby-build-system) + (synopsis "Performance benchmarking library") + (description "This package provides methods for benchmarking Ruby code, +giving detailed reports on the time taken for each task.") + (home-page "https://github.com/ruby/benchmark") + (license license:bsd-2))) + +(define-public ruby-jekyll-feed + (package + (name "ruby-jekyll-feed") + (version "0.15.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-feed" version)) + (sha256 + (base32 + "1zxqkrnix0xiw98531h5ga6h69jhzlx2jh9qhvcl67p8nq3sgza9")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #false)) ;there are none + (propagated-inputs + (list jekyll)) + (synopsis + "Jekyll plugin to generate an Atom feed of your Jekyll posts") + (description + "This package provides a Jekyll plugin to generate an Atom feed +of your Jekyll posts.") + (home-page + "https://github.com/jekyll/jekyll-feed") + (license license:expat))) + +(define-public ruby-jekyll-sitemap + (package + (name "ruby-jekyll-sitemap") + (version "1.4.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-sitemap" version)) + (sha256 + (base32 + "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #false)) ;there are none + (propagated-inputs + (list jekyll)) + (synopsis + "Automatically generate a sitemap.xml for your Jekyll site") + (description + "This package provides a Jekyll plugin to silently generate +a sitemaps.org compliant sitemap for your Jekyll site.") + (home-page + "https://github.com/jekyll/jekyll-sitemap") + (license license:expat))) + +(define-public ruby-jekyll-seo-tag + (package + (name "ruby-jekyll-seo-tag") + (version "2.7.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-seo-tag" version)) + (sha256 + (base32 + "0fsi75hymk2wswy216fs224p5ycrzjw1kshw1bsl5czhv42wr2w3")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #false)) + (propagated-inputs + (list jekyll)) + (synopsis + "Jekyll plugin to add metadata tags for search engines and social networks") + (description + "This package provides a Jekyll plugin to add metadata tags for search engines +and social networks to better index and display your site's content.") + (home-page + "https://github.com/jekyll/jekyll-seo-tag") + (license license:expat))) + +(define-public ruby-taskjuggler + (package + (name "ruby-taskjuggler") + (version "3.8.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "taskjuggler" version)) + (sha256 + (base32 + "16d5vgz54all8vl3haqy6j69plny3np4kc3wq7wy3xa3i0h7v60z")))) + (build-system ruby-build-system) + (native-inputs (list ruby-rspec tzdata-for-tests)) + (propagated-inputs + (list ruby-mail ruby-term-ansicolor)) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'replace-git-ls-files + (lambda _ + (substitute* "tasks/rdoc.rake" + (("`git ls-files -- lib`") + "`find lib/ -type f |sort`")))) + (add-before 'check 'tzdir-setup + (lambda* (#:key inputs #:allow-other-keys) + (setenv "TZDIR" + (string-append (assoc-ref inputs "tzdata") + "/share/zoneinfo")))) + (add-before 'check 'delete-test-BatchProcessor + ;; test_BatchProcessor fails with exception: + ;; run> terminated with exception (report_on_exception is true) + (lambda _ + (delete-file "test/test_BatchProcessor.rb")))))) + (synopsis + "Project management command line tool with a domain specific language") + (description + "TaskJuggler (tj3) is a project management tool for project planning and +tracking using a domain specific language; projects are plain text files +written using your favourite text editor. It includes reporting in HTML, CSV +or iCalendar format and an email based status tracking system to send and +receive time sheets from collaborators. + +It covers the complete spectrum of project management tasks from the first +idea to the completion of the project. It assists you during project scoping, +resource assignment, cost and revenue planning, risk and communication +management, status tracking and reporting.") + (home-page "https://taskjuggler.org") + (license license:gpl2))) + +(define-public ruby-cmath + (package + (name "ruby-cmath") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "cmath" version)) + (sha256 + (base32 + "1xkz6xyhpkjbdvpdib8450w62rls1mjryz0gzbbnadxkxn82nb8m")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #false)) + (native-inputs + (list bundler ruby-rake-compiler)) + (synopsis "Trigonometric functions for complex numbers") + (description + "This gem is a library that provides trigonometric and transcendental +functions for complex numbers. The functions in this module accept integers, +floating-point numbers or complex numbers as arguments.") + (home-page "https://github.com/ruby/cmath") + (license license:bsd-2))) + +(define-public ruby-sucker-punch + (package + (name "ruby-sucker-punch") + (version "3.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sucker_punch" version)) + (sha256 + (base32 "12by9vx8q6l4i56q62k1s1ymaxbpg4rny5zngj5i5h09kyh2yp4p")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'extract-gemspec 'less-strict-dependencies + (lambda _ + (substitute* "sucker_punch.gemspec" + (("1.0.0") "1.0"))))))) + (native-inputs + (list + ruby-pry)) + (propagated-inputs + (list + ruby-concurrent)) + (home-page "https://github.com/brandonhilkert/sucker_punch") + (synopsis "Asynchronous processing library for Ruby") + (description "Sucker Punch is a single-process Ruby asynchronous processing +library. It is perfect for asynchronous processes like emailing, data crunching +or social platform manipulation; and generally recommended for jobs that are +fast and non-mission critical like logs, emails, etc.") + (license license:expat))) + +(define-public ruby-countdownlatch + (package + (name "ruby-countdownlatch") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "countdownlatch" version)) + (sha256 + (base32 "1v6pbay6z07fp7yvnba1hmyacbicvmjndd8rn2h1b5rmpcb5s0j3")))) + (build-system ruby-build-system) + (home-page "https://github.com/benlangfeld/countdownlatch") + (synopsis "Thread synchronization aid Ruby") + (description "CountDownLatch is a synchronization aid that allows one or +more threads to wait until a set of operations being performed in other threads +completes.") + (license license:expat))) + +(define-public ruby-value-semantics + (package + (name "ruby-value-semantics") + (version "3.6.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "value_semantics" version)) + (sha256 + (base32 "1vdwai8wf6r1fkvdpyz1vzxm89q7ghjvb3pqpg2kvwibwzd99dnx")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list + ruby-rspec)) + (home-page "https://github.com/tomdalling/value_semantics") + (synopsis "Ruby gem for making value classes") + (description "ValueSemantics generates modules that provide conventional +value semantics for a given set of attributes. The behaviour is similar to an +immutable Struct class, plus extensible, lightweight validation and coercion.") + (license license:expat))) + +(define-public ruby-promise + (package + (name "ruby-promise") + (version "0.7.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "promise.rb" version)) + (sha256 + (base32 "0a819sikcqvhi8hck1y10d1nv2qkjvmmm553626fmrh51h2i089d")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-after 'extract-gemspec 'less-strict-dependencies + (lambda _ + (substitute* "Rakefile" + (("if Gem.ruby_version.*") "if false\n")) + (substitute* "spec/spec_helper.rb" + ((".*devtools/spec_helper.*") "\n"))))))) + (native-inputs + (list + ruby-rspec + ruby-rspec-its + ruby-awesome-print + ruby-fuubar)) + (home-page "https://github.com/lgierth/promise.rb") + (synopsis "Asynchronous operation library for Ruby") + (description "Promise is a Ruby implementation of the Promises/A+ +specification. It provides 100% mutation coverage, tested on MRI 1.9, 2.0, 2.1, +2.2, Rubinius, and JRuby.") + (license license:unlicense))) + +(define-public ruby-multicodecs + (package + (name "ruby-multicodecs") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "multicodecs" version)) + (sha256 + (base32 "0drq267di57l9zqw6zvqqimilz42rbc8z7392dwkk8wslq30s7v8")))) + (build-system ruby-build-system) + (home-page "https://github.com/SleeplessByte/ruby-multicodec") + (synopsis "Ruby implementation of multiformats/multicodec") + (description "Multicodecs is the ruby implementation of +multiformats/multicodec, a canonical table of of codecs used by various +multiformats.") + (license license:expat))) + +(define-public ruby-multihashes + (package + (name "ruby-multihashes") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "multihashes" version)) + (sha256 + (base32 "17wiyy3fiv8rpgdv9ca01yncsmaaf8yg15bg18wc7m9frss1vgqg")))) + (build-system ruby-build-system) + (propagated-inputs + (list + ruby-multicodecs)) + (home-page "https://github.com/multiformats/ruby-multihash") + (synopsis "Multihash implementation for Ruby") + (description "Multihashes provides a simple, low-level multihash +implementation for Ruby. A multihash is a digest with an embedded hash function +code") + (license license:expat))) + +(define-public ruby-lazy-object + (package + (name "ruby-lazy-object") + (version "0.0.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "lazy_object" version)) + (sha256 + (base32 "08px15lahc28ik9smvw1hgamf792gd6gq0s4k94yq1h7jq25wjn8")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec")) + (home-page "https://github.com/HornsAndHooves/lazy_object") + (synopsis "Object wrapper that forwards all calls to the reference object") + (description "LazyObject is an object wrapper that forwards all calls to the +reference object. This object is not created until the first method dispatch.") + (license license:expat))) + +(define-public ruby-citrus + (package + (name "ruby-citrus") + (version "3.0.2") + (source + (origin + (method git-fetch) + ;; Download from GitHub because the rubygems version does not contain + ;; files needed for tests. + (uri (git-reference + (url "https://github.com/mjackson/citrus") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "197wrgqrddgm1xs3yvjvd8vkvil4h4mdrcp16jmd4b57rxrrr769")))) + (build-system ruby-build-system) + (home-page "https://mjackson.github.io/citrus/") + (synopsis "Parsing Expressions for Ruby") + (description "Citrus is a parsing library for Ruby that combines the +expressiveness of the language with the parsing expressions.") + (license license:expat))) + +(define-public ruby-cbor + (package + (name "ruby-cbor") + (version "0.5.9.6") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "cbor" version)) + (sha256 + (base32 "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec")) + (native-inputs + (list + ruby-rspec + ruby-rake-compiler + ruby-yard)) + (home-page "https://cbor.io/") + (synopsis "Concise Binary Object Representation") + (description "CBOR is a library for the +@acronym{CBOR, Concise Binary Object Representation} format, based on +Sadayuki Furuhashi's MessagePack library.") + (license license:asl2.0))) + +(define-public ruby-gem-release + (package + (name "ruby-gem-release") + (version "2.2.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "gem-release" version)) + (sha256 + (base32 "108rrfaiayi14zrqbb6z0cbwcxh8n15am5ry2a86v7c8c3niysq9")))) + (build-system ruby-build-system) + (arguments + ;; No rakefile + `(#:tests? #f)) + (home-page "https://github.com/svenfuchs/gem-release") + (synopsis "Ruby gem plugin for release management") + (description "GemRelease is a gem plugin that aims at making gem development +easier by automating repetitive work based on conventions, configuration, and +templates.") + (license license:expat))) + +(define-public ruby-base32 + (package + (name "ruby-base32") + (version "0.3.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "base32" version)) + (sha256 + (base32 "1fjs0l3c5g9qxwp43kcnhc45slx29yjb6m6jxbb2x1krgjmi166b")))) + (build-system ruby-build-system) + (native-inputs + (list + ruby-gem-release)) + (home-page "https://github.com/stesla/base32") + (synopsis "Ruby extension for base32 encoding and decoding") + (description "Base32 is a library which provides base32 decoding and +encoding.") + (license license:expat))) + +(define-public ruby-dhall + (package + (name "ruby-dhall") + (version "0.5.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "dhall" version)) + (sha256 + (base32 "09wcq8xc1ynld04r2f332bx8cn7rjc4afaq8hm1dr2fc35jlpn6m")))) + (build-system ruby-build-system) + (arguments + ;; No test in gem archive + `(#:tests? #f)) + (propagated-inputs + (list + ruby-base32 + ruby-cbor + ruby-citrus + ruby-lazy-object + ruby-multihashes + ruby-promise + ruby-value-semantics)) + (home-page "https://git.sr.ht/~singpolyma/dhall-ruby") + (synopsis "Ruby implementation of the Dhall configuration language") + (description "Dhall.rb is a Ruby implementation of the Dhall configuration +language. Dhall is a memory safe and non-Turing-complete configuration +language.") + (license license:gpl3+))) + +(define-public ruby-money + (package + (name "ruby-money") + (version "6.16.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "money" version)) + (sha256 + (base32 "0jkmsj5ymadik7bvl670bqwmvhsdyv7hjr8gq9z293hq35gnyiyg")))) + (build-system ruby-build-system) + (arguments + ;; No rakefile. + `(#:tests? #f)) + (propagated-inputs + (list + ruby-i18n)) + (home-page "https://rubymoney.github.io/money/") + (synopsis "Currency conversion library for Ruby") + (description "RubyMoney provides a library for dealing with money and +currency conversion. Its features are: +@itemize +@item +Provides a Money class which encapsulates all information about a certain +amount of money, such as its value and its currency. +@item +Provides a Money::Currency class which encapsulates all information about a +monetary unit. +@item +Represents monetary values as integers, in cents; so avoids floating point +rounding errors. +@item +Represents currency as Money::Currency instances providing a high level of +flexibility. +@item Provides APIs for exchanging money from one currency to another. +@end itemize") + (license license:expat))) + +(define-public ruby-monetize + (package + (name "ruby-monetize") + (version "1.11.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "monetize" version)) + (sha256 + (base32 "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec")) + (native-inputs + (list + ruby-rspec)) + (propagated-inputs + (list + ruby-money)) + (home-page "https://github.com/RubyMoney/monetize") + (synopsis "Convert various objects into Money objects") + (description "Monetize provides a library for converting various objects +into Money objects.") + (license license:expat))) + +(define-public ruby-money-open-exchange-rates + (package + (name "ruby-money-open-exchange-rates") + (version "1.4.0") + (source + (origin + (method git-fetch) + ;; Download from GitHub because the rubygems version does not contain + ;; Rakefile. + (uri (git-reference + (url "https://github.com/spk/money-open-exchange-rates") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11xwqli8snr19k48yh8h77sal5vxd4snzq9gxg08v61f0574m3gw")))) + (build-system ruby-build-system) + (native-inputs + (list + ruby-minitest + ruby-mocha + ruby-monetize + ruby-rake + ruby-rubocop + ruby-timecop + ruby-webmock)) + (propagated-inputs + (list + ruby-money)) + (home-page "https://spk.github.io/money-open-exchange-rates/") + (synopsis "Money open exchange rates for Ruby") + (description "This package provides a gem that calculates the exchange rate +using published rates from open-exchange-rates. Compatible with the money gem.") + (license license:expat))) + +(define-public ruby-roda + (package + (name "ruby-roda") + (version "3.57.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "roda" version)) + (sha256 + (base32 "0nkfxnbcfnriywvx9kpamp850cwjmqv8ssajc95d0aiyjr4kdrfy")))) + (build-system ruby-build-system) + (arguments + ;; No rakefile + `(#:tests? #f)) + (propagated-inputs (list ruby-rack)) + (home-page "https://roda.jeremyevans.net") + (synopsis "Routing Tree Web Toolkit") + (description "Roda is a routing tree web toolkit, designed for building fast +and maintainable web applications in ruby.") + (license license:expat))) + +(define-public ruby-nori + (package + (name "ruby-nori") + (version "2.6.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "nori" version)) + (sha256 + (base32 "066wc774a2zp4vrq3k7k8p0fhv30ymqmxma1jj7yg5735zls8agn")))) + (build-system ruby-build-system) + (arguments + ;; Tests require too old version of rspec + `(#:tests? #f)) + (native-inputs + (list ruby-nokogiri + ruby-rake + ruby-rspec)) + (home-page "https://github.com/savonrb/nori") + (synopsis "XML to Hash translator") + (description "Nori is a simple XML parsing ripped from Crack which in-turn +ripped from Merb. It supports pluggable parsers and ships with both REXML and +Nokogiri implementations.") + (license license:expat))) + +;; This package is deprecated per upstream and should be phased out. +(define-public ruby-faraday-middleware + (package + (name "ruby-faraday-middleware") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "faraday_middleware" version)) + (sha256 + (base32 "1bw8mfh4yin2xk7138rg3fhb2p5g2dlmdma88k82psah9mbmvlfy")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)) + (propagated-inputs (list ruby-faraday)) + (home-page "https://github.com/lostisland/faraday_middleware") + (synopsis "Various middleware for Faraday") + (description "Faraday_Middleware is a collection of middleware for the +Faraday-based API wrappers.") + (license license:expat))) + +(define-public ruby-faraday-multipart + (package + (name "ruby-faraday-multipart") + (version "1.0.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lostisland/faraday-multipart") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ywxhff40a688n50lxrn4d8y096l8sbrwp1jfz4zd3kdiiygclka")))) + (build-system ruby-build-system) + (arguments (list #:test-target "spec")) + (native-inputs (list ruby-faraday ruby-multipart-parser ruby-rspec)) + (propagated-inputs (list ruby-multipart-post)) + (synopsis "Multipart-post requests extension for Faraday") + (description "This Ruby gem extends Faraday to perform multipart-post +requests.") + (home-page "https://github.com/lostisland/faraday-multipart") + (license license:expat))) + +(define-public ruby-bandwidth-iris + (package + (name "ruby-bandwidth-iris") + (version "7.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby-bandwidth-iris" version)) + (sha256 + (base32 "131c4jhyvnrwbhizkks17fi9g85cwsq5f1p8zi408zyf63n7230d")))) + (build-system ruby-build-system) + (arguments + ;; XXX: Tests don't require helper for some reason, so all fail. + `(#:tests? #f)) + (native-inputs + (list ruby-rspec + ruby-yard)) + (propagated-inputs + (list ruby-activesupport + ruby-builder + ruby-faraday + ruby-faraday-middleware + ruby-nori)) + (home-page "https://github.com/Bandwidth/ruby-bandwidth-iris") + (synopsis "Gem for integrating to Bandwidth's Iris API") + (description "Bandwidth IRIS is a Ruby SDK for Bandwidth Phone Number +Dashboard. It is a Ruby Client library for IRIS / BBS API.") + (license license:expat))) + +(define-public ruby-securerandom + (package + (name "ruby-securerandom") + (version "0.4.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "securerandom" version)) + (sha256 + (base32 "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; No tests found. + (synopsis "Interface for secure random number generator") + (description "This package provides a Ruby interface for secure random +number generators.") + (home-page "https://github.com/ruby/securerandom") + (license (list license:bsd-2)))) + +(define-public ruby-selenium-webdriver + (package + (name "ruby-selenium-webdriver") + (version "4.22.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "selenium-webdriver" version)) + (sha256 + (base32 + "0rjxlivsh32xvjq78p1m1sr366aa04wms4hwb2r187ygrnmp0hv4")))) + (build-system ruby-build-system) + ;; FIXME: The gem release lacks test files, and the git checkout lacks + ;; JavaScript source that is generated using Bazel, which isn't available + ;; in Guix yet, so disable the test suite for now. + (arguments (list #:tests? #f)) + (propagated-inputs (list ruby-base64 + ruby-rexml + ruby-rubyzip + ruby-websocket)) + (synopsis "Selenium browser automation bindings for Ruby") + (description "Selenium implements the W3C WebDriver protocol to automate +popular browsers. It aims to mimic the behaviour of a real user as it +interacts with the application's HTML. It's primarily intended for web +application testing, but any web-based task can be automated. This package +provides the Ruby bindings of Selenium.") + (home-page "https://www.selenium.dev/") + (license license:asl2.0))) + +(define-public ruby-sentry-core + (package + (name "ruby-sentry-core") + (version "5.3.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sentry-ruby-core" version)) + (sha256 + (base32 "141mrw8wghhsjvln9m6ld3hap3xc5v901jjiz007xywy25725hyd")))) + (build-system ruby-build-system) + (arguments + ;; No rakefile in gem. + `(#:tests? #f)) + (propagated-inputs + (list ruby-concurrent + ruby-faraday)) + (home-page "https://sentry.io/for/ruby/") + (synopsis "Client interface for the Sentry error logger") + (description "Sentry-Core provides a gem that provides a client +interface for the Sentry error logger.") + (license license:expat))) + +(define-public ruby-sentry + (package + (name "ruby-sentry") + (version "5.3.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sentry-ruby" version)) + (sha256 + (base32 "0by9mvw8rklzpyx59vfija8h3ssfvxvf5nbqxfmygfy6lm1vdngz")))) + (build-system ruby-build-system) + (arguments + ;; No rakefile in gem + `(#:tests? #f)) + (propagated-inputs + (list ruby-concurrent + ruby-faraday + ruby-sentry-core)) + (home-page "https://sentry.io/for/ruby/") + (synopsis "Client interface for the Sentry error logger") + (description "Sentry provides a gem that provides a client +interface for the Sentry error logger.") + (license license:expat))) + +(define-public ruby-webrick + (package + (name "ruby-webrick") + (version "1.8.1") + (source (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/webrick") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1xb0mk3cghdir65nmj0mblprbf21blli7267b6yyvxclh307yp6s")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'delete-problematic-tests + (lambda _ + ;; The httresponse tests fail for + ;; unknown reasons (see: + ;; https://github.com/ruby/webrick/issues/112). + (delete-file "test/webrick/test_httpresponse.rb")))))) + (home-page "https://github.com/ruby/webrick") + (synopsis "HTTP server toolkit") + (description "WEBrick is an HTTP server toolkit that can be configured as an +HTTPS server, a proxy server, and a virtual-host server.") + (license license:bsd-2))) + +(define-public ruby-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)))) + +(define-public ruby-braintree + (package + (name "ruby-braintree") + (version "4.12.0") + (source + (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/braintree/braintree_ruby") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0gfgkymy3655drwgs42bj9ap9qib1l30sajxmypmp6s75m9w3gsh")))) + (build-system ruby-build-system) + (arguments + (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 + ruby-rake + ruby-rspec + ruby-webrick)) + (propagated-inputs + (list ruby-builder + ruby-rexml)) + (home-page "https://www.braintreepayments.com/") + (synopsis "Integration access to the Braintree Gateway") + (description "Braintree provides resources and tools for developers to +integrate Braintree's global payments platform.") + (license license:expat))) + +(define-public ruby-niceogiri + (package + (name "ruby-niceogiri") + (version "1.1.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "niceogiri" version)) + (sha256 + (base32 "1ha93211bc9cvh23s9w89zz7rq8irpf64ccd9arvg8v1sxg2798a")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-after 'extract-gemspec 'less-strict-dependencies + (lambda _ + (substitute* "niceogiri.gemspec" + (("2\\.7") "3.8") ;rspec + ((".*dependency.*bundler.*") "\n") + ((".*dependency.*guard-rspec.*") "\n"))))))) + (native-inputs + (list ruby-rspec + ruby-yard)) + (propagated-inputs (list ruby-nokogiri)) + (home-page "https://github.com/benlangfeld/Niceogiri") + (synopsis "Supplement for Nokogiri") + (description "Niceogiri provides wrappers and helpers for XML manipulation +using Nokogiri.") + (license license:expat))) + +(define-public ruby-blather + (package + (name "ruby-blather") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "blather" version)) + (sha256 + (base32 "05ry2x835fj4pzk61282pcz86n018cr39zbgwbi213md74i90s7c")))) + (build-system ruby-build-system) + (arguments + ;; XXX: Tests require too old version of rspec. + `(#:tests? #f)) + (native-inputs + (list ruby-countdownlatch + ruby-mocha + ruby-rb-fsevent + ruby-rspec + ruby-yard)) + (propagated-inputs + (list ruby-activesupport + ruby-eventmachine + ruby-niceogiri + ruby-nokogiri + ruby-sucker-punch)) + (home-page "https://github.com/adhearsion/blather") + (synopsis "XMPP Domain Specific Language for Ruby") + (description "Blather is a XMPP DSL for Ruby written on top of EventMachine +and Nokogiri.") + (license license:expat))) + +(define-public ruby-wapiti + (package + (name "ruby-wapiti") + (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 (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1273dqvn6flq2qv9qbp104rgc7zp1gqx4096s0v0z5f0qnhzc7d6")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-builder + ruby-rexml)) + (native-inputs + (list ruby-pry + ruby-rake-compiler + ruby-rspec + ruby-simplecov)) + (arguments + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'replace-git-ls-files 'replace-another-git-ls-files + (lambda args + (substitute* "wapiti.gemspec" + (("`git ls-files spec`") + "`find spec -type f | sort`")))) + (add-before 'build 'compile + (lambda args + (invoke "rake" "compile")))))) + (home-page "https://github.com/inukshuk/wapiti-ruby") + (synopsis "Wicked fast Conditional Random Fields for Ruby") + (description + "The Wapiti-Ruby gem provides a wicked fast linear-chain @acronym{CRF, +Conditional Random Fields} API for sequence segmentation and labelling. It is +based on the codebase of @url{https://wapiti.limsi.fr, Wapiti}.") + (license license:bsd-2))) + +(define-public ruby-namae + (package + (name "ruby-namae") + (version "1.1.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "namae" version)) + (sha256 + (base32 + "1j3nl1klkx3gymrdxfc1hlq4a8qlvhhl9aj5v1v08b9fz27sky0l")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-cucumber + ruby-rspec + ruby-simplecov)) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'allow-newer-cucumber + (lambda args + (substitute* "Gemfile" + (("'cucumber', '[^']*'") + "'cucumber'")))) + (replace 'check + ;; Avoid 'rake' so we don't need jeweler. + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (apply invoke + "rspec" + (find-files "spec" "_spec\\.rb$")))))))) + (home-page "https://github.com/berkmancenter/namae") + (synopsis "Parser for human names") + (description + "Namae (名前) is a parser for human names. It recognizes personal names +of various cultural backgrounds and tries to split them into their component +parts (e.g., given and family names, honorifics etc.).") + (license (list license:bsd-2 license:agpl3+)))) + +(define-public ruby-latex-decode + (package + (name "ruby-latex-decode") + (version "0.4.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/inukshuk/latex-decode") + (commit (string-append "v" version)))) + (sha256 + (base32 + "1f5j67ayd04pjkmzvn0hk7cr8yqvn0gyg9ns6a0vhzj2gwna9ihy")) + (file-name (git-file-name name version)))) + (build-system ruby-build-system) + (native-inputs + (list ruby-cucumber + ruby-rspec)) + (arguments + (list + #:test-target "cucumber" + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'avoid-bundler + (lambda args + (substitute* "Rakefile" + (("require 'bundler" orig) + (string-append "# " orig " # patched for Guix")) + (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig) + (string-append orig " do |c|\n" + " c.bundler = false # patched for Guix\n" + "end")) + (("Bundler\\.setup" orig) + (string-append "true # " orig " # patched for Guix"))) + (substitute* "cucumber.yml" + ;; thanks to avoiding bundler, we can't use this option + ((" --publish-quiet") + "")))) + (add-after 'replace-git-ls-files 'replace-another-git-ls-files + (lambda args + (substitute* "latex-decode.gemspec" + (("`git ls-files -- [{]test,spec,features[}]/\\*`") + "`find {test,spec,features} -type f | sort`"))))))) + (home-page "https://github.com/inukshuk/latex-decode") + (synopsis "Convert LaTeX to Unicode") + (description + "This package provides a gem to convert LaTeX input to Unicode. Its +original use was as an input filter for BibTeX-Ruby, but it can be used +independently to decode LaTeX. Many of the patterns used by this Ruby gem are +based on François Charette's equivalent Perl module @code{LaTeX::Decode}.") + (license license:gpl3+))) + +(define-public ruby-link-header + (package + (name "ruby-link-header") + (version "0.0.8") + (source (origin + (method url-fetch) + (uri (rubygems-uri "link_header" version)) + (sha256 + (base32 + "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm")))) + (build-system ruby-build-system) + (home-page "https://github.com/asplake/link_header") + (synopsis "Parse and format HTTP @code{Link} headers") + (description + "This gem provides the classes @code{LinkHeader} and +@code{LinkHeader::Link}, which represent HTTP @code{Link} headers conforming +to RFC 5988. Objects can be constructed from and converted to text or a +JSON-friendly @code{Array} representation. They can also be used to generate +corresponding HTML @code{link} elements.") + (license license:expat))) + +(define-public ruby-lint-roller + (package + (name "ruby-lint-roller") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "lint_roller" version)) + (sha256 + (base32 "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard. + (native-inputs (list ruby-minitest)) + (synopsis "Specification for linter and formatter rulesets") + (description + "This package provides a plugin specification for Ruby linter and +formatter rulesets.") + (home-page "https://github.com/standardrb/lint_roller") + (license license:expat))) + +(define-public ruby-rdf + (package + (name "ruby-rdf") + (version "3.2.8") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rdf" version)) + (sha256 + (base32 + "1cj0k8ryd8hgbkgqb5swvy6fiygxny3y5bln0my5gv6dbfv3gm20")))) + (build-system ruby-build-system) + (propagated-inputs (list ruby-link-header)) + (arguments + (list #:tests? #f)) ;; tests have many cyclic dependencies + (home-page "https://ruby-rdf.github.io/") + (synopsis "Linked Data for Ruby") + (description + "This gem contains the core algorithms and classes used for doing basic +programming with @acronym{RDF, Resource Description Framework} data, +implemented in pure Ruby.") + (license license:unlicense))) + +(define-public ruby-rdf-vocab + (package + (name "ruby-rdf-vocab") + (version "3.2.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rdf-vocab" version)) + (sha256 + (base32 + "1bqmp9rfjvd56ajjz68ij6jla1wjf1fqg7bi4dpnjrsmn4pwaq7l")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-rdf)) + (arguments + (list #:tests? #f)) ;; tests have many cyclic dependencies + (home-page "https://github.com/ruby-rdf/rdf-vocab") + (synopsis "Common RDF vocabularies") + (description + "This gem extends @code{ruby-rdf} with several common @acronym{RDF, +Resource Description Framework} vocabularies.") + (license license:unlicense))) + +(define-public ruby-rdiscount + (package + (name "ruby-rdiscount") + (version "2.2.7") + (source (origin + (method git-fetch) ;for the full test suite + (uri (git-reference + (url "https://github.com/davidfstr/rdiscount") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1lpfxq3gv0dgmnki9jgfnc8n9k4x9vyq9miqdxv6g4kp90qyfifc")))) + (build-system ruby-build-system) + (native-inputs (list perl)) + (synopsis "Discount Markdown Processor for Ruby") + (description "Discount is an implementation of John Gruber's Markdown +markup language in C. It implements all of the language described in the +markdown syntax document and passes the Markdown 1.0 test suite.") + (home-page "https://dafoster.net/projects/rdiscount/") + (license license:bsd-3))) + +(define-public ruby-bibtex-ruby + (package + (name "ruby-bibtex-ruby") + (version "6.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "bibtex-ruby" version)) + (sha256 + (base32 + "0vynqa8q9hwghw6sdljr304b5gh11nqzy5nwqqwxmgy7pqyf7qw5")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-latex-decode + ruby-rdf + ruby-rdf-vocab)) + (native-inputs + (list ruby-cucumber + ruby-minitest + ruby-yard)) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'avoid-bundler + (lambda args + (substitute* "Rakefile" + (("require 'bundler" orig) + (string-append "# " orig " # patched for Guix")) + (("Bundler\\.setup" orig) + (string-append "true # " orig " # patched for Guix")))))))) + (home-page "https://github.com/inukshuk/bibtex-ruby") + (synopsis "Rubyist's Swiss Army knife for all things BibTeX") + (description + "BibTeX-Ruby is the Rubyist's Swiss Army knife for all things BibTeX. +It includes a parser for all common BibTeX objects and a sophisticated name +parser that tokenizes correctly formatted names. BibTeX-Ruby recognizes +BibTeX string replacements, joins values containing multiple strings or +variables, supports cross-references, and decodes common LaTeX formatting +instructions to unicode. If you are in a hurry, it also allows for easy +export/conversion to formats such as YAML, JSON, CSL, and XML (BibTeXML).") + (license license:gpl3+))) + +(define-public ruby-unicode-scripts + (package + (name "ruby-unicode-scripts") + (version "1.8.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "unicode-scripts" version)) + (sha256 + (base32 + "0rl6mn908yryhrg8j3mmna54gnrid2nph2kym00lbz6jwdih2a1b")))) + (build-system ruby-build-system) + (native-inputs (list ruby-minitest)) + (arguments (list #:test-target "spec")) + (home-page "https://github.com/janlelis/unicode-scripts") + (synopsis "Unicode script classification library") + (description "This gem provides a simple interface for classifying Ruby +strings using the Unicode @code{Script} and @code{Script_Extensions} +properties.") + (license license:expat))) + +(define-public ruby-citeproc + (package + (name "ruby-citeproc") + (version "1.0.10") + (source (origin + (method url-fetch) + (uri (rubygems-uri "citeproc" version)) + (sha256 + (base32 + "13vl5sjmksk5a8kjcqnjxh7kn9gn1n4f9p1rvqfgsfhs54p0m6l2")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-namae)) + (arguments + (list #:tests? #f)) ;; tests have a cyclic dependency + (home-page "https://github.com/inukshuk/citeproc") + (synopsis "Interface for Ruby citation processors") + (description + "CiteProc is a citation processor interface and citation data API based +on the @acronym{CSL, Citation Style Language} specifications. To actually +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") + (version "3.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/inukshuk/edtf-ruby") + (commit (string-append "v" version)))) + (sha256 + (base32 + "18j8xq8zmrn41cs2gpd1i87agi9905asvnjqndky2cqb5zg3q14g")) + (snippet + ;; remove generated file + #~(delete-file "lib/edtf/parser.rb")) + (file-name (git-file-name name version)))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-activesupport)) + (native-inputs + (list ruby-cucumber + ruby-rspec)) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'avoid-bundler + (lambda args + (substitute* "Rakefile" + (("require 'bundler" orig) + (string-append "# " orig " # patched for Guix")) + (("bundle exec racc") + "racc") + (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig) + (string-append orig " do |c|\n" + " c.bundler = false # patched for Guix\n" + "end")) + (("Bundler\\.setup" orig) + (string-append "true # " orig " # patched for Guix"))))) + (add-after 'avoid-bundler 'patch-cucumber-options + (lambda args + (substitute* "cucumber.yml" + ;; this option is not supported, at least in our configuration + ((" --publish-quiet") + "")))) + (add-before 'build 'compile + (lambda args + (invoke "rake" "racc"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rake"))))))) + (home-page "https://github.com/inukshuk/edtf-ruby") + (synopsis "Ruby implementation of Extended Date/Time Format") + (description + "EDTF-Ruby provides a parser and an API for the @acronym{EDTF, Extended +Date/Time Format} standard, implemented as an extension to Ruby's @code{Date} +class.") + (license license:bsd-2))) + +(define-public ruby-gli + (package + (name "ruby-gli") + (version "2.21.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/davetron5000/gli") + (commit (string-append "v" version)))) + (sha256 + (base32 + "09b1r9hlx4dy2yq036nk7hc2nbswhia6q3na9v11z94yibc8mgja")) + (file-name (git-file-name name version)))) + (build-system ruby-build-system) + (native-inputs + (list ruby-minitest + ruby-rainbow + ruby-rdoc + ruby-sdoc)) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'patch-gemspec-version + (lambda args + (substitute* "gli.gemspec" + ;; this trick fails in our build environment + (("require File\\.join[(]\\[" orig) + (string-append "# patched for Guix # " orig)) + (("s\\.version = GLI::VERSION") + #$(string-append "s.version = '" + (package-version this-package) + "' # patched for Guix"))))) + (add-after 'replace-git-ls-files 'replace-another-git-ls-files + (lambda args + (substitute* "gli.gemspec" + (("`git ls-files -- [{]test,spec,features[}]/\\*`") + "`find {test,spec,features} -type f | sort`")))) + (add-after 'replace-another-git-ls-files 'fix-rubyopt + (lambda args + (substitute* "Rakefile" + (("ENV\\[\"RUBYOPT\"]") + "(ENV['RUBYOPT'] || '')"))))))) + (home-page "https://davetron5000.github.io/gli/") + (synopsis "Git-Like Interface command-line parser") + (description + "GLI allows you to create command-line applications in Ruby with Git-Like +Interfaces: that is, they take subcommands in the style of @command{git} and +@command{gem}. GLI uses a simple domain-specific language, but retains all +the power of the built-in @code{OptionParser}.") + (license license:asl2.0))) + +(define-public ruby-anystyle-data + (package + (name "ruby-anystyle-data") + (version "1.3.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/inukshuk/anystyle-data") + (commit (string-append "v" version)))) + (sha256 + (base32 + "1jh880310m3gjdrk4m8rwwnsf0824zkf26clpr8p64sac2fyy907")) + (snippet + ;; remove pre-built file + #~(delete-file "lib/anystyle/data/dict.txt.gz")) + (patches + (search-patches "ruby-anystyle-data-immutable-install.patch")) + (file-name (git-file-name name version)))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ;; there are none + #:modules + `((guix build ruby-build-system) + (guix build utils) + (srfi srfi-26)) + #:phases + #~(modify-phases %standard-phases + (add-after 'replace-git-ls-files 'replace-another-git-ls-files + (lambda args + (substitute* "anystyle-data.gemspec" + (("`git ls-files lib README\\.md LICENSE`\\.split[(][^)]*[)]") + (string-append + "[" + (string-join + (map (cut string-append "\"" <> "\"") + `("README.md" + "LICENSE" + "lib/anystyle/data.rb" + "lib/anystyle/data/dict.txt.gz" + "lib/anystyle/data/setup.rb" + "lib/anystyle/data/version.rb")) + ", ") + "]"))))) + (add-before 'build 'compile-dict + (lambda args + (invoke "rake" "compile")))))) + (home-page "https://anystyle.io") + (synopsis "AnyStyle parser dictionary data") + (description + "This gem provides parser dictionary data for AnyStyle.") + (license license:bsd-2))) + +(define-public ruby-anystyle + (package + (name "ruby-anystyle") + (version "1.4.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/inukshuk/anystyle") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0xhy7wj8v7iahikck6vxbdpncaz5w2gb11b32kmvg5ckgi2kz23p")) + (snippet + ;; There is an optional dependency on + ;; , which + ;; seems like it was intended to be free software, but + ;; doesn't have a clear license statement. Maybe someone can + ;; do more sleuthing, or else find a replacement? See also + ;; . For + ;; now, patch it out, but leave a pointer to follow up. + #~(begin + (use-modules (guix build utils)) + (substitute* "Gemfile" + (("gem 'language_detector', github: '[^']*'" orig) + (string-append "# " orig " # unclear license"))) + (substitute* "spec/anystyle/parser_spec.rb" + (("language: 'en'," orig) + (string-append "# " orig " # no lanugage_detector"))))) + (patches + (search-patches + "ruby-anystyle-fix-dictionary-populate.patch")) + (file-name (git-file-name name version)))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-anystyle-data + ruby-bibtex-ruby + ruby-namae + ruby-wapiti)) + (native-inputs + (list ruby-byebug + ruby-citeproc + ruby-edtf + ruby-gdbm + ruby-rspec + ruby-unicode-scripts)) + (arguments + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'avoid-bundler + (lambda args + (substitute* "Rakefile" + (("require 'bundler" orig) + (string-append "# " orig " # patched for Guix")) + (("Bundler\\.setup" orig) + (string-append "true # " orig " # patched for Guix"))))) + (add-after 'replace-git-ls-files 'replace-another-git-ls-files + (lambda args + (substitute* "anystyle.gemspec" + (("`git ls-files spec`") + "`find spec -type f | sort`")))) + (add-after 'wrap 'populate-dictionaries + (lambda args + ;; We must initialize these files here, or they will never be + ;; usable with the default settings. A more flexible approach + ;; might use something like `Gem.find_files()` or + ;; XDG_DATA_DIRS. + (with-output-to-file "initialize-dictionaries.rb" + (lambda () + (display "\ +require 'anystyle/dictionary' # must come before 'anystyle/data' +require 'anystyle/data' +[:marshal, :gdbm].each do |adapter| + AnyStyle::Dictionary.create({adapter: adapter}).open().close() +end +"))) + (let* ((old-gems (getenv "GEM_PATH")) + (new-gems (string-append #$output + "/lib/ruby/vendor_ruby:" + old-gems))) + (dynamic-wind + (lambda () + (setenv "GEM_PATH" new-gems)) + (lambda () + (invoke "ruby" "initialize-dictionaries.rb")) + (lambda () + (setenv "GEM_PATH" old-gems))))))))) + (home-page "https://anystyle.io") + (synopsis "Fast and smart citation reference parsing (Ruby library)") + (description + "AnyStyle is a very fast and smart parser for academic reference lists +and bibliographies. AnyStyle uses powerful machine learning heuristics based +on Conditional Random Fields and aims to make it easy to train the model with +data that is relevant to your parsing needs. + +This package provides the Ruby module @code{AnyStyle}. AnyStyle can also be +used via the @command{anystyle} command-line utility or a web application, +though the later has not yet been packaged for Guix.") + (license license:bsd-2))) + +(define-public anystyle + (package + (name "anystyle") + (version "1.4.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/inukshuk/anystyle-cli") + (commit (string-append "v" version)))) + (sha256 + (base32 + "10jx830mx9vh7rsz87ndvz8w5b5azd9s231vwyb0dqxs921v6qwy")) + (file-name (git-file-name name version)))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-anystyle + ruby-bibtex-ruby + ruby-gli)) + (native-inputs + (list ruby-gdbm + txt2man)) + (arguments + (list + #:modules + `((guix build ruby-build-system) + (ice-9 popen) + (srfi srfi-1) + (guix build utils)) + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'less-strict-dependencies + (lambda args + (substitute* "anystyle-cli.gemspec" + (("'bibtex-ruby', '[^']*'") + "'bibtex-ruby'")))) + (add-before 'build 'change-default-dictionary-adapter + (lambda args + ;; Since we always have gdbm available, using it will give a + ;; faster startup time, which is particularly worth-while for + ;; a command-line tool. + (substitute* "bin/anystyle" + (("default_value: 'ruby',") + "default_value: 'gdbm', # patched for Guix")))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + ;; There are no tests, but let's use this opportunity to do a + ;; basic test of our own that things run ok. It works especially + ;; well to test this here since we know the 'ruby-anystile' + ;; package is in its final, immutable installed form. + (when tests? + (let ((common + `("require 'anystyle'" + ,(string-append + "pp AnyStyle.parse 'Derrida, J. (1967). L’écriture" + " et la différence (1 éd.). Paris: Éditions du" + " Seuil.'")))) + (for-each + (lambda (lines) + (apply invoke "ruby" + (fold-right (lambda (line lst) + (cons* "-e" line lst)) + '() + lines))) + `(,common + ("require 'anystyle/dictionary'" + "AnyStyle::Dictionary.defaults[:adapter] = :gdbm" + ,@common))))))) + (add-after 'wrap 'check-cli + (lambda* (#:key tests? outputs #:allow-other-keys) + (when tests? + (with-output-to-file "check-cli.in" + (lambda () + (for-each + display + '("Derrida, J. (1967). L’écriture et la différence " + "(1 éd.). Paris: Éditions du Seuil.\n")))) + (invoke (search-input-file outputs "/bin/anystyle") + "parse" + "check-cli.in")))) + (add-after 'wrap 'generate-man-page + ;; generating a man page also tests that the command actually runs + (lambda args + (define (run-with-output-file file command . args) + (format (current-output-port) + "running: ~s\nwith output to: ~s\n" + (cons command args) + file) + (unless (zero? + (with-output-to-file file + (lambda () + (status:exit-val + (close-pipe + (apply open-pipe* OPEN_WRITE command args)))))) + (error "command failed"))) + (let ((anystyle (string-append #$output "/bin/anystyle"))) + (run-with-output-file "intro.txt" + anystyle "--help") + (for-each (lambda (cmd) + (let ((file (string-append cmd ".txt"))) + (run-with-output-file file + anystyle cmd "--help") + ;; indent headings to create subsections + (substitute* file + (("^[A-Z]" orig) + (string-append " " orig))) + ;; generate a section heading + (call-with-output-file + (string-append "section-" file) + (lambda (out) + (format out "\n\n~a COMMAND\n\n" + (string-upcase cmd)))))) + '("check" "find" "parse" "train")) + (substitute* `("intro.txt" + "check.txt" "find.txt" "parse.txt" "train.txt") + ;; format "tag list" for txt2man" + ((" - ") + " ") + ;; restore formatting of the "name" sections + (("(anystyle|check|find|parse|train) ([A-Z])" _ cmd post) + (string-append cmd " - " post))) + (run-with-output-file "anystyle.txt" + "cat" + "intro.txt" + "section-check.txt" "check.txt" + "section-find.txt" "find.txt" + "section-parse.txt" "parse.txt" + "section-train.txt" "train.txt") + (run-with-output-file + "anystyle.1" + "txt2man" + "-v" "General Commands Manual" "-t" "anystyle" "-s" "1" + "-r" #$(string-append "anystyle-cli " + (package-version this-package)) + "-B" "check" "-B" "find" "-B" "parse" "-B" "train" + "anystyle.txt") + (install-file "anystyle.1" + (string-append #$output "/share/man/man1")))))))) + (home-page "https://anystyle.io") + (synopsis "Fast and smart citation reference parsing") + (description + "AnyStyle is a very fast and smart parser for academic reference lists +and bibliographies. AnyStyle uses powerful machine learning heuristics based +on Conditional Random Fields and aims to make it easy to train the model with +data that is relevant to your parsing needs. + +This package provides the @command{anystyle} command-line utility. AnyStyle +can also be used as a Ruby library or as a web application, though the later +has not yet been packaged for Guix.") + (license license:bsd-2) + (properties `((upstream-name . "anystyle-cli"))))) + +(define-public ruby-google-protobuf + (package + (name "ruby-google-protobuf") + (version "3.25.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "google-protobuf" version)) + (sha256 + (base32 + "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ;; has no tests + (native-inputs (list ruby-rake)) + (synopsis "Protocol Buffers are Google's data interchange format") + (description "This library contains the Ruby extension that implements +Protocol Buffers functionality in Ruby. + +The Ruby extension makes use of generated Ruby code that defines message and +enum types in a Ruby DSL. You may write definitions in this DSL directly, but +we recommend using protoc's Ruby generation support with @code{.proto} files. +The build process in this directory only installs the extension; you need to +install @code{protoc} (in package ruby-grpc-tools) as well to have Ruby code +generation functionality.") + (home-page "https://protobuf.dev") + (license license:bsd-3))) + +(define-public ruby-googleapis-common-protos-types + (package + (name "ruby-googleapis-common-protos-types") + (version "1.13.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "googleapis-common-protos-types" version)) + (sha256 + (base32 + "1zrxnv9s2q39f2nh32x7nbfi8lpwzmmn3ji4adglg8dlfr1xrz16")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ;; has no tests + (propagated-inputs (list ruby-google-protobuf)) + (synopsis "Common protocol buffer types used by Google APIs") + (description "Common protocol buffer types used by Google APIs") + (home-page "https://github.com/googleapis/common-protos-ruby") + (license license:asl2.0))) + +(define-public ruby-grpc + (package + (name "ruby-grpc") + (version "1.62.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "grpc" version)) + (sha256 + (base32 + "03z8yq0z228g6xxxq6s2mmslpv6psrdmi30dpmhysr4px16d897n")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ;; has no tests + ;; TODO remove third-party sources (zlib, upb, utf8-range, re2, c-ares, + ;; boringssl-with-bazel, address_sorting, abseil-cpp), see Makefile + (propagated-inputs (list ruby-google-protobuf + ruby-googleapis-common-protos-types)) + (synopsis "GRPC system in Ruby") + (description "GRPC is a high performance, open-source universal RPC +framework. This package provides a ruby interface for it.") + (home-page "https://github.com/grpc/grpc/tree/master/src/ruby") + (license license:asl2.0))) ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances -;;; of a merge conflict, place them above in alphabetic order. +;;; of a merge conflict, place them above by existing packages with similar +;;; functionality or similar names. ;;; diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 32fb264706..c78e0b821d 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1,41 +1,20 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015 Pjotr Prins -;;; Copyright © 2014-2017, 2021-2022, 2024 Ludovic Courtès +;;; Copyright © 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver -;;; Copyright © 2014, 2015 David Thompson +;;; Copyright © 2015-2018 Ben Woodcroft +;;; Copyright © 2015 David Thompson ;;; Copyright © 2015, 2019 Ricardo Wurmus -;;; Copyright © 2015, 2016, 2017 Ben Woodcroft -;;; Copyright © 2017 Nikita -;;; Copyright © 2017, 2019-2022 Marius Bakke -;;; Copyright © 2017-2025 Efraim Flashner -;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice -;;; Copyright © 2017 Clément Lassieur -;;; Copyright © 2017, 2018, 2019 Christopher Baines -;;; Copyright © 2018 Vasile Dumitrascu -;;; Copyright © 2018 Alex Vong -;;; Copyright © 2019 Pierre Neidhardt -;;; Copyright © 2019 Mikhail Kirillov +;;; Copyright © 2018 Danny Milosavljevic +;;; Copyright © 2019, 2020 Christopher Baines ;;; Copyright © 2019 Jelle Licht -;;; Copyright © 2019 Brian Leung -;;; Copyright © 2019 Collin J. Doering -;;; Copyright © 2019 Diego N. Barbato -;;; Copyright © 2019 Brett Gilio ;;; Copyright © 2020, 2023 Maxim Cournoyer -;;; Copyright © 2020, 2021 Nicolas Goaziou -;;; Copyright © 2020 Michael Rohleder -;;; Copyright © 2020 Holgr Peters -;;; Copyright © 2020 Giacomo Leidi -;;; Copyright © 2021 EuAndreh -;;; Copyright © 2020 Tomás Ortín Fernández -;;; Copyright © 2021 Giovanni Biscuolo -;;; Copyright © 2022 Philip McGrath -;;; Copyright © 2022-2025 Remco van 't Veer -;;; Copyright © 2022 Taiju HIGASHI -;;; Copyright © 2023 Yovan Naumovski -;;; Copyright © 2023, 2024 gemmaro -;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen -;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com> -;;; Copyright © 2023, 2024 Hartmut Goebel +;;; Copyright © 2020 Ryan Prior +;;; Copyright © 2020 Maxim Cournoyer +;;; Copyright © 2021 Marius Bakke +;;; Copyright © 2023 Christopher Baines +;;; Copyright © 2023 Janneke Nieuwenhuizen +;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2025 Nicolas Graves ;;; ;;; This file is part of GNU Guix. @@ -96,7 +75,6 @@ (define-module (gnu packages ruby) #:use-module (gnu packages web-browsers) #:use-module (gnu packages serialization) #:use-module (guix packages) - #:use-module (guix deprecation) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix gexp) @@ -105,15 +83,7 @@ (define-module (gnu packages ruby) #:use-module (guix build-system gnu) #:use-module (gnu packages xml) #:use-module (gnu packages web) - #:use-module (guix build-system ruby) - #:use-module ((srfi srfi-1) #:select (alist-delete))) - -(define %prawn-project-licenses - ;; This set of licenses applies to most (all?) components of the Prawn - ;; project (it is triple licensed). - (list license:ruby - license:gpl2+ - license:gpl3+)) + #:use-module (guix build-system ruby)) (define-public ruby-3.4 (package @@ -347,17703 +317,6 @@ (define-public mruby matching. mruby can be linked and embedded within your application.") (license license:expat))) -(define-public ruby-commander - (package - (name "ruby-commander") - (version "4.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "commander" version)) - (sha256 - (base32 - "1n8k547hqq9hvbyqbx2qi08g0bky20bbjca1df8cqq5frhzxq7bx")))) - (build-system ruby-build-system) - (arguments - (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 - (list bundler ruby-rspec-core ruby-rspec-expectations - ruby-rspec-mocks ruby-simplecov)) - (home-page "https://github.com/commander-rb/commander") - (synopsis "Library for building Ruby command-line executables") - (description - "Commander aims to be a complete solution for Ruby command-line -executables. Commander bridges the gap between other terminal related -libraries (OptionParser, HighLine), while providing many new features, and an -elegant API.") - (license license:expat))) - -(define-public ruby-highline - (package - (name "ruby-highline") - (version "2.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "highline" version)) - (sha256 - (base32 - "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC - (native-inputs - (list bundler ruby-code-statistics)) - (synopsis - "HighLine helps you build command-line interfaces") - (description - "HighLine provides a high-level IO library that provides validation, -type conversion, and more for command-line interfaces. HighLine also includes -a menu system for providing multiple options to the user.") - (home-page "https://github.com/JEG2/highline") - (license (list license:gpl2 license:ruby)))) - -(define-public ruby-hoe - (package - (name "ruby-hoe") - (version "4.2.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "hoe" version)) - (sha256 - (base32 - "1rhj1zs02mpdw6f4fh3mpfmj0p5pfar7rfxm758pk7l931mm8pyn")))) - (build-system ruby-build-system) - (arguments - (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, -maintain, and release projects and includes a dynamic plug-in system allowing -for easy extensibility. Hoe ships with plug-ins for all the usual project -tasks including rdoc generation, testing, packaging, deployment, and -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") - (version "1.2.9") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rake-compiler" version)) - (sha256 - (base32 - "01rnl94p1sr84xkbnh66db42qsndykbfx2z2fggxyxx9vnji6cjs")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; needs cucumber - (synopsis "Building and packaging helper for Ruby native extensions") - (description "Rake-compiler provides a framework for building and -packaging native C and Java extensions in Ruby.") - (home-page "https://github.com/rake-compiler/rake-compiler") - (license license:expat))) - -(define-public ruby-rake-compiler-dock - (package - (name "ruby-rake-compiler-dock") - (version "1.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rake-compiler-dock" version)) - (sha256 - (base32 - "0yr5f72irvhmnk12q7bbr4qw0xwy7diqkbcvb4lygjbg7rvk3k8k")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) ;test suite requires docker - (synopsis "Cross compiler environment for building Ruby gems") - (description "The code{rake-compiler-dock} gem provides a cross compiler -environment for building gems on a variety of platforms (GNU/Linux, JRuby, -Windows and Mac).") - (home-page "https://github.com/rake-compiler/rake-compiler-dock") - (license license:expat))) - -(define-public ruby-rsync - (package - (name "ruby-rsync") - (version "1.0.9") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rsync" version)) - (sha256 - (base32 - "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-coveralls-requirement - (lambda _ - (substitute* "spec/spec_helper.rb" - (("require 'coveralls'") "") - (("Coveralls.wear!") ""))))))) - (native-inputs - (list bundler rsync ruby-rspec-core ruby-rspec-expectations - ruby-rspec-mocks)) - (home-page "https://github.com/jbussdieker/ruby-rsync") - (synopsis "Ruby wrapper around rsync") - (description - "Ruby Rsync is a Ruby library that can synchronize files between remote -hosts by wrapping the @file{rsync} binary.") - (license license:expat))) - -(define-public ruby-i18n - (package - (name "ruby-i18n") - (version "1.13.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "i18n" version)) - (sha256 - (base32 - "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no tests - (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent))) - (synopsis "Internationalization library for Ruby") - (description "Ruby i18n is an internationalization and localization -solution for Ruby programs. It features translation and localization, -interpolation of values to translations, pluralization, customizable -transliteration to ASCII, flexible defaults, bulk lookup, lambdas as -translation data, custom key/scope separator, custom exception handlers, and -an extensible architecture with a swappable backend.") - (home-page "https://github.com/ruby-i18n/i18n") - (license license:expat))) - -(define-public ruby-ice-nine - (package - (name "ruby-ice-nine") - (version "0.11.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ice_nine" version)) - (sha256 - (base32 "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f)) ;Dependency on convoluted unpackaged ruby-devtools. - (synopsis "Deep Freeze Ruby Objects") - (description - "This package provides a function to deep freeze Ruby objects.") - (home-page "https://github.com/dkubb/ice_nine") - (license license:expat))) - -(define-public ruby-io-console - (package - (name "ruby-io-console") - (version "0.6.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/io-console/") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0gwxrp29b6awkid1sf85sbh529mnq6hb86m8c2443cm6nc4vr8qb")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'delete-rakelib-files - (lambda _ - ;; These depend on git and other extraneous - ;; dependencies, and are loaded by rake. - (delete-file-recursively "rakelib")))))) - (native-inputs (list ruby-rake-compiler)) - (synopsis "Console capabilities library for IO instances") - (description "IO.console adds console capabilities to Ruby IO instances.") - (home-page "https://github.com/ruby/io-console") - (license license:bsd-2))) - -(define-public ruby-irb - (package - (name "ruby-irb") - (version "1.6.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "irb" version)) - (sha256 - (base32 - "1h9s07n5v3z029v18924ws9vdkdc80n6llp9ccx77yg1krv2g0f3")))) - (build-system ruby-build-system) - ;; XXX: Disable the test suite, as it requires debug, which requires this - ;; package (dependency cycle). - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-reline)) - (synopsis "Ruby command-line tool for REPL (Read Eval Print Loop)") - (description "IRB is an interactive Ruby command-line tool for REPL (Read -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") - (version "0.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "iruby" version)) - (sha256 - (base32 - "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn")))) - (build-system ruby-build-system) - (arguments - ;; TODO: Tests currently fail. - ;; - ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s. - ;; - ;; 1) Failure: - ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]: - ;; In [ expected - ;; - ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips - '(#:tests? #f - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-ipython - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/iruby/command.rb" - (("version = `") - (string-append - "version = `" - (assoc-ref inputs "python-ipython") - "/bin/")) - (("Kernel\\.exec\\('") - (string-append - "Kernel.exec('" - (assoc-ref inputs "python-ipython") - "/bin/")))))))) - (inputs - (list python-ipython)) - (propagated-inputs - (list ruby-bond - ruby-data_uri - ruby-mimemagic - ruby-multi-json - ruby-cztop - ;; Optional inputs - ruby-pry)) - (synopsis "Ruby kernel for Jupyter/IPython") - (description - "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g. -notebook).") - (home-page "https://github.com/SciRuby/iruby") - (license license:expat))) - -;; RSpec is the dominant testing library for Ruby projects. Even RSpec's -;; dependencies use RSpec for their test suites! To avoid these circular -;; dependencies, we disable tests for all of the RSpec-related packages. -(define-public ruby-rspec-support - (package - (name "ruby-rspec-support") - (version "3.13.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-support" version)) - (sha256 - (base32 - "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (synopsis "RSpec support library") - (description "Support utilities for RSpec gems.") - (home-page "https://github.com/rspec/rspec-support") - (license license:expat))) - -(define-public ruby-rspec-core - (package - (name "ruby-rspec-core") - (version "3.13.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-core" version)) - (sha256 - (base32 - "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (propagated-inputs - (list ruby-rspec-support)) - (synopsis "RSpec core library") - (description "Rspec-core provides the RSpec test runner and example -groups.") - (home-page "https://github.com/rspec/rspec-core") - (license license:expat))) - -(define-public ruby-rspec-core-2 - (package (inherit ruby-rspec-core) - (version "2.14.8") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-core" version)) - (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 - (package - (name "ruby-date") - (version "3.3.3") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/date") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1jiqjnaap1jk1r8z37iicnzqha1rhc713qmcir17f4vnz8ac8v75")))) - (build-system ruby-build-system) - (arguments (list #:test-target "default")) - (native-inputs (list ruby-rake-compiler)) - (synopsis "Ruby @code{Object} subclass with date comparison capability") - (description "This package provides a subclass of @code{Object} that -includes the @code{Comparable} module for handling dates.") - (home-page "https://github.com/ruby/date") - (license license:bsd-2))) - -(define-public ruby-time - (package - (name "ruby-time") - (version "0.3.0") - (source (origin - (method git-fetch) ; for tests - (uri (git-reference - (url "https://github.com/ruby/time") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0jd6df2lxd60wcxyaf37j8v3nnfn952d5xhg6aap9zlcdmkk4g2n")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-date)) - (native-inputs (list ruby-test-unit-ruby-core)) - (synopsis - "Extends the Time class with methods for parsing and conversion") - (description - "When this gem is @code{require}d, it extends the Time class with with -additional methods for parsing and converting Times.") - (home-page "https://github.com/ruby/time") - (license license:bsd-2))) - -(define-public ruby-diff-lcs - (package - (name "ruby-diff-lcs") - (version "1.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "diff-lcs" version)) - (sha256 - (base32 - "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (synopsis "Compute the difference between two Enumerable sequences") - (description "Diff::LCS computes the difference between two Enumerable -sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm. -It includes utilities to create a simple HTML diff output format and a -standard diff-like tool.") - (home-page "https://github.com/halostatue/diff-lcs") - (license license:expat))) - -(define-public ruby-rspec-expectations - (package - (name "ruby-rspec-expectations") - (version "3.13.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-expectations" version)) - (sha256 - (base32 - "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (propagated-inputs - (list ruby-diff-lcs ruby-rspec-support)) - (synopsis "RSpec expectations library") - (description "Rspec-expectations provides a simple API to express expected -outcomes of a code example.") - (home-page "https://github.com/rspec/rspec-expectations") - (license license:expat))) - -(define-public ruby-rspec-expectations-2 - (package (inherit ruby-rspec-expectations) - (version "2.14.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-expectations" version)) - (sha256 - (base32 - "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9")))) - (propagated-inputs - (list ruby-diff-lcs)))) - -(define-public ruby-sorcerer - (package - (name "ruby-sorcerer") - (version "2.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sorcerer" version)) - (sha256 - (base32 - "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h")))) - (build-system ruby-build-system) - (synopsis "Ripper-style abstract syntax tree to Ruby source generator") - (description "Sorcerer generates Ruby code from a Ripper-like abstract -syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small -snippets of Ruby code, expressible in a single line. Longer examples may be -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") - (version "3.8.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "given_core" version)) - (sha256 - (base32 - "0w1pyhgb2am7c267s8v06dpd9qhmsk2x4hfr2aq8l8lh49ma227s")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;no test suite for the core package - (propagated-inputs - (list ruby-sorcerer)) - (synopsis "Core abstractions used by rspec-given and minitest-given") - (description "Given_core is the basic functionality behind rspec-given and -minitest-given, extensions that allow the use of Given/When/Then terminology -when defining specifications.") - (home-page "https://github.com/rspec-given/rspec-given") - (license license:expat))) - -(define-public ruby-rspec-given - (package - (name "ruby-rspec-given") - (version "3.8.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rspec-given" version)) - (sha256 - (base32 - "0xzzxjjzwrsp84p12sd6ab3jbm9kh7sbnqpxgc9mlfq3s3ll0fdj")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "rs" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-rakefile - (lambda _ - (substitute* '("Rakefile" "rakelib/gemspec.rake") - (("require '\\./lib/given/.*") "") - (("Given::VERSION") (format #f "~s" ,version)) - ;; Fix the error: "cannot load such file -- example_helper" - (("sh \"rspec") - "sh \"rspec -Ilib:examples")))) - (add-after 'extract-gemspec 'delete-failing-tests - ;; See: https://github.com/jimweirich/rspec-given/issues/57. - (lambda _ - (substitute* ".gemspec" - (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ") - "") - (("\"examples/integration/failing_messages_spec.rb\".freeze, ") - "")) - (delete-file "spec/lib/given/natural_assertion_spec.rb") - (delete-file "examples/integration/failing_messages_spec.rb")))))) - (native-inputs - (list ruby-rspec ruby-minitest)) - (propagated-inputs - (list ruby-given-core ruby-rspec)) - (synopsis "Given/When/Then for RSpec and Minitest") - (description "Given is an RSpec extension that allows the use of -Given/When/Then terminology when defining specifications, in a way similar to -the Cucumber Gherkin language.") - (home-page "https://github.com/rspec-given/rspec-given") - (license license:expat))) - -(define-public ruby-rspec-its - (package - (name "ruby-rspec-its") - (version "1.3.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rspec/rspec-its") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'dont-install-gems-from-gemfile - (lambda _ - (substitute* "Gemfile" - (("rspec rspec-core rspec-expectations rspec-mocks rspec-support") - "")))) - (add-before 'build 'loosen-ffi-requirement - (lambda _ - ;; Accept any version of ruby-ffi. - (substitute* "Gemfile" - ((" gem 'ffi', '~> 1\\.9\\.25'") - " gem 'ffi'")))) - (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile - (lambda _ - (substitute* "rspec-its.gemspec" - (("rake.*") "rake'\n") - (("spec.add_development_dependency 'cucumber'.*") - "spec.add_development_dependency 'cucumber'\n") - (("bundler.*") "bundler'\n") - (("\"aruba.*") "'aruba'\n"))))))) - (propagated-inputs - (list ruby-rspec-core ruby-rspec-expectations)) - (native-inputs - (list bundler ruby-cucumber ruby-ffi ruby-aruba)) - (synopsis "RSpec extension that provides the @code{its} method") - (description - "RSpec::Its provides the its method as a short-hand to specify the expected -value of an attribute. For example, one can use @code{its(:size)\\{should -eq(1)\\}}.") - (home-page "https://github.com/rspec/rspec-its") - (license license:expat))) - -;;; This variant is used to break a cycle with ruby-protobuf. -(define-public ruby-rspec-its-minimal - (hidden-package - (package - (inherit ruby-rspec-its) - (arguments - (substitute-keyword-arguments (package-arguments ruby-rspec-its) - ((#:tests? _ #f) #f))) - (native-inputs '())))) - -(define-public ruby-rspec-mocks - (package - (name "ruby-rspec-mocks") - (version "3.13.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-mocks" version)) - (sha256 - (base32 - "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (propagated-inputs - (list ruby-diff-lcs ruby-rspec-support)) - (synopsis "RSpec stubbing and mocking library") - (description "Rspec-mocks provides RSpec's \"test double\" framework, with -support for stubbing and mocking.") - (home-page "https://github.com/rspec/rspec-mocks") - (license license:expat))) - -(define-public ruby-rspec-mocks-2 - (package (inherit ruby-rspec-mocks) - (version "2.14.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-mocks" version)) - (sha256 - (base32 - "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30")))) - (propagated-inputs - (list ruby-diff-lcs)))) - -(define-public ruby-rspec-block-is-expected - (package - (name "ruby-rspec-block-is-expected") - (version "1.0.5") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/pboling/rspec-block_is_expected") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1zi5z12lkw3fiwgr7g61845wj73asr2vzw4zsjv45klnnfspwass")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") "")) - ;; Contains extraneous requirements not actually - ;; needed for the test suite. - (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") - (description "This RSpec plugin allows you to use @code{block_is_expected} -similarly to how you would use @code{is_expected} if a block was wrapping the -subject.") - (home-page "https://github.com/pboling/rspec-block_is_expected") - (license license:expat))) - -(define-public ruby-rspec-pending-for - (package - (name "ruby-rspec-pending-for") - (version "0.1.16") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/pboling/rspec-pending_for") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "107l560vm0kx25w5iy5rsk9ly8dxzr81b31284j514f4hkd0qv3m")))) - (build-system ruby-build-system) - (native-inputs (list ruby-rspec ruby-simplecov)) - (propagated-inputs (list ruby-rspec-core ruby-ruby-engine - ruby-ruby-version)) - (synopsis "Skip RSpec tests for specific Ruby engines or versions") - (description "This RSpec plugin makes it easy to mark test cases as -pending or skipped for a specific Ruby engine (e.g. MRI or JRuby) or version -combinations.") - (home-page "https://github.com/pboling/rspec-pending_for") - (license license:expat))) - -(define-public ruby-rspec-rerun - (package - (name "ruby-rspec-rerun") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rspec-rerun" version)) - (sha256 - (base32 - "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj")))) - (build-system ruby-build-system) - (arguments - '(;; No included tests - #:tests? #f)) - (propagated-inputs (list ruby-rspec)) - (synopsis "Track failed RSpec tests to re-run them") - (description - "This package provides an automated way to track, and then re-run failed -RSpec tests.") - (home-page "https://github.com/dblock/rspec-rerun") - (license license:expat))) - -(define-public ruby-rspec-stubbed-env - ;; There is no release nor tag (see: - ;; https://github.com/pboling/rspec-stubbed_env/issues/7). - (let ((revision "0") - (commit "9d767dec77a6d130f6ad83c48a00a5c81b14b9fa")) - (package - (name "ruby-rspec-stubbed-env") - (version (git-version "1.0.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/pboling/rspec-stubbed_env") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1dy4m04h613dp0s59rknjd6h4lqs1h17mffc5kd8kh046mk8nr1p")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'streamline-requirements - (lambda _ - ;; Remove extraneous development dependencies. - (substitute* "rspec-stubbed_env.gemspec" - ((".*bundler.*") "") - ((".*rubocop.*") ""))))))) - (native-inputs (list ruby-simplecov)) - (propagated-inputs (list ruby-rspec)) - (synopsis "RSpec plugin to stub environment variables") - (description - "This RSpec plugin can be used to stub environment variables in a scoped -context for testing.") - (home-page "https://github.com/pboling/rspec-stubbed_env") - (license license:expat)))) - -(define-public ruby-rspec-wait - (package - (name "ruby-rspec-wait") - (version "0.0.9") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rspec-wait" version)) - (sha256 - (base32 - "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "rake" "spec")))))) - (native-inputs - (list bundler)) - (propagated-inputs - (list ruby-rspec)) - (home-page "https://github.com/laserlemon/rspec-wait") - (synopsis "Wait for conditions in RSpec") - (description - "RSpec::Wait strives to make it easier to test asynchronous or slow -interactions.") - (license license:expat))) - -(define-public ruby-rspec - (package - (name "ruby-rspec") - (version "3.13.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec" version)) - (sha256 - (base32 - "14xrp8vq6i9zx37vh0yp4h9m0anx9paw200l1r5ad9fmq559346l")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (propagated-inputs - (list ruby-rspec-core ruby-rspec-expectations ruby-rspec-mocks)) - (synopsis "Behavior-driven development framework for Ruby") - (description "RSpec is a behavior-driven development (BDD) framework for -Ruby. This meta-package includes the RSpec test runner, along with the -expectations and mocks frameworks.") - (home-page "https://rspec.info/") - (license license:expat))) - -(define-public ruby-rspec-2 - (package (inherit ruby-rspec) - (version "2.14.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec" version)) - (sha256 - (base32 - "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg")))) - (propagated-inputs - (list ruby-rspec-core-2 ruby-rspec-mocks-2 ruby-rspec-expectations-2)))) - -(define-public ruby-rspec-debug - (package - (name "ruby-rspec-debug") - (version "0.2.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ko1/rspec-debug") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "125p1zxjznkk765nyqvkksw8x1nbm7xk4sjc1wza2fyp5hvyiddn")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-dependencies - (lambda _ - (substitute* "Gemfile" - (("~>") ">="))))))) - (native-inputs (list ruby-rspec)) - (propagated-inputs (list ruby-debug)) - (synopsis "Invoke Ruby debugger when spec fails") - (description "This package can be used to have the execution stopped for -inspection in the Ruby debugger upon encountering a failure. To use it, set -the @env{RSPEC_DEBUG} environment variable to @samp{true} then invoke the -@command{rspec} command as usual.") - (home-page "https://github.com/ko1/rspec-debug") - (license license:expat))) - -(define-public ruby-specinfra - (package - (name "ruby-specinfra") - (version "2.88.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "specinfra" version)) - (sha256 - (base32 - "07lap3sknncffpq9jw1x1mn9c5xxd058wxs5vnyz1y0lawdjfnsf")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-net-scp ruby-net-ssh ruby-net-telnet - ruby-sfl)) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-dependencies - (lambda _ - (substitute* "specinfra.gemspec" - (("%q.freeze, \\[.*\\]") - "%q.freeze, [\">= 0\"]"))))))) - (synopsis "Common layer for serverspec and itamae") - (description "This Gem provides a common layer for serverspec and -itamae.") - (home-page "https://github.com/mizzy/specinfra") - (license license:expat))) - -(define-public ruby-serverspec - (package - (name "ruby-serverspec") - (version "2.42.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "serverspec" version)) - (sha256 - (base32 - "0kfaqrqynly8n3dy5qrbjvx4lx6mk9a5vynwb7xwqj8bixm0mab4")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-multi-json ruby-rspec ruby-rspec-its - ruby-specinfra)) - (arguments - (list #:test-target "spec")) - (synopsis - "RSpec tests for servers configured by Puppet, Chef, Itamae, etc") - (description - "With Serverspec, you can write RSpec tests for checking your servers are -configured correctly. - -Serverspec tests your servers’ actual state by executing command locally, via -SSH, via WinRM, via Docker API and so on. So you don’t need to install any -agent softwares on your servers and can use any configuration management -tools, Puppet, Ansible, CFEngine, Itamae and so on. - -But the true aim of Serverspec is to help refactoring infrastructure code.") - (home-page "https://serverspec.org/") - (license license:expat))) - -;; Bundler is yet another source of circular dependencies, so we must disable -;; its test suite as well. -(define-public bundler - (package - (name "bundler") - (version "2.4.18") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bundler" version)) - (sha256 - (base32 - "03ppd60cbwzlrhsidi7frj826ssmxzwd954ikjk7966l45qx5xxn")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (synopsis "Ruby gem bundler") - (description "Bundler automatically downloads and installs a list of gems -specified in a \"Gemfile\", as well as their dependencies.") - (home-page "https://bundler.io/") - (license license:expat))) - -(define-public ruby-base64 - (package - (name "ruby-base64") - (version "0.2.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "base64" version)) - (sha256 - (base32 "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; No tests bundled. - (synopsis "Base64 encoding/decoding in Ruby") - (description - "This package provides support for encoding and decoding binary data -using a Base64 representation.") - (home-page "https://github.com/ruby/base64") - (license (list license:bsd-2)))) - -(define-public ruby-builder - (package - (name "ruby-builder") - (version "3.2.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "builder" version)) - (sha256 - (base32 - "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr")))) - (build-system ruby-build-system) - (arguments - (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/tenderlove/builder") - (license license:expat))) - -(define-public ruby-bump - (package - (name "ruby-bump") - (version "0.7.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bump" version)) - (sha256 - (base32 - "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym")))) - (build-system ruby-build-system) - (arguments - '(;; No included tests - #:tests? #f)) - (synopsis "Tool for working with Rubygems") - (description - "Bump provides commands to manage Rubygem versioning, updating to the -next patch version for example.") - (home-page "https://github.com/gregorym/bump") - (license license:expat))) - -(define-public ruby-rjb - (package - (name "ruby-rjb") - (version "1.6.7") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rjb" version)) - (sha256 - (base32 - "0ck802bm8cklhmqsgzhsa0y8lg80qy52dp3m8rlld3zc5gv1rsb9")))) - (build-system ruby-build-system) - (arguments - (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") - (description "RJB is a bridge program that connects Ruby and Java via the -Java Native Interface.") - (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge") - (license license:lgpl2.1+))) - -(define-public ruby-log4r - (package - (name "ruby-log4r") - (version "1.1.10") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "log4r" version)) - (sha256 - (base32 - "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no Rakefile in gem - (synopsis "Flexible logging library for Ruby") - (description "Comprehensive and flexible logging library written -in Ruby for use in Ruby programs. It features a hierarchical logging -system of any number of levels, custom level names, logger -inheritance, multiple output destinations per log event, execution -tracing, custom formatting, thread safteyness, XML and YAML -configuration, and more.") - (home-page "http://log4r.rubyforge.org/") - (license license:bsd-3))) - -(define-public ruby-atoulme-antwrap - (package - (name "ruby-atoulme-antwrap") - (version "0.7.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "atoulme-Antwrap" version)) - (sha256 - (base32 - "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz")))) - (build-system ruby-build-system) - ;; Test data required for most of the tests are not included. - (arguments `(#:tests? #f)) - (native-inputs - (list ruby-hoe)) - (inputs - (list ruby-rjb)) - (synopsis "Ruby wrapper for the Ant build tool") - (description "Antwrap is a Ruby module that wraps the Apache Ant build -tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby -script.") - (home-page "http://rubyforge.org/projects/antwrap/") - (license license:expat))) - -(define-public ruby-atoulme-saikuro - (package - (name "ruby-atoulme-saikuro") - (version "1.2.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "atoulme-Saikuro" version)) - (sha256 - (base32 - "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19")))) - (build-system ruby-build-system) - (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 -complexity of each method found. In addition, Saikuro counts the number of -lines per method and can generate a listing of the number of tokens on each -line of code.") - (home-page "http://www.github.com/atoulme/Saikuro") - ;; File headers contain the BSD-3 license and the README.rdoc says that - ;; "Saikuro uses the BSD license", but the LICENSE file contains the text - ;; of the Expat license. - (license license:bsd-3))) - -(define-public ruby-awesome-print - (package - (name "ruby-awesome-print") - (version "1.9.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "awesome_print" version)) - (sha256 - (base32 - "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9")))) - (build-system ruby-build-system) - (arguments - (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") - (description - "Ruby dubugging companion: pretty print Ruby objects to visualize their -structure. Supports custom object formatting via plugins.") - (home-page "https://github.com/awesome-print/awesome_print") - (license license:expat))) - -(define-public ruby-pandoc-ruby - (package - (name "ruby-pandoc-ruby") - (version "2.1.4") - (source - (origin - (method git-fetch) ;the gem lacks many test files - (uri (git-reference - (url "https://github.com/xwmx/pandoc-ruby") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; Disable tests since they depend on pandoc behavior - ; and there are no upstream releases. - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-pandoc-path - (lambda* (#:key inputs #:allow-other-keys) - (let ((pandoc (search-input-file inputs "/bin/pandoc"))) - (substitute* "lib/pandoc-ruby.rb" - (("@@pandoc_path = 'pandoc'") - (format #f "@@pandoc_path = '~a'" pandoc))) - (substitute* "test/test_pandoc_ruby.rb" - (("('|\")pandoc" _ quote) - (string-append quote pandoc)) - (("\\^pandoc") - ".*pandoc"))))) - (add-after 'unpack 'adjust-tests - ;; The tests expect filenames with spaces. Because they don't have - ;; spaces the quotes around the output are dropped automatically. - (lambda _ - (substitute* "test/test_pandoc_ruby.rb" - (("\\\\\"#\\{file\\.path\\}\\\\\"") "#{file.path}")))) - (add-after 'extract-gemspec 'remove-Gemfile.lock - (lambda _ - (delete-file "Gemfile.lock") - (substitute* "pandoc-ruby.gemspec" - (("Gemfile\\.lock") ""))))))) - (native-inputs - (list ruby-mocha)) - (inputs - (list pandoc)) - (synopsis "Ruby wrapper for Pandoc") - (description "PandocRuby is a wrapper for Pandoc, a Haskell library with -command line tools for converting one markup format to another. Pandoc can -convert documents from a variety of formats including markdown, -reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a -variety of other formats, including markdown, reStructuredText, HTML, LaTeX, -ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki -markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and -more.") - (home-page "https://github.com/xwmx/pandoc-ruby") - (license license:expat))) - -(define-public ruby-patron - (package - (name "ruby-patron") - (version "0.13.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "patron" version)) - (sha256 - (base32 - "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9")))) - (build-system ruby-build-system) - (inputs - (list curl)) - (arguments - `(#:tests? #f)) ; no included tests - (synopsis "Ruby HTTP client library based on @code{libcurl}") - (description - "Patron is a Ruby HTTP client library based on @code{libcurl}. It does -not try to expose the full power (read complexity) of @code{libcurl} but -instead tries to provide a sane API while taking advantage of @code{libcurl} -under the hood.") - (home-page "https://github.com/toland/patron") - (license license:expat))) - -(define-public ruby-slim - (package - (name "ruby-slim") - (version "5.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "slim" version)) - (sha256 - (base32 - "1rqk7jn66wgx50b18ndhbppjq55rbcwgqg1rbhnhxwiggvzisdbj")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; See: https://github.com/slim-template/slim/issues/857 and - ;; https://github.com/slim-template/slim/issues/858. - (add-after 'unpack 'skip-broken-tests - (lambda _ - (substitute* "test/core/test_embedded_engines.rb" - (("def test_render_with_markdown") - "def skipped_test_render_with_markdown")) - (substitute* "test/translator/test_translator.rb" - (("raise (\"Missing test for.*)" _ tail) - (string-append "print " tail))))) - ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/ - ;; 824862bd99d1675bc699d8fc71ba965a785c1f44. - (add-after 'unpack 'prevent-bundler-interference - (lambda _ - (substitute* "Rakefile" - (("require 'bundler/setup'") "nil") - (("Bundler::GemHelper\\.install_tasks") "nil"))))))) - (native-inputs - (list ruby-rack-test ruby-rspec-core ruby-sinatra)) - (propagated-inputs - (list ruby-temple ruby-tilt)) - (synopsis "Minimalist template language for Ruby") - (description "Slim is a template language for Ruby that aims to reduce the -syntax to the minimum while remaining clear.") - (home-page "http://slim-lang.com/") - (license license:expat))) - -(define-public ruby-asciidoctor - (package - (name "ruby-asciidoctor") - (version "2.0.20") - (source - (origin - (method git-fetch) ;the gem release lacks a Rakefile - (uri (git-reference - (url "https://github.com/asciidoctor/asciidoctor") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19qvilhwa9plg80ppspn5ys0ybl8qfyaicqbl9w316hk5ldwi1jq")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "test:all" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'strip-version-requirements - (lambda _ - (delete-file "Gemfile") - (substitute* "asciidoctor.gemspec" - (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped) - (string-append stripped "\n"))))) - (add-after 'install 'install-man-page - (lambda* (#:key outputs #:allow-other-keys) - (install-file (search-input-file - outputs (string-append "lib/ruby/vendor_ruby/" - "gems/asciidoctor-" - #$version - "/man/asciidoctor.1")) - (string-append #$output "/share/man/man1"))))))) - (native-inputs - (list ruby-asciimath - ruby-coderay - ruby-cucumber - ruby-erubis - ruby-haml - ruby-minitest - ruby-nokogiri - ruby-open-uri-cached - ruby-rouge - ruby-rspec-expectations - ruby-simplecov - ruby-slim - ruby-tilt - ruby-erubi)) - (synopsis "Converter from AsciiDoc content to other formats") - (description "Asciidoctor is a text processor and publishing toolchain for -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") - (version "0.0.16") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/owenh000/asciidoctor-multipage") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0rnz7qxdw5qbi3qjplihhk468kv690njdi06yllgylc75k62ar1p")))) - (propagated-inputs (list ruby-asciidoctor ruby-slim)) - (build-system ruby-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'extract-gemspec 'strip-version-requirements - (lambda _ - (delete-file "Gemfile") - (substitute* "asciidoctor-multipage.gemspec" - (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped) - (string-append stripped "\n")))))))) - (synopsis - "Asciidoctor extension for generating HTML output using multiple pages") - (description - "Asciidoctor generates single-page documents. This extension -splits documents up into multiple HTML pages according to their headings, with -configurable levels.") - (license license:expat) - (home-page "https://github.com/owenh000/asciidoctor-multipage"))) - -(define-public ruby-prawn-icon - (package - (name "ruby-prawn-icon") - (version "3.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "prawn-icon" version)) - (sha256 - (base32 - "049k42bqy4iq9hddf7jah83b6qr8ka63w1d63illh1mf4f4dihdk")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* '("Rakefile" "spec/spec_helper.rb") - ((".*[Bb]undler.*") "") - (("^require 'rubocop.*") "") - (("^RuboCop.*") ""))))))) - (native-inputs - (list ruby-pdf-inspector ruby-pdf-reader ruby-rspec ruby-simplecov)) - (propagated-inputs - (list ruby-prawn)) - (synopsis "Icon fonts for use with the Prawn PDF toolkit") - (description "@code{Prawn::Icon} provides various icon fonts including -FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF -toolkit.") - (home-page "https://github.com/jessedoyle/prawn-icon/") - (license %prawn-project-licenses))) - -(define-public ruby-css-parser - (package - (name "ruby-css-parser") - (version "1.7.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "css_parser" version)) - (sha256 - (base32 - "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)) ;gem doesn't ship with test suite - (propagated-inputs - (list ruby-addressable)) - (synopsis "Ruby Cascading Style Sheets (CSS) parser") - (description "This package allows loading, parsing and cascading Cascading -Style Sheets (CSS) rule sets in Ruby.") - (home-page "https://github.com/premailer/css_parser") - (license license:expat))) - -(define-public ruby-prism - (package - (name "ruby-prism") - (version "1.3.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/prism.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "03bs2gbackc3c3k4p979l2p9v215jb1m5h7b44n6yzh18kaimc85")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'build - (lambda _ - (setenv "CC" ,(cc-for-target)) - (invoke "rake" "compile"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (setenv "GEM_HOME" (string-append (assoc-ref outputs "out") - "/lib/ruby/vendor_ruby")) - (invoke "rake" "install") - ;; Make build reproducible. - (for-each delete-file - (find-files (string-append (assoc-ref outputs "out") - "/lib/ruby/vendor_ruby") - "gem_make.out$"))))))) - (native-inputs - (list ruby-rake ruby-rake-compiler)) - (synopsis "Parser for Ruby source code") - (description "This package provides a parser for Ruby source code, -written in C.") - (home-page "https://ruby.github.io/prism/") - (license license:expat))) - -(define-public ruby-prawn-svg - (package - (name "ruby-prawn-svg") - (version "0.36.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "prawn-svg" version)) - (sha256 - (base32 "008p1p334h3019x5w5bqvwgmly3g5n08s63va1261nwyvfb955jv")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'do-not-use-bundler - (lambda _ - (substitute* "spec/spec_helper.rb" - ((".*[Bb]undler.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; This test fails due to the recent rspec 3.12 used - ;; (see: https://github.com/mogest/prawn-svg/issues/151). - (delete-file "spec/prawn/svg/interface_spec.rb") - (invoke "rspec" "-Ilib" "-rprawn-svg"))))))) - (native-inputs (list ruby-rspec)) - (propagated-inputs (list ruby-css-parser ruby-matrix ruby-prawn ruby-rexml)) - (synopsis "SVG renderer for the Prawn PDF library") - (description "This library allows rendering Scalable Vector Graphics (SVG) -graphics directly into a Portable Document Format (PDF) document using the -Prawn module.") - (home-page "https://github.com/mogest/prawn-svg") - (license license:expat))) - -(define-public ruby-prawn-templates - (package - (name "ruby-prawn-templates") - (version "0.1.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/prawnpdf/prawn-templates") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl")))) - (build-system ruby-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'do-not-use-bundler - (lambda _ - (substitute* "spec/spec_helper.rb" - ((".*[Bb]undler.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-pdf-inspector ruby-rspec)) - (propagated-inputs - (list ruby-pdf-reader ruby-prawn)) - (synopsis "Prawn extension to include or combine PDF documents") - (description "This @strong{unmaintained} package provides a Prawn -extension that allows including other Portable Document Format (PDF) documents -as background or combining several PDF documents into one. This functionality -used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because -of its many longstanding issues.") - (home-page "https://github.com/prawnpdf/prawn-templates") - (license %prawn-project-licenses))) - -(define-public ruby-polyglot - (package - (name "ruby-polyglot") - (version "0.3.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "polyglot" version)) - (sha256 - (base32 - "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)) ;no test suite - (synopsis "Augment @code{require} to load non-Ruby file types") - (description "The Polyglot library allows a Ruby module to register a -loader for the file type associated with a filename extension, and it augments -@code{require} to find and load matching files.") - (home-page "https://github.com/cjheath/polyglot") - (license license:expat))) - -(define-public ruby-treetop - (package - (name "ruby-treetop") - (version "1.6.12") - (source - (origin - (method git-fetch) ;no test suite in distributed gem - (uri (git-reference - (url "https://github.com/cjheath/treetop") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0cgs6f9z0a9dq5fc03710zsch4gmh1771wq36mq81qsql4x9vksf")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (native-inputs - (list ruby-activesupport ruby-rr ruby-rspec)) - (propagated-inputs - (list ruby-polyglot)) - (synopsis "Ruby-based parsing DSL based on parsing expression grammars") - (description "This package provides a Ruby-based Parsing Expression -Grammar (PEG) parser generator Domain Specific Language (DSL).") - (home-page "https://github.com/cjheath/treetop") - (license license:expat))) - -(define-public ruby-typhoeus - (package - (name "ruby-typhoeus") - (version "1.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "typhoeus" version)) - (sha256 - (base32 - "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; no included tests - (propagated-inputs - (list ruby-ethon)) - (synopsis "@code{libcurl} wrapper in Ruby") - (description - "Like a modern code version of the mythical beast with 100 serpent heads, -Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling -logic.") - (home-page "https://github.com/typhoeus/typhoeus") - (license license:expat))) - -;;; A minimal variant used to build ruby-rubocop itself. -(define ruby-rubocop-capybara-minimal - (package - (name "ruby-rubocop-capybara") - (version "2.21.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/rubocop/rubocop-capybara") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19r2s782r9ch2g1lxgrvk22d9qqkxi69brza16bfwp2rl2064qnc")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) - (synopsis "Capybara plugin for RuboCop") - (description "This package provides a RuboCop plugin that can be used for -code style checking of Capybara test files (RSpec, Cucumber, Minitest).") - (home-page "https://github.com/rubocop/rubocop-capybara") - (license license:expat))) - -(define-public ruby-rubocop-capybara - (package - (inherit ruby-rubocop-capybara-minimal) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - (("gem 'rubocop-rspec', '~> 2.16.0'") - "gem 'rubocop-rspec', '>= 2.16.0'") - (("gem 'danger'.*") ""))))))) - (native-inputs - (list ruby-bump - ruby-rack - ruby-rake - ruby-rspec - ruby-rubocop - ruby-rubocop-performance-minimal - ruby-rubocop-rake-minimal - ruby-rubocop-rspec-minimal - ruby-simplecov - ruby-yard)))) - -(define-public ruby-rubocop-factory-bot - (package - (name "ruby-rubocop-factory-bot") - (version "2.26.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rubocop-factory_bot" version)) - (sha256 - (base32 "1aljadsjx7affcarzbhz7pydpy6fgqb8hl951y0cmrffxpa3rqcd")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; No tests bundled. - (synopsis "Code style checking for factory_bot files") - (description - "This package provides a plugin for the @code{RuboCop} code style -enforcing & linting tool for @code{factory_bot} files.") - (home-page "https://github.com/rubocop/rubocop-factory_bot") - (license license:expat))) - -;;; A minimal variant used to build ruby-rubocop itself. -(define ruby-rubocop-rake-minimal - (package - (name "ruby-rubocop-rake") - (version "0.6.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/rubocop/rubocop-rake") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1r53szwglikbir1fvpz4i51p915khrrkl6rp61zcx3dcrclkr3ld")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) ;avoid extra dependencies - (synopsis "RuboCop plugin for Rake") - (description "This package provides a RuboCop plugin for Rake.") - (home-page "https://github.com/rubocop/rubocop-rake") - (license license:expat))) - -(define-public ruby-rubocop-rake - (package - (inherit ruby-rubocop-rake-minimal) - (arguments - (list #:test-target "spec")) - (native-inputs - (list ruby-rake - ruby-rspec - ruby-rubocop - ruby-rubocop-rspec)) - (propagated-inputs - (list ruby-rubocop)))) - -;;; A minimal variant used to build ruby-rubocop itself. -(define ruby-rubocop-rspec-minimal - (package - (name "ruby-rubocop-rspec") - (version "2.26.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rubocop/rubocop-rspec") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1w9whadx60kv4vlbnk77b5yyhhfcg717r9cr334zqznqr1bqr8mh")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f ;avoid extra dependencies - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - (("gem 'danger'.*") ""))))))) - (propagated-inputs (list ruby-rubocop-factory-bot)) - (synopsis "Code style checking for RSpec files") - (description "This package provides a plugin for the RuboCop code style -enforcing & linting tool.") - (home-page "https://github.com/rubocop/rubocop-rspec") - (license license:expat))) - -(define-public ruby-rubocop-rspec - (package - (inherit ruby-rubocop-rspec-minimal) - (arguments - (substitute-keyword-arguments - (package-arguments ruby-rubocop-rspec-minimal) - ((#:tests? _ #f) #t) - ((#:test-target _ "test") "spec"))) - (native-inputs - (list ruby-bump - ruby-rack - ruby-rspec - ruby-rubocop-performance-minimal - ruby-rubocop-rake-minimal - ruby-simplecov - ruby-yard)) - (propagated-inputs - (list ruby-rubocop - ruby-rubocop-ast - ruby-rubocop-capybara - ruby-rubocop-factory-bot)))) - -(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" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'skip-problematic-tests - (lambda _ - ;; Tests are actually running fine, except for a prefix. - ;; This doesn't impair functionality, ignored for now. - (delete-file - "spec/rubocop/cop/packaging/gemspec_git_spec.rb")))))) - (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") - (version "1.23.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rubocop/rubocop-performance") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0d1p6pgrcnj58q1g0np5j4vbk7wavj31b4bapi5p4gckqlnc7xjd")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; tests require a git checkout of rubocop's source code. - #:phases - (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "rubocop-performance.gemspec" - (("`git ls-files -z config lib LICENSE.txt README.md`") - "`find config lib LICENSE.txt README.md \ --type f -print0 |sort -z`")))) - (add-before 'check 'set-HOME - (lambda _ - (setenv "HOME" "/tmp")))))) - (propagated-inputs - (list ruby-rubocop ruby-rubocop-ast)) - (native-inputs - (list ruby-bump ruby-yard)) - (synopsis "Performance optimizations checkers for Ruby code") - (description "This package provides a collection of RuboCop cops to check -for performance optimizations in Ruby code.") - (home-page "https://docs.rubocop.org/rubocop-performance/") - (license license:expat))) - -(define-public ruby-rubocop-performance-minimal - (hidden-package - (package - (inherit ruby-rubocop-performance) - (arguments - (substitute-keyword-arguments (package-arguments ruby-rubocop-performance) - ((#:tests? _ #f) #f))) - (propagated-inputs '()) - (native-inputs '())))) - -(define-public ruby-stud - (package - (name "ruby-stud") - (version "0.0.23") - (source (origin - (method url-fetch) - (uri (rubygems-uri "stud" version)) - (sha256 - (base32 - "0qpb57cbpm9rwgsygqxifca0zma87drnlacv49cqs2n5iyi6z8kb")))) - (build-system ruby-build-system) - (native-inputs (list ruby-rspec)) - (arguments - (list #:phases #~(modify-phases %standard-phases - ;; No Rakefile is included, so run rspec directly. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (synopsis "Retries, worker supervision, resource pools and more for Ruby") - (description "The Stud Ruby library adds a few things missing from the -standard Ruby library such as: -@table @code -@item {Stud::Try} -Retry on failure, with back-off, where failure is any exception. -@item {Stud::Pool} -Generic resource pools. -@item {Stud::Task} -Tasks (threads that can return values, exceptions, etc.) -@item {Stud.interval} -Interval execution (do X every N seconds). -@item {Stud::Buffer} -Batch and flush behavior. -@end itemize") - (home-page "https://github.com/jordansissel/ruby-stud") - (license license:asl2.0))) - -(define-public ruby-standard-custom - (package - (name "ruby-standard-custom") - (version "1.0.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "standard-custom" version)) - (sha256 - (base32 "0av55ai0nv23z5mhrwj1clmxpgyngk7vk6rh58d4y1ws2y2dqjj2")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard. - (propagated-inputs (list ruby-lint-roller ruby-rubocop)) - (synopsis "Plugin of custom cops for Standard Ruby") - (description - "This package provides a implementations of custom cops that are bundled -as defaults in Standard Ruby.") - (home-page "https://github.com/standardrb/standard-custom") - (license license:expat))) - -(define-public ruby-standard-performance - (package - (name "ruby-standard-performance") - (version "1.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "standard-performance" version)) - (sha256 - (base32 "1x298w3wmq8cavbsg903wc3arxp3xh2x8263brvy128436m732rd")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard. - (propagated-inputs (list ruby-lint-roller ruby-rubocop-performance)) - (synopsis "Standard Ruby Plugin for rubocop-performance") - (description - "This package is a Standard Ruby Plugin providing configuration for -@code{rubocop-performance}.") - (home-page "https://github.com/standardrb/standard-performance") - (license license:expat))) - -(define-public ruby-standard - (package - (name "ruby-standard") - (version "1.37.0") - (source - (origin - (method git-fetch) ;no test suite in distributed gem - (uri (git-reference - (url "https://github.com/testdouble/standard") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0gm9fn6fz41aya34xz7kzda8xxs7h98n7cjx66qbcy2w0qhs40wc")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'set-HOME - (lambda _ - ;; Some tests fail otherwise. - (setenv "HOME" "/tmp"))) - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "standard.gemspec" - (("\"rubocop\", \".*\"") - (string-append - "\"rubocop\", \"~> " - #$(package-version - (this-package-input "ruby-rubocop")) - "\"")) - (("\"rubocop-performance\", \".*\"") - (string-append - "\"rubocop-performance\", \"~> " - #$(package-version - (this-package-input "ruby-rubocop-performance")) - "\""))))) - (add-after 'unpack 'delete-problematic-tests - ;; These tests fail for unknown reasons (see: - ;; https://github.com/testdouble/standard/issues/532). - (lambda _ - (delete-file "test/standard_test.rb") - (substitute* "test/standard/base_test.rb" - ((".*test_configures_all_rubocop_cops.*" all) - (string-append all - " skip('fails on guix')\n")))))))) - (native-inputs - (list ruby-simplecov)) - (propagated-inputs - (list ruby-language-server-protocol - ruby-lint-roller - ruby-rubocop - ruby-rubocop-performance - ruby-standard-custom - ruby-standard-performance)) - (synopsis "Ruby Style Guide, with linter & automatic code fixer") - (description "Standard is a port of StandardJS. Like StandardJS, it aims -to save time in the following ways: -@itemize -@item No configuration. -@item Automatically format code. -@item Catch style issues and programmer errors early. -@end itemize") - (home-page "https://github.com/testdouble/standard") - (license license:expat))) - -(define-public ruby-chunky-png - (package - (name "ruby-chunky-png") - (version "1.4.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/wvanbergen/chunky_png") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "05qwj72dy2fcy0n2jnf3bfriybfj36m7s6pv9xash6295dbcp901")))) - (build-system ruby-build-system) - (arguments - (list - #:ruby ruby-3.1 - #: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") - (description "ChunkyPNG is a pure Ruby library that can read and write -Portable Network Graphics (PNG) images without depending on an external image -library. It tries to be memory efficient and reasonably fast. It has -features such as: -@itemize -@item -Decoding support for any image that the PNG standard allows. This includes all -standard color modes, all bit depths, all transparency, and interlacing and -filtering options. -@item -Encoding support for images of all color modes (true color, grayscale, and -indexed) and transparency for all these color modes. The best color mode is -chosen automatically, based on the amount of used colors. -@item Read/write access to the image's pixels. -@item Read/write access to all image metadata that is stored in chunks. -@item -Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per -pixel, depending on the hardware). -@item -Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using -integer math and a highly optimized saving routine. -@item Interoperability with RMagick. -@end itemize - -ChunkyPNG is vulnerable to decompression bombs and can run out of memory when -loading a specifically crafted PNG file. This is hard to fix in pure Ruby. -Deal with untrusted images in a separate process, e.g., by using @code{fork} -or a background processing library.") - (home-page "https://github.com/wvanbergen/chunky_png/wiki") - (license license:expat))) - -(define-public ruby-text-hyphen - (package - (name "ruby-text-hyphen") - (version "1.5.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "text-hyphen" version)) - (sha256 - (base32 - "01js0wxz84cc5hzxgqbcqnsa0y6crhdi6plmgkzyfm55p0rlajn4")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe)) - (synopsis "Ruby library to hyphenate words in various languages") - (description "Text::Hyphen is a Ruby library to hyphenate words in various -languages using Ruby-fied versions of TeX hyphenation patterns. It will -properly hyphenate various words according to the rules of the language the -word is written in. The algorithm is based on that of the TeX typesetting -system by Donald E. Knuth.") - (home-page "https://github.com/halostatue/text-hyphen") - ;; The whole is licensed under the Expat license, but parts use various - ;; versions of the LaTeX Project Public License. - (license license:expat))) - -(define-public ruby-open-uri-cached - (package - (name "ruby-open-uri-cached") - (version "1.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "open-uri-cached" version)) - (sha256 - (base32 - "03v0if3jlvbclnd6jgjk94fbhf0h2fq1wxr0mbx7018sxzm0biwr")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;no test suite - (synopsis "OpenURI with transparent disk caching") - (description "OpenURI with transparent disk caching, which is -useful to avoid making excessive queries, for example when scraping -web pages.") - (home-page "https://github.com/tigris/open-uri-cached") - (license license:expat))) - -(define-public ruby-asciidoctor-pdf - (package - (name "ruby-asciidoctor-pdf") - (version "2.3.19") - (source - (origin - (method git-fetch) ;no test suite in the distributed gem - (uri (git-reference - (url "https://github.com/asciidoctor/asciidoctor-pdf") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1l8my8jj4aww2yad80n6f7hs76lq5gicld8dy014pw90pk3x43mp")) - (patches - (search-patches - "ruby-asciidoctor-pdf-support-prawn-svg-0_36.patch")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - ;; The tests rely on the Gem being installed, so move the check - ;; phase after the install phase. - (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? - (invoke "rspec" "-t" "~visual" "-t" "~cli" - "-t" "~network"))))))) - (native-inputs - (list ruby-chunky-png - ruby-coderay - ruby-pdf-inspector - ruby-rouge - ruby-rspec)) - (propagated-inputs - (list ruby-asciidoctor - ruby-concurrent - ruby-prawn - ruby-prawn-icon - ruby-prawn-svg - ruby-prawn-table - ruby-prawn-templates - ruby-text-hyphen - ruby-treetop - ruby-ttfunk)) - (synopsis"AsciiDoc to Portable Document Format (PDF)} converter") - (description "Asciidoctor PDF is an extension for Asciidoctor that -converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn -PDF library. It has features such as: -@itemize -@item Direct AsciiDoc to PDF conversion -@item Configuration-driven theme (style and layout) -@item Scalable Vector Graphics (SVG) support -@item PDF document outline (i.e., bookmarks) -@item Table of contents page(s) -@item Document metadata (title, authors, subject, keywords, etc.) -@item Internal cross reference links -@item Syntax highlighting with Rouge, Pygments, or CodeRay -@item Page numbering -@item Customizable running content (header and footer) -@item -“Keep together” blocks (i.e., page breaks avoided in certain block content) -@item Orphaned section titles avoided -@item Autofit verbatim blocks (as permitted by base_font_size_min setting) -@item Table border settings honored -@item Font-based icons -@item Custom TrueType (TTF) fonts -@item Double-sided printing mode (margins alternate on recto and verso pages) -@end itemize") - (home-page "https://asciidoctor.org/docs/asciidoctor-pdf") - (license license:expat))) - -(define-public ruby-ast - (package - (name "ruby-ast") - (version "2.4.2") - (source - (origin - (method git-fetch) ;no test included in gem from v2.4.1 - (uri (git-reference - (url "https://github.com/whitequark/ast") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0vm94yml8rknr7z034vg6s3fpx6lml2prz9fn3hr67cx0143bb4h")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-coveralls-requirement - (lambda _ - (substitute* "test/helper.rb" - (("require 'coveralls'") "") - (("Coveralls::SimpleCov::Formatter") "")))) - (add-after 'extract-gemspec 'remove-unnecessary-requirements - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "ast.gemspec" - ((".*coveralls.*") "\n") - (("%q.*") "%q.freeze, [\">= 0\"])\n") - (("%q.*") "%q.freeze, [\">= 0\"])\n") - (("%q.*") "%q.freeze, [\">= 0\"])\n") - (("12\\.3") "13.0"))))))) - (native-inputs - (list bundler - ruby-bacon - ruby-bacon-colored-output - ruby-json-pure - ruby-kramdown - ruby-mime-types - ruby-racc - ruby-rest-client - ruby-simplecov - ruby-yard)) - (synopsis "Library for working with Abstract Syntax Trees") - (description - "@code{ast} is a Ruby library for working with Abstract Syntax Trees. -It does this through immutable data structures.") - (home-page "https://whitequark.github.io/ast/") - (license license:expat))) - -(define-public ruby-sporkmonger-rack-mount - ;; Testing the addressable gem requires a newer commit than that released, so - ;; use an up to date version. - (let ((revision "1") - (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3")) - (package - (name "ruby-sporkmonger-rack-mount") - (version (git-version "0.8.3" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/sporkmonger/rack-mount") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq")))) - (build-system ruby-build-system) - (arguments - ;; Tests currently fail so disable them. - ;; https://github.com/sporkmonger/rack-mount/pull/1 - `(#:tests? #f)) - (propagated-inputs (list ruby-rack)) - (synopsis "Stackable dynamic tree based Rack router") - (description - "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to -continue trying routes if the response returns pass. This allows multiple -routes to be nested or stacked on top of each other.") - (home-page "https://github.com/sporkmonger/rack-mount") - (license license:expat)))) - -(define-public ruby-ci-reporter - (package - (name "ruby-ci-reporter") - (version "2.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "ci_reporter" version)) - (sha256 - (base32 - "0qcafasmjjr8a5gzr4k92ncm6h2943skwllhjzwz8spawdwc7dla")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "rspec")) - (propagated-inputs - (list ruby-builder ruby-rexml)) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Generate XML reports of runs test") - (description - "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows -you to generate XML reports of your test runs. The resulting files can be -read by a continuous integration system that understands Ant's JUnit report -format.") - (home-page "https://github.com/nicksieger/ci_reporter") - (license license:expat))) - -(define-public ruby-console - (package - (name "ruby-console") - (version "1.16.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "console" version)) - (sha256 - (base32 - "0y1bv3kd1l9p0k5n3anvvjxdrcq113pyngz2g29i9mvdgbbx7kq2")))) - (build-system ruby-build-system) - ;; XXX: Disable test suite to avoid dependency cycles with ruby-samovar. - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-fiber-local)) - (synopsis "Console logging library for Ruby") - (description "This gem provides beautiful console logging for Ruby -applications. It implements fast, buffered log output and has the following -features: -@itemize -@item Thread safe global logger with per-fiber context -@item Carry along context with nested loggers -@item Enable/disable log levels per class -@item Detailed logging of exceptions -@item Beautiful logging to the terminal or structured logging using JSON. -@end itemize") - (home-page "https://github.com/socketry/console") - (license license:expat))) - -(define-public ruby-contracts - (package - (name "ruby-contracts") - (version "0.17.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "contracts" version)) - (sha256 - (base32 - "1sclvlwnlxfaj1595xd0rn3x3w0ljic3vqgnx6476lr7x8xbpbiv")))) - (build-system ruby-build-system) - (arguments - (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") - (description - "This library provides contracts for Ruby. A contract describes the -correct inputs and output for a method, and will raise an error if a incorrect -value is found.") - (home-page "https://github.com/egonSchiele/contracts.ruby") - (license license:bsd-2))) - -(define-public ruby-crack - (package - (name "ruby-crack") - (version "0.4.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "crack" version)) - (sha256 - (base32 - "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (for-each (lambda (file) - (display file)(display "\n") - (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file)) - (find-files "test" ".*rb$")))))))) - (synopsis "Simple JSON and XML parsing for Ruby") - (description - "@code{crack} provides really simple JSON and XML parsing, extracted from -code in Merb and Rails.") - (home-page "https://github.com/jnunemaker/crack") - (license license:expat))) - -(define-public ruby-clamp - (package - (name "ruby-clamp") - (version "1.3.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "clamp" version)) - (sha256 - (base32 - "08m0syh06bhx8dqn560ivjg96l5cs5s3l9jh2szsnlcdcyl9jsjg")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'do-not-require-rubocop - (lambda _ - (substitute* "Rakefile" - (("require \"rubocop/rake_task\"") - "") - (("RuboCop::RakeTask.new") - ""))))))) - (native-inputs (list ruby-rspec)) - (synopsis "Command-line parsing library for Ruby") - (description "Clamp provides an object-model for command-line utilities. -It handles parsing of command-line options, and generation of usage help.") - (home-page "https://github.com/mdub/clamp") - (license license:expat))) - -(define-public ruby-cliver - (package - (name "ruby-cliver") - (version "0.3.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cliver" version)) - (sha256 - (base32 - "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3 - ;; would be nice, but the tests look to be incompatible: - ;; - ;; NoMethodError: undefined method `last_comment' - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list bundler ruby-rspec-2)) - (synopsis "Assertions for command-line dependencies in Ruby") - (description - "@code{cliver} provides a way to detect missing command-line -dependencies, including versions.") - (home-page "https://github.com/yaauie/cliver") - (license license:expat))) - -(define-public ruby-czmq-ffi-gen - (package - (name "ruby-czmq-ffi-gen") - (version "0.13.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "czmq-ffi-gen" version)) - (sha256 - (base32 - "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f ;; Tests are not included in the release on rubygems.org - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-lib_dirs - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb" - (("lib\\_dirs = \\[.*\\]") - (string-append "lib_dirs = ['" - (assoc-ref inputs "czmq") "/lib" - "']"))) - (substitute* "lib/czmq-ffi-gen/libzmq.rb" - (("lib\\_dirs = \\[.*\\]") - (string-append "lib_dirs = ['" - (assoc-ref inputs "zeromq") "/lib" - "']")))))))) - (inputs - (list zeromq czmq)) - (propagated-inputs (list ruby-ffi)) - (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)") - (description - "These Ruby bindings are not intended to be directly used, but rather -used by higher level bindings like those provided by CZTop.") - (home-page - "https://github.com/paddor/czmq-ffi-gen") - (license license:isc))) - -(define-public ruby-cztop - (package - (name "ruby-cztop") - (version "0.12.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cztop" version)) - (sha256 - (base32 - "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-lib_paths - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/cztop/poller/zmq.rb" - (("lib\\_paths = \\[.*\\]") - (string-append "lib_paths = ['" - (assoc-ref inputs "zeromq") "/lib" - "']")))))))) - (native-inputs - (list bundler ruby-rspec)) - (inputs - (list zeromq)) - (propagated-inputs - (list ruby-czmq-ffi-gen)) - (synopsis "CZMQ Ruby bindings") - (description - "CZMQ Ruby bindings, based on the generated low-level FFI bindings of -CZMQ. The focus of of CZTop is on being easy to use and providing first class -support for security mechanisms.") - (home-page "https://github.com/paddor/cztop") - (license license:isc))) - -(define-public ruby-saikuro-treemap - (package - (name "ruby-saikuro-treemap") - (version "0.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "saikuro_treemap" version)) - (sha256 - (base32 - "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950")))) - (build-system ruby-build-system) - ;; Some of the tests fail because the generated JSON has keys in a - ;; different order. This is a problem with the test suite rather than any - ;; of the involved libraries. - (arguments `(#:tests? #f)) - (propagated-inputs - (list ruby-json-pure ruby-atoulme-saikuro)) - (synopsis "Generate complexity treemap based on saikuro analysis") - (description - "This gem generates a treemap showing the complexity of Ruby code on -which it is run. It uses Saikuro under the covers to analyze Ruby code -complexity.") - (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap") - (license license:expat))) - -(define-public ruby-oauth2 - (package - (name "ruby-oauth2") - (version "2.0.9") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://gitlab.com/oauth-xx/oauth2") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "191j1f4gjw8wij1jy2fvddgi8cv1mm0ki7v0b0795clix1avnj29")))) - (build-system ruby-build-system) - (arguments - (list #:modules '((guix build ruby-build-system) - (guix build utils) - (ice-9 regex) - (ice-9 textual-ports)) - #: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-after 'unpack 'skip-problematic-test - (lambda _ - ;; XXX: substitute* can't match 2 lines. - (with-atomic-file-replacement - "spec/oauth2/client_spec.rb" - (lambda (in out) - (let* ((pattern "\ - context 'when parse: :xml but response is JSON' do\n\ - it 'returns a configured AccessToken' do\n") - (content (get-string-all in)) - (matched (string-match pattern content))) - (if matched - (format out "~a skip('fails on guix')~%~a" - (string-take content (match:end matched)) - (string-drop content (match:end matched))) - (display content out)))))))))) - (native-inputs - (list bundler - ruby-addressable - ruby-backports - ruby-rexml - ruby-rspec-block-is-expected - ruby-rspec-pending-for - ruby-rspec-stubbed-env - ruby-silent-stream)) - (propagated-inputs - (list ruby-faraday - ruby-jwt - ruby-multi-xml - ruby-rack - ruby-snaky-hash - ruby-version-gem)) - (synopsis "Ruby wrapper for the OAuth 2.0") - (description - "This package provides a Ruby wrapper for the OAuth 2.0 protocol built -with a similar style to the original OAuth spec.") - (home-page "https://github.com/oauth-xx/oauth2") - (license license:expat))) - -(define-public ruby-omniauth - (package - (name "ruby-omniauth") - (version "2.1.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/omniauth/omniauth") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1mm7a4ll7ymamrbsl63yi6i34qpwmh2nh5a9kj961gja1iz2gyd1")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "spec/helper.rb" - ;; This condition is used to require coveralls and - ;; simplecov; override it to avoid these extraneous - ;; requirements. - (("RUBY_VERSION >= '1.9'") - "false") - (("require 'rack/freeze'") ""))))))) - (native-inputs (list ruby-rspec)) - (propagated-inputs (list ruby-hashie ruby-rack ruby-rack-test - ruby-rack-protection)) - (synopsis "Generalized Rack framework for multiple-provider authentication") - (description - "This package provides a generalized Rack framework for multiple-provider -authentication.") - (home-page "https://github.com/omniauth/omniauth") - (license license:expat))) - -(define-public ruby-omniauth-oauth2 - (package - (name "ruby-omniauth-oauth2") - (version "1.8.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "omniauth-oauth2" version)) - (sha256 - (base32 - "0y4y122xm8zgrxn5nnzwg6w39dnjss8pcq2ppbpx9qn7kiayky5j")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "spec/helper.rb" - ;; This condition is used to require coveralls and - ;; simplecov; override it to avoid these extraneous - ;; requirements. - (("RUBY_VERSION >= \"1.9\"") - "false"))))))) - (propagated-inputs (list ruby-oauth2 ruby-omniauth)) - (native-inputs (list ruby-rspec ruby-rack-test ruby-webmock)) - (synopsis "Abstract OAuth2 strategy for OmniAuth") - (description - "This library provides a generic OAuth2 strategy for OmniAuth. It -doesn't provide a way to gather user information, so should be used as a -building block for authentication strategies.") - (home-page "https://github.com/omniauth/omniauth-oauth2") - (license license:expat))) - -(define-public ruby-open4 - (package - (name "ruby-open4") - (version "1.3.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "open4" version)) - (sha256 - (base32 - "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "rakefile" - ;; Update the Rakefile so it works - (("-rubygems") "-rrubygems") - (("Config") "RbConfig")))) - (add-before 'check 'set-LIB - (lambda _ - ;; This is used in the rakefile when running the tests - (setenv "LIB" "open4")))))) - (synopsis "Open child processes from Ruby and manage them easily") - (description - "@code{Open4} is a Ruby library to run child processes and manage their -input and output.") - (home-page "https://github.com/ahoward/open4") - (license license:ruby))) - -(define-public ruby-options - (package - (name "ruby-options") - (version "2.3.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "options" version)) - (sha256 - (base32 - "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f ;; TODO: NameError: uninitialized constant Config - #:phases - (modify-phases %standard-phases - (add-before 'check 'set-LIB - (lambda _ - ;; This is used in the Rakefile, and setting it avoids an issue - ;; with running the tests. - (setenv "LIB" "options")))))) - (synopsis "Ruby library to parse options from *args cleanly") - (description - "The @code{options} library helps with parsing keyword options in Ruby -functions.") - (home-page "https://github.com/ahoward/options") - (license license:ruby))) - -(define-public ruby-erubi - (package - (name "ruby-erubi") - (version "1.11.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jeremyevans/erubi") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0y4qskz260fjwbnjps5z5yygjwgh6ds0f97lfa9gsmh6zqa1lvvx")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec")) - (native-inputs (list ruby-minitest - ruby-minitest-global-expectations)) - (synopsis "ERB template engine for Ruby") - (description - "Erubi is a ERB template engine for Ruby. It is a simplified fork of -Erubis") - (home-page "https://github.com/jeremyevans/erubi") - (license license:expat))) - -(define-public ruby-erubis - (package - (name "ruby-erubis") - (version "2.7.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "erubis" version)) - (sha256 - (base32 - "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; tests do not run properly with Ruby 2.0 - (synopsis "Implementation of embedded Ruby (eRuby)") - (description - "Erubis is a fast implementation of embedded Ruby (eRuby) with several -features such as multi-language support, auto escaping, auto trimming spaces -around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails -support.") - (home-page "http://www.kuwata-lab.com/erubis/") - (license license:expat))) - -(define-public ruby-ethon - (package - (name "ruby-ethon") - (version "0.12.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ethon" version)) - (sha256 - (base32 - "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ; no included tests - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'libcurl-use-absolute-reference - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/ethon/curls/settings.rb" - (("libcurl', 'libcurl\\.so\\.4") - (search-input-file inputs "/lib/libcurl.so")))))))) - (inputs - (list curl)) - (propagated-inputs - (list ruby-ffi)) - (synopsis "Very lightweight @code{libcurl} wrapper") - (description - "Ethon is a very basic @code{libcurl} wrapper using ffi.") - (home-page "https://github.com/typhoeus/ethon") - (license license:expat))) - -(define-public ruby-execjs - (package - (name "ruby-execjs") - (version "2.7.0") - (source - (origin - ;; fetch from github as the gem does not contain testing code - (method git-fetch) - (uri (git-reference - (url "https://github.com/rails/execjs") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6")))) - (build-system ruby-build-system) - (native-inputs - (list bundler - ;; The test suite tests all the available backends. Currently, this just - ;; means the node backend. - ;; - ;; PASSED: test:node - ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript, - ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8 - node-lts)) - (synopsis "Run JavaScript code from Ruby") - (description - "ExecJS lets you run JavaScript code from Ruby. It automatically picks a -runtime to evaluate your JavaScript program, then returns the result to you as -a Ruby object.") - (home-page "https://github.com/rails/execjs") - (license license:expat))) - -(define-public ruby-fakefs - (package - (name "ruby-fakefs") - (version "2.8.0") - (home-page "https://github.com/fakefs/fakefs") - (source (origin - ;; The Rubygems release does not contain tests. - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0a3vq6cllml279j77hxipmbln31pjw6di3zdgpzqvhqgazv55v10")))) - (build-system ruby-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "fakefs.gemspec" - (("`git ls-files lib README.md LICENSE`") - "`find lib README.md LICENSE -type f | sort`")))) - (add-before 'check 'remove-version-constraints - (lambda _ - ;; Drop hard version requirements for test dependencies. - (substitute* "fakefs.gemspec" - (("(.*add_development_dependency .*), .*" _ dep) - (string-append dep "\n")))))))) - (native-inputs - (list ruby-bump ruby-maxitest ruby-pry ruby-rubocop ruby-rspec)) - (synopsis "Fake file system for Ruby") - (description - "This package provides a fake file system for use in test suites. It -avoids the need for manually creating temporary directories, or dealing -with platform intricacies in @code{File} and @code{FileUtils}.") - (license license:expat))) - -(define-public ruby-orderedhash - (package - (name "ruby-orderedhash") - (version "0.0.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "orderedhash" version)) - (sha256 - (base32 - "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no test suite - (synopsis "Ruby library providing an order-preserving hash") - (description "Orderedhash is a Ruby library providing a hash -implementation that preserves the order of items and features some array-like -extensions.") - (home-page "http://codeforpeople.com/lib/ruby/orderedhash/") - (license license:public-domain))) - -(define-public ruby-libxml - (package - (name "ruby-libxml") - (version "3.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "libxml-ruby" version)) - (sha256 - (base32 - "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54")))) - (build-system ruby-build-system) - (inputs - (list zlib libxml2)) - (arguments - '(#:tests? #f ; test suite hangs for unknown reason - #:gem-flags - (list "--no-document" ; TODO: Re-enable when documentation - ; generation works - "--" - (string-append "--with-xml2-include=" - (assoc-ref %build-inputs "libxml2") - "/include/libxml2" )))) - (synopsis "Ruby bindings for GNOME Libxml2") - (description "The Libxml-Ruby project provides Ruby language bindings for -the GNOME Libxml2 XML toolkit.") - (home-page "https://xml4r.github.com/libxml-ruby") - (license license:expat))) - -(define-public ruby-lino - (package - (name "ruby-lino") - (version "3.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "lino" version)) - (sha256 - (base32 - "1zq9dza040fgjvr9imh7z2lgxrcyc5ac100rqimsnsf9bpfz3fsm")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (propagated-inputs - (list ruby-hamster ruby-open4)) - (synopsis "Build and execute commands in Ruby") - (description - "@code{Lino} provides an interface to run external commands. It provides -an interface to add options as well as managing the standard input, output and -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")) - (patches - (search-patches - "ruby-x25519-automatic-fallback-non-x86_64.patch")))) - (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") - (version "1.1.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "xml-simple" version)) - (sha256 - (base32 - "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no test suite - (synopsis "Simple Ruby library for XML processing") - (description "This library provides a simple API for XML processing in -Ruby.") - (home-page "https://github.com/maik/xml-simple") - (license license:ruby))) - -(define-public ruby-xpath - (package - (name "ruby-xpath") - (version "3.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "xpath" version)) - (sha256 - (base32 - "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd")))) - (build-system ruby-build-system) - (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec" "spec" ))))))) - (native-inputs (list ruby-pry ruby-rspec)) - (propagated-inputs (list ruby-nokogiri)) - (synopsis "Ruby DSL for generating XPath expressions") - (description "XPath is a Ruby domain-specific language (DSL) for -generating XPath expressions.") - (home-page "https://github.com/teamcapybara/xpath") - (license license:expat))) - -(define-public ruby-thor - (package - (name "ruby-thor") - (version "1.2.2") - (source (origin - ;; Pull from git because the gem has no tests. - (method git-fetch) - (uri (git-reference - (url "https://github.com/rails/thor") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1k3z2mlhaig5ycapjxwybb19z7ca0q1876i6csfmv2j0hf1hnc0z")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-coveralls-dependency - (lambda _ - ;; Do not hook the test suite into the online coveralls service. - (substitute* "Gemfile" - ((".*coveralls.*") "")) - (substitute* "spec/helper.rb" - (("require \"coveralls\"") "") - (("Coveralls::SimpleCov::Formatter") "")))) - (add-after 'unpack 'disable-problematic-tests - (lambda _ - ;; These tests attempt to check the git repository for - ;; tabs vs spaces, double vs single quotes, etc, and - ;; depend on the git checkout. - (delete-file "spec/quality_spec.rb") - (substitute* "spec/parser/options_spec.rb" - ;; This test fails for unknown reasons (see: - ;; https://github.com/rails/thor/issues/814). - (("it \"raises an error for unknown switches" all) - (string-append "x" all))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec" "spec" ))))))) - (native-inputs (list ruby-rspec ruby-simplecov ruby-webmock)) - (synopsis "Ruby toolkit for building command-line interfaces") - (description "Thor is a toolkit for building powerful command-line -interfaces.") - (home-page "http://whatisthor.com/") - (license license:expat))) - -(define-public ruby-lumberjack - (package - (name "ruby-lumberjack") - (version "1.0.13") - (source (origin - (method url-fetch) - (uri (rubygems-uri "lumberjack" version)) - (sha256 - (base32 - "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-rspec ruby-timecop)) - (synopsis "Logging utility library for Ruby") - (description "Lumberjack is a simple logging utility that can be a drop in -replacement for Logger or ActiveSupport::BufferedLogger. It provides support -for automatically rolling log files even with multiple processes writing the -same log file.") - (home-page "https://github.com/bdurand/lumberjack") - (license license:expat))) - -(define-public ruby-rbnacl - (package - (name "ruby-rbnacl") - (version "7.1.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rbnacl" version)) - (sha256 - (base32 - "0y8yzianlkc9w6sbqy8iy8l0yym0y6x7p5rjflkfixq76fqmhvzk")))) - (build-system ruby-build-system) - (arguments - (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/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-rgl - (package - (name "ruby-rgl") - (version "0.6.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rgl" version)) - (sha256 - (base32 - "0dji1k9knrf8cxm5psd3pgd9i8f7cfq182jwjpi1pwxw15axf496")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "Gemfile" - ;; Caring about coverage is a not a packager's task but a - ;; developer's - ;;(("gem \"simplecov\"") "") - ;; CodeClimate is an online service, and is unnecessary for - ;; running the tests - (("gem \"codeclimate-test-reporter\", .*") "\n"))))))) - (native-inputs (list ruby-test-unit ruby-simplecov ruby-yard graphviz-minimal)) - (propagated-inputs (list ruby-pairing-heap ruby-rexml ruby-stream)) - (synopsis "Framework for graph data structures and algorithms") - (description "RGL is a framework for graph data structures and algorithms. -The design of the library is much influenced by the Boost Graph Library (BGL) -which is written in C++.") - (home-page "https://github.com/monora/rgl") - (license license:bsd-2))) - -(define-public ruby-hkdf - (package - (name "ruby-hkdf") - (version "1.0.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jtdowney/hkdf") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xqwdmxfnhagivwgb5v9ilwpb4jxlsqwj7pnj43d65zzg5m8p9r5")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "default")) - (native-inputs - (list ruby-rspec)) - (synopsis "HMAC-based Key Derivation Function") - (description - "This package provides a Ruby implementation of RFC5869: @acronym{HKDF, -HMAC-based Extract-and-Expand Key Derivation Function}. The goal of HKDF is to -take some source key material and generate suitable cryptographic keys from it.") - (home-page "https://github.com/jtdowney/hkdf") - (license license:expat))) - -(define-public ruby-nenv - (package - (name "ruby-nenv") - (version "0.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "nenv" version)) - (sha256 - (base32 - "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; no tests included - (native-inputs - (list ruby-rspec bundler)) - (synopsis "Ruby interface for modifying the environment") - (description "Nenv provides a convenient wrapper for Ruby's ENV to modify -and inspect the environment.") - (home-page "https://github.com/e2/nenv") - (license license:expat))) - -(define-public ruby-ptools - (package - (name "ruby-ptools") - (version "1.5.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "ptools" version)) - (sha256 - (base32 - "0damllbshkxycrwjv80sz78h76dw7r9z54d17mb5cbha1daq9q2d")))) - (build-system ruby-build-system) - (arguments - (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} -class with many additional methods modelled after common POSIX tools, such as -@code{File.which} for finding executables, @code{File.tail} to print the last -lines of a file, @code{File.wc} to count words, and so on.") - (home-page "https://github.com/djberg96/ptools") - (license license:artistic2.0))) - -(define-public ruby-permutation - (package - (name "ruby-permutation") - (version "0.1.8") - (source (origin - (method url-fetch) - (uri (rubygems-uri "permutation" version)) - (sha256 - (base32 - "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-rakefile - (lambda _ - (substitute* "Rakefile" - (("require 'rake/gempackagetask'") - "require 'rubygems/package_task'") - (("include Config") "")))) - (replace 'check - (lambda _ - (invoke "ruby" "-Ilib" "test/test.rb")))))) - (synopsis "Library to perform operations with sequence permutations") - (description "This package provides a Ruby library to perform different -operations with permutations of sequences, such as strings and arrays.") - (home-page "https://flori.github.io/permutation") - (license license:gpl2))) ; GPL 2 only - -(define-public ruby-shellany - (package - (name "ruby-shellany") - (version "0.0.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "shellany" version)) - (sha256 - (base32 - "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "default" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-version-test - (lambda _ - (substitute* "spec/shellany_spec.rb" - (("^RSpec") "require \"shellany\"\nRSpec"))))))) - (native-inputs - (list ruby-rspec ruby-nenv bundler)) - (synopsis "Capture command output") - (description "Shellany is a Ruby library providing functions to capture -the output produced by running shell commands.") - (home-page "https://rubygems.org/gems/shellany") - (license license:expat))) - -(define-public ruby-notiffany - (package - (name "ruby-notiffany") - (version "0.1.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "notiffany" version)) - (sha256 - (base32 - "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk")))) - (build-system ruby-build-system) - ;; Tests are not included in the gem. - (arguments `(#:tests? #f)) - (propagated-inputs - (list ruby-shellany ruby-nenv)) - (native-inputs - (list bundler)) - (synopsis "Wrapper library for notification libraries") - (description "Notiffany is a Ruby wrapper library for notification -libraries such as Libnotify.") - (home-page "https://github.com/guard/notiffany") - (license license:expat))) - -(define-public ruby-forking-test-runner - (package - (name "ruby-forking-test-runner") - (version "1.6.0") - (home-page "https://github.com/grosser/forking_test_runner") - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has - ;; 1.4.1, which in turn breaks the tests that use ActiveRecord. - #:tests? #f - #:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "forking_test_runner.gemspec" - (("`git ls-files lib/ bin/ MIT-LICENSE`") - "`find lib/ bin/ MIT-LICENSE -type f | sort`")))) - (add-before 'check 'remove-version-constraints - (lambda _ - ;; Ignore hard coded version constraints for the tests. - (delete-file "Gemfile.lock"))) - (add-before 'check 'set-HOME - (lambda _ - ;; Many tests invoke Bundler, and fails when Bundler - ;; warns that /homeless-shelter does not exist. - (setenv "HOME" "/tmp")))))) - (native-inputs - (list ruby-activerecord ruby-bump ruby-rspec ruby-sqlite3 ruby-wwtd)) - (propagated-inputs - (list ruby-parallel-tests)) - (synopsis "Run every test in a fork") - (description - "This package is a wrapper around @code{parallel_tests} that runs every -test in a fork to avoid pollution and get clean output per test.") - (license license:expat))) - -(define-public ruby-formatador - (package - (name "ruby-formatador") - (version "0.2.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "formatador" version)) - (sha256 - (base32 - "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0")))) - (build-system ruby-build-system) - ;; Circular dependency: Tests require ruby-shindo, which requires - ;; ruby-formatador at runtime. - (arguments `(#:tests? #f)) - (synopsis "Ruby library to format text on stdout") - (description "Formatador is a Ruby library to format text printed to the -standard output stream.") - (home-page "https://github.com/geemus/formatador") - (license license:expat))) - -(define-public ruby-fuubar - (package - (name "ruby-fuubar") - (version "2.3.2") - (source - (origin - ;; Fetch from the git repository, as the gem package doesn't include - ;; the tests. - (method git-fetch) - (uri (git-reference - (url "https://github.com/thekompanee/fuubar") - (commit (string-append "releases/v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: Some tests fail, unsure why. - ;; 21 examples, 7 failures - #:tests? #f - #:phases - (modify-phases %standard-phases - (add-before 'build 'delete-certificate - (lambda _ - ;; Remove 's.cert_chain' as we do not build with a private key - (substitute* "fuubar.gemspec" - ((".*cert_chain.*") "") - ((".*signing_key.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list bundler)) - (propagated-inputs - (list ruby-rspec-core ruby-progressbar)) - (synopsis "Fuubar is an RSpec formatter that uses a progress bar") - (description - "Fuubar is an RSpec formatter that uses a progress bar instead of a -string of letters and dots as feedback. It also stops on the first test -failure.") - (home-page "https://github.com/thekompanee/fuubar") - (license license:expat))) - -(define-public ruby-haml - (package - (name "ruby-haml") - (version "5.0.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "haml" version)) - (sha256 - (base32 - "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (propagated-inputs - (list ruby-tilt ruby-temple)) - (synopsis "Haml is a Ruby library to generate HTML documents") - (description - "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of -HTML or XML that is designed to express the structure of documents using -indentation rather than closing tags. It was originally envisioned as a -plugin for Ruby on Rails, but it can function as a stand-alone templating -engine.") - (home-page "https://haml.info/") - (license license:expat))) - -(define-public ruby-hamster - (package - (name "ruby-hamster") - (version "3.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "hamster" version)) - (sha256 - (base32 - "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar")))) - (build-system ruby-build-system) - (arguments - (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 - (list ruby-rspec)) - (synopsis "Efficient, immutable, thread-safe collection classes for Ruby") - (description - "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector}, -@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an -immutable queue or stack).") - (home-page "https://github.com/hamstergem/hamster") - (license license:expat))) - -(define-public ruby-hashdiff - (package - (name "ruby-hashdiff") - (version "1.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "hashdiff" version)) - (sha256 - (base32 - "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Run tests directly via rspec to avoid depending on rubocop. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list bundler ruby-rspec-2)) - (synopsis "HashDiff computes the smallest difference between two hashes") - (description - "HashDiff is a Ruby library to compute the smallest difference between -two hashes.") - (home-page "https://github.com/liufengyun/hashdiff") - (license license:expat))) - -(define-public ruby-hydra-minimal - ;; No releases yet. - (let ((commit "a4cab705a8a281e4356cb6a05a1946443ad9d53b") - (revision "1")) - (package - (name "ruby-hydra-minimal") - (version (git-version "0.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 - "1swzab7i4cqk1bck7p5m3bh526jh0v6m9qq720r3270zbjc8x8z3")))) - (build-system ruby-build-system) - (arguments - ;; 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)))) - -;; Pinned variant for use by texlive -(define-public ruby-hydra-minimal/pinned - (hidden-package - (package - (inherit ruby-hydra-minimal) - (arguments - (cons* #:ruby ruby/pinned - (package-arguments ruby-hydra-minimal)))))) - -(define-public ruby-hydra - (package - (inherit ruby-hydra-minimal) - (name "ruby-hydra") - (arguments - (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)) - (description - "ruby-hydra is a Ruby library for working with hyphenation patterns."))) - -(define-public ruby-shindo - (package - (name "ruby-shindo") - (version "0.3.11") - (source (origin - (method url-fetch) - (uri (rubygems-uri "shindo" version)) - (sha256 - (base32 - "1wccg3a4g3agfyszipkdnbcgsazcfwdbz1gv51q8m17m9plvpzdp")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "tests" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-tests - (lambda _ - (substitute* "tests/tests_helper.rb" - (("-rrubygems") "")))) - ;; Move the 'check phase to after 'install, to use installed shindo. - (delete 'check) - (add-after 'install 'configure-tests - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "GEM_PATH" - (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")) - (setenv "PATH" - (string-append - (getenv "PATH") ":" #$output "/bin"))))) - (add-after 'configure-tests 'check - (assoc-ref %standard-phases 'check))))) - (propagated-inputs - (list ruby-formatador)) - (synopsis "Simple depth first Ruby testing") - (description "Shindo is a simple depth first testing library for Ruby.") - (home-page "https://github.com/geemus/shindo") - (license license:expat))) - -(define-public ruby-rubygems-tasks - (package - (name "ruby-rubygems-tasks") - (version "0.2.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rubygems-tasks" version)) - (sha256 - (base32 - "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx")))) - (build-system ruby-build-system) - ;; Tests need Internet access. - (arguments `(#:tests? #f)) - (synopsis "Rake tasks for managing and releasing Ruby Gems") - (description "Rubygems-task provides Rake tasks for managing and releasing -Ruby Gems.") - (home-page "https://github.com/postmodern/rubygems-tasks") - (license license:expat))) - -(define-public ruby-rubyzip - (package - (name "ruby-rubyzip") - (version "2.3.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rubyzip/rubyzip") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "03p8c990n6c1r4g64w0vv7z2iaswisl07l2f1lbh1s78cvmlmfxx")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'disable-rubocop - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") "")))) - (add-before 'check 'patch-tests - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "test/gentestfiles.rb" - (("/usr/bin/zip") (which "zip"))))) - (add-after 'patch-source-shebangs 'unpatch-some-source-shebangs - (lambda _ - ;; The tests compare zipped files with data test files; since the - ;; zip files do not have their shebangs patched, the data files - ;; compared with their extracted version must also be left - ;; un-patched. - (substitute* (find-files "test/data" "\\.(txt|rb)$") - (((which "ruby")) - "/usr/bin/env ruby"))))))) - (native-inputs - (list bundler ruby-simplecov zip unzip)) - (synopsis "Ruby module is for reading and writing zip files") - (description - "The rubyzip module provides ways to read from and create zip files.") - (home-page "https://github.com/rubyzip/rubyzip") - (license license:bsd-2))) - -(define-public ruby-silent-stream - (package - (name "ruby-silent-stream") - (version "1.0.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "silent_stream" version)) - (sha256 - (base32 - "10381fpvjzfjvhgfyv700607fpa29firgf52w5w5536m4fh6x63m")))) - (build-system ruby-build-system) - (synopsis "ActiveSupport stream silencing without ActiveSupport") - (description "SilentStream is an extraction of some parts of -ActiveSupport's Kernel Reporting Core Extensions around silencing IO -streams.") - (home-page "https://github.com/pboling/silent_stream") - (license license:expat))) - -(define-public ruby-simplecov-html - (package - (name "ruby-simplecov-html") - (version "0.12.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "simplecov-html" version)) - (sha256 - (base32 - "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)) ; there are no tests - (native-inputs - (list bundler)) - (synopsis "Default HTML formatter for SimpleCov code coverage tool") - (description "This package provides the default HTML formatter for -the SimpleCov code coverage tool for Ruby version 1.9 and above.") - (home-page "https://github.com/simplecov-ruby/simplecov-html") - (license license:expat))) - -(define-public ruby-simplecov-json-formatter - (package - (name "ruby-simplecov-json-formatter") - (version "0.1.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "simplecov_json_formatter" version)) - (sha256 - (base32 - "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j")))) - (build-system ruby-build-system) - ;; The test suite is disabled because it requires simplecov, which - ;; requires this, introducing a dependency cycle. - (arguments (list #:tests? #f)) - (synopsis "JSON formatter for SimpleCov") - (description "This package provides a JSON formatter for SimpleCov, the -Ruby code coverage tool.") - (home-page - "https://github.com/codeclimate-community/simplecov_json_formatter") - (license license:expat))) - -(define-public ruby-simplecov - (package - (name "ruby-simplecov") - (version "0.22.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "simplecov" version)) - (sha256 - (base32 - "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py")))) - (build-system ruby-build-system) - ;; Simplecov depends on rubocop for code style checking at build time. - ;; Rubocop needs simplecov at build time. - (arguments `(#:tests? #f)) - (propagated-inputs - (list ruby-json - ruby-docile - ruby-simplecov-html - ruby-simplecov-json-formatter)) - (synopsis "Code coverage framework for Ruby") - (description "SimpleCov is a code coverage framework for Ruby with a -powerful configuration library and automatic merging of coverage across test -suites.") - (home-page "https://github.com/simplecov-ruby/simplecov") - (license license:expat))) - -(define-public ruby-simplecov-lcov - (package - (name "ruby-simplecov-lcov") - (version "0.8.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "simplecov-lcov" version)) - (sha256 - (base32 - "1h8kswnshgb9zidvc88f4zjy4gflgz3854sx9wrw8ppgnwfg6581")))) - (build-system ruby-build-system) - ;; The test suite fails half of its tests; it seems to rely on older - ;; versions of simplecov, rspec, possibly others (see: - ;; https://github.com/fortissimo1997/simplecov-lcov/issues/29). - (arguments (list #:tests? #f - #:test-target "spec")) - (native-inputs - (list ruby-activesupport - ruby-coveralls - ruby-rspec - ruby-simplecov)) - (synopsis "SimpleCov formatter to generate a lcov style coverage") - (description "This package provides a SimpleCov formatter to generate a -lcov-style coverage report.") - (home-page "https://github.com/fortissimo1997/simplecov-lcov") - (license license:expat))) - -(define-public ruby-snaky-hash - (package - (name "ruby-snaky-hash") - (version "2.0.1") - (source (origin - (method git-fetch) - (uri (git-reference ;for tests - (url "https://gitlab.com/oauth-xx/snaky_hash") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0zmixxzi2g2d75zii65bq037j4g67p25l6aqddbmmwizspsp5az6")))) - (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* "snaky_hash.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil"))))))) - (native-inputs (list ruby-rspec ruby-rspec-block-is-expected)) - (propagated-inputs (list ruby-hashie ruby-version-gem)) - (synopsis "Hash keys and look-ups normalization Ruby library") - (description "The SnakyHash Ruby library provides classes for normalizing -hash keys and look-ups, and a pseudo-object interface.") - (home-page "https://gitlab.com/oauth-xx/snaky_hash") - (license license:expat))) - -(define-public ruby-useragent - (package - (name "ruby-useragent") - (version "0.16.10") - (source (origin - (method url-fetch) - (uri (rubygems-uri "useragent" version)) - (sha256 - (base32 - "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no test suite - (synopsis "HTTP user agent parser for Ruby") - (description "UserAgent is a Ruby library that parses and compares HTTP -User Agents.") - (home-page "https://github.com/gshutler/useragent") - (license license:expat))) - -(define-public ruby-backports - (package - (name "ruby-backports") - (version "3.11.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "backports" version)) - (sha256 - (base32 - "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: This should be default, but there is one test failure - #:test-target "all_spec")) - (native-inputs - (list ruby-mspec ruby-activesupport)) - (synopsis "Backports of the features in newer Ruby versions") - (description - "Backports enables more compatibility across Ruby versions by providing -backports of some features.") - (home-page "https://github.com/marcandre/backports") - (license license:expat))) - -(define-public ruby-bacon - (package - (name "ruby-bacon") - (version "1.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bacon" version)) - (sha256 - (base32 - "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai")))) - (build-system ruby-build-system) - (synopsis "Small RSpec clone") - (description "Bacon is a small RSpec clone providing all essential -features.") - (home-page "https://github.com/chneukirchen/bacon") - (license license:expat))) - -(define-public ruby-bacon-bits - (package - (name "ruby-bacon-bits") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bacon-bits" version)) - (sha256 - (base32 - "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx")))) - (build-system ruby-build-system) - (arguments - ;; No tests - '(#:tests? #f)) - (propagated-inputs (list ruby-bacon)) - (synopsis "Extensions to Bacon, for disabling tests, before and after -blocks and more") - (description - "This extends the bacon testing framework with useful extensions to -disable tests, have before and after blocks that run once and more.") - (home-page "https://github.com/cldwalker/bacon-bits") - (license license:expat))) - -(define-public ruby-bacon-colored-output - (package - (name "ruby-bacon-colored-output") - (version "1.1.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bacon-colored_output" version)) - (sha256 - (base32 - "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx")))) - (build-system ruby-build-system) - (arguments - '(;; No included tests - #:tests? #f)) - (propagated-inputs - (list ruby-bacon)) - (synopsis "Colored output for Bacon test framework") - (description - "This package adds color through ANSI escape codes to Bacon test -output.") - (home-page "https://github.com/whitequark/bacon-colored_output") - (license license:expat))) - -(define-public ruby-bake - (package - (name "ruby-bake") - (version "0.18.2") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ioquatix/bake") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19yi1fxzz9n580gig3p3j6nxbgcfcassa6b0q07jkqrzxdqn7xhn")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'sanitize-dependencies - (lambda _ - ;; These dependencies are not needed to build and run tests - ;; and contain circular dependencies. - (substitute* "gems.rb" - ((".*'bake-modernize'.*") "") - ((".*'bake-gem'.*") "") - ((".*'bake-github-pages'.*") "") - ((".*'utopia-project'.*") "")))) - (add-before 'build 'drop-signing-key-requirement - (lambda _ - (substitute* "bake.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-covered ruby-rspec)) - (propagated-inputs (list ruby-samovar)) - (synopsis "Replacement for rake with a simpler syntax") - (description "Bake is a task execution tool, inspired by Rake, but -codifying many of the use cases which are typically implemented in an ad-hoc -manner.") - (home-page "https://github.com/ioquatix/bake") - (license license:expat))) - -(define-public ruby-bake-test - (package - (name "ruby-bake-test") - (version "0.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bake-test" version)) - (sha256 - (base32 - "1p6kfpncj0s4zyynrrq6c735jvh0dnwyv7kfqym4rpyka4f85qdp")))) - (build-system ruby-build-system) - ;; XXX: Disable the test suite to avoid a circular dependency with - ;; ruby-sus. - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-bake)) - (synopsis "Test suite automatic runner for Ruby") - (description "@command{bake-test} automatically discovers how to run local -test suites for Ruby projects. It supports @command{rspec}, @command{sus}, as -well as @samp{rake}.") - (home-page "https://github.com/ioquatix/bake-test") - (license license:expat))) - -(define-public ruby-bake-test-external - (package - (name "ruby-bake-test-external") - (version "0.3.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bake-test-external" version)) - (sha256 - (base32 - "0749xc7jkz1c5gsq1giwhrqy6s6xqm48bdvs414372881wki2jmh")))) - (build-system ruby-build-system) - ;; The test suite relies on git and network access to clone external - ;; repositories. - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-bake)) - (synopsis "Continuous integration extension for Bake") - (description "Bake Test External adds a @samp{test:external} action to the -@command{bake} command to run the test suites of dependent projects to check -for breakage.") - (home-page "https://github.com/ioquatix/bake-test-external") - (license license:expat))) - -(define-public ruby-connection-pool - (package - (name "ruby-connection-pool") - (version "2.4.1") - (source (origin - (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 - "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") - (description "Connection_pool provides a generic connection pooling -interface for Ruby programs.") - (home-page "https://github.com/mperham/connection_pool") - (license license:expat))) - -(define-public ruby-fast-gettext - (package - (name "ruby-fast-gettext") - (version "4.1.0") - (home-page "https://github.com/grosser/fast_gettext") - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "04p9s0r67xgvckab9ydb3fbnrc7g20p5c05z2zsacynlkp9x5jp9")))) - (build-system ruby-build-system) - (arguments - (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 - ruby-activesupport - ruby-bump - ruby-forking-test-runner - ruby-i18n - ruby-rubocop - ruby-rubocop-packaging - ruby-rspec - ruby-single-cov - ruby-sqlite3 - ruby-wwtd)) - (synopsis "Fast implementation of @code{GetText}") - (description - "This package provides an alternative implementation of the Ruby -@code{GetText} library that is approximately 12x faster yet thread safe.") - ;; Some parts are covered by the Ruby license, see file headers. - (license (list license:expat license:ruby)))) - -(define-public ruby-fiber-local - (package - (name "ruby-fiber-local") - (version "1.0.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/socketry/fiber-local") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0pp5b81h0lysdnphgprkixh1az0fkrgir5sbcp0mm8arxf3f8m90")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'sanitize-dependencies - (lambda _ - ;; This pulls in extraneous maintenance dependencies. - (delete-file "gems.rb") - ;; Depending on ruby-covered would introduce a dependency - ;; cycle with it. - (substitute* '("fiber-local.gemspec" "spec/spec_helper.rb") - ((".*covered.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-rspec)) - (synopsis "Ruby module to simplify fiber-local state management") - (description "This package provides a class-level mixin to make managing -fiber-local state easy. It provides easy access to a fiber-local state from a -fiber, and defaults to a shared thread-local state.") - (home-page "https://github.com/socketry/fiber-local") - (license license:expat))) - -(define-public ruby-flores - (let ((commit "92fded00b04b1e3d308edb7440d7b7ab2c89ab5e") - (revision "0")) - (package - (name "ruby-flores") - (version (git-version "0.0.8" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jordansissel/ruby-flores") - (commit commit))) - (sha256 - (base32 "0jvnw0jli2zzxklfk751vfbi4acf9lijppk67346j3b2qxqi8xms")) - (patches - (search-patches "ruby-flores-fix-deprecations.patch")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-gemspec - (lambda _ - (substitute* "flores.gemspec" - ;; Since this is not a git repository, do not call 'git'. - (("git ls-files") "find . -type f |sort")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (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 -help tests uncover more bugs.") - (home-page "https://github.com/jordansissel/ruby-flores") - (license license:asl2.0)))) - -(define-public ruby-ipaddr - (package - (name "ruby-ipaddr") - (version "1.2.6") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/ipaddr") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0h3z8i1fa8s4gx48322fflhpkzghd4bmd9109hglsgdkic7b0dyp")))) - (build-system ruby-build-system) - (native-inputs (list ruby-test-unit-ruby-core)) - (synopsis "Manipulate IP addresses") - (description "This package provides a set of methods to manipulate an IP -address. Both IPv4 and IPv6 are supported.") - (home-page "https://github.com/ruby/ipaddr") - (license license:bsd-2))) - -(define-public ruby-fake-ftp - (package - (name "ruby-fake-ftp") - (version "0.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "fake_ftp" version)) - (sha256 - (base32 - "1zl9q9m4x7lz9890g0h1qqj7hcxnwzpjfnfbxadjblps7b5054q4")))) - (build-system ruby-build-system) - (native-inputs (list ruby-rspec ruby-rubocop ruby-simplecov)) - (arguments - '(#:test-target "spec")) - (synopsis "Fake FTP server for use with ruby tests") - (description "This package allows you to test FTP implementations in ruby. -It is a minimal single-client FTP server that can be bound to any arbitrary -port on localhost.") - (home-page "https://rubygems.org/gems/fake_ftp") - (license license:expat))) - -(define-public ruby-net-telnet - (package - (name "ruby-net-telnet") - (version "0.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "net-telnet" version)) - (sha256 - (base32 - "16nkxc79nqm7fd6w1fba4kb98vpgwnyfnlwxarpdcgywz300fc15")))) - (build-system ruby-build-system) - (synopsis "Telnet client functionality") - (description "This package provides telnet client functionality.") - (home-page "https://github.com/ruby/net-telnet") - (license license:bsd-2))) - -(define-public ruby-net-ftp - (package - (name "ruby-net-ftp") - (version "0.3.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/net-ftp") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "11b1sw7c4c7xrhn5li5m0wylw42hp52jp6pqacyb43hkw1m5zr36")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-net-protocol ruby-time)) - (synopsis "File Transfer Protocol client library") - (description "This class implements the File Transfer Protocol. If you -have used a command-line FTP program, and are familiar with the commands, you -will be able to use this class easily. Some extra features are included to -take advantage of Ruby's style and strengths.") - (home-page "https://github.com/ruby/net-ftp") - (license license:bsd-2))) - -(define-public ruby-net-http-persistent - (package - (name "ruby-net-http-persistent") - (version "4.0.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "net-http-persistent" version)) - (sha256 - (base32 - "0i1as2lgnw7b4jid0gw5glv5hnxz36nmfsbr9rmxbcap72ijgy03")))) - (build-system ruby-build-system) - (native-inputs - (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.") - (home-page "https://github.com/drbrain/net-http-persistent") - (license license:expat))) - -(define-public ruby-net-imap - (package - (name "ruby-net-imap") - (version "0.3.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/net-imap") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0nx49i1n9q1wpancqaac2srrpb8mb43mc8wryyqyhpgki2grwyxw")))) - (build-system ruby-build-system) - (arguments - ;; The test suite appears to rely on RFCs it tries fetching from the - ;; network (see: https://github.com/ruby/net-imap/issues/136). - (list #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-before 'replace-git-ls-files 'adjust-for-git-ls-files - (lambda _ - ;; Adjust the git ls-files invocation so that it matches - ;; the expected pattern. - (substitute* "net-imap.gemspec" - (("`git ls-files -z 2>/dev/null`") - "`git ls-files -z`"))))))) - (propagated-inputs (list ruby-date ruby-net-protocol)) - (synopsis "Ruby client api for Internet Message Access Protocol") - (description "@code{Net::IMAP} implements Internet Message Access -Protocol (IMAP) client functionality. The protocol is described in -@url{https://tools.ietf.org/html/rfc3501, IMAP}.") - (home-page "https://github.com/ruby/net-imap") - (license license:bsd-2))) - -(define-public ruby-net-pop - (package - (name "ruby-net-pop") - (version "0.1.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/net-pop") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "05vz6a56va2rbr7ld78gdzwy1j5mzs98cz82ax5aqa83pzzk6jld")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-net-protocol)) - (synopsis "Ruby client library for POP3") - (description "This library provides functionality for retrieving email via -POP3, the Post Office Protocol version 3, as specified by -@url{http://www.ietf.org/rfc/rfc1939.txt, RFC1939}.") - (home-page "https://github.com/ruby/net-pop") - (license license:bsd-2))) - -(define-public ruby-net-smtp - (package - (name "ruby-net-smtp") - (version "0.3.3") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/net-smtp") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0ca2wh45xvc09rv6v6sz3vbnkzrjzk5c4l6dk50zk4dwxvghma8r")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'regenerate-certificate - ;; On version 0.5.0 a Makefile was introduced to regenerated - ;; the certificates, and instead of calling openssl directory - ;; we could do (with-directory-excursion "test/net/fixtures" - ;; (invoke "make" "regen_certs"). However the certificate is - ;; expired versions before 0.5.0 as well. - (lambda _ - (with-directory-excursion "test/net/fixtures" - (invoke - "openssl" "req" "-new" "-key" "server.key" "-out" - "server.csr" "-subj" - "/C=JP/ST=Shimane/O=Ruby Core Team/OU=Ruby Test/CN=localhost") - (invoke "openssl" "req" "-new" "-x509" "-days" "3650" - "-key" "server.key" "-out" "cacert.pem" "-subj" - (string-append - "/C=JP/ST=Shimane/L=Matz-e city/O=Ruby " - "Core Team/CN=Ruby Test " - "CA/emailAddress=security@ruby-lang.org")) - (invoke "openssl" "x509" "-days" "3650" "-CA" "cacert.pem" - "-CAkey" "server.key" "-set_serial" "00" "-in" - "server.csr" "-req" "-out" "server.crt"))))))) - (native-inputs (list openssl)) - (propagated-inputs (list ruby-net-protocol)) - (synopsis "Simple Mail Transfer Protocol client library for Ruby") - (description "This library provides functionality to send Internet mail -via SMTP, the Simple Mail Transfer Protocol. The SMTP protocol specification -is known as @url{http://www.ietf.org/rfc/rfc2821.txt, RFC2821}.") - (home-page "https://github.com/ruby/net-smtp") - (license license:bsd-2))) - -(define-public ruby-pleaserun - (package - (name "ruby-pleaserun") - (version "0.0.32") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pleaserun" version)) - (sha256 - (base32 - "1aykf0l8327bqkkf5xd9jcglsib973zpy37cfnlf4j0vp0cdpn2d")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "pleaserun.gemspec" - ;; Mustache is pinned at 0.99.8, for portability with - ;; older Rubies. - (("dependency\\(%q.freeze.*") - "dependency(%q.freeze)\n")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; The cli_spec.rb test fails non-deterministically with - ;; a Errno::EISDIR error (see: - ;; https://github.com/jordansissel/pleaserun/issues/155) - (invoke "rspec" "--exclude-pattern" - "spec/pleaserun/cli_spec.rb"))))))) - (native-inputs (list ruby-flores ruby-rspec)) - (propagated-inputs (list ruby-cabin - ruby-clamp - ruby-dotenv - ruby-insist - ruby-mustache - ruby-stud)) - (synopsis "Init scripts and service definitions generation tool") - (description "Pleaserun is a tool to generate startup scripts and service -definitions. It targets service managers such as systemd, Upstart, launchd, -sysv init, and runit.") - (home-page "https://github.com/jordansissel/pleaserun") - (license license:asl2.0))) - -(define-public ruby-power-assert - (package - (name "ruby-power-assert") - (version "1.1.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "power_assert" version)) - (sha256 - (base32 - "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (native-inputs - (list bundler)) - (synopsis "Assert library with descriptive assertion messages") - (description "Power-assert is an assertion library providing descriptive -assertion messages for tests.") - (home-page "https://github.com/k-tsj/power_assert") - (license (list license:bsd-2 license:ruby)))) - -(define-public ruby-powerpack - (package - (name "ruby-powerpack") - (version "0.1.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "powerpack" version)) - (sha256 - (base32 - "1f71axvlhnxja0k17qqxdi4qh5ck807hqg4i3j6cgy8fgzmyg7rg")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec")) - (native-inputs - (list bundler ruby-rspec ruby-yard)) - (synopsis "Useful extensions to core Ruby classes") - (description - "This package provides a few useful extensions to core Ruby classes, -including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and -@code{String}.") - (home-page "https://github.com/bbatsov/powerpack") - (license license:expat))) - -(define-public ruby-locale - (package - (name "ruby-locale") - (version "2.1.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "locale" version)) - (sha256 - (base32 - "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x")))) - (build-system ruby-build-system) - ;; ruby-test-unit is required to run tests, but that needs ruby-packnga, - ;; which needs ruby-gettext, which needs ruby-locale. To break the - ;; dependency cycle we disable tests. - (arguments `(#:tests? #f)) - (native-inputs - (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 -localization.") - (home-page "https://github.com/ruby-gettext/locale") - (license (list license:lgpl3+ license:ruby)))) - -(define-public ruby-temple - (package - (name "ruby-temple") - (version "0.10.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/judofyr/temple") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0rr9fnlcgj9nm3b6hzzjsvcw8x3y7z48j7slk7xxff2mh8s7y3y0")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'replace-git-ls-files 'replace-more-git-ls-files - (lambda _ - (substitute* "temple.gemspec" - ;; There no longer are test, spec or features - ;; directories. - ((".*`git ls-files -- \\{test,spec,features}/\\*`.*") - "") - ;; There isn't any bin directory either. - ((".*`git ls-files -- bin/\\*`.*") - "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-bacon ruby-erubi ruby-rspec ruby-tilt)) - (synopsis "Template compilation framework in Ruby") - (description "Temple is an abstraction and framework for compiling -templates to pure Ruby.") - (home-page "https://github.com/judofyr/temple") - (license license:expat))) - -(define-public ruby-text - (package - (name "ruby-text") - (version "1.3.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "text" version)) - (sha256 - (base32 - "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg")))) - (build-system ruby-build-system) - (synopsis "Collection of text algorithms for Ruby") - (description - "This package provides a collection of text algorithms: Levenshtein, -Soundex, Metaphone, Double Metaphone, Porter Stemming.") - (home-page "https://github.com/threedaymonk/text") - (license license:expat))) - -(define-public ruby-gdbm - (package - (name "ruby-gdbm") - (version "2.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "gdbm" version)) - (sha256 - (base32 "0xxygf50b2fvy8lcn2vip27vq32p607d3lwd1diplvkajijq8q8b")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; No bundled tests. - (inputs (list gdbm)) - (synopsis "Ruby extension for GNU dbm") - (description "This package provides a Ruby extension for GNU dbm.") - (home-page "https://github.com/ruby/gdbm") - (license license:bsd-2))) - -(define-public ruby-gettext - (package - (name "ruby-gettext") - (version "3.4.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "gettext" version)) - (sha256 - (base32 - "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 ruby-erubi)) - (native-inputs - (list bundler ruby-yard/minimal)) - (synopsis "GNU gettext-like program for Ruby") - (description - "Gettext is a GNU gettext-like program for Ruby. The catalog -file (po-file) used is the same as that used by GNU gettext, allowing you to -use GNU gettext tools for maintenance.") - (home-page "https://ruby-gettext.github.com/") - (license (list license:lgpl3+ license:ruby)))) - -(define-public ruby-packnga - (package - (name "ruby-packnga") - (version "1.0.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "packnga" version)) - (sha256 - (base32 - "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4")))) - (build-system ruby-build-system) - ;; ruby-test-unit is required to run tests, but that needs ruby-packnga. - ;; To break the dependency cycle we disable tests. - (arguments `(#:tests? #f)) - (propagated-inputs - (list ruby-gettext ruby-yard)) - (native-inputs - (list bundler)) - (synopsis "Utility library to package internationalized libraries") - (description - "Packnga is a library to translate to many languages using YARD.") - (home-page "https://ranguba.org/packnga/") - (license license:lgpl2.0+))) - -(define-public ruby-test-construct - (package - (name "ruby-test-construct") - (version "2.0.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "test_construct" version)) - (sha256 - (base32 - "17q7rw92l7r4zh6rkvzrn4dyl8p8p77217vaa1wf7nsv8k5541vy")))) - (build-system ruby-build-system) - (native-inputs - (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 -temporary files and directories during tests.") - (home-page "https://github.com/bhb/test_construct") - (license license:expat))) - -(define-public ruby-test-unit - (package - (name "ruby-test-unit") - (version "3.6.0") - (source (origin - (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 - "0w1m432q3y5v9lkak8yyxadak3z17bsp6afni97i4zjdgfz7niz2")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-power-assert)) - (native-inputs - (list bundler ruby-packnga ruby-yard)) - (synopsis "Unit testing framework for Ruby") - (description "@code{Test::Unit} is unit testing framework for Ruby, based -on xUnit principles. These were originally designed by Kent Beck, creator of -extreme programming software development methodology, for Smalltalk's SUnit. -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-test-unit-ruby-core - (package - (name "ruby-test-unit-ruby-core") - (version "1.0.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "test-unit-ruby-core" version)) - (sha256 - (base32 "1i7fa4hlj6xiqvjaikagwrmiyc21jzyswvd4grjbfqysziwsxygc")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f)) ; contains no tests - (synopsis "Additional test assertions for Ruby standard libraries") - (description "This package provides additional test assertions for Ruby -standard libraries.") - (home-page "https://github.com/ruby/test-unit-ruby-core") - (license license:ruby))) - -(define-public ruby-mapping - (package - (name "ruby-mapping") - (version "1.1.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ioquatix/mapping") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0yhmqp8mprjqf9m7wzc4hhi50qbfax86r89w852csns0ijaffjjs")))) - (build-system ruby-build-system) - (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 -class to a given output model. It is useful for versioning external -interfaces (e.g. JSON APIs) or processing structured data from one format to -another.") - (home-page "https://github.com/ioquatix/mapping") - (license license:expat))) - -(define-public ruby-markaby - (package - (name "ruby-markaby") - (version "0.9.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "markaby" version)) - (sha256 - (base32 - "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i")))) - (build-system ruby-build-system) - (arguments - (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 - (list bundler ruby-rspec-2)) - (synopsis "Write HTML pages in pure Ruby") - (description - "Markaby allows writing HTML packages in pure Ruby. This is similar to -the functionality provided by @acronym{ERB, Embedded Ruby}, but without the -mixture of HTML and additional ERB syntax.") - (home-page "https://markaby.github.io/") - (license license:expat))) - -(define-public ruby-maruku - (package - (name "ruby-maruku") - (version "0.7.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "maruku" version)) - (sha256 - (base32 - "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: 3 tests seem to fail due to HTML encoding issues - #:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-rspec ruby-simplecov ruby-nokogiri-diff)) - (synopsis "Markdown interpreter in Ruby") - (description - "Maruku is a Markdown interpreter in Ruby. It can export Markdown to -HTML, and PDF through LaTeX.") - (home-page "https://github.com/bhollis/maruku") - (license license:expat))) - -(define-public ruby-metaclass - (package - (name "ruby-metaclass") - (version "0.0.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "metaclass" version)) - (sha256 - (base32 - "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5")))) - (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\""))))))))) - (native-inputs - (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 -objects.") - (home-page "https://github.com/floehopper/metaclass") - (license license:expat))) - -(define-public ruby-mkmf-lite - (package - (name "ruby-mkmf-lite") - (version "0.5.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "mkmf-lite" version)) - (sha256 - (base32 - "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 -for use as a library. It does not create packages, builds, or log files of -any kind. Instead, it provides mixin methods that you can use in FFI or tests -to check for the presence of header files, constants, and so on.") - (home-page "https://github.com/djberg96/mkmf-lite") - (license license:asl2.0))) - -(define-public ruby-msgpack - (package - (name "ruby-msgpack") - (version "1.7.5") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/msgpack/msgpack-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0d759pjgxgrxw18kmk81yv9brc141b4d8gszlp4vdnpvwvb96nln")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec")) - (native-inputs - (list ruby-rake-compiler - ruby-ruby-memcheck - ruby-rspec - ruby-yard)) - (synopsis "Efficient object serialization library for Ruby") - (description "MessagePack is a binary-based efficient object serialization -library. It enables to exchange structured objects between many languages -like JSON. Unlike JSON, it is very fast and small.") - (home-page "https://msgpack.org/") - (license license:asl2.0))) - -(define-public ruby-mspec - (package - (name "ruby-mspec") - (version "1.9.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mspec" version)) - (sha256 - (base32 - "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: 3 test failures - ;; ./spec/mocks/mock_spec.rb:82 - ;; ./spec/utils/name_map_spec.rb:151 - ;; ./spec/utils/name_map_spec.rb:155 - #:tests? #f - #:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'change-dependency-constraints - (lambda _ - (substitute* "mspec.gemspec" - (("rake.*") "rake>)\n") - (("rspec.*") "rspec>)\n")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec" "spec"))))))) - (native-inputs - (list bundler ruby-rake ruby-rspec)) - (synopsis "MSpec is a specialized framework for RubySpec") - (description - "MSpec is a specialized framework that is syntax-compatible with RSpec 2 -for basic features. MSpec contains additional features that assist in writing -specs for Ruby implementations in ruby/spec.") - (home-page "http://rubyspec.org") - (license license:expat))) - -(define-public ruby-mysql2 - (package - (name "ruby-mysql2") - (version "0.5.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/brianmario/mysql2") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: Tests require a running MySQL/MariaDB service - #:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "mysql2.gemspec" - (("git ls-files .*`") "find . -type f |sort`")))) - (add-before 'install 'set-MAKEFLAGS - (lambda* (#:key outputs #:allow-other-keys) - (setenv "MAKEFLAGS" - (string-append - "V=1 " - "prefix=" (assoc-ref outputs "out"))))) - ;; Move the 'check phase to after 'install, as then you can test - ;; using the installed mysql2 gem in the store. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key outputs tests? #:allow-other-keys) - (setenv "GEM_PATH" - (string-append - (getenv "GEM_PATH") - ":" - (assoc-ref outputs "out") "/lib/ruby/vendor_ruby")) - (when tests? - (invoke "rspec"))))))) - (inputs - `(("mariadb-dev" ,mariadb "dev") - ("zlib" ,zlib))) - (native-inputs - (list ruby-rspec ruby-rake-compiler)) - (synopsis "MySQL library for Ruby, binding to libmysql") - (description - "This package provides a simple, fast MySQL library for Ruby, binding to -libmysql.") - (home-page "https://github.com/brianmario/mysql2") - (license license:expat))) - -(define-public ruby-blankslate - (package - (name "ruby-blankslate") - (version "3.1.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "blankslate" version)) - (sha256 - (base32 - "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ (invoke "rspec" "spec/")))))) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Abstract base class with no predefined methods") - (description - "BlankSlate provides an abstract base class with no predefined -methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful -as a base class when writing classes that depend upon -@code{method_missing} (e.g. dynamic proxies).") - (home-page "https://github.com/masover/blankslate") - (license license:expat))) - -(define-public ruby-bond - (package - (name "ruby-bond") - (version "0.5.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bond" version)) - (sha256 - (base32 - "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90")))) - (build-system ruby-build-system) - (arguments - ;; The test suite fails (see: - ;; https://github.com/cldwalker/bond/issues/46). - `(#:tests? #f)) - (native-inputs - (list ruby-bacon ruby-bacon-bits ruby-mocha-on-bacon)) - (synopsis "Bond can provide custom autocompletion for arguments, methods -and more") - (description - "Bond can autocomplete argument(s) to methods, uniquely completing per -module, per method and per argument. Bond provides a configuration system and -a DSL for creating custom completions and completion rules. Bond can also -load completions that ship with gems. Bond is able to offer more than irb's -completion since it uses the full line of input when completing as opposed to -irb's last-word approach.") - (home-page "http://tagaholic.me/bond/") - (license license:expat))) - -(define-public ruby-idn-ruby - (package - (name "ruby-idn-ruby") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "idn-ruby" version)) - (sha256 - (base32 - "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? outputs #:allow-other-keys) - (when tests? - (let* ((gem-file (cadr (find-files "." "\\.gem"))) - (name-and-version (basename gem-file ".gem"))) - (apply invoke - "ruby" "--verbose" - (string-append "-I" - (assoc-ref outputs "out") - "/lib/ruby/vendor_ruby/gems/" - name-and-version - "/lib") - (find-files "./test" ".*\\.rb"))))))))) - (inputs - (list libidn)) - (synopsis "Ruby Bindings for the GNU LibIDN library") - (description - "Ruby Bindings for the GNU LibIDN library, an implementation of the -Stringprep, Punycode and IDNA specifications. These are used to encode and -decode internationalized domain + names according to the IDNA2003 -specifications. - -Included are the most important parts of the Stringprep, Punycode and IDNA -APIs like performing Stringprep processings, encoding to and decoding from -Punycode strings and converting entire domain names to and from the ACE -encoded form.") - (home-page "https://github.com/deepfryed/idn-ruby") - (license license:asl2.0))) - -(define-public ruby-insist - (package - (name "ruby-insist") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "insist" version)) - (sha256 - (base32 - "0bw3bdwns14mapbgb8cbjmr0amvwz8y72gyclq04xp43wpp5jrvg")))) - (build-system ruby-build-system) - (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" "test/testing.rb"))))))) - (synopsis "Testing tool for Ruby") - (description "This package provides a simple block-driven assertion -library for both testing and for production code that attempts to make test -definitions more readable.") - (home-page "https://github.com/jordansissel/ruby-insist/") - (license license:asl2.0))) - -(define-public ruby-introspection - (package - (name "ruby-introspection") - (version "0.0.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "introspection" version)) - (sha256 - (base32 - "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-metaclass)) - (native-inputs - (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 -definitions on a Ruby object.") - (home-page "https://github.com/floehopper/introspection") - (license license:expat))) - -(define-public ruby-redcarpet - (package - (name "ruby-redcarpet") - (version "3.5.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "redcarpet" version)) - (sha256 - (base32 - "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; The gem archive does not include the conformance tests. - (add-after 'unpack 'disable-conformance-tests - (lambda _ - (substitute* "Rakefile" - (("task :test => %w\\[test:unit test:conformance\\]") - "task :test => %w[test:unit]"))))))) - (native-inputs - (list bundler ruby-test-unit ruby-rake-compiler)) - (synopsis "Extensible Markdown to (X)HTML converter") - (description - "Redcarpet is an extensible Ruby library for Markdown processing and -conversion to (X)HTML.") - (home-page "https://github.com/vmg/redcarpet") - (license license:expat))) - -(define-public ruby-reline - (package - (name "ruby-reline") - (version "0.3.3") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/reline") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1papa4f4prjml9qk6yydi4k5a4zgbzmxmbhd8fz9kfg1i34s35cw")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-io-console)) - (synopsis "GNU Readline or Editline implementation in Ruby") - (description "Reline is a pure Ruby alternative GNU Readline or Editline -implementation.") - (home-page "https://github.com/ruby/reline") - (license (list license:bsd-2 license:ruby)))) ;dual license - -(define-public ruby-rerun - (package - (name "ruby-rerun") - (version "0.13.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rerun" version)) - (sha256 - (base32 - "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (propagated-inputs - (list ruby-listen)) - (synopsis "Run a process, and restart when some monitored files change") - (description - "Rerun is a tool to launch programs, then monitor the file system, and -restart the program when any of the monitored files change. It's written in -Ruby, but can be used for all programs.") - (home-page "https://github.com/alexch/rerun/") - (license license:expat))) - -(define-public ruby-maxitest - (package - (name "ruby-maxitest") - (version "5.1.0") - (home-page "https://github.com/grosser/maxitest") - (source (origin - ;; Pull from git because the gem does not contain tests. - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0qj410krfm497ggmf71xpnabbb6814y0585by4nlzyjvg9hpgg3m")))) - (build-system ruby-build-system) - (arguments - (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-rspec - ruby-wwtd)) - (propagated-inputs - (list ruby-minitest)) - (synopsis "Minitest with extra features") - (description - "Maxitest is a wrapper around Minitest with extra functionality such -as timeouts, an @command{mtest} executable that can run tests by line -number, support for interrupted tests, better backtraces, and more.") - (license license:expat))) - -(define-public ruby-mocha - (package - (name "ruby-mocha") - (version "2.0.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "mocha" version)) - (sha256 - (base32 - "18xn9gm9yypavy9yck71fplan19hy5697mwd1rwzz7vizh3ip7bd")))) - (build-system ruby-build-system) - (arguments - (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-psych-3 - ruby-introspection)) - (synopsis "Mocking and stubbing library for Ruby") - (description - "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which -allows mocking and stubbing of methods on real (non-mock) classes.") - (home-page "https://mocha.jamesmead.org/") - ;; 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") - (version "0.2.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mocha-on-bacon" version)) - (sha256 - (base32 - "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp")))) - (build-system ruby-build-system) - (arguments - ;; rubygems.org release missing tests - '(#:tests? #f)) - (propagated-inputs (list ruby-mocha)) - (synopsis "Mocha adapter for Bacon") - (description - "This package provides a Mocha adapter for Bacon, allowing you to use the -Mocha stubbing and mocking library with Bacon, a small RSpec clone.") - (home-page - "https://github.com/alloy/mocha-on-bacon") - (license license:expat))) - -(define-public ruby-net-ssh - (package - (name "ruby-net-ssh") - (version "7.1.0") - (source (origin - (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 - "1dkbyzpl31jygnnva5sa754vk42q1fih4qz5ipqw5gqiafrrlb91")))) - (build-system ruby-build-system) - (native-inputs - (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 -with processes on remote servers, via SSH2.") - (home-page "https://github.com/net-ssh/net-ssh") - (license license:expat))) - -(define-public ruby-net-scp - (package - (name "ruby-net-scp") - (version "4.0.1.rc3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/net-ssh/net-scp") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "136mb8idxdkxkadx827027nyxcsvvv2wivz5dnjqy8g6ic0h9dzn")))) - (build-system ruby-build-system) - (native-inputs - (list bundler ruby-test-unit ruby-mocha-1)) - (propagated-inputs - (list ruby-net-ssh)) - (synopsis "Pure-Ruby SCP client library") - (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP -client protocol.") - (home-page "https://github.com/net-ssh/net-scp") - (license license:expat))) - -(define-public ruby-net-sftp - (package - (name "ruby-net-sftp") - (version "4.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "net-sftp" version)) - (sha256 - (base32 - "0r33aa2d61hv1psm0l0mm6ik3ycsnq8symv7h84kpyf2b7493fv5")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-net-ssh)) - (synopsis "Pure Ruby implementation of the SFTP client protocol") - (description - "@code{Net::SFTP} is a pure Ruby implementation of the SFTP -protocol (specifically, versions 1 through 6 of the SFTP protocol). Note that -this is the “Secure File Transfer Protocol”, typically run over an SSH -connection, and has nothing to do with the FTP protocol.") - (home-page "https://github.com/net-ssh/net-sftp") - (license license:expat))) - -(define-public ruby-minima - (package - (name "ruby-minima") - (version "2.5.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minima" version)) - (sha256 - (base32 - "1gk7jmriiswda1ykjzpsw9cpiya4m9n0yrh0h6xnrc8zcfy543jj")))) - (arguments - (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "jekyll" "build")) - ;; Without the following, an attempt to remove - ;; minima-.gem is made during installation, - ;; which will fail. - (delete-file #$(string-append "_site/minima-" - version ".gem"))))))) - (build-system ruby-build-system) - (propagated-inputs (list jekyll ruby-jekyll-feed ruby-jekyll-seo-tag)) - (synopsis "Beautiful, minimal theme for Jekyll") - (description - "Minima is a one-size-fits-all Jekyll theme for writers. It's Jekyll's -default (and first) theme. It's what you get when you run @code{jekyll new}.") - (home-page "https://github.com/jekyll/minima") - (license license:expat))) - -(define-public ruby-minitest - (package - (name "ruby-minitest") - (version "5.18.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest" version)) - (sha256 - (base32 - "1kg9wh7jlc9zsr3hkhpzkbn0ynf4np5ap9m2d8xdrb8shy0y6pmb")))) - (build-system ruby-build-system) - (native-inputs (list ruby-hoe)) - (home-page "https://github.com/minitest/minitest") - (synopsis "Small test suite library for Ruby") - (description "Minitest provides a complete suite of Ruby testing -facilities supporting TDD, BDD, mocking, and benchmarking.") - (license license:expat))) - -(define-public ruby-minitest-around - (package - (name "ruby-minitest-around") - (version "0.5.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-around" version)) - (sha256 - (base32 - "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions - (lambda _ - (substitute* "minitest-around.gemspec" - (("%q.*") "%q, [\">= 0\"])\n"))))))) - (propagated-inputs - (list ruby-minitest)) - (native-inputs - (list bundler ruby-cucumber ruby-bump ruby-test-construct)) - (synopsis "Run code around tests in Minitest") - (description - "This library provides a way to run code around tests in Minitest, -written using either the unit test or spec style.") - (home-page "https://github.com/splattael/minitest-around") - (license license:expat))) - -(define-public ruby-minitest-retry - (package - (name "ruby-minitest-retry") - (version "0.2.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-retry" version)) - (sha256 - (base32 - "1c1zq0b1a9y0hbqphq4ybijnjldlis1g6kyhx92q2ynnqfmzhfga")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-minitest)) - (synopsis "Minitest extension to re-run failing tests") - (description "This package provides the @code{Minitest::Retry} class, -which extends Minitest to allow retrying tests when they fail.") - (home-page "https://github.com/y-yagi/minitest-retry") - (license license:expat))) - -(define-public ruby-minitest-sprint - (package - (name "ruby-minitest-sprint") - (version "1.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-sprint" version)) - (sha256 - (base32 - "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe ruby-minitest)) - (synopsis "Fast test suite runner for minitest") - (description "Minitest-sprint is a test runner for minitest that makes it -easier to re-run individual failing tests.") - (home-page "https://github.com/seattlerb/minitest-sprint") - (license license:expat))) - -(define-public ruby-minitest-stub-const - (package - (name "ruby-minitest-stub-const") - (version "0.6") ;for Rakefile - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/adammck/minitest-stub-const") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0cz4r9fxplx94c7wakx0998n2gv7l21prn8pfpw6z2c33k3g2xar")))) - (build-system ruby-build-system) - (synopsis "Stub constants for the duration of a block in MiniTest") - (description "This package provides a MiniTest extension to stub constants -for the duration of a block in MiniTest.") - (home-page "https://github.com/adammck/minitest-stub-const") - (license license:expat))) - -(define-public ruby-minitest-bacon - (package - (name "ruby-minitest-bacon") - (version "1.0.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-bacon" version)) - (sha256 - (base32 - "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe)) - (inputs - (list ruby-minitest)) - (synopsis "Bacon compatibility library for minitest") - (description "Minitest-bacon extends minitest with bacon-like -functionality, making it easier to migrate test suites from bacon to minitest.") - (home-page "https://github.com/seattlerb/minitest-bacon") - (license license:expat))) - -(define-public ruby-minitest-focus - (package - (name "ruby-minitest-focus") - (version "1.3.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-focus" version)) - (sha256 - (base32 - "13kd2dkd9akfb99ziqndz9mir5iynyfyj2l45mcibab6mq5k8g67")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-minitest)) - (native-inputs - (list ruby-hoe)) - (synopsis "Allows a few specific tests to be focused on") - (description - "@code{minitest-focus} gives the ability focus on a few tests with ease -without having to use command-line arguments. It introduces a @code{focus} -class method for use in testing classes, specifying that the next defined test -is to be run.") - (home-page "https://github.com/seattlerb/minitest-focus") - (license license:expat))) - -(define-public ruby-minitest-power-assert - (package - (name "ruby-minitest-power-assert") - (version "0.3.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-power_assert" version)) - (sha256 - (base32 - "1dazl6nbxjvvmi5jamrsygkz396s29b7cd841ni6qy4izk8jd9b7")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-minitest ruby-power-assert)) - (synopsis "Power Assert implementation for Minitest") - (description "This gem provides a Power Assert implementation for -Minitest. It is inspired by the @code{test-unit-power_assert} gem.") - (home-page "https://github.com/hsbt/minitest-power_assert") - (license license:bsd-2))) - -(define-public ruby-minitest-profile - (package - (name "ruby-minitest-profile") - (version "0.0.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-profile" version)) - (sha256 - (base32 - "13h4nwbq6yv7hsaa7dpj90lry4rc5qqnpzvm9n2s57mm2xi31xfa")))) - (build-system ruby-build-system) - (synopsis "Display the slowest tests in a MiniTest suite") - (description "This package provides a MiniTest plugin for displaying the -slowest tests in a minitest suite.") - (home-page "https://github.com/nmeans/minitest-profile") - (license license:expat))) - -(define-public ruby-minitest-proveit - (package - (name "ruby-minitest-proveit") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-proveit" version)) - (sha256 - (base32 - "0k1hpr8lgkgygfivgcsnnib7xjlf9ribgpn7yidvb4q0l0q2yfmr")))) - (build-system ruby-build-system) - (native-inputs (list ruby-hoe)) - (propagated-inputs (list ruby-minitest)) - (synopsis "Assertion-based tests extension for MiniTest") - (description "The @code{minitest-proveit} MiniTest extension ensures all -tests to prove success (via at least one assertion) rather than rely on the -absence of failure.") - (home-page "https://github.com/seattlerb/minitest-proveit") - (license license:expat))) - -(define-public ruby-minitest-moar - (package - (name "ruby-minitest-moar") - (version "0.0.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-moar" version)) - (sha256 - (base32 - "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'clean-dependencies - (lambda _ - ;; Remove all gems defined in the Gemfile because these are not - ;; truly needed. - (substitute* "Gemfile" - (("gem .*") "")) - ;; Remove byebug as not needed to run tests. - (substitute* "test/test_helper.rb" - (("require 'byebug'") ""))))))) - (native-inputs - (list bundler ruby-minitest)) - (synopsis "Extra features and changes to MiniTest") - (description "@code{MiniTest Moar} add some additional features and -changes some default behaviours in MiniTest. For instance, Moar replaces the -MiniTest @code{Object#stub} with a global @code{stub} method.") - (home-page "https://github.com/dockyard/minitest-moar") - (license license:expat))) - -(define-public ruby-minitest-bonus-assertions - (package - (name "ruby-minitest-bonus-assertions") - (version "3.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-bonus-assertions" version)) - (sha256 - (base32 - "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a")))) - (build-system ruby-build-system) - (arguments - (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-focus - ruby-minitest-moar)) - (synopsis "Bonus assertions for @code{Minitest}") - (description - "Minitest bonus assertions provides extra MiniTest assertions. For -instance, it provides @code{assert_true}, @code{assert_false} and -@code{assert_set_equal}.") - (home-page "https://github.com/halostatue/minitest-bonus-assertions") - (license license:expat))) - -(define-public ruby-minitest-reporters - (package - (name "ruby-minitest-reporters") - (version "1.3.6") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-reporters" version)) - (sha256 - (base32 - "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Remove the requirement on Rubocop, as it isn't useful to run, and - ;; including it as an input can lead to circular dependencies. - (add-after 'unpack 'remove-rubocop-from-Rakefile - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake\\_task'") "") - (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each")))) - (add-after 'extract-gemspec 'remove-rubocop-from-gemspec - (lambda _ - (substitute* "minitest-reporters.gemspec" - ((".*%q.*") "\n"))))))) - (propagated-inputs - (list ruby-ansi ruby-builder ruby-minitest ruby-progressbar)) - (native-inputs - (list bundler ruby-maruku)) - (synopsis "Enhanced reporting for Minitest tests") - (description - "@code{minitest/reporters} provides a custom Minitest runner to improve -how the test state is reported. A number of different reporters are -available, including a spec reporter, progress bar reporter, a HTML -reporter.") - (home-page "https://github.com/kern/minitest-reporters") - (license license:expat))) - -(define-public ruby-minitest-rg - (package - (name "ruby-minitest-rg") - (version "5.2.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-rg" version)) - (sha256 - (base32 - "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354")))) - (build-system ruby-build-system) - (arguments - ;; Some tests fail even outside Guix, so disable tests. - ;; https://github.com/blowmage/minitest-rg/issues/12 - ;; https://github.com/blowmage/minitest-rg/pull/13 - `(#:tests? #f)) - (propagated-inputs - (list ruby-minitest)) - (synopsis "Coloured output for Minitest") - (description - "@code{minitest-rg} changes the colour of the output from Minitest.") - (home-page "https://blowmage.com/minitest-rg/") - (license license:expat))) - -(define-public ruby-minitest-global-expectations - (package - (name "ruby-minitest-global-expectations") - (version "1.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-global_expectations" - version)) - (sha256 - (base32 - "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-minitest)) - (synopsis "Adjust minitest behaviour for calling expectation methods") - (description - "Minitest-global_expectations allows continued use of expectation methods -on all objects. Calling expectation methods on all objects was deprecated in -minitest 5.12, and is planned to be removed from minitest 6.") - (home-page "https://github.com/jeremyevans/minitest-global_expectations") - (license license:expat))) - -(define-public ruby-minitest-hooks - (package - (name "ruby-minitest-hooks") - (version "1.5.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-hooks" version)) - (sha256 - (base32 "11jb31dl5kbpyl3kgxql0p7da9066r2aqw54y5q6cni9nmld3zf5")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No tests bundled. - (native-inputs - (list ruby-sequel ruby-sqlite3)) - (synopsis "Hooks for the minitest framework") - (description - "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all}, -@code{around_all} hooks for Minitest. This allows, for instance, running each -suite of specs inside a database transaction, running each spec inside its own -savepoint inside that transaction. This can significantly speed up testing -for specs that share expensive database setup code.") - (home-page "https://github.com/jeremyevans/minitest-hooks") - (license license:expat))) - -(define-public ruby-daemons - (package - (name "ruby-daemons") - (version "1.2.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "daemons" version)) - (sha256 - (base32 - "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; no test suite - (synopsis "Daemonize Ruby programs") - (description "Daemons provides a way to wrap existing Ruby scripts to be -run as a daemon and to be controlled by simple start/stop/restart commands.") - (home-page "https://github.com/thuehlinger/daemons") - (license license:expat))) - -(define-public ruby-dalli - (package - (name "ruby-dalli") - (version "3.2.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/petergoldstein/dalli") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1hhqqv1j3zd2y0vr6maaabsflrvkf1x0i6z8n725mhqydp3f9gwp")))) - (build-system ruby-build-system) - ;; Disable tests to avoid a dependency cycle with ruby-activesupport, - ;; through ruby-ruby-prof. - (arguments (list #:tests? #f)) - (synopsis "High performance memcached client for Ruby") - (description "Dalli is a high performance pure Ruby client for accessing -memcached servers. Dalli supports: - -@itemize -@item Simple and complex memcached configurations -@item Fail-over between memcached instances -@item Fine-grained control of data serialization and compression -@item Thread-safe operation -@item SSL/TLS connections to memcached -@item SASL authentication. -@end itemize - -The name is a variant of Salvador Dali for his famous painting The Persistence -of Memory.") - (home-page "https://github.com/petergoldstein/dalli") - (license license:expat))) - -(define-public ruby-data_uri - (package - (name "ruby-data_uri") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "data_uri" version)) - (sha256 - (base32 - "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky")))) - (build-system ruby-build-system) - (synopsis "URI class for parsing data URIs") - (description - "Data @acronym{URI, universal resource identifier}s allow resources to be -embedded inside a URI. The URI::Data class provides support for parsing these -URIs using the normal URI.parse method.") - (home-page "https://github.com/dball/data_uri") - (license license:expat))) - -(define-public ruby-debug - (package - (name "ruby-debug") - (version "1.7.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "debug" version)) - (sha256 - (base32 - "0x59508j69w9p275gabysv521n210pd3n060gqfgsiqjms1h0ldf")))) - (build-system ruby-build-system) - (arguments (list #:test-target "test_all")) - (propagated-inputs (list ruby-irb ruby-reline)) - (synopsis "Debugging functionality for Ruby") - (description "Debugging functionality for Ruby. This is completely -rewritten debug.rb which was contained by the ancient Ruby versions. It is -included with Ruby itself, but this package is made available so that the -latest version can be made available independently from Ruby.") - (home-page "https://github.com/ruby/debug") - (license license:bsd-2))) - -(define-public ruby-deep-merge - (package - (name "ruby-deep-merge") - (version "1.2.1") - (home-page "https://github.com/danielsdeleo/deep_merge") - ;; The Rubygem source does not contain the gemspec required for tests. - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-minitest)) - (synopsis "Recursively merge hashes") - (description - "Deep Merge is a set of utility functions for @code{Hash}. It permits -you to merge elements inside a hash together recursively.") - (license license:expat))) - -(define-public ruby-delayed-job - (package - (name "ruby-delayed-job") - (version "4.1.11") - (source (origin - (method url-fetch) - (uri (rubygems-uri "delayed_job" version)) - (sha256 - (base32 - "0s2xg72ljg4cwmr05zi67vcyz8zib46gvvf7rmrdhsyq387m2qcq")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'disable-bundler - (lambda _ - (substitute* "Rakefile" - (("require 'bundler/setup'") "") - (("Bundler::GemHelper\\.install_tasks") "")))) - (add-after 'unpack 'disable-rubocop - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") "")))) - (add-after 'extract-gemspec 'remove-dependency-on-actionmailer - (lambda _ - (substitute* "spec/helper.rb" - (("require 'action_mailer'") "")) - (substitute* "delayed_job.gemspec" - (("\"spec/performable_mailer_spec.rb\".freeze, ") "")) - (delete-file "spec/performable_mailer_spec.rb")))))) - (native-inputs - (list ruby-activerecord - ruby-rspec - ruby-simplecov - ruby-simplecov-lcov - ruby-zeitwerk - ruby-mini-portile-2)) - (propagated-inputs - (list ruby-activesupport)) - (synopsis "Asynchronous background tasks execution library") - (description "Delayed_job (or DJ) encapsulates the common pattern of -asynchronously executing longer tasks in the background. It is a direct -extraction from Shopify where the job table is responsible for a multitude of -core tasks.") - (home-page "https://github.com/collectiveidea/delayed_job") - (license license:expat))) - -(define-public ruby-git - (package - (name "ruby-git") - (version "1.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "git" version)) - (sha256 - (base32 - "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; no tests - #:phases (modify-phases %standard-phases - (add-after 'install 'patch-git-binary - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; Make the default git binary an absolute path to the - ;; store. - (let ((git (search-input-file inputs "/bin/git")) - (config (string-append - (assoc-ref outputs "out") - "/lib/ruby/vendor_ruby/gems/git-" - ,version "/lib/git/config.rb"))) - (substitute* (list config) - (("'git'") - (string-append "'" git "'"))))))))) - (inputs - (list git)) - (synopsis "Ruby wrappers for Git") - (description "Ruby/Git is a Ruby library that can be used to create, read -and manipulate Git repositories by wrapping system calls to the git binary.") - (home-page "https://github.com/schacon/ruby-git") - (license license:expat))) - -(define-public ruby-hocon - (package - (name "ruby-hocon") - (version "1.4.0") - (home-page "https://github.com/puppetlabs/ruby-hocon") - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "04wgv0pwrghawnl6qp346z59fvp9v37jymq8p0lsrzxa6nvrykmk")))) - (build-system ruby-build-system) - (arguments - (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") - (description - "This package provides Ruby support for the @acronym{HOCON, -Human-Optimized Config Object Notation} configuration file format. It -supports parsing and modifying HOCON and JSON files, and rendering parsed -objects back to a @code{String}.") - (license license:asl2.0))) - -(define-public ruby-slop - (package - (name "ruby-slop") - (version "4.10.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "slop" version)) - (sha256 - (base32 - "1iyrjskgxyn8i1679qwkzns85p909aq77cgx2m4fs5ygzysj4hw4")))) - (build-system ruby-build-system) - (synopsis "Ruby command line option parser") - (description "Slop provides a Ruby domain specific language for gathering -options and parsing command line flags.") - (home-page "https://github.com/leejarvis/slop") - (license license:expat))) - -(define-public ruby-slop-3 - (package (inherit ruby-slop) - (version "3.6.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "slop" version)) - (sha256 - (base32 - "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n")))))) - -(define-public ruby-multi-xml - (package - (name "ruby-multi-xml") - (version "0.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "multi_xml" version)) - (sha256 - (base32 - "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (synopsis "Swappable XML backends for Ruby") - (description - "@code{MultiXml} provides swappable XML backends utilizing either LibXML, -Nokogiri, Ox, or REXML.") - (home-page "https://github.com/sferik/multi_xml") - (license license:expat))) - -(define-public ruby-multipart-parser - (package - (name "ruby-multipart-parser") - (version "0.1.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "multipart-parser" version)) - (sha256 - (base32 - "0xb4p475yrfm883h9kn80a021myn17dvs50wpa1djzcmlq7p0882")))) - (build-system ruby-build-system) - (arguments - (list - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'skip-failing-test - ;; One test fails for unknown reasons (see: - ;; https://github.com/danabr/multipart-parser/issues/7). - (lambda _ - (substitute* "test/multipart_parser/reader_test.rb" - (("def test_long" all) - (string-append all "\n return true")))))))) - (synopsis "Parser for multipart MIME messages") - (description "@code{multipart-parser} is a simple parser for multipart -MIME messages, written in Ruby, based on felixge/node-formidable's parser. It -has the following characteristics: -@itemize -@item Pure Ruby -@item Event-driven API -@item Only supports one level of multipart parsing -@item Does not perform I/O -@item Does not depend on any other library. -@end itemize") - (home-page "https://github.com/danabr/multipart-parser") - (license license:expat))) - -(define-public ruby-multipart-post - (package - (name "ruby-multipart-post") - (version "2.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "multipart-post" version)) - (sha256 - (base32 - "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x")))) - (build-system ruby-build-system) - (native-inputs - (list bundler)) - (synopsis "Multipart POST library for Ruby") - (description "Multipart-Post Adds multipart POST capability to Ruby's -net/http library.") - (home-page "https://github.com/nicksieger/multipart-post") - (license license:expat))) - -(define-public ruby-multi-json - (package - (name "ruby-multi-json") - (version "1.15.0") - (source - (origin - (method git-fetch) - ;; Tests are not distributed at rubygems.org so download from GitHub - ;; instead. - (uri (git-reference - (url "https://github.com/intridea/multi_json") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0mkdvy6i00yyksjvnv6znh7wf89j9506qzzjq6bsbmbkyqrszp4d")))) - (build-system ruby-build-system) - (arguments - (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") - (description - "This package provides a common interface to multiple JSON libraries, -including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem, -NSJSONSerialization, gson.rb, JrJackson, and OkJson.") - (home-page "https://github.com/intridea/multi_json") - (license license:expat))) - -(define-public ruby-multi-test - (package - (name "ruby-multi-test") - (version "0.1.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "multi_test" version)) - (sha256 - (base32 - "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd")))) - (build-system ruby-build-system) - (arguments - '(;; Tests require different sets of specific gem versions to be available, - ;; and there is no gemfile that specifies the newest versions of - ;; dependencies to be tested. - #:tests? #f)) - (synopsis - "Interface to testing libraries loaded into a running Ruby process") - (description - "@code{multi_test} provides a uniform interface onto whatever testing -libraries that have been loaded into a running Ruby process to help control -rogue test/unit/autorun requires.") - (home-page "https://github.com/cucumber/multi_test") - (license license:expat))) - -(define-public ruby-arr-pm - (package - (name "ruby-arr-pm") - (version "0.0.12") - (source (origin - (method url-fetch) - (uri (rubygems-uri "arr-pm" version)) - (sha256 - (base32 - "0fddw0vwdrr7v3a0lfqbmnd664j48a9psrjd3wh3k4i3flplizzx")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-flores ruby-insist ruby-rspec ruby-stud)) - (synopsis "RPM reader/writer library written in Ruby") - (description "This library allows reading and writing RPM packages. It is -used by the @command{fpm} tool. It is written in pure Ruby because -@code{librpm} is not available on all systems and requires many -dependencies.") - (home-page "https://github.com/jordansissel/ruby-arr-pm") - (license license:asl2.0))) - -(define-public ruby-arel - (package - (name "ruby-arel") - (version "9.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "arel" version)) - (sha256 - (base32 - "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; no tests - (home-page "https://github.com/rails/arel") - (synopsis "SQL AST manager for Ruby") - (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for -Ruby. It simplifies the generation of complex SQL queries and adapts to -various relational database implementations.") - (license license:expat))) - -(define-public ruby-minitar - ;; We package from the GitHub source to fix the security issue reported at - ;; https://github.com/halostatue/minitar/issues/16. - (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4")) - (package - (name "ruby-minitar") - (version (string-append "0.5.4-1." (string-take commit 8))) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/halostatue/minitar") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; missing a gemspec - (synopsis "Ruby library and utility for handling tar archives") - (description - "Archive::Tar::Minitar is a pure-Ruby library and command-line utility -that provides the ability to deal with POSIX tar archive files.") - (home-page "http://www.github.com/atoulme/minitar") - (license (list license:gpl2+ license:ruby))))) - -(define-public ruby-mini-portile - (package - (name "ruby-mini-portile") - (version "0.6.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mini_portile" version)) - (sha256 - (base32 - "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; tests require network access - (synopsis "Ports system for Ruby developers") - (description "Mini-portile is a port/recipe system for Ruby developers. -It provides a standard way to compile against specific versions of libraries -to reproduce user environments.") - (home-page "https://github.com/flavorjones/mini_portile") - (license license:expat))) - -(define-public ruby-mini-portile-2 - (package - (inherit ruby-mini-portile) - (version "2.8.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "mini_portile2" version)) - (sha256 - (base32 - "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6")))))) - -(define-public ruby-nokogiri - (package - (name "ruby-nokogiri") - (version "1.15.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/sparklemotion/nokogiri") - (commit "a6ad20b3edc8f020043ccfe5d9ec6ae9af103720"))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1n0vlg6v58jw3qzgyihz1dh5fvp4js1qgdh75j0kn47nvyiw3jxj")) - (patches (search-patches "ruby-nokogiri.patch")))) - (build-system ruby-build-system) - (arguments - (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://nokogiri.org/") - (license license:expat))) - -(define-public ruby-method-source - (package - (name "ruby-method-source") - (version "1.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "method_source" version)) - (sha256 - (base32 - "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-git-ls-files - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "Rakefile" - (("git ls-files") "find . -type f"))))))) - (native-inputs - (list ruby-rspec)) - (synopsis "Retrieve the source code for Ruby methods") - (description "Method_source retrieves the source code for Ruby methods. -Additionally, it can extract source code from Proc and Lambda objects or just -extract comments.") - (home-page "https://github.com/banister/method_source") - (license license:expat))) - -(define-public ruby-coderay - (package - (name "ruby-coderay") - (version "1.1.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "coderay" version)) - (sha256 - (base32 - "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; missing test files - (synopsis "Ruby syntax highlighting library") - (description "Coderay is a Ruby library that provides syntax highlighting -for select languages.") - (home-page "http://coderay.rubychan.de") - (license license:expat))) - -(define-public ruby-cuke-modeler - (package - (name "ruby-cuke-modeler") - (version "3.20.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/enkessler/cuke_modeler") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0xbnx1blxm4kfhfwfh58n2ja40p2kfw8hbbz60dlzvghz25vcwy6")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "default" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'improve-reproducibility - (lambda _ - (substitute* - "testing/rspec/spec/unit/cuke_modeler_unit_spec.rb" - (("#\\{Time.now.year\\}") "")))) - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - ;; Cucumber appears pinned to an older version for no - ;; particular reason (see: - ;; https://github.com/enkessler/cuke_modeler/issues/14). - (("'cucumber', '2.2.0'") - "'cucumber', '>= 2.2.0'") - (("^gherkin_major_version_used = .*") - (string-append - "gherkin_major_version_used = " - #$(car - (string-split - (package-version - (this-package-input "ruby-cucumber-gherkin")) #\.)) - "\n"))) - ;; Disable Bundler. - (substitute* "bin/console" - (("require 'bundler/setup'") "")) - (substitute* "rakefiles/testing_tasks.rb" - (("'bundle', 'exec', ") "")) - ;; Remove extraneous dependencies. - (substitute* "cuke_modeler.gemspec" - ((".*bundler.*") "") - ((".*rubocop.*") "") - ((".*yard.*") "")) - (substitute* "Rakefile" - (("Rainbow.enabled = true") "") - (("require_relative 'rakefiles/documentation_tasks'") "") - (("require_relative 'rakefiles/other_tasks'") "") - (("require_relative 'rakefiles/release_tasks'") ""))))))) - (native-inputs - (list ruby-childprocess - ruby-cucumber - ruby-rainbow - ruby-rspec - ruby-simplecov - ruby-simplecov-lcov)) - (propagated-inputs (list ruby-cucumber-gherkin)) - (synopsis "Gherkin test suite analysis tool") - (description "CukeModeler facilitates modeling a test suite that is -written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by -providing an abstraction layer on top of the Abstract Syntax Tree (AST) that -the @code{cucumber-gherkin} generates when parsing features, as well as -providing models for feature files and directories in order to be able to have -a fully traversable model tree of a test suite's structure. These models can -then be analyzed or manipulated more easily than the underlying AST layer.") - (home-page "https://github.com/enkessler/cuke_modeler") - (license license:expat))) - -(define-public ruby-parallel-tests - (package - (name "ruby-parallel-tests") - (version "4.9.0") - (home-page "https://github.com/grosser/parallel_tests") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (string-append name version)) - (sha256 - (base32 - "0ljb17i1bvlr0y1avwishcrg60h48bj6iwgkp8yrck08wcs7b338")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" ;avoid rubocop dependency - #:phases (modify-phases %standard-phases - (add-after 'patch-source-shebangs 'patch-shell-invocations - (lambda _ - (substitute* '("lib/parallel_tests/tasks.rb" - "spec/parallel_tests/tasks_spec.rb") - (("/bin/sh") (which "sh")) - (("/bin/bash") (which "bash"))))) - (add-before 'check 'relax-requirements - (lambda _ - ;; Remove hard coded version constraints, instead just - ;; use whatever versions are available in Guix. - (delete-file "Gemfile.lock") - (substitute* "Gemfile" - (("'minitest',.*") - "'minitest'\n") - (("'cucumber',.*") - "'cucumber'\n") - ;; Do not depend on a git-fetched spinach version. - (("gem 'spinach',.*") - "gem 'spinach'\n") - ((".*rubocop.*") "")))) - (add-before 'check 'disable-rails-test - (lambda _ - ;; XXX: This test attempts to download and run the test - ;; suites of multiple Rails versions(!) directly. - (delete-file "spec/rails_spec.rb"))) - (add-before 'check 'disable-problematic-tests - (lambda _ - ;; This test fails, probably because of the newer - ;; Cucumber version used here. - (delete-file "spec/parallel_tests/cucumber/\ -failure_logger_spec.rb") )) - (add-before 'check 'set-HOME - (lambda _ - ;; Some tests check the output of Bundler, and fail when - ;; Bundler warns that /homeless-shelter does not exist. - (setenv "HOME" "/tmp")))))) - (native-inputs - (list ruby-bump - ruby-cucumber - ruby-cuke-modeler - ruby-minitest - ruby-rake - ruby-rspec - ruby-spinach)) - (propagated-inputs - (list ruby-parallel)) - (synopsis "Run tests in parallel") - (description - "This package can speed up @code{Test::Unit}, @code{RSpec}, -@code{Cucumber}, and @code{Spinach} tests by running them concurrently -across multiple CPU cores.") - (license license:expat))) - -(define-public ruby-parser - (package - (name "ruby-parser") - (version "3.3.7.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "parser" version)) - (sha256 - (base32 - "16qi2qhpszm842awxghmsp64yvvawafq96w5jw98irz3f4bh2jbl")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; tests not included in gem - (native-inputs (list bundler ruby-cliver ruby-simplecov)) - (inputs (list ragel)) - (propagated-inputs (list ruby-ast ruby-racc)) - (synopsis "Ruby parser written in pure Ruby") - (description - "This package provides a Ruby parser written in pure Ruby.") - (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.17.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sexp_processor" version)) - (sha256 - (base32 - "0vzz9mhg4kkdqf179pm30i204h7iskanxrk53j0csf0qrrs4iajd")))) - (build-system ruby-build-system) - (native-inputs - (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. -Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and -@code{Environment}") - (home-page "https://github.com/seattlerb/sexp_processor") - (license license:expat))) - -(define-public ruby-ruby-parser - (package - (name "ruby-ruby-parser") - (version "3.20.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby_parser" version)) - (sha256 - (base32 - "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 - bison - ruby-minitest)) - (propagated-inputs - (list ruby-sexp-processor)) - (home-page "https://github.com/seattlerb/ruby_parser/") - (synopsis "Ruby parser written in pure Ruby") - (description "The ruby_parser (RP) package provides a Ruby parser written -in pure Ruby. It outputs S-expressions which can be manipulated and converted -back to Ruby via the @code{ruby2ruby} library.") - (license license:expat))) - -(define-public ruby-ruby-version - (package - (name "ruby-ruby-version") - (version "1.0.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "ruby_version" version)) - (sha256 - (base32 - "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'delete-gem-files - ;; There are some pre-built files in the source, and - ;; registered in the .gemspec (see: - ;; https://github.com/janlelis/ruby_version/issues/1). - (lambda _ - (delete-file-recursively "pkg") - (substitute* "ruby_version.gemspec" - (("\"pkg/ruby_version-1.0.0.gem\".freeze, ") - "") - (("\"pkg/ruby_version-1.0.1.gem\".freeze, ") - "")))) - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (delete-file "Gemfile.lock") - (substitute* "ruby_version.gemspec" - (("\"Gemfile.lock\".freeze, ") "") - ;; Allow a newers versions of development dependencies. - (("~>") ">="))))))) - (native-inputs (list ruby-rdoc ruby-rubygems-tasks ruby-rspec)) - (synopsis "Ruby class for checking the Ruby version") - (description "This package provides a @code{RubyVersion} class which -offers a convenient Domain Specific Language (DSL) for checking for the right -Ruby version.") - (home-page "https://github.com/janlelis/ruby_version") - (license license:expat))) - -(define-public ruby-prawn-manual-builder - (package - (name "ruby-prawn-manual-builder") - (version "0.3.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "prawn-manual_builder" version)) - (sha256 - (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f ; no included tests - #:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'patch-gemspec - (lambda _ - (substitute* ".gemspec" - ;; Loosen the requirement for pdf-inspector - (("~> 1\\.0\\.7") ">= 0"))))))) - (propagated-inputs - (list ruby-coderay)) - (synopsis "Tool for writing manuals for Prawn and Prawn accessories") - (description - "This package provides a tool for writing manuals for Prawn and Prawn -accessories") - (home-page "https://github.com/prawnpdf/prawn-manual_builder") - (license %prawn-project-licenses))) - -(define-public ruby-progress_bar - (package - (name "ruby-progress_bar") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "progress_bar" version)) - (sha256 - (base32 - "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec")) - (propagated-inputs - (list ruby-highline ruby-options)) - (native-inputs - (list bundler ruby-rspec ruby-timecop)) - (synopsis - "Ruby library for displaying progress bars") - (description - "ProgressBar is a simple library for displaying progress bars. The -maximum value is configurable, and additional information can be displayed -like the percentage completion, estimated time remaining, elapsed time and -rate.") - (home-page "https://github.com/paul/progress_bar") - (license license:wtfpl2))) - -(define-public ruby-progressbar - (package - (name "ruby-progressbar") - (version "1.10.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby-progressbar" version)) - (sha256 - (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: There looks to be a circular dependency with ruby-fuubar. - #:tests? #f)) - (synopsis "Text progress bar library for Ruby") - (description - "Ruby/ProgressBar is an flexible text progress bar library for Ruby. -The output can be customized with a formatting system.") - (home-page "https://github.com/jfelchner/ruby-progressbar") - (license license:expat))) - -(define-public ruby-latest-ruby - (package - (name "ruby-latest-ruby") - (version "3.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "latest_ruby" version)) - (sha256 - (base32 - "15rqwgxzpnkzdiz8m02jra0zq5sx0fiz61vkfrj1ls6slqfhnzqg")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No Rakefile - (synopsis "Answers the question of what the latest Ruby version is") - (description "Knows about MRI, Rubinius, JRuby, MagLev and MacRuby.") - (home-page "https://github.com/kyrylo/latest_ruby") - (license license:zlib))) - -(define-public ruby-pry - (package - (name "ruby-pry") - (version "0.14.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "pry" version)) - (sha256 - (base32 - "0k9kqkd9nps1w1r1rb7wjr31hqzkka2bhi8b518x78dcxppm9zn4")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no tests - (propagated-inputs - (list ruby-coderay ruby-method-source)) - (synopsis "Ruby REPL") - (description "Pry is an IRB alternative and runtime developer console for -Ruby. It features syntax highlighting, a plugin architecture, runtime -invocation, and source and documentation browsing.") - (home-page "https://cobaltbluemedia.com/pryrepl/") - (license license:expat))) - -(define-public ruby-pry-doc - (package - (name "ruby-pry-doc") - (version "1.4.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pry-doc" version)) - (sha256 - (base32 - "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 - (synopsis "Provides YARD and extended documentation support for Pry") - (description - "Pry Doc is a Pry REPL plugin. It provides extended documentation -support for the REPL by means of improving the @code{show-doc} and -@code{show-source} commands. With help of the plugin the commands are -be able to display the source code and the docs of Ruby methods and -classes implemented in C.") - (home-page "https://github.com/pry/pry-doc") - (license license:expat))) - -(define-public ruby-single-cov - (package - (name "ruby-single-cov") - (version "1.9.1") - (home-page "https://github.com/grosser/single_cov") - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1w4k81f2mdg620m6pwkrqayddnz9mr8qx0myqn33mw8k6imfip05")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" ;to avoid rubocop requirement - #:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "single_cov.gemspec" - (("`git ls-files lib/ bin/ MIT-LICENSE`") - ;; There no longer appear to be a 'bin' - ;; sub-directory. - "`find lib/ MIT-LICENSE -type f | sort`")))) - (add-before 'check 'remove-version-constraints - (lambda _ - (delete-file "Gemfile.lock"))) - (add-before 'check 'relax-requirements - (lambda _ - ;; Remove extraneous requirements. - (substitute* "Rakefile" - ((".*require.*bump.*") "")) - (substitute* "Gemfile" - ((".*gem \"bump\".*") "") - ((".*gem \"rubocop\".*") "")))) - (add-before 'check 'disable-failing-test - (lambda _ - ;; XXX: This test copies assets from minitest, but can - ;; not cope with the files being read-only. Just skip - ;; it for now. - (substitute* "specs/single_cov_spec.rb" - (("it \"complains when coverage is bad\"") - "xit \"complains when coverage is bad\""))))))) - (native-inputs (list ruby-minitest ruby-rspec ruby-simplecov)) - (synopsis "Code coverage reporting tool") - (description - "This package provides actionable code coverage reports for Ruby -projects. It has very little overhead and can be easily integrated with -development tools to catch coverage problems early.") - (license license:expat))) - -(define-public ruby-oedipus-lex - (package - (name "ruby-oedipus-lex") - (version "2.6.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "oedipus_lex" version)) - (sha256 - (base32 - "06l4d3l75vhdcmnavnkzr7bd39rb0njxhkbmwrw6ni64z2hlj7w7")))) - (build-system ruby-build-system) - (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. -It is based primarily on generating code much like you would a hand-written -lexer. It uses StrScanner within a multi-level case statement. As such, -Oedipus matches on the first match, not the longest.") - (home-page "https://github.com/seattlerb/oedipus_lex") - (license license:expat))) - -(define-public ruby-guard - (package - (name "ruby-guard") - (version "2.13.0") - (source (origin - (method git-fetch) - ;; The gem does not include a Rakefile, nor does it contain a - ;; gemspec file, nor does it come with the tests. This is why - ;; we fetch the tarball from Github. - (uri (git-reference - (url "https://github.com/guard/guard") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; tests require cucumber - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-git-ls-files - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "guard.gemspec" - (("git ls-files -z") "find . -type f -print0")))) - (replace 'build - (lambda _ - (invoke "gem" "build" "guard.gemspec")))))) - (propagated-inputs - (list ruby-formatador - ruby-listen - ruby-lumberjack - ruby-nenv - ruby-notiffany - ruby-pry - ruby-shellany - ruby-thor)) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Tool to handle events on file system modifications") - (description - "Guard is a command line tool to easily handle events on file system -modifications. Guard automates various tasks by running custom rules whenever -file or directories are modified.") - (home-page "https://guardgem.org/") - (license license:expat))) - -(define-public ruby-spinach - (package - (name "ruby-spinach") - (version "0.12.0") - (home-page "https://github.com/codegram/spinach") - (source (origin - (method url-fetch) - (uri (rubygems-uri "spinach" version)) - (sha256 - (base32 - "1v9nvpvlgjx698dc4q2p1l45sxm5fjjzfxayrkyzb9nv0q0xfjsp")))) - (build-system ruby-build-system) - (arguments - ;; FIXME: Disable tests altogether because they depend on 'capybara' - ;; which in turn depends on many other unpackaged gems. Enable once - ;; capybara is available. - '(#:tests? #f)) - (propagated-inputs - (list ruby-colorize ruby-gherkin-ruby)) - (synopsis "Gherkin-based BDD framework") - (description - "Spinach is a high-level @acronym{BDD, Behavior-driven development} -framework that leverages the expressive @code{Gherkin} language to help you -define executable specifications of your code.") - (license license:expat))) - -(define-public ruby-timers - (package - (name "ruby-timers") - (version "4.3.5") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/socketry/timers") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1vvahlhk6i1xks1bsha6s64pjjxhagmzvvf1q9h6z3lpcba43rpx")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-before 'build 'prune-gems.rb - (lambda _ - (substitute* "gems.rb" - ;; These are only required for maintenance. - ((".*gem \"bake-modernize\".*") "") - ((".*gem \"bake-gem\".*") "") - ;; Not actually required by the tests. - ((".*gem 'benchmark-ips'.*") "") - ((".*gem \"ruby-prof\".*") "")))) - (add-before 'build 'remove-missing-signing-key - (lambda _ - ;; Otherwise, the build fails with ENOENT. - (substitute* "timers.gemspec" - ((".*spec.signing_key.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "bake" "test"))))))) - (native-inputs - (list ruby-covered - ruby-bake-test - ruby-bake-test-external - ruby-sus)) - (synopsis "Collection of Ruby timer classes") - (description "Timers offers a collections of one-shot and periodic timers, -intended for use with event loops such as async.") - (home-page "https://github.com/socketry/timers") - (license license:expat))) - -(define-public ruby-tilt - (package - (name "ruby-tilt") - (version "2.2.0") - (source - (origin - (method git-fetch) ;the distributed gem lacks tests - (uri (git-reference - (url "https://github.com/jeremyevans/tilt") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "056zm4vzx9xjwl7zgmb17hzb91qx5cvzk60wvsxchfybvl03gn5d")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'set-SASS_IMPLEMENTATION - (lambda _ - (setenv "SASS_IMPLEMENTATION" "sassc")))))) - (propagated-inputs - (list ruby-pandoc-ruby ruby-sassc)) - (native-inputs - (list bundler ruby-yard ruby-builder ruby-erubis ruby-markaby)) - (synopsis "Generic interface to multiple Ruby template engines") - (description - "Tilt is a thin interface over a number of different Ruby template -engines in an attempt to make their usage as generic as possible.") - (home-page "https://github.com/rtomayko/tilt/") - (license license:expat))) - -(define-public ruby-thread-safe - (package - (name "ruby-thread-safe") - (version "0.3.6") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "thread_safe" version)) - (sha256 - (base32 - "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; needs simplecov, among others - (synopsis "Thread-safe utilities for Ruby") - (description "The thread_safe library provides thread-safe collections and -utilities for Ruby.") - (home-page "https://github.com/ruby-concurrency/thread_safe") - (license license:asl2.0))) - -(define-public ruby-tzinfo - (package - (name "ruby-tzinfo") - (version "2.0.6") - (source - (origin - (method git-fetch) - (uri (git-reference - ;; Pull from git because the gem has no tests. - (url "https://github.com/tzinfo/tzinfo") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1n1gzjqwwnx209h8d054miva0y7x17db2ahy7jav5r25ibhh7rgm")))) - (build-system ruby-build-system) - (arguments - (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')")))) - (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 - (list ruby-concurrent)) - (native-inputs - (list ruby-simplecov)) - (synopsis "Time zone library for Ruby") - (description "TZInfo is a Ruby library that provides daylight savings -aware transformations between times in different time zones.") - (home-page "https://tzinfo.github.io") - (license license:expat))) - -(define-public ruby-tzinfo-data - (package - (name "ruby-tzinfo-data") - (version "1.2023.3") - (source - (origin - (method git-fetch) - ;; Download from GitHub because the rubygems version does not contain - ;; Rakefile or tests. - (uri (git-reference - (url "https://github.com/tzinfo/tzinfo-data") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1v3fpfmw485lsc9bfqfcasb9j25g9ywfpmmk648l2vdsh7nipilf")))) - (build-system ruby-build-system) - (arguments - (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" - `(("tzdata2023c.tar.gz" - ,(origin - (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz") - (sha256 - (base32 - "0p4nvp5bdxxdqh269nvvcfrpycbbfwm31al5whwbpsaa3dfhnl9z")))) - ("tzdata2023c.tar.gz.asc" - ,(origin - (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz.asc") - (sha256 - (base32 - "0mrmhczs5qnj1zp6gh4pg6fm0iblr2jmzy0fgh9slinwxmn7pv6m")))) - ("tzcode2023c.tar.gz" - ,(origin - (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz") - (sha256 - (base32 - "1rqln88ki0jagi372nqyn7bs03rf2l33081sy2835mwsn4mpzla6")))) - ("tzcode2023c.tar.gz.asc" - ,(origin - (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz.asc") - (sha256 - (base32 - "0jbx8xjv75qfh7bxa2xmrf97r37057y89rhmrq1gz8s6b8qlzb2i"))))))))) - (synopsis "Data from the IANA Time Zone database") - (description - "This library provides @code{TZInfo::Data}, which contains data from the -IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.") - (home-page "https://tzinfo.github.io") - (license license:expat))) - -(define-public ruby-rb-inotify - (package - (name "ruby-rb-inotify") - (version "0.10.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rb-inotify" version)) - (sha256 - (base32 - "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005")))) - (build-system ruby-build-system) - (arguments - (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 - (list ruby-yard)) - (synopsis "Ruby wrapper for Linux's inotify") - (description "rb-inotify is a simple wrapper over the @code{inotify} Linux -kernel subsystem for monitoring changes to files and directories.") - (home-page "https://github.com/nex3/rb-inotify") - (license license:expat))) - -(define-public ruby-pry-editline - (package - (name "ruby-pry-editline") - (version "1.1.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pry-editline" version)) - (sha256 - (base32 - "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)) ; no tests included - (native-inputs - (list bundler)) - (synopsis "Open the current REPL line in an editor") - (description - "This gem provides a plugin for the Ruby REPL to enable opening the -current line in an external editor.") - (home-page "https://github.com/tpope/pry-editline") - (license license:expat))) - -(define-public ruby-sdoc - (package - (name "ruby-sdoc") - (version "1.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "sdoc" version)) - (sha256 - (base32 - "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'set-rubylib-and-patch-gemfile - (lambda _ - (setenv "RUBYLIB" "lib") - (substitute* "sdoc.gemspec" - (("s.add_runtime_dependency.*") "\n") - (("s.add_dependency.*") "\n")) - (substitute* "Gemfile" - (("gem \"rake\".*") - "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))))))) - (propagated-inputs - (list ruby-json)) - (native-inputs - (list bundler ruby-minitest ruby-hoe)) - (synopsis "Generate searchable RDoc documentation") - (description - "SDoc is an RDoc documentation generator to build searchable HTML -documentation for Ruby code.") - (home-page "https://github.com/voloko/sdoc") - (license license:expat))) - -(define-public ruby-tins - (package - (name "ruby-tins") - (version "1.29.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "tins" version)) - (sha256 - (base32 - "0nzp88y19rqlcizp1nw8m44fvfxs9g3bhjpscz44dwfawfrmr0cb")))) - (build-system ruby-build-system) - ;; This gem needs gem-hadar at development time, but gem-hadar needs tins - ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding - ;; the gemspec. - (arguments - `(#:tests? #f ; there are no tests - #:phases - (modify-phases %standard-phases - (replace 'build - (lambda _ - ;; "lib/spruz" is a symlink. Leaving it in the gemspec file - ;; causes an error. - (substitute* "tins.gemspec" - (("\"lib/spruz\", ") "")) - (invoke "gem" "build" "tins.gemspec")))))) - (propagated-inputs - (list ruby-sync)) - (synopsis "Assorted tools for Ruby") - (description "Tins is a Ruby library providing assorted tools.") - (home-page "https://github.com/flori/tins") - (license license:expat))) - -(define-public ruby-gemtext - (package - (name "ruby-gemtext") - (version "1.0.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "gemtext" version)) - (sha256 - (base32 "1z559f5z0zvwnqgnny0zf4mppiary020ljxwpw3bdxi2hr9aj3gp")))) - (build-system ruby-build-system) - (synopsis "Gemtext parser for Ruby") - (description - "This package is a Ruby parser library for Gemtext (hypertext format -which is intended to serve as the native response format of the Gemini -file transfer protocol) and produces a document object of various -nodes.") - (home-page "https://github.com/exastencil/gemtext") - (license license:expat))) - -(define-public ruby-gem-hadar - (package - (name "ruby-gem-hadar") - (version "1.11.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "gem_hadar" version)) - (sha256 - (base32 - "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5")))) - (build-system ruby-build-system) - ;; This gem needs itself at development time. We disable rebuilding of the - ;; gemspec to avoid this loop. - (arguments - `(#:tests? #f ; there are no tests - #:phases - (modify-phases %standard-phases - (replace 'build - (lambda _ - (invoke "gem" "build" "gem_hadar.gemspec")))))) - (propagated-inputs - (list git-minimal/pinned ruby-tins ruby-yard)) - (synopsis "Library for the development of Ruby gems") - (description - "This library contains some useful functionality to support the -development of Ruby gems.") - (home-page "https://github.com/flori/gem_hadar") - (license license:expat))) - -(define-public ruby-term-ansicolor - (package - (name "ruby-term-ansicolor") - (version "1.7.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "term-ansicolor" version)) - (sha256 - (base32 - "1xq5kci9215skdh27npyd3y55p812v4qb4x2hv3xsjvwqzz9ycwj")))) - (build-system ruby-build-system) - ;; 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 - (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)) - (synopsis "Ruby library to control the attributes of terminal output") - (description - "This Ruby library uses ANSI escape sequences to control the attributes -of terminal output.") - (home-page "https://flori.github.io/term-ansicolor/") - ;; There is no mention of the "or later" clause. - (license license:gpl2))) - -(define-public ruby-immutable-struct - (let ((commit "bb67ad8fa2117e8031c3f4333b4c25c8bcd3afff") - (revision "0")) - (package - (name "ruby-immutable-struct") - (version (git-version "2.4.1" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/stitchfix/immutable-struct") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0vsr2spypjf0i7ppg2a0gj3mjj5k3dyqsx224cbsxw51p6cc11c1")))) - (build-system ruby-build-system) - (arguments - (list - #: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 - "This package provides a library to help 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 "1.7.0") - (source - (origin - (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 - "18d1qkf2rbbvc2f0dxni85i2l2g8zn5kzh0v8zr1b86r1wjy6rvd")))) - (build-system ruby-build-system) - (arguments - (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 ruby-immutable-struct)) - (synopsis "Ruby wrapper around the Terraform command line interface") - (description - "This package provides a Ruby wrapper around the Terraform command line -interface so that Terraform can be more easily invoked from Ruby code.") - (home-page "https://github.com/infrablocks/ruby_terraform") - (license license:expat))) - -(define-public ruby-pstree - (package - (name "ruby-pstree") - (version "0.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pstree" version)) - (sha256 - (base32 - "0ld3ng37y92kv9vqnachw1l3n07hsc8hrnjs9d840liw0mysf1vp")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-gem-hadar bundler)) - (synopsis "Create a process tree data structure") - (description - "This library uses the output of the @code{ps} command to create a -process tree data structure for the current host.") - (home-page "https://github.com/flori/pstree") - ;; 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") - (version "0.9.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "utils" version)) - (sha256 - (base32 - "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-tins ruby-term-ansicolor ruby-pstree ruby-pry-editline)) - (native-inputs - (list ruby-gem-hadar bundler)) - (synopsis "Command line tools for working with Ruby") - (description - "This package provides assorted command line tools that may be useful -when working with Ruby code.") - (home-page "https://github.com/flori/utils") - ;; There is no mention of the "or later" clause. - (license license:gpl2))) - -(define-public ruby-jaro-winkler - (package - (name "ruby-jaro-winkler") - (version "1.5.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "jaro_winkler" version)) - (sha256 - (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no included tests - (synopsis "Ruby implementation of Jaro-Winkler distance algorithm") - (description - "@code{jaro_winkler} is an implementation of Jaro-Winkler distance -algorithm. It is written as a C extension and will fallback to a pure Ruby -implementation on platforms where this is unsupported.") - (home-page "https://github.com/tonytonyjan/jaro_winkler") - (license license:expat))) - -(define-public ruby-json - (package - (name "ruby-json") - (version "2.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "json" version)) - (sha256 - (base32 - "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; dependency cycle with sdoc - (synopsis "JSON library for Ruby") - (description "This Ruby library provides a JSON implementation written as -a native C extension.") - (home-page "http://json-jruby.rubyforge.org/") - (license (list license:ruby license:gpl2)))) ; GPL2 only - -(define-public ruby-json-pure - (package - (name "ruby-json-pure") - (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 - (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.io/json/") - (license license:ruby))) - -(define-public ruby-jwt - (package - (name "ruby-jwt") - (version "2.7.1") - (source - (origin - ;; 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 - "12ss6knfis6a6a41qndalnlvq3yykhpg6igzll8qyssnnwi9zdw7")))) - (build-system ruby-build-system) - (arguments - (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") - (description - "This package provides a pure Ruby implementation of the RFC 7519 OAuth -@acronym{JWT, JSON Web Token} standard.") - (home-page "https://github.com/jwt/ruby-jwt") - (license license:expat))) - -;; Even though this package only provides bindings for a Mac OSX API it is -;; required by "ruby-listen" at runtime. -(define-public ruby-rb-fsevent - (package - (name "ruby-rb-fsevent") - (version "0.10.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rb-fsevent" version)) - (sha256 - (base32 - "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8")))) - (build-system ruby-build-system) - ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs - ;; "listen", which needs "rb-fsevent" at runtime. - (arguments `(#:tests? #f)) - (synopsis "FSEvents API with signals catching") - (description - "This library provides Ruby bindings for the Mac OSX FSEvents API.") - (home-page "https://rubygems.org/gems/rb-fsevent") - (license license:expat))) - -(define-public ruby-listen - (package - (name "ruby-listen") - (version "3.8.0") - (source - (origin - ;; The gem does not include a Rakefile, so fetch from the Git - ;; repository. - (method git-fetch) - (uri (git-reference - (url "https://github.com/guard/listen") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1skkglml094dw1xr4742in1rwwa84ld0mz4nkw6qa8pwhx48x2n5")))) - (build-system ruby-build-system) - (arguments - (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 - (list ;; ruby-thor is used for the command line interface, and is referenced - ;; in the wrapper, and therefore just needs to be an input. - ruby-thor)) - (propagated-inputs - (list ruby-rb-fsevent ruby-rb-inotify)) - (synopsis "Listen to file modifications") - (description "The Listen gem listens to file modifications and notifies -you about the changes.") - (home-page "https://github.com/guard/listen") - (license license:expat))) - -(define-public ruby-loofah - (package - (name "ruby-loofah") - (version "2.21.3") - (home-page "https://github.com/flavorjones/loofah") - (source - (origin - ;; Build from git because the gem lacks tests. - (method git-fetch) - (uri (git-reference (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1lh7cf56y1b0h090ahphvz7grq581phsamdl0rq59y0q9bqwrhg0")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe ruby-hoe-markdown ruby-rr)) - (propagated-inputs - (list ruby-nokogiri ruby-crass)) - (synopsis "Ruby library for manipulating and transforming HTML/XML") - (description - "Loofah is a general library for manipulating and transforming HTML/XML -documents and fragments. It's built on top of Nokogiri and libxml2.") - (license license:expat))) - -(define-public ruby-crass - (package - (name "ruby-crass") - (version "1.0.6") - (home-page "https://github.com/rgrove/crass") - (source (origin - ;; The gem does not contain tests, so pull from git. - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40")))) - (build-system ruby-build-system) - (synopsis "Pure Ruby CSS parser") - (description - "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.") - (license license:expat))) - -;;; The ruby-nokogumbo package has been absorbed into ruby-nokogiri. -(define-public ruby-nokogumbo - (deprecated-package "ruby-nokogumbo" ruby-nokogiri)) - -(define-public ruby-samovar - (package - (name "ruby-samovar") - (version "2.1.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ioquatix/samovar") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "05pc5xlbv44anx0sfqssh0xhxg297bvl5slsl7k1vnka4k5fhax6")))) - (build-system ruby-build-system) - (native-inputs (list ruby-covered ruby-rspec)) - (propagated-inputs (list ruby-console ruby-mapping)) - (synopsis "Flexible option parser for Ruby") - (description "Samovar is a modern framework for building command-line -tools and applications. It provides a declarative class-based DSL for -building command-line parsers that include automatic documentation generation. -It helps you keep your functionality clean and isolated where possible.") - (home-page "https://github.com/ioquatix/samovar") - (license license:expat))) - -(define-public ruby-sanitize - (package - (name "ruby-sanitize") - (version "6.0.0") - (home-page "https://github.com/rgrove/sanitize") - (source (origin - (method git-fetch) - ;; The gem does not include the Rakefile, so we download the - ;; source from Github. - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0p1a28vx95vscy9xzzyyddzgb9496x42a5i2ka39cpxbl5f3gkl0")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-crass ruby-nokogiri)) - (native-inputs (list ruby-minitest)) - (synopsis "Whitelist-based HTML and CSS sanitizer") - (description - "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of -acceptable elements, attributes, and CSS properties, Sanitize will remove all -unacceptable HTML and/or CSS from a string.") - (license license:expat))) - -(define-public ruby-sync - (package - (name "ruby-sync") - (version "0.5.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sync" version)) - (sha256 - (base32 - "1z9qlq4icyiv3hz1znvsq1wz2ccqjb1zwd6gkvnwg6n50z65d0v6")))) - (build-system ruby-build-system) - (synopsis "Ruby module with a two-phase lock and counter") - (description "This package provides a Ruby module that provides a two-phase -lock with a counter.") - (home-page "https://github.com/ruby/sync") - (license license:bsd-2))) - -(define-public ruby-oj - (package - (name "ruby-oj") - (version "3.13.9") - (source - (origin - (method git-fetch) - ;; Version on rubygems.org does not contain Rakefile, so download from - ;; GitHub instead. - (uri (git-reference - (url "https://github.com/ohler55/oj") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0a24zd28y58nyhjxgrpn2k9p72vzj3zbmdrcsbhwbdycj7nn9fpd")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "test_all" - #:phases - (modify-phases %standard-phases - (add-before 'check 'disable-bundler - (lambda _ - (substitute* "Rakefile" - (("Bundler\\.with_clean_env") "1.times") - (("bundle exec ") ""))))))) - (native-inputs - (list bundler ruby-rspec ruby-rake-compiler)) - (synopsis "JSON parser for Ruby optimized for speed") - (description - "Oj is a JSON parser and generator for Ruby, where the encoding and -decoding of JSON is implemented as a C extension to Ruby.") - (home-page "https://www.ohler.com/oj/") - (license (list license:expat ; Ruby code - license:bsd-3)))) ; extension code - -(define-public ruby-ox - (package - (name "ruby-ox") - (version "2.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ox" version)) - (sha256 - (base32 - "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no tests - (synopsis "Optimized XML library for Ruby") - (description - "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby -written as a native C extension. It was designed to be an alternative to -Nokogiri and other Ruby XML parsers for generic XML parsing and as an -alternative to Marshal for Object serialization.") - (home-page "https://www.ohler.com/ox") - (license license:expat))) - -(define-public ruby-redcloth - (package - (name "ruby-redcloth") - (version "4.3.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "RedCloth" version)) - (sha256 - (base32 - "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - ;; Redcloth has complicated rake tasks to build various versions for - ;; multiple targets using RVM. We don't want this so we just use the - ;; existing gemspec. - (replace 'build - (lambda _ - (invoke "gem" "build" "redcloth.gemspec")))))) - (native-inputs - `(("bundler" ,bundler) - ("ruby-diff-lcs" ,ruby-diff-lcs) - ("ruby-rspec-2" ,ruby-rspec-2))) - (synopsis "Textile markup language parser for Ruby") - (description - "RedCloth is a Ruby parser for the Textile markup language.") - (home-page "http://redcloth.org") - (license license:expat))) - -(define-public ruby-pg - (let ((commit "378b7a35c12292625460ef2f33373de7114bf255") - (revision "0")) - (package - (name "ruby-pg") - (version (git-version "1.5.9" revision commit)) - (home-page "https://github.com/ged/ruby-pg") - (source - (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1aq6kakyghgbb4yykxxl9ziaaa7jbdbyc7vz6avyxhlby1jkj0m8")) - (patches - (search-patches "ruby-pg-fix-connect-timeout.patch")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'compile - (lambda _ - (invoke "rake" "compile"))) - ;; Some tests rely on postgresql_lib_path.rb, but it is not - ;; available until the gem is installed. Run tests after - ;; installing to work around it. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (let ((new-gem (string-append #$output - "/lib/ruby/vendor_ruby"))) - (setenv "GEM_PATH" - (string-append (getenv "GEM_PATH") ":" new-gem)) - (when tests? - (invoke "rspec")))))))) - (native-inputs (list ruby-rake-compiler ruby-hoe ruby-rspec)) - (inputs (list postgresql)) - (synopsis "Ruby interface to PostgreSQL") - (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works -with PostgreSQL 9.3 and later.") - (license license:ruby)))) - -(define-public ruby-byebug - (package - (name "ruby-byebug") - (version "11.1.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/deivid-rodriguez/byebug") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Remove wrappers that try to setup a bundle environment. - (with-directory-excursion "bin" - (for-each delete-file '("bundle" "rake" "rubocop")) - ;; ruby-minitest doesn't come with a launcher, so fix the one - ;; provided. - (substitute* "minitest" - (("load File\\.expand_path\\(\"bundle\".*") "") - (("require \"bundler/setup\".*") ""))))))) - (build-system ruby-build-system) - (arguments - (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 - ruby-minitest - ruby-pry - ruby-rake-compiler - ruby-rubocop - ruby-yard)) - (synopsis "Debugger for Ruby 2") - (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2 -TracePoint C API for execution control and the Debug Inspector C API for call -stack navigation. The core component provides support that front-ends can -build on. It provides breakpoint handling and bindings for stack frames among -other things and it comes with a command line interface.") - (home-page "https://github.com/deivid-rodriguez/byebug") - (license license:bsd-2))) - -(define-public ruby-netrc - (package - (name "ruby-netrc") - (version "0.11.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "netrc" version)) - (sha256 - (base32 - "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - ;; There is no Rakefile and minitest can only run one file at once, - ;; so we have to iterate over all test files. - (lambda _ - (for-each (lambda (file) - (invoke "ruby" "-Itest" file)) - (find-files "./test" "test_.*\\.rb")))) - (add-before 'check 'patch-tests-for-newer-ruby - (lambda _ - (substitute* "test/test_netrc.rb" - (("Dir.pwd, '.netrc'") "Netrc.home_path, '.netrc'"))))))) - (native-inputs - (list ruby-minitest)) - (synopsis "Library to read and update netrc files") - (description - "This library can read and update netrc files, preserving formatting -including comments and whitespace.") - (home-page "https://github.com/geemus/netrc") - (license license:expat))) - -(define-public ruby-unf-ext - (package - (name "ruby-unf-ext") - (version "0.0.8.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "unf_ext" version)) - (sha256 - (base32 - "1yj2nz2l101vr1x9w2k83a0fag1xgnmjwp8w8rw4ik2rwcz65fch")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'build 'build-ext - (lambda _ (invoke "rake" "compile:unf_ext"))) - (add-before 'check 'lose-rake-compiler-dock-dependency - (lambda _ - ;; rake-compiler-dock is listed in the gemspec, but only - ;; required when cross-compiling. - (substitute* "unf_ext.gemspec" - ((".*rake-compiler-dock.*") ""))))))) - (native-inputs - (list bundler ruby-rake-compiler ruby-test-unit)) - (synopsis "Unicode normalization form support library") - (description - "This package provides unicode normalization form support for Ruby.") - (home-page "https://github.com/knu/ruby-unf_ext") - (license license:expat))) - -(define-public ruby-tdiff - ;; Use a newer than released snapshot so that rspec-2 is not required. - (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2")) - (package - (name "ruby-tdiff") - (version (string-append "0.3.3-1." (string-take commit 8))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/postmodern/tdiff") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4")))) - (build-system ruby-build-system) - (native-inputs - (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 -tree-like structures. It is similar to Ruby's built-in @code{TSort} module.") - (home-page "https://github.com/postmodern/tdiff") - (license license:expat)))) - -(define-public ruby-nokogiri-diff - ;; Use a newer than released snapshot so that rspec-2 is not required. - (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5")) - (package - (name "ruby-nokogiri-diff") - (version (string-append "0.2.0-1." (string-take commit 8))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/postmodern/nokogiri-diff") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-tdiff - ruby-nokogiri)) - (native-inputs - (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 -differences (added or removed nodes) between two XML/HTML documents.") - (home-page "https://github.com/postmodern/nokogiri-diff") - (license license:expat)))) - -(define-public ruby-racc - (package - (name "ruby-racc") - (version "1.5.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "racc" version)) - (sha256 - (base32 - "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; Fails while parsing test instructions. - (native-inputs - (list ruby-hoe ruby-rake-compiler)) - (synopsis "LALR(1) parser generator for Ruby") - (description - "Racc is a LALR(1) parser generator. It is written in Ruby itself, and -generates Ruby program.") - (home-page "https://i.loveruby.net/en/projects/racc/") - (license (list - ;; Generally licensed under the LGPL2.1, and some files also - ;; available under the same license as Ruby. - license:lgpl2.1 - license:ruby)))) - -(define-public ruby-rack - (package - (name "ruby-rack") - ;; Do not upgrade to version 3, as Rails doesn't support it yet. - (version "2.2.7") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/rack/rack") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "02r41fr61x0jfhraizc6bsgs40p8mlpvnzix71zwmcvibg384ify")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'fix-tests - (lambda _ - ;; This test fails in the build environment (and passes outside - ;; of it). - (substitute* "test/spec_files.rb" - (("res.body.must_equal expected_body") "")) - ;; A few of the tests use the length of a file on disk for - ;; Content-Length and Content-Range headers. However, this file - ;; has a shebang in it which an earlier phase patches, growing - ;; the file size from 193 to 239 bytes when the store prefix is - ;; "/gnu/store". - (let ((size-diff (- (string-length (which "ruby")) - (string-length "/usr/bin/env ruby")))) - (substitute* '("test/spec_files.rb") - (("208" bytes) - (number->string (+ (string->number bytes) size-diff))) - (("bytes(.)22-33" all delimiter) - (string-append "bytes" - delimiter - (number->string (+ 22 size-diff)) - "-" - (number->string (+ 33 size-diff))))))))))) - (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, -it unifies the API for web servers, web frameworks, and software in between -into a single method call.") - (home-page "https://github.com/rack/rack") - (license license:expat))) - -(define-public ruby-rack-next - (package - (inherit ruby-rack) - (name "ruby-rack") - (version "3.0.7") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/rack/rack") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0msf14655nfcq1kgmib6932lgzm9nw3nb0m3c7nh6nj4sx30yxfr")))) - (arguments '()))) - -(define-public ruby-rackup - (package - (name "ruby-rackup") - (version "2.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rack/rackup") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19b7sy700zjwaw7x47qpxvhnnz5hrp5bhrxfyljgagrli824dajy")))) - (build-system ruby-build-system) - (native-inputs (list ruby-minitest-global-expectations)) - (inputs (list ruby-rack-next ruby-webrick)) - (synopsis "Command line interface (CLI) for running for Rack applications") - (description "This package provides a command line interface for running -for Rack applications.") - (home-page "https://github.com/rack/rackup") - (license license:expat))) - -(define-public ruby-rackup-1 - (package - (inherit ruby-rackup) - (name "ruby-rackup") - (version "1.0.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rack/rackup") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xdfxsz7jx2gwfq212y9mca6q0i5s7kyqbfcscy1315awg57ynyp")))))) - -(define-public ruby-rack-cache - (package - (name "ruby-rack-cache") - (version "1.13.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rack-cache" version)) - (sha256 - (base32 - "1cqpax628h2mhnsjfg91c3klxwx2pkvaj061cisb0saqa99b0jgm")))) - (build-system ruby-build-system) - (arguments - (list - ;; The test suite depends on ruby-memcached, which is not available in - ;; Guix and bundles a very dated copy of memcached (undesirable). - #:tests? #f)) - (propagated-inputs (list ruby-rack)) - (synopsis "Component to enable HTTP caching for Rack-based applications") - (description "Rack::Cache is suitable as a drop-in component to enable -HTTP caching for Rack-based applications that produce freshness (Expires, -Cache-Control) and/or validation (Last-Modified, ETag) information.") - (home-page "https://github.com/rtomayko/rack-cache") - (license license:expat))) - -(define-public ruby-rack-test - (package - (name "ruby-rack-test") - (version "2.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rack-test" version)) - (sha256 - (base32 - "1ysx29gk9k14a14zsp5a8czys140wacvp91fja8xcja0j1hzqq8c")))) - (build-system ruby-build-system) - (arguments - ;; Disable tests because of circular dependencies: requires sinatra, - ;; which requires rack-protection, which requires rack-test. Instead - ;; simply require the library. - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" "-Ilib" "-r" "rack/test"))))))) - (propagated-inputs - (list ruby-rack)) - (synopsis "Testing API for Rack applications") - (description - "Rack::Test is a small, simple testing API for Rack applications. It can -be used on its own or as a reusable starting point for Web frameworks and -testing libraries to build on.") - (home-page "https://github.com/rack/rack-test") - (license license:expat))) - -(define-public ruby-rack-session - (package - (name "ruby-rack-session") - ;; Stay on version 1 until all the rack users such as Rails can use rack 3 - ;; (rack-session 2 requires rack 3). - (version "1.0.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/rack/rack-session") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0rv955wd7ckp5jgy5c229wmajh48jpcy8s0iv5i8ma61wf7qw0i1")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-minitest-global-expectations - ruby-minitest-sprint)) - (propagated-inputs - (list ruby-rack)) - (synopsis "Session management for Rack") - (description "This package provides a session management implementation -for Rack.") - (home-page "https://github.com/rack/rack-session") - (license license:expat))) - -(define-public ruby-rack-protection - (package - (name "ruby-rack-protection") - (version "3.0.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rack-protection" version)) - (sha256 - (base32 - "1a12m1mv8dc0g90fs1myvis8vsgr427k1arg1q4a9qlfw6fqyhis")))) - (build-system ruby-build-system) - (arguments - '(;; Tests missing from the gem. - #:tests? #f)) - (propagated-inputs - (list ruby-rack)) - (native-inputs - (list bundler ruby-rspec-2 ruby-rack-test)) - (synopsis "Rack middleware that protects against typical web attacks") - (description "Rack middleware that can be used to protect against typical -web attacks. It can protect all Rack apps, including Rails. For instance, it -protects against cross site request forgery, cross site scripting, -clickjacking, directory traversal, session hijacking and IP spoofing.") - (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection") - (license license:expat))) - -(define-public ruby-rainbow - (package - (name "ruby-rainbow") - (version "3.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rainbow" version)) - (sha256 - (base32 - "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Run rspec directly, to avoid requiring Rubocop which is used from - ;; the Rakefile. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Colorize printed text on ANSI terminals") - (description - "@code{rainbow} provides a string presenter object to colorize strings by -wrapping them in ANSI escape codes.") - (home-page "https://github.com/sickill/rainbow") - (license license:expat))) - -(define-public ruby-rr - (package - (name "ruby-rr") - (version "1.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rr" version)) - (sha256 - (base32 - "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; test files not included - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Ruby test double framework") - (description - "RR is a test double framework that features a rich selection of double -techniques and a terse syntax.") - (home-page "https://rr.github.io/rr/") - (license license:expat))) - -(define-public ruby-rest-client - (package - (name "ruby-rest-client") - (version "2.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rest-client" version)) - (sha256 - (base32 - "1qs74yzl58agzx9dgjhcpgmzfn61fqkk33k1js2y5yhlvc5l19im")))) - (build-system ruby-build-system) - (arguments - (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-accept-1 - ruby-http-cookie - ruby-mime-types - ruby-netrc)) - (native-inputs - (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, -inspired by the Sinatra microframework style of specifying actions: -@code{get}, @code{put}, @code{post}, @code{delete}.") - (home-page "https://github.com/rest-client/rest-client") - (license license:expat))) - -(define-public ruby-rubocop-ast - (package - (name "ruby-rubocop-ast") - (version "1.37.0") - (source - (origin - (method git-fetch) ;no test suite in distributed gem - (uri (git-reference - (url "https://github.com/rubocop/rubocop-ast") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1ww1vxcx6qaih4g68mrbq4xlgrqbv8w7cqxdaz629sazpw2hkycs")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-after 'unpack 'relax-dependencies - (lambda _ - (substitute* "Gemfile" - (("gem 'simplecov', '~> 0.10', '< 0.18'") - "gem 'simplecov', '~> 0.10'")))) - (add-before 'build 'generate-lexer - (lambda _ - (setenv "RUBOCOP_VERSION" "none") - (invoke "rake" "generate"))) - (replace 'replace-git-ls-files - (lambda _ - (substitute* "rubocop-ast.gemspec" - (("`git ls-files(.*)`" _ files) - (format #f "`find ~a -type f| sort`" files)))))))) - (native-inputs - (list ruby-bump - ruby-oedipus-lex - ruby-prism - ruby-racc - ruby-rake - ruby-rspec - ruby-simplecov)) - (propagated-inputs - (list ruby-parser)) - (synopsis "RuboCop's AST extensions and NodePattern functionality") - (description "Rubocop::AST extends @code{ruby-parser} with classes used -by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular: -@itemize -@item @code{RuboCop::AST::Node} -@item @code{RuboCop::AST::NodePattern} -@end itemize") - (home-page "https://rubocop.org/") - (license license:expat))) - -(define-public ruby-rexml - (package - (name "ruby-rexml") - (version "3.2.5") - (source - (origin - (method git-fetch) ;no tests in distributed gem - (uri (git-reference - (url "https://github.com/ruby/rexml") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "13n6vaa80drqic2wri4q6k22qzvsn683vp5s8c9dllil6x04kn0x")))) - (build-system ruby-build-system) - (synopsis "XML toolkit for Ruby") - (description "Inspired by Electric XML library for Java, REXML aims to be -easy-to-use API, small and fast. It supports both tree and stream document -parsing.") - (home-page "https://github.com/ruby/rexml") - (license license:bsd-2))) - -(define-public ruby-character-set - (package - (name "ruby-character-set") - (version "1.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "character_set" version)) - (sha256 - (base32 - "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser - (synopsis "Ruby library to manipulate Unicode") - (description "CharacterSet is a C-extended Ruby library to work with sets -of Unicode code points. It can read and write these sets in various formats -and implements the @code{stdlib} @code{Set} interface for them. It also -offers an alternate paradigm of @code{String} processing which grants much -better performance than @code{Regexp} and @code{String} methods from the -@code{stdlib} where applicable. Many parts can be used independently, e.g.: -@itemize -@item @code{CharacterSet::Character} -@item @code{CharacterSet::Parser} -@item @code{CharacterSet::Writer} -@item @code{RangeCompressor} -@end itemize") - (home-page "https://github.com/jaynetics/character_set") - (license license:expat))) - -(define-public ruby-range-compressor - (package - (name "ruby-range-compressor") - (version "1.2.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/janosch-x/range_compressor") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1zmc44si5ac2h7r1x4f1j8z5yr6wz528c7dssh0g70fmczs3pfga")))) - (build-system ruby-build-system) - (arguments - (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 - 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 -following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.") - (home-page "https://github.com/janosch-x/range_compressor") - (license license:expat))) - -(define-public ruby-regexp-property-values - (let ((commit "03007a66c912949a7130b973cc0eca109c20811f") - (revision "1")) - (package - (name "ruby-regexp-property-values") - (version (git-version "1.0.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference ;no test suite in distributed gem - (url "https://github.com/jaynetics/regexp_property_values") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1zsax784p16zdkf60lyq9z924zvsafhx9ckxx9srsgkyiqrifi1s")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "default")) - (native-inputs - (list ruby-character-set ruby-rake ruby-rake-compiler - ruby-range-compressor ruby-rspec)) - (synopsis "Inspect Ruby's regex engine property values") - (description "This small library lets you see which property values are -supported by the regular expression engine of the Ruby version you are running -and can directly read out their code point ranges. In other words, it -determines all supported values for @code{\\p{value}} expressions and what -they match.") - (home-page "https://github.com/jaynetics/regexp_property_values") - (license license:expat)))) - -(define-public ruby-regexp-parser - (package - (name "ruby-regexp-parser") - (version "2.6.0") - (source - (origin - (method git-fetch) ;bin/test missing from gem - (uri (git-reference - (url "https://github.com/ammar/regexp_parser") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "07dx96gjvpa07dsdnzpwhhwc7qpxakjgws7d7wbnkbs20fyvx55x")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "default" - #:phases (modify-phases %standard-phases - (add-before 'build 'compile-scanner.rb - (lambda _ - (invoke "rake" "build") - ;; XXX: This is needed otherwise the install - ;; phase fails to delete the installed cached - ;; gem file. - (delete-file-recursively "pkg")))))) - (native-inputs - (list ragel ruby-ice-nine ruby-regexp-property-values ruby-rspec)) - (synopsis "Regular expression parser library for Ruby") - (description "A Ruby gem for tokenizing, parsing, and transforming regular -expressions. It comprises the following components: -@itemize -@item A scanner/tokenizer based on Ragel, -@item A lexer that produces a stream of token objects, -@item A parser that produces a tree of Expression objects. -@end itemize") - (home-page "https://github.com/ammar/regexp_parser") - (license license:expat))) - -(define-public ruby-test-queue - (package - (name "ruby-test-queue") - (version "0.4.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "test-queue" version)) - (sha256 - (base32 - "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-rspec)) - (synopsis "Minitest/RSpec parallel test runner for CI environments") - (description "The test-queue module is a parallel test runner, -built using a centralized queue to ensure optimal distribution of -tests between workers. It is specifically optimized for Continuous -Integration (CI) environments: build statistics from each run are -stored locally and used to sort the queue at the beginning of the next -run.") - (home-page "https://github.com/tmm1/test-queue") - (license license:expat))) - -(define-public ruby-rubocop - (package - (name "ruby-rubocop") - (version "1.68.0") - (source - (origin - (method git-fetch) ;no tests in distributed gem - (uri (git-reference - (url "https://github.com/rubocop/rubocop") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0pfsrgkg2dhb6a2rknciqskgxgmb9kf48rvbkhay9n8n6m712v2w")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "default" - ;; TODO: Figure out why test hangs. - #:tests? ,(not (or (%current-target-system) - (target-riscv64?))) - #:phases - (modify-phases %standard-phases - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" (getcwd)))) - ;; Rubocop depends on itself for tests, directly and indirectly. By - ;; regenerating the TODO list we test rubocop against itself and - ;; forgo adjusting the test suite to our environment each release. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (make-file-writable ".rubocop_todo.yml") - (invoke "./exe/rubocop" "--auto-gen-config"))))))) - (native-inputs - (list ruby-pry - ruby-rake - ruby-rspec - ruby-rubocop-ast - ruby-rubocop-capybara-minimal - ruby-rubocop-factory-bot - ruby-rubocop-minimal - ruby-rubocop-performance-minimal - ruby-rubocop-rake-minimal - ruby-rubocop-rspec-minimal - ruby-simplecov - ruby-stackprof - ruby-test-queue - ruby-webmock - ruby-yard)) - (propagated-inputs - (list ruby-json - ruby-language-server-protocol - ruby-parallel - ruby-parser - ruby-progressbar - ruby-rainbow - ruby-regexp-parser - ruby-rexml - ruby-rubocop-ast - ruby-unicode-display-width)) - (synopsis "Ruby code style checking tool") - (description - "@code{rubocop} is a Ruby code style checking tool. It aims to enforce -the community-driven Ruby Style Guide.") - (home-page "https://github.com/rubocop/rubocop") - (license license:expat))) - -(define-public ruby-rubocop-minimal - (hidden-package - (package - (inherit ruby-rubocop) - (arguments - (substitute-keyword-arguments (package-arguments ruby-rubocop) - ((#:tests? _ #f) #f))) - (propagated-inputs '()) - (native-inputs '())))) - -(define-public ruby-contest - (package - (name "ruby-contest") - (version "0.1.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "contest" version)) - (sha256 - (base32 - "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf")))) - (build-system ruby-build-system) - (synopsis "Write declarative tests using nested contexts") - (description - "Contest allows writing declarative @code{Test::Unit} tests using nested -contexts without performance penalties.") - (home-page "https://github.com/citrusbyte/contest") - (license license:expat))) - -(define-public ruby-creole - (package - (name "ruby-creole") - (version "0.5.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "creole" version)) - (sha256 - (base32 - "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-bacon)) - (synopsis "Creole markup language converter") - (description - "Creole is a lightweight markup language and this library for converting -creole to @code{HTML}.") - (home-page "https://github.com/minad/creole") - (license license:ruby))) - -(define-public ruby-docile - (package - (name "ruby-docile") - (version "1.1.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "docile" version)) - (sha256 - (base32 - "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; needs github-markup, among others - (synopsis "Ruby EDSL helper library") - (description "Docile is a Ruby library that provides an interface for -creating embedded domain specific languages (EDSLs) that manipulate existing -Ruby classes.") - (home-page "https://ms-ati.github.io/docile/") - (license license:expat))) - -(define-public ruby-middleware - (package - (name "ruby-middleware") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "middleware" version)) - (sha256 - (base32 - "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;no test suite - (synopsis "Implementation of a middleware abstraction for Ruby") - (description "Middleware is a generalized implementation of a middleware -abstraction for Ruby.") - (home-page "https://github.com/mitchellh/middleware") - (license license:expat))) - -(define-public ruby-benchmark-ips - (package - (name "ruby-benchmark-ips") - (version "2.12.0") - (source - (origin - (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 - "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") - (description "Benchmark-ips enhances the Ruby Benchmark module with the -iterations per second count. For short snippets of code, it can automatically -figure out how many times to run the code to get interesting data.") - (home-page "https://github.com/evanphx/benchmark-ips") - (license license:expat))) - -(define-public ruby-ffi-rzmq-core - (package - (name "ruby-ffi-rzmq-core") - (version "1.0.7") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ffi-rzmq-core" version)) - (sha256 - (base32 - "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-libzmq-search-path - (lambda* (#:key inputs #:allow-other-keys) - (let ((zeromq (assoc-ref inputs "zeromq"))) - (substitute* "lib/ffi-rzmq-core/libzmq.rb" - (("/usr/local/lib") - (string-append zeromq "/lib")))))) - (replace 'check - (lambda _ - (invoke "rspec")))))) - (native-inputs - (list ruby-rspec)) - (inputs - (list zeromq)) - (propagated-inputs (list ruby-ffi)) - (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library") - (description "This library only provides the FFI wrapper for the ZeroMQ -networking library. It can be used to implement a Ruby API for the ZeroMQ -library.") - (home-page "https://github.com/chuckremes/ffi-rzmq-core") - (license license:expat))) - -(define-public ruby-ffi-rzmq - (package - (name "ruby-ffi-rzmq") - (version "2.0.7") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ffi-rzmq" version)) - (sha256 - (base32 - "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg")))) - (build-system ruby-build-system) - (arguments '(#:phases (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-rspec)) - (propagated-inputs - (list ruby-ffi-rzmq-core)) - (synopsis "High-level Ruby wrapper for the ZeroMQ networking library") - (description "This library provides a high-level API that wraps the ZeroMQ -networking library using the Ruby foreign function interface (FFI). It is a -pure Ruby wrapper, hence is compatible with any Ruby runtime that has support -for FFI.") - (home-page "https://github.com/chuckremes/ffi-rzmq") - (license license:expat))) - -(define-public ruby-sawyer - (package - (name "ruby-sawyer") - (version "0.9.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sawyer" version)) - (sha256 - (base32 - "1jks1qjbmqm8f9kvwa81vqj39avaj9wdnzc531xm29a55bb74fps")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-addressable ruby-faraday)) - (synopsis "Experimental hypermedia agent for Ruby") - (description "Sawyer is an experimental hypermedia agent for Ruby built on -top of Faraday.") - (home-page "https://github.com/lostisland/sawyer") - (license license:expat))) - -(define-public ruby-octokit - (package - (name "ruby-octokit") - (version "6.1.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/octokit/octokit.rb") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "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-rbnacl - ruby-rspec - ruby-simplecov - ruby-webmock - ruby-vcr-expat)) - (propagated-inputs (list ruby-faraday ruby-sawyer)) - (synopsis "Ruby toolkit for the GitHub API") - (description "Octokit wraps the GitHub API in a flat API client that -follows Ruby conventions and requires little knowledge of REST.") - (home-page "https://github.com/octokit/octokit.rb") - (license license:expat))) - -(define-public ruby-hashicorp-checkpoint - (package - (name "ruby-hashicorp-checkpoint") - (version "0.1.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "hashicorp-checkpoint" version)) - (sha256 - (base32 - "1z6mwzvd7p2wqhmk07dwrhvm0ncgqm7pxn0pr2k025rwsspp9bsd")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f)) ;; no need to test, useless outside HashiCorp anyway - (synopsis "Internal HashiCorp service to check version information") - (description "This package is probably useless outside of internal -HashiCorp use. It is open source for disclosure and because HashiCorp's open -source projects must be able to link to it.") - (home-page "https://github.com/hashicorp/ruby-checkpoint") - (license license:mpl2.0))) - -(define-public ruby-vagrant-cloud - (package - (name "ruby-vagrant-cloud") - (version "3.1.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/hashicorp/vagrant_cloud") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0bnjd8b86lrgj5ar1l7pg5if95bv0sxa75mz7x2ikqyz6q8rmjb3")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (native-inputs (list ruby-rspec ruby-webmock)) - (propagated-inputs (list ruby-excon ruby-log4r ruby-rexml)) - (synopsis "Vagrant Cloud API library") - (description "This library provides the functionality to create, modify, -and delete boxes, versions, and providers on HashiCorp's Vagrant Cloud.") - (home-page "https://github.com/hashicorp/vagrant_cloud") - (license license:asl2.0))) - -(define-public ruby-libvirt - (package - (name "ruby-libvirt") - (version "0.8.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "ruby-libvirt" version)) - (sha256 - (base32 - "0v6vj5vs9v01zr00bflqpfczhwcyc6jdf8k2dqn42lq6d87si77d")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f)) ; tests require access to libvirt socket - (native-inputs (list pkg-config)) - (inputs (list libvirt)) - (synopsis "Ruby bindings for libvirt") - (description "This package provides Ruby language binding for libvirt's -native C API.") - (home-page "https://ruby.libvirt.org/") - (license license:lgpl2.1+))) - -(define-public ruby-fog-core - (package - (name "ruby-fog-core") - (version "2.4.0") - (source (origin - (method git-fetch) ; for tests - (uri (git-reference - (url "https://github.com/fog/fog-core") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "184vpi81az7raz98652m7d98ikabdl9di37dgal0adr76q57j03c")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" "/tmp")))))) - (native-inputs (list ruby-minitest-stub-const)) - (propagated-inputs (list ruby-builder ruby-excon ruby-formatador - ruby-mime-types)) - (synopsis "Shared classes and tests for fog providers and services") - (description "@code{fog} is a Ruby cloud services library. This package -provides shared classes and tests for @code{fog} providers and services.") - (home-page "https://github.com/fog/fog-core") - (license license:expat))) - -(define-public ruby-fog-json - (package - (name "ruby-fog-json") - (version "1.2.0") - (source (origin - (method git-fetch) ; for tests - (uri (git-reference - (url "https://github.com/fog/fog-json") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0f4hbmhy22b1gbkzd3pnj5xvljp6bl7inc2y4fxh29nrmcn4pgb0")))) - (build-system ruby-build-system) - (native-inputs (list ruby-minitest)) - (propagated-inputs (list ruby-fog-core ruby-multi-json)) - (synopsis "JSON parsing tools used by @code{fog} providers") - (description "This package containse the JSON parsing tools shared between -a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud -services library.") - (home-page "https://github.com/fog/fog-json") - (license license:expat))) - -(define-public ruby-fog-xml - (package - (name "ruby-fog-xml") - (version "0.1.5") - (source (origin - (method git-fetch) ; for tests - (uri (git-reference - (url "https://github.com/fog/fog-xml") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1v896k9j44axhgvwjvk1j0amy27a9fm6ynv656fxqa1m2wib6dzh")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - ;; Run tests via bundler so rake picks up the minitest gem from - ;; native-inputs, not the one installed otherwise. This is required - ;; since turn@0.9.7 needs minitest@4 and can not be upgraded to - ;; minitest@5. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "bundle" "exec" "rake"))))))) - (native-inputs (list ruby-minitest ruby-pry ruby-coveralls)) - (propagated-inputs (list ruby-fog-core ruby-nokogiri)) - (synopsis "XML parsing tools used by @code{fog} providers") - (description "This package containse the XML parsing tools shared between -a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud -services library.") - (home-page "https://github.com/fog/fog-xml") - (license license:expat))) - -(define-public ruby-fog-libvirt - (package - (name "ruby-fog-libvirt") - (version "0.12.0") - (source (origin - (method git-fetch) ; for tests - (uri (git-reference - (url "https://github.com/fog/fog-libvirt") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0b1qafb0l24anmr8fviwhp9vj14g0fic0mkg9n1i11h68zhqkj2v")))) - (build-system ruby-build-system) - (native-inputs (list ruby-minitest-stub-const ruby-mocha ruby-net-ssh - ruby-netrc ruby-octokit ruby-pry ruby-rubocop - ruby-shindo ruby-simplecov ruby-yard )) - (propagated-inputs (list ruby-fog-core ruby-fog-json ruby-fog-xml - ruby-json ruby-libvirt)) - (synopsis "Ruby libvirt provider, either standalone or as a module for -@code{fog}") - (description "This library can be used as a module for @code{fog} or as -standalone libvirt provider. @code{fog} is a Ruby cloud services library.") - (home-page "https://github.com/fog/fog-libvirt") - (license license:expat))) - -(define-public ruby-pry-byebug - (package - (name "ruby-pry-byebug") - (version "3.10.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/deivid-rodriguez/pry-byebug") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0z8rhvmr9qmlbk8c8h6jbig5qd5xbdg9qihvx3g0cv1whqzbfikq")))) - (build-system ruby-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'sanitize-dependencies - (lambda _ - (substitute* "Rakefile" - ((".*chandler/tasks.*") "")))) - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" (getcwd))))))) - (native-inputs (list ruby-rubocop ruby-simplecov)) - (propagated-inputs (list ruby-byebug ruby-pry)) - (synopsis "Step-by-step debugging and stack navigation in Pry") - (description "This package adds step-by-step debugging and stack -navigation capabilities to @code{pry}, using @code{byebug}.") - (home-page "https://github.com/deivid-rodriguez/pry-byebug") - (license license:expat))) - -(define-public ruby-stackprof - (package - (name "ruby-stackprof") - (version "0.2.27") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "stackprof" version)) - (sha256 - (base32 "03788mbipmihq2w7rznzvv0ks0s9z1321k1jyr6ffln8as3d5xmg")))) - (build-system ruby-build-system) - (arguments - (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") - ;; This test is known to fail on 32-bit systems. - ;; /gnu/store/...-stackprof-0.2.27.gem - (("def test_raw") "def skip_test_raw")))) - (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 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, -wallclock and object allocation samplers.") - (home-page "https://github.com/tmm1/stackprof") - (license license:expat))) - -(define-public ruby-bindex - (package - (name "ruby-bindex") - (version "0.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bindex" version)) - (sha256 - (base32 "0zmirr3m02p52bzq4xgksq4pn8j641rx5d4czk68pv9rqnfwq7kv")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "default" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'avoid-bundler - (lambda _ - (substitute* "Rakefile" - (("^Bundler::.*") ""))))))) - (native-inputs (list bundler ruby-rake-compiler)) - (synopsis "Bindings for Ruby exceptions") - (description - "This package provides bindings for any kind of Ruby exceptions.") - (home-page "https://github.com/gsamokovarov/bindex") - (license license:expat))) - -(define-public ruby-binding-of-caller - (package - (name "ruby-binding-of-caller") - (version "0.8.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "binding_of_caller" version)) - (sha256 - (base32 - "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g")))) - (build-system ruby-build-system) - ;; Attempting to run the test suite fails with a rake deprecation error - ;; (see: https://github.com/banister/binding_of_caller/issues/76). - (arguments '(#:tests? #f)) - (propagated-inputs - (list ruby-debug-inspector)) - (synopsis "Retrieve the binding of a method's caller") - (description "The @code{binding_of_caller} module provides the -@code{Binding#of_caller} method. It allows accessing bindings from upper -frames in the call stack and can evaluate code in that context.") - (home-page "https://github.com/banister/binding_of_caller") - (license license:expat))) - -(define-public ruby-pry-stack-explorer - (package - (name "ruby-pry-stack-explorer") - (version "0.5.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "pry-stack_explorer" version)) - (sha256 - (base32 - "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;no test suite in gem release - (propagated-inputs - (list ruby-binding-of-caller ruby-pry)) - (synopsis "Call-stack navigation plugin for the Pry REPL") - (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that -add support to navigate the call-stack.") - (home-page "https://github.com/pry/pry-stack_explorer") - (license license:expat))) - -(define-public ruby-varint - (package - (name "ruby-varint") - (version "0.1.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "varint" version)) - (sha256 - (base32 - "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;no test suite - (synopsis "Variable length integers (varint) C extension for Ruby") - (description "This package provides a small C extension to speed up -variable length integers (varint) in Ruby Protocol Buffers.") - (home-page "https://github.com/liquidm/varint") - (license license:bsd-3))) - -(define-public ruby-version-gem - (package - (name "ruby-version-gem") - (version "1.1.3") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://gitlab.com/oauth-xx/version_gem") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "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"))))))) - (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} -module based on a @code{Version::VERSION} constant string wile not interfering -with gemspec parsing where the @code{VERSION} string is traditionally used.") - (home-page "https://gitlab.com/oauth-xx/version_gem") - (license license:expat))) - -;;; Note: Do NOT update to a newer version; this is the last commit that is -;;; still licensed as free software, the project having switched to the -;;; Hippocratic license afterward (see: -;;; https://github.com/vcr/vcr/issues/959). -(define-public ruby-vcr-expat - (let ((revision "0") - (commit-dont-touch "842b2bf89099dc91f2c643d0d85d1abd54eb7e85")) ; - (package - (name "ruby-vcr-expat") - (version (git-version "5.0.0" revision commit-dont-touch)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/vcr/vcr") - (commit commit-dont-touch))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "02mzifd2655kjh35bbry01n66jjcjrsw6ncqlybfkjcaqrw2zalv")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) ;avoid all dependencies - (home-page "https://github.com/vcr/vcr") - (synopsis "HTTP interaction recorder [old version]") - (description "Record your test suite's HTTP interactions and replay them -during future test runs for fast, deterministic, accurate tests. This is an -older version of VCR that is free software under the Expat license. The -project later switched to the Hippocratic license, which is non-free. -@emph{Do not use it in new free software projects}.") - (license license:expat)))) - -(define-public ruby-ruby-prof - (package - (name "ruby-ruby-prof") - (version "1.4.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby-prof" version)) - (sha256 - (base32 - "09n13bzm1p956z318xx1v7ikqdp2i971v7p3kwf3170axz368ccy")))) - (build-system ruby-build-system) - (arguments - ;; FIXME: Investigate why the tests fail on i686-linux. - `(#:tests? ,(not (or (%current-target-system) - (target-x86-32?))) - #:phases - (modify-phases %standard-phases - ;; The LineNumbersTest test fails non-deterministically (see: - ;; https://github.com/ruby-prof/ruby-prof/issues/276). - (add-after 'extract-gemspec 'delete-flaky-test - (lambda _ - (delete-file "test/line_number_test.rb") - (substitute* "ruby-prof.gemspec" - (("\"test/line_number_test\\.rb\"\\.freeze, ") "")))) - (add-before 'check 'compile - (lambda _ - (invoke "rake" "compile")))))) - (native-inputs (list bundler ruby-minitest ruby-rake-compiler ruby-rdoc)) - (synopsis "Fast code profiler for Ruby") - (description "RubyProf is a fast code profiler for Ruby. Its features -include: -@table @asis -@item Speed -Being a C extension, it is many times faster than the standard Ruby profiler. -@item Measurement Modes -It can measure program wall time, process time, object allocations and memory -usage. -@item Reports -A variety of text and cross-referenced HTML reports can be generated. -@item Threads -Profiling multiple threads simultaneously is supported. -@end table") - (home-page "https://github.com/ruby-prof/ruby-prof") - (license license:bsd-2))) - -(define-public ruby-ruby-memcheck - (package - (name "ruby-ruby-memcheck") - (version "1.3.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/Shopify/ruby_memcheck") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "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 - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/ruby_memcheck/configuration.rb" - (("DEFAULT_VALGRIND = \"valgrind\"") - (format #f "DEFAULT_VALGRIND = ~s" - (search-input-file inputs "bin/valgrind")))))) - (add-before 'replace-git-ls-files 'standardize-git-ls-files - (lambda _ - (substitute* "ruby_memcheck.gemspec" - (("%x\\(git ls-files -z)") - "`git ls-files -z`"))))))) - (native-inputs (list ruby-rake-compiler ruby-rspec)) - (inputs (list valgrind/pinned)) - (propagated-inputs (list ruby-nokogiri)) - (synopsis "Valgrind memcheck tool for Ruby") - (description "The @code{ruby_memcheck} gem provides a sane way to use -Valgrind's memcheck on your native extension gem, that filters out all the -false positives caused by Ruby not freeing all of the memory it allocates -during shutdown.") - (home-page "https://github.com/Shopify/ruby_memcheck") - (license license:expat))) - -(define-public ruby-memory-profiler - (package - (name "ruby-memory-profiler") - (version "1.0.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/SamSaffron/memory_profiler") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1z1x0rymfv45gh1y3s46w5pga5y8cvgn228jiwlnhc8hin3zig84")))) - (build-system ruby-build-system) - (synopsis "Memory profiling routines for Ruby") - (description - "This package provides memory profiling routines for Ruby.") - (home-page "https://github.com/SamSaffron/memory_profiler") - (license license:expat))) - -(define-public ruby-cucumber-compatibility-kit - (package - (name "ruby-cucumber-compatibility-kit") - (version "11.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cucumber-compatibility-kit" version)) - (sha256 - (base32 - "17c8zx0yn68rcpfbw4nb1gzvh9fzpwsi1y0qivb99ahdlgzcdp8q")))) - (build-system ruby-build-system) - (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (propagated-inputs (list ruby-cucumber-messages ruby-rake ruby-rspec)) - (synopsis "Cucumber compatibility verification utility") - (description "The Cucumber Compatibility Kit (CCK) aims to validate a -Cucumber implementation's support for the Cucumber Messages protocol.") - (home-page "https://github.com/cucumber/compatibility-kit") - (license license:expat))) - -;;; Variant package to break a cycle with ruby-cucumber-messages. -(define ruby-cucumber-compatibility-kit-bootstrap - (package/inherit ruby-cucumber-compatibility-kit - (arguments (list #:tests? #f)) - (propagated-inputs (modify-inputs (package-propagated-inputs - ruby-cucumber-compatibility-kit) - (delete "ruby-cucumber-messages"))))) - -(define-public ruby-cucumber-messages - (package - (name "ruby-cucumber-messages") - (version "21.0.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cucumber-messages" version)) - (sha256 - (base32 - "0482a63y7my0arn2bv208g401dq8525f0gwhnwaa11mhv6ph0q5i")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - ;; The test suite requires the gem to be installed, so move it - ;; after the install phase. - (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? - (invoke "rspec"))))))) - (native-inputs - (list ruby-cucumber-compatibility-kit-bootstrap ruby-rspec)) - (home-page "https://github.com/cucumber/messages/") - (synopsis "Cucumber Messages for Ruby (Protocol Buffers)") - (description "Cucumber Messages for Ruby is a library which allows -serialization and deserialization of the protocol buffer messages used in -Cucumber.") - (license license:expat))) - -(define-public ruby-cucumber-gherkin - (package - (name "ruby-cucumber-gherkin") - (version "26.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/gherkin") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1rsannfcg5rqh5a3d3paw10kf6mmqjrgbq3k235px4swbyqysmgn")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda _ - (chdir "ruby")))))) - (native-inputs (list ruby-rspec)) - (propagated-inputs (list ruby-cucumber-messages)) - (synopsis "Gherkin parser for Ruby") - (description "Gherkin is a parser and compiler for the Gherkin language. -It is intended be used by all Cucumber implementations to parse -@file{.feature} files.") - (home-page "https://github.com/cucumber/gherkin") - (license license:expat))) - -(define-deprecated ruby-gherkin ruby-cucumber-gherkin) - -(define-public ruby-gherkin-ruby - (package - (name "ruby-gherkin-ruby") - (version "0.3.2") - (home-page "https://github.com/codegram/gherkin-ruby") - (source (origin - (method url-fetch) - (uri (rubygems-uri "gherkin-ruby" version)) - (sha256 - (base32 - "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1")))) - (build-system ruby-build-system) - (synopsis "Pure Ruby Gherkin parser") - (description - "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than -200 lines of code.") - ;; XXX: No license information anywhere but Readme.md. - (license license:expat))) - -(define-public ruby-aruba - (package - (name "ruby-aruba") - (version "2.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/aruba") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1mmlgqhi6yww3z34hmrrnha2rygkv6kx0q962z31dqxjkcv23yfd")))) - (build-system ruby-build-system) - (arguments - (list - ;; XXX: Only run the "spec" target and not the "cucumber" one, as it is - ;; slow and has multiple unexplained test failures. - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-paths - (lambda _ - ;; This test file relies on a dynamically generated script; - ;; patch its #!/bin/bash shebang. - (substitute* "spec/aruba/api/commands_spec.rb" - (("/bin/bash") - (which "bash"))))) - (add-before 'check 'relax-requirements - ;; Many development requirements are not actually needed. - (lambda _ - (substitute* "aruba.gemspec" - (("\\[\">= 0.18.0\", \"< 0.22.0\"]") ;simplecov - "\">= 0.18.0\"") - ((".*appraisal.*") "") - ((".*pry.*") "") - ((".*kramdown.*") "") - ((".*rubocop.*") "") - ((".*yard-junk.*") "")) - (substitute* "Rakefile" - ((".*require \"rubocop/rake_task\".*") "") - ((".*require \"yard-junk/rake\".*") "") - ((".*RuboCop::RakeTask.new.*") "") - ((".*YardJunk::Rake.define_task.*") "")))) - ;; The tests rely on the Gem being installed, so move the check - ;; phase after the install phase. - (delete 'check) - (add-after 'install 'check - (assoc-ref %standard-phases 'check)) - (add-before 'check 'set-GEM_PATH - (lambda _ - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")))) - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" "/tmp")))))) - (native-inputs - (list ruby-rake-manifest - ruby-rspec - ruby-simplecov)) - (propagated-inputs - (list bundler - ruby-childprocess - ruby-contracts - ruby-cucumber - ruby-rspec-expectations - ruby-thor)) - (synopsis "Test command-line applications with Cucumber, RSpec or Minitest") - (description - "Aruba is an extension for Cucumber, RSpec and Minitest for testing -command-line applications. It supports applications written in any -language.") - (home-page "https://github.com/cucumber/aruba") - (license license:expat))) - -(define-public ruby-sys-uname - (package - (name "ruby-sys-uname") - (version "1.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sys-uname" version)) - (sha256 - (base32 - "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (propagated-inputs (list ruby-ffi)) - (native-inputs (list ruby-rspec)) - (synopsis "Ruby interface for gathering system information") - (description "The sys-uname library provides an interface for gathering -information about your current platform. It allows retrieving information -such as the OS name, OS version, system name, etc.") - (home-page "https://github.com/djberg96/sys-uname") - (license license:asl2.0))) - -(define-public ruby-cucumber-html-formatter - (package - (name "ruby-cucumber-html-formatter") - (version "20.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cucumber-html-formatter" version)) - (sha256 - (base32 - "0c7r9mfmph4c6yzc7y3dkr92rhwvpyksr0mdhpqp67xmmr8z1br4")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* ".gemspec" - (("~> 18.0") "~> 21.0")))) ;cucumber-messages - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-cucumber-compatibility-kit ruby-rspec)) - (propagated-inputs (list ruby-cucumber-messages)) - (synopsis "HTML formatter for Cucumber") - (description "Cucumber HTML Formatter produces a HTML report for Cucumber -runs. It is built on top of cucumber-react and works with any Cucumber -implementation with a protocol buffer formatter that outputs Cucumber -messages.") - (home-page "https://github.com/cucumber/html-formatter") - (license license:expat))) - -(define-public ruby-cucumber-ci-environment - (package - (name "ruby-cucumber-ci-environment") - (version "9.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cucumber-ci-environment" version)) - (sha256 - (base32 - "1nmn2hfrjlbazgcryr3hwvsa5v4csfbjqxb4q7wbjhaxl9xxn0k7")))) - (build-system ruby-build-system) - (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-rspec)) - (synopsis "Detect CI Environment from environment variables") - (description "This is a Ruby utility library for Cucumber that detects a -CI environment from environment variables.") - (home-page "https://github.com/cucumber/ci-environment") - (license license:expat))) - -(define-public ruby-cucumber - (package - (name "ruby-cucumber") - (version "8.0.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/cucumber-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1dz880fdz6rfbh1nwwcq21v65byik46jnf9gppnrqf3p5k61i55r")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'disable-rubocop - ;; Remove extraneous Lint checks. - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") - "") - (("RuboCop::RakeTask.new") - "")))) - (add-after 'extract-gemspec 'strip-version-requirements - (lambda _ - (delete-file "Gemfile") ;do not use Bundler - (substitute* "cucumber.gemspec" - ;; The dependency specifications are often trailing - ;; behind and appear stricter than necessary, since the - ;; test suite passes with the newer component versions. - (("(.*add_.*dependency '[_A-Za-z0-9-]+')(.*)" - _ stripped rest) - (string-append stripped " # " rest "\n"))))) - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" (getcwd))))))) - (propagated-inputs - (list ruby-builder - ruby-cucumber-ci-environment - ruby-cucumber-core - ruby-cucumber-gherkin - ruby-cucumber-html-formatter - ruby-cucumber-messages - ruby-cucumber-wire - ruby-diff-lcs - ruby-mime-types - ruby-multi-test - ruby-sys-uname)) - (native-inputs - (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 -plain language. It's designed to support a Behaviour Driven Development (BDD) -software development workflow.") - (home-page "https://cucumber.io/") - (license license:expat))) - -(define ruby-cucumber-without-tests - (package (inherit ruby-cucumber) - (arguments - '(#:tests? #f)) - (native-inputs - '()))) - -(define-public ruby-covered - (package - (name "ruby-covered") - (version "0.20.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "covered" version)) - (sha256 - (base32 - "04fpj493jn23ah5fq93956a5h2xj3z0hrckvc26fxcfsg5pbwypa")))) - (build-system ruby-build-system) - (arguments - ;; XXX: The test suite is disabled to avoid dependency cycles with - ;; ruby-samovar, through ruby-bake. - (list #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* ".gemspec" - (("\">= 3.2\"") - "\">= 2.7\""))))))) - (propagated-inputs (list ruby-console ruby-msgpack)) - (synopsis "Modern approach to code coverage in Ruby") - (description "Covered uses modern Ruby features to generate comprehensive -coverage, including support for templates which are compiled into Ruby. It -has the following features: -@itemize -@item -Incremental coverage -- if you run your full test suite, and the run a subset, -it will still report the correct coverage - so you can incrementally work on -improving coverage. -@item -Integration with RSpec, Minitest, Travis & Coveralls - no need to configure -anything - out of the box support for these platforms. -@item -It supports coverage of views -- templates compiled to Ruby code can be -tracked for coverage reporting. -@end itemize") - (home-page "https://github.com/ioquatix/covered") - (license license:expat))) - -(define-public ruby-coveralls - (package - (name "ruby-coveralls") - (version "0.8.23") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "coveralls" version)) - (sha256 - (base32 - "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "default" - #:phases #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'disable-problematic-tests - (lambda _ - (substitute* "spec/coveralls/coveralls_spec.rb" - ;; This test fails for unknown reasons (perhaps - ;; networking); skip it. - (("it \"sends existing test results\"" all) - (string-append "x" all))) - ;; 3 simplecov tests fail, perhaps due to using a - ;; newer simplecov version. - (delete-file "spec/coveralls/simplecov_spec.rb") - (substitute* "coveralls-ruby.gemspec" - (("\"spec/coveralls/simplecov_spec.rb\".freeze, ") - "")))) - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "coveralls-ruby.gemspec" - (("%q.freeze, \\[\"~> 0.16.1\"]") - "%q.freeze"))))))) - (native-inputs - (list git-minimal/pinned - ruby-pry - ruby-rspec - ruby-truthy - ruby-vcr-expat - ruby-webmock)) - (propagated-inputs - (list ruby-json - ruby-term-ansicolor - ruby-thor - ruby-tins - ruby-simplecov)) - (synopsis "Ruby implementation of the Coveralls API") - (description "This package provides a Ruby implementation of the Coveralls -API.") - (home-page "https://coveralls.io") - (license license:expat))) - -(define-public ruby-unindent - (package - (name "ruby-unindent") - (version "1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "unindent" version)) - (sha256 - (base32 - "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd")))) - (build-system ruby-build-system) - (synopsis "Ruby method to unindent strings") - (description "This module provides a @code{String#unindent} Ruby method to -unindent strings, which can be useful to unindent multiline strings embedded -in already-indented code.") - (home-page "https://github.com/mynyml/unindent") - (license license:expat))) - -(define-public ruby-cucumber-core - (package - (name "ruby-cucumber-core") - (version "11.1.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/cucumber-ruby-core") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0lf2inlam0951djc2qz81x0nkffmw2dpj44iadw1fw31m7r8wqvh")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-version-requirements - (lambda _ - (substitute* "cucumber-core.gemspec" - (("'cucumber-tag-expressions',.*") - "'cucumber-tag-expressions', '>=4.1.0'\n"))))))) - (native-inputs - (list ruby-rspec - ruby-coveralls - ruby-rubocop - ruby-simplecov - ruby-unindent)) - (propagated-inputs - (list ruby-cucumber-gherkin - ruby-cucumber-messages - ruby-cucumber-tag-expressions)) - (synopsis "Core library for the Cucumber BDD app") - (description "Cucumber is a tool for running automated tests -written in plain language. Because they're written in plain language, -they can be read by anyone on your team. Because they can be read by -anyone, you can use them to help improve communication, collaboration -and trust on your team.") - (home-page "https://cucumber.io/") - (license license:expat))) - -(define-public ruby-cucumber-expressions - (package - (name "ruby-cucumber-expressions") - (version "16.1.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/cucumber-expressions") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1dhq88k9x2x8svam5bc7rrcd166fqymda8wxryqkbkffhnzla0id")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda _ - (chdir "ruby")))))) - (native-inputs (list ruby-rspec ruby-simplecov)) - (synopsis "Simpler alternative to Regular Expressions") - (description "Cucumber Expressions offer similar functionality to Regular -Expressions, with a syntax that is easier to read and write. Cucumber -Expressions are extensible with parameter types.") - (home-page "https://github.com/cucumber/cucumber-expressions/") - (license license:expat))) - -(define-public ruby-cucumber-wire - (package - (name "ruby-cucumber-wire") - (version "6.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cucumber-wire" version)) - (sha256 - (base32 - "1pmydrh9lcckj7p0cn67jw7msxdkgr9zir86cs19h3mf2zlcv7b9")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f)) ;tests use cucumber, causing a cycle - (propagated-inputs - (list ruby-cucumber-core ruby-cucumber-expressions - ruby-cucumber-messages)) - (synopsis "Cucumber wire protocol plugin") - (description "Cucumber's wire protocol allows step definitions to be -implemented and invoked on any platform.") - (home-page "https://github.com/cucumber/cucumber-ruby-wire") - (license license:expat))) - -(define-public ruby-cucumber-tag-expressions - (package - (name "ruby-cucumber-tag-expressions") - (version "5.0.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/tag-expressions") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1ziq30szn8m5y29hsdpx4dn1a8sy29h01nvcldm8nr1mx4b7dj1w")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda _ - (chdir "ruby")))))) - (native-inputs (list ruby-rspec)) - (synopsis "Cucumber tag expressions for Ruby") - (description "Cucumber tag expression parser for Ruby. A tag expression -is an infix boolean expression used by Cucumber.") - (home-page "https://github.com/cucumber/tag-expressions") - (license license:expat))) - -(define-public ruby-skiptrace - (package - (name "ruby-skiptrace") - (version "0.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "skiptrace" version)) - (sha256 - (base32 - "1qpjy6pqd8hx4w7bai64jsr10mwbpnnb65wcbssyqcnalimi1s12")))) - (build-system ruby-build-system) - (arguments - (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{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/skiptrace") - (license license:expat))) - -(define-public ruby-bio-logger - (package - (name "ruby-bio-logger") - (version "1.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bio-logger" version)) - (sha256 - (base32 - "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; rake errors, missing shoulda - (propagated-inputs - (list ruby-log4r)) - (synopsis "Log4r wrapper for Ruby") - (description "Bio-logger is a wrapper around Log4r adding extra logging -features such as filtering and fine grained logging.") - (home-page "https://github.com/pjotrp/bioruby-logger-plugin") - (license license:expat))) - -(define-public ruby-yajl-ruby - (package - (name "ruby-yajl-ruby") - (version "1.4.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "yajl-ruby" version)) - (sha256 - (base32 - "1lni4jbyrlph7sz8y49q84pb0sbj82lgwvnjnsiv01xf26f4v5wc")))) - (build-system ruby-build-system) - (arguments - (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") - (description - "Ruby C bindings to the Yajl JSON stream-based parser library. The API -is compatible with the JSON gem, so yajl-ruby can act as a drop in -replacement. - -A modified copy of yajl is used, and included in the package.") - (home-page "https://github.com/brianmario/yajl-ruby") - (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h - license:bsd-3)))) ; Included, modified copy of yajl - -(define-public ruby-yard - (package - (name "ruby-yard") - (version "0.9.34") - (source - (origin - (method git-fetch) - ;; Tests do not pass if we build from the distributed gem. - (uri (git-reference - (url "https://github.com/lsegal/yard") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "10jq0hyzyy0d6l63jxld32g36fhrclkb3rwnyp47igcik73kbagb")))) - (build-system ruby-build-system) - (arguments - (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 - ;; # 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 -documentation that can be exported to a number of formats very easily, and -also supports extending for custom Ruby constructs such as custom class level -definitions.") - (home-page "https://yardoc.org") - (license license:expat))) - -(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 - (name "ruby-spectroscope") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "spectroscope" version)) - (sha256 - (base32 - "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (with-output-to-file ".test" - (lambda _ - (display - "\ -require 'ae/should' -require 'rspec' - -include RSpec - -Test.run :default do |run| - run.files << 'spec/*_spec.rb' -end"))) - (invoke "ruby" "-Ilib" "-rrubytest" ".test")))))) - (native-inputs - (list ruby-ae ruby-rspec)) - (propagated-inputs - (list ruby-rubytest)) - (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest") - (description "Spectroscope is a Behavior-Driven Development (BDD) -framework built on RubyTest, designed to emulate RSpec in most respects. It -is assertion framework independent so any number of assertion systems can be -used, such as Assay or AE.") - (home-page "http://rubyworks.github.com/spectroscope/") - (license license:bsd-2))) - -(define-public ruby-tomparse - (package - (name "ruby-tomparse") - (version "0.4.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "tomparse" version)) - (sha256 - (base32 - "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8")))) - (build-system ruby-build-system) - ;; TODO: Tests require citron and rulebow, not yet packaged. - (arguments '(#:tests? #f)) - (synopsis "TomDoc parser for Ruby") - (description "TomParse is a TomDoc parser for Ruby. It takes a code -comment as input and parses it into a convenient object-oriented structure in -accordance with the TomDoc standard. See -@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the -TomDoc format.") - (home-page "http://rubyworks.github.com/tomparse/") - (license license:bsd-2))) - -(define-public ruby-yard-tomdoc - (package - (name "ruby-yard-tomdoc") - (version "0.7.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "yard-tomdoc" version)) - (sha256 - (base32 - "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z")))) - (build-system ruby-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "rubytest" "-Ilib" "-Itest" "test/")))))) - (native-inputs - (list ruby-rubytest-cli ruby-spectroscope ruby-ae)) - (propagated-inputs - (list ruby-tomparse ruby-yard)) - (synopsis "TomDoc syntax for YARD") - (description "This module adds support for the TomDoc documentation format -to YARD, a documentation generation tool for Ruby.") - (home-page "http://rubyworks.github.com/yard-tomdoc/") - (license license:expat))) - -(define-public ruby-clap - (package - (name "ruby-clap") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "clap" version)) - (sha256 - (base32 - "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q")))) - (build-system ruby-build-system) - ;; Clap needs cutest for running tests, but cutest needs clap. - (arguments `(#:tests? #f)) - (synopsis "Command line argument parsing for simple applications") - (description - "Clap provides command line argument parsing features. It covers the -simple case of executing code based on the flags or parameters passed.") - (home-page "https://github.com/djanowski/cutest") - (license license:expat))) - -(define-public ruby-cutest - (package - (name "ruby-cutest") - (version "1.2.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cutest" version)) - (sha256 - (base32 - "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-clap)) - (synopsis "Run tests in separate processes") - (description - "Cutest runs tests in separate processes to avoid shared state.") - (home-page "https://github.com/djanowski/cutest") - (license license:expat))) - -(define-public ruby-pygmentize - (package - (name "ruby-pygmentize") - (version "0.0.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pygmentize" version)) - (sha256 - (base32 - "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-pygmentize-path - (lambda _ - (substitute* "lib/pygmentize.rb" - (("\"/usr/bin/env python.*") - (string-append "\"" (which "pygmentize") "\"\n"))))) - (add-after 'build 'do-not-use-vendor-directory - (lambda _ - ;; Remove bundled pygments sources - ;; FIXME: ruby-build-system does not support snippets. - (delete-file-recursively "vendor") - (substitute* "pygmentize.gemspec" - (("\"vendor/\\*\\*/\\*\",") ""))))))) - (inputs - `(("pygments" ,python-pygments))) - (native-inputs - (list ruby-cutest ruby-nokogiri)) - (synopsis "Thin Ruby wrapper around pygmentize") - (description - "Pygmentize provides a simple way to call pygmentize from within a Ruby -application.") - (home-page "https://github.com/djanowski/pygmentize") - (license license:expat))) - -(define-public ruby-event-emitter - (package - (name "ruby-event-emitter") - (version "0.2.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "event_emitter" version)) - (sha256 - (base32 - "148k9qv8102l3m6klc24dwip79f9y4bjr5z19dckd7ffbjyrf9n7")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "event_emitter.gemspec" - (("~> 1.15") ">= 1.15"))))))) - (synopsis "Ruby port of EventEmitter from Node.js") - (description - "This package provides a Ruby port of EventEmitter from Node.js.") - (home-page "https://shokai.github.io/event_emitter/") - (license license:expat))) - -(define-public ruby-eventmachine - (package - (name "ruby-eventmachine") - (version "1.2.7") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "eventmachine" version)) - (sha256 - (base32 - "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; test suite tries to connect to google.com - (inputs - (list openssl)) - (native-inputs - (list ruby-rake-compiler)) - (synopsis "Single-threaded network event framework for Ruby") - (description - "EventMachine implements a single-threaded engine for arbitrary network -communications. EventMachine wraps all interactions with sockets, allowing -programs to concentrate on the implementation of network protocols. It can be -used to create both network servers and clients.") - ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted. - (home-page "https://github.com/eventmachine/eventmachine") - (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT - -(define-public ruby-ruby-engine - (package - (name "ruby-ruby-engine") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby_engine" version)) - (sha256 - (base32 - "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'clean-up - (lambda _ - (delete-file "Gemfile.lock") - (substitute* "ruby_engine.gemspec" - ;; Remove unnecessary imports that would entail further - ;; dependencies. - ((".*.freeze, \\[\"~> 10.0\"\\]") - "%q.freeze, [\">= 10.0\"]") - ;; Soften the rspec dependency - (("%q.freeze, \\[\"~> 2.4\"\\]") - "%q.freeze, [\">= 2.4\"]")) - (substitute* "Rakefile" - (("require 'rubygems/tasks'") "") - (("Gem::Tasks.new") "")) - ;; Remove extraneous .gem file that otherwise gets installed. - (delete-file-recursively "pkg")))))) - (native-inputs - (list bundler ruby-rake ruby-rspec)) - (synopsis "Simplifies checking for Ruby implementation") - (description - "@code{ruby_engine} provides an RubyEngine class that can be used to -check which implementation of Ruby is in use. It can provide the interpreter -name and provides query methods such as @code{RubyEngine.mri?}.") - (home-page "https://github.com/janlelis/ruby_engine") - (license license:expat))) - -(define-public ruby-mimemagic - (package - (name "ruby-mimemagic") - (version "0.3.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mimemagic" version)) - (sha256 - (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; This phase breaks the tests, as it patches some of the test data. - (delete 'patch-source-shebangs)))) - (native-inputs - (list ruby-bacon)) - (synopsis "Ruby library for MIME detection by extension or content") - (description - "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by -extension or content, using the freedesktop.org.xml shared-mime-info -database.") - (home-page "https://github.com/minad/mimemagic") - (license license:expat))) - -(define-public ruby-mime-types-data - (package - (name "ruby-mime-types-data") - (version "3.2016.0521") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mime-types-data" version)) - (sha256 - (base32 - "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe)) - (synopsis "Registry for information about MIME media type definitions") - (description - "@code{mime-types-data} provides a registry for information about -Multipurpose Internet Mail Extensions (MIME) media type definitions. It can -be used with the Ruby mime-types library or other software to determine -defined filename extensions for MIME types, or to use filename extensions to -look up the likely MIME type definitions.") - (home-page "https://github.com/mime-types/mime-types-data/") - (license license:expat))) - -(define-public ruby-mime-types - (package - (name "ruby-mime-types") - (version "3.4.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mime-types" version)) - (sha256 - (base32 - "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-mime-types-data)) - (native-inputs - (list ruby-hoe - ruby-fivemat - ruby-minitest-focus - ruby-minitest-bonus-assertions - ruby-minitest-hooks)) - (synopsis "Library and registry for MIME content type definitions") - (description "The mime-types library provides a library and registry for -information about Multipurpose Internet Mail Extensions (MIME) content type -definitions. It can be used to determine defined filename extensions for MIME -types, or to use filename extensions to look up the likely MIME type -definitions.") - (home-page "https://github.com/mime-types/ruby-mime-types") - (license license:expat))) - -(define-public ruby-mini-mime - (package - (name "ruby-mini-mime") - (version "1.1.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mini_mime" version)) - (sha256 - (base32 - "0lbim375gw2dk6383qirz13hgdmxlan0vc5da2l072j3qw6fqjm5")))) - (build-system ruby-build-system) - (synopsis "Lightweight mime type lookup toy") - (description "This package provides a lightweight mime type lookup toy.") - (home-page "https://github.com/discourse/mini_mime") - (license license:expat))) - -(define-public ruby-fileutils - (package - (name "ruby-fileutils") - (version "1.7.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/fileutils") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0m68gaqclnc2wflilmrnr19kky2gr6fjf6k3yq02sf9scs281kid")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'disable-problematic-tests - (lambda _ - (substitute* "test/fileutils/test_fileutils.rb" - ;; The 'test_chown' tests depends on /etc/groups, which - ;; doesn't exist in the build environment. - (("def test_chown.*" all) - (string-append all " return true\n")) - ;; The 'test_cp_r_dev' expects a RuntimeError to be raised - ;; when copying a char device to a directory, but this is not - ;; triggered in the build environment, for reasons unknown. - (("def test_cp_r_dev.*" all) - (string-append all " return true\n")))))))) - (synopsis "Ruby utility library to manipulate files") - (description "The FileUtils Ruby library includes Several file utility -methods for copying, moving, removing, etc.") - (home-page "https://github.com/ruby/fileutils") - (license license:bsd-2))) - -(define-public ruby-fivemat - (package - (name "ruby-fivemat") - (version "1.3.7") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "fivemat" version)) - (sha256 - (base32 - "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; no tests - (synopsis "Each test file given its own line of dots") - (description - "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file -its own line of dots during testing. It aims to provide test output that is -neither too verbose nor too minimal.") - (home-page "https://github.com/tpope/fivemat") - (license license:expat))) - -(define-public ruby-sqlite3 - (package - (name "ruby-sqlite3") - (version "2.5.0") - (source - (origin - (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 - "1fanv7bv5lszd5g752yy8nmpjhrl9gqwbbkbis2xbh83y96f2zfm")))) - (build-system ruby-build-system) - (arguments - (list - #:gem-flags #~(list "--" "--enable-system-libraries") - #:modules '((guix build ruby-build-system) - (guix build utils) - (ice-9 rdelim) - (ice-9 textual-ports)) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - ;; Don't try to format C code, remove rubocop-rake. - (delete-file "rakelib/format.rake") - ;; Don't try to run valgrind-like memory tests. - ;; This cuts all lines after Minitest::TestTask.create - (with-atomic-file-replacement - "rakelib/test.rake" - (lambda (in out) - (let loop () - (let ((line (read-line in))) - (cond - ((eof-object? line) #f) - ((string-prefix? "Minitest::TestTask.create" line) #f) - (else - (format out "~a~%" line) - (loop))))))))) - (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-rake-compiler-dock)) - (synopsis "Interface with SQLite3 databases") - (description - "This module allows Ruby programs to interface with the SQLite3 database -engine.") - (home-page - "https://github.com/sparklemotion/sqlite3-ruby") - (license license:bsd-3))) - -(define-public ruby-sqlite3-1.4 - (package/inherit ruby-sqlite3 - (name "ruby-sqlite3") - (version "1.4.4") - (source - (origin - (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 - "0ngirjbai3f5ki2sf6m4gxbbrjpr3b35bz5nrz1cifyw1jk6a6sr")))) - (arguments - (substitute-keyword-arguments (package-arguments ruby-sqlite3) - ((#:tests? #t #t) #f) - ((#:phases phases #~%standard-phases) - #~(modify-phases #$phases - (delete 'relax-requirements) - (add-after 'unpack 'fix-version - (lambda _ - (substitute* "sqlite3.gemspec" - (("s\\.version = .*") - (format #f "s.version = ~s~%" #$version))))))))))) - -(define-public ruby-shoulda-context - (package - (name "ruby-shoulda-context") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "shoulda-context" version)) - (sha256 - (base32 - "0d1clcp92jv8756h09kbc55qiqncn666alx0s83za06q5hs4bpvs")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; Do not run tests to avoid circular dependence with rails. - ;; Instead just import the library to test. - (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))) - (synopsis "Test::Unit context framework extracted from Shoulda") - (description - "@code{shoulda-context} is the context framework extracted from Shoulda. -Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds -context, setup, and should blocks combine to produce natural test method -names.") - (home-page "https://github.com/thoughtbot/shoulda-context") - (license license:expat))) - -(define-public ruby-shoulda-matchers - (package - (name "ruby-shoulda-matchers") - (version "5.3.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "shoulda-matchers" version)) - (sha256 - (base32 - "11igjgh16dl5pwqizdmclzlzpv7mbmnh8fx7m9b5kfsjhwxqdfpn")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; Do not run tests to avoid circular dependence with rails. Instead - ;; just import the library to test. - (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))) - (propagated-inputs - (list ruby-activesupport)) - (synopsis "Collection of testing matchers extracted from Shoulda") - (description - "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that -test common Rails functionality. These tests would otherwise be much longer, -more complex, and error-prone.") - (home-page "https://github.com/thoughtbot/shoulda-matchers") - (license license:expat))) - -(define-public ruby-shoulda - (package - (name "ruby-shoulda") - (version "4.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "shoulda" version)) - (sha256 - (base32 - "02lww34kn1g6lidp4rx4rs6bqvirrzxlfw1y2wm11aif8f622xz6")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; Don't run tests to avoid circular dependence with rails. - ;; Instead just import the library to test. - (invoke "ruby" "-Ilib" "-r" "shoulda")))) - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "shoulda.gemspec" - ;; An older version of shoulda-matchers (4.0) is used, out of - ;; little maintenance rather than because of an real - ;; incompatibility (see: - ;; https://github.com/thoughtbot/shoulda/issues/275). - ((", \\[\"~> 4.0\"]") ""))))))) - (propagated-inputs - (list ruby-shoulda-context ruby-shoulda-matchers)) - (synopsis "Context framework and matchers for testing") - (description - "@code{shoulda} is a meta-package combining @code{shoulda-context} and -@code{shoulda-matchers} providing tools for writing tests.") - (home-page "https://github.com/thoughtbot/shoulda") - (license license:expat))) - -(define-public ruby-unf - (package - (name "ruby-unf") - (version "0.1.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "unf" version)) - (sha256 - (base32 - "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'add-dependency-to-bundler - (lambda _ - ;; test-unit is required but not provided by the bundler - ;; environment. This is fixed in the upstream repository but fix - ;; has not been released. - (substitute* "Gemfile" - (("^gemspec") "gem 'test-unit'\ngemspec"))))))) - (propagated-inputs - (list ruby-unf-ext)) - (native-inputs - (list ruby-shoulda bundler ruby-test-unit)) - (synopsis "Unicode Normalization Form support to Ruby and JRuby") - (description - "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form -support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and -@code{java.text.Normalizer} on JRuby.") - (home-page "https://github.com/knu/ruby-unf") - (license license:bsd-2))) - -(define-public ruby-warden - (package - (name "ruby-warden") - (version "1.2.8") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "warden" version)) - (sha256 - (base32 - "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (propagated-inputs - (list ruby-rack)) - (synopsis "Rack middleware providing authentication") - (description - "Warden is a Rack-based middleware that provides a mechanism for -authentication in Ruby web applications.") - (home-page "https://github.com/wardencommunity/warden") - (license license:expat))) - -(define-public ruby-warden-oauth2 - (package - (name "ruby-warden-oauth2") - (version "0.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "warden-oauth2" version)) - (sha256 - (base32 - "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "Gemfile" - ;; All of these gems relate to development, and are unnecessary - ;; when running the tests - (("gem 'guard-bundler'") "") - (("gem 'guard'") "") - (("gem 'guard-rspec'") "") - (("gem 'rb-fsevent'") "") - (("gem 'pry'") "") - (("gem 'growl'") "")))) - ;; The test suite doesn't work with rspec@2, and this is incompatible - ;; with the current version of Rake, so invoke Rspec directly - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "bundle" "exec" "rspec"))))))) - (propagated-inputs - (list ruby-warden)) - (native-inputs - (list bundler ruby-rspec-2 ruby-rack-test)) - (synopsis "OAuth 2.0 strategies for Warden") - (description - "This library extends Warden to support OAuth 2.0 authorized API -requests.") - (home-page "https://github.com/opperator/warden-oauth2") - (license license:expat))) - -(define-public ruby-webmock - (package - (name "ruby-webmock") - (version "3.11.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "webmock" version)) - (sha256 - (base32 - "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v")))) - (build-system ruby-build-system) - (native-inputs - (list bundler ruby-rspec)) - (propagated-inputs - (list ruby-addressable ruby-crack ruby-hashdiff)) - (synopsis "Allows stubbing and setting expectations on HTTP requests") - (description - "WebMock allows stubbing HTTP requests and setting expectations on HTTP -requests. This is useful when testing software.") - (home-page "https://github.com/bblimke/webmock") - (license license:expat))) - -(define-public ruby-webmock-2 - (package - (inherit ruby-webmock) - (name "ruby-webmock") - (version "2.3.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "webmock" version)) - (sha256 - (base32 - "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5")))))) - -(define-public ruby-unicode-display-width - (package - (name "ruby-unicode-display-width") - (version "2.4.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "unicode-display_width" version)) - (sha256 - (base32 - "1gi82k102q7bkmfi7ggn9ciypn897ylln1jk9q67kjhr39fj043a")))) - (build-system ruby-build-system) - (arguments - '(;; Test data not included. - #:tests? #f)) - (synopsis "Determine the monospace display width of Ruby strings") - (description - "@code{Unicode::DisplayWidth} is a Ruby library which can determine the -display width of strings in Ruby.") - (home-page "https://github.com/janlelis/unicode-display_width") - (license license:expat))) - -;; There is another gem called 'ruby-version' so we use an underscore in this -;; name -(define-public ruby_version - (package - (name "ruby_version") - (version "1.0.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby_version" version)) - (sha256 - (base32 - "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'fix-dependencies - (lambda _ - ;; Remove the Gemfile.lock, as we want to use Guix packages at - ;; whatever versions. - (delete-file "Gemfile.lock") - ;; Remove the included gem files as they unnecessary. - (delete-file-recursively "pkg/") - ;; Accept any version of rake, rdoc and rspec - (substitute* "ruby_version.gemspec" - (("%q)\n") - (("%q)\n") - (("%q)\n")) - ;; Do not use bundler. - (substitute* "Rakefile" - (("Bundler\\.setup.*") "nil\n"))))))) - (native-inputs - (list ruby-rdoc ruby-rspec ruby-rubygems-tasks)) - (synopsis "Ruby library to help check the Ruby version") - (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify -checking for the right Ruby version in software.") - (home-page "https://github.com/janlelis/ruby_version") - (license license:expat))) - -(define-public ruby-websocket-client-simple - (package - (name "ruby-websocket-client-simple") - (version "0.6.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "websocket-client-simple" version)) - (sha256 - (base32 - "1ypl4xvlh5c99zbn20sifv7gv04zi20ly464vsgikfrpn5f37bid")))) - (build-system ruby-build-system) - (arguments (list #:test-target "default")) - (native-inputs (list ruby-eventmachine ruby-websocket-eventmachine-server)) - (propagated-inputs (list ruby-event-emitter ruby-websocket)) - (synopsis "Simple WebSocket client for Ruby") - (description "This package provides a simple WebSocket client for Ruby.") - (home-page "https://github.com/ruby-jp/websocket-client-simple") - (license license:expat))) - -(define-public ruby-websocket-eventmachine-base - (package - (name "ruby-websocket-eventmachine-base") - (version "1.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "websocket-eventmachine-base" version)) - (sha256 - (base32 - "0wiz61mcwgs3k21cdr5l9b4jpg29gl6mflfampww2v525yc3hr1r")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f)) ;no test suite - (propagated-inputs (list ruby-eventmachine ruby-websocket - ruby-websocket-native)) - (synopsis "WebSocket base for Ruby client and server") - (description "This package provides a WebSocket base for a Ruby client and -server.") - (home-page "https://github.com/imanel/websocket-eventmachine-base") - (license license:expat))) - -(define-public ruby-websocket-eventmachine-server - (package - (name "ruby-websocket-eventmachine-server") - (version "1.0.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "websocket-eventmachine-server" version)) - (sha256 - (base32 - "0iqpzc8s028nck1flqaj784gvyn64wy1h3svpa4y2847wklg8sms")))) - (build-system ruby-build-system) - ;; TODO: The test suite requires Autobahn, not yet packaged in Guix. - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-websocket-eventmachine-base)) - (synopsis "WebSocket server for Ruby") - (description "This package provides a WebSocket server for Ruby.") - (home-page "https://github.com/imanel/websocket-eventmachine-server") - (license license:expat))) - -(define-public ruby-websocket-native - (package - (name "ruby-websocket-native") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "websocket-native" version)) - (sha256 - (base32 - "1kgvd3gyzh7hk0ddzn85jrs4csxm54qnvla95ldyn6rzgfbjchdn")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-before 'check 'disable-problematic-tests - (lambda _ - (substitute* "spec/websocket_spec.rb" - (("it \"should have mask_native defined\"" all) - (string-append "x" all))))) - (add-after 'build 'compile - (lambda _ - (invoke "rake" "compile")))))) - (native-inputs (list ruby-rake-compiler ruby-rspec)) - (synopsis "Native Ruby extension for the WebSocket gem") - (description "This package provides a native extension that can increase -performance by about 25% compared to the pure Ruby WebSocket implementation.") - (home-page "https://github.com/imanel/websocket-ruby-native") - (license license:expat))) - -(define-public ruby-websocket-driver - (package - (name "ruby-websocket-driver") - (version "0.7.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "websocket-driver" version)) - (sha256 - (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no included tests - (propagated-inputs - (list ruby-websocket-extensions)) - (synopsis "WebSocket protocol handler with pluggable I/O") - (description - "@code{websocket-driver} provides a complete implementation of the -WebSocket protocols that can be hooked up to any TCP library") - (home-page "https://github.com/faye/websocket-driver-ruby") - (license license:expat))) - -(define-public ruby-websocket-extensions - (package - (name "ruby-websocket-extensions") - (version "0.1.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "websocket-extensions" version)) - (sha256 - (base32 - "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270")))) - (build-system ruby-build-system) - (arguments - '(;; No included tests - #:tests? #f)) - (synopsis "Generic extension manager for WebSocket connections") - (description - "@code{websocket-extensions} provides a container for registering -extension plugins.") - (home-page "https://github.com/faye/websocket-extensions-ruby") - (license license:expat))) - -(define-public ruby-domain-name - (package - (name "ruby-domain-name") - (version "0.5.20190701") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "domain_name" version)) - (sha256 - (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'fix-versions - (lambda _ - ;; Fix NameError that appears to already be fixed upstream. - (substitute* "Rakefile" - (("DomainName::VERSION") - "Bundler::GemHelper.gemspec.version")) - ;; Loosen unnecessarily strict test-unit version specification. - (substitute* "domain_name.gemspec" - ((".freeze, \\[\\\"~> 2.5.5") ", [\">0")) - #t))))) - (propagated-inputs - (list ruby-unf)) - (native-inputs - (list ruby-shoulda bundler ruby-test-unit)) - (synopsis "Domain name manipulation library") - (description - "@code{domain_name} is a Domain name manipulation library. It parses a -domain name ready for extracting the registered domain and TLD (Top Level -Domain). It can also be used for cookie domain validation based on the Public -Suffix List.") - (home-page "https://github.com/knu/ruby-domain_name") - (license license:bsd-2))) - -(define-public ruby-dotenv - (package - (name "ruby-dotenv") - (version "3.1.7") - (source (origin - (method git-fetch) ;for the tests - (uri (git-reference - (url "https://github.com/bkeepers/dotenv") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19j0acy12si537hwi4q54q8n5ycmlvfd2ik5y6r7jir6ww06l8yx")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'do-not-build-dotenv-rails - (lambda _ - ;; The repository includes the definitions of two packages, - ;; 'dotenv' and 'dotenv-rails'. Since we want to package them - ;; separately, remove the dotenv-rails and associated Rake - ;; tasks. - (delete-file "dotenv-rails.gemspec") - (delete-file "spec/dotenv/rails_spec.rb") - (delete-file "spec/dotenv/log_subscriber_spec.rb") - (substitute* "spec/spec_helper.rb" - (("require \"dotenv\"" all) - (string-append "require \"pathname\"\n" all))) - (substitute* "Rakefile" - (("DotenvRailsGemHelper.install_tasks name: \"dotenv-rails\"") - "") - ((", \"dotenv-rails:.*\"") - "")))) - (replace 'replace-git-ls-files - (lambda _ - (substitute* "dotenv.gemspec" - (("`git ls-files (README.md LICENSE lib bin) \\| ([^`]*`)" - all files command) - (string-append - "`find " files " -type f | sort | " command)))))))) - (native-inputs (list ruby-standard ruby-rspec)) - (synopsis "Ruby library for setting environment variables") - (description "Dotenv is a Ruby library for setting environment variables -defined in a @file{.env} file.") - (home-page "https://github.com/bkeepers/dotenv") - (license license:expat))) - -(define-public ruby-dotenv-rails - (package - (inherit ruby-dotenv) - (name "ruby-dotenv-rails") - (arguments - (substitute-keyword-arguments (package-arguments ruby-dotenv) - ((#:phases phases '%standard-phases) - #~(modify-phases #$phases - (delete 'do-not-build-dotenv-rails) - (add-after 'unpack 'delete-Gemfile - (lambda _ - ;; It defines extraneous dependencies; remove it. - (delete-file "Gemfile"))) - (add-after 'unpack 'remove-extraneous-gemspec - (lambda _ - (delete-file "dotenv.gemspec") - (substitute* "Gemfile" - ((".*\"dotenv\".*") "")) - (substitute* "Rakefile" - ;; Remove the dotenv-related Rake tasks. - (("Bundler::GemHelper.install_tasks name: \"dotenv\"") - "") - (("\"dotenv:[^\"]*\", ") - "")))) - (replace 'replace-git-ls-files - (lambda _ - (substitute* "dotenv-rails.gemspec" - (("`git ls-files lib \\| grep rails`") - "`find lib -type f | sort | grep rails`")))))))) - (native-inputs (list ruby-rspec ruby-spring ruby-standard)) - (propagated-inputs (list ruby-dotenv ruby-railties)) - (synopsis "Ruby library for setting environment variables in Rails project") - (description "Dotenv is a Ruby library for setting environment variables -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.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "http-cookie" version)) - (sha256 - (base32 - "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk")))) - (build-system ruby-build-system) - (arguments - (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 - (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 -RFC 6265. It has been designed with security, standards compliance and -compatibility in mind, to behave just the same as today's major web browsers. -It has built-in support for the legacy @code{cookies.txt} and -@code{cookies.sqlite} formats of Mozilla Firefox.") - (home-page "https://github.com/sparklemotion/http-cookie") - (license license:expat))) - -(define-public ruby-httpclient - (package - (name "ruby-httpclient") - (version "2.8.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "httpclient" version)) - (sha256 - (base32 - "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: Some tests currently fail - ;; ------ - ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings, - ;; 2 omissions, 0 notifications - ;; 91.866% passed - ;; ------ - ;; 6.49 tests/s, 22.41 assertions/s - #:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (if tests? - (invoke "ruby" - "-Ilib" - "test/runner.rb"))))))) - (native-inputs - (list ruby-rack)) - (synopsis - "Make HTTP requests with support for HTTPS, Cookies, authentication and more") - (description - "The @code{httpclient} ruby library provides functionality related to -HTTP. Compared to the @code{net/http} library, @code{httpclient} also provides -Cookie, multithreading and authentication (digest, NTLM) support. - -Also provided is a @command{httpclient} command, which can perform HTTP -requests either using arguments or with an interactive prompt.") - (home-page "https://github.com/nahi/httpclient") - (license license:ruby))) - -(define-public ruby-ansi - (package - (name "ruby-ansi") - (version "1.5.0") - (source - (origin - (method git-fetch) - ;; Fetch from GitHub as the gem does not contain testing code. - (uri (git-reference - (url "https://github.com/rubyworks/ansi") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; Disable testing to break the cycle ansi, ae, ansi, as well as the - ;; cycle ansi, qed, ansi. Instead simply test that the library can - ;; be require'd. - (replace 'check - (lambda _ - (invoke "ruby" "-Ilib" "-r" "ansi"))) - (add-before 'validate-runpath 'replace-broken-symlink - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (file (string-append - out "/lib/ruby/vendor_ruby/gems/ansi-" - ,version "/lib/ansi.yml"))) - ;; XXX: This symlink is broken since ruby 2.4. - ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html - (delete-file file) - (symlink "../.index" file))))))) - (synopsis "ANSI escape code related libraries") - (description - "This package is a collection of ANSI escape code related libraries -enabling ANSI colorization and stylization of console output. Included in the -library are the @code{Code} module, which defines ANSI codes as constants and -methods, a @code{Mixin} module for including color methods, a @code{Logger}, a -@code{ProgressBar}, and a @code{String} subclass. The library also includes a -@code{Terminal} module which provides information about the current output -device.") - (home-page "https://rubyworks.github.io/ansi/") - (license license:bsd-2))) - -(define-public ruby-systemu - (package - (name "ruby-systemu") - (version "2.6.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "systemu" version)) - (sha256 - (base32 - "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'set-version - (lambda _ - (setenv "VERSION" ,version)))))) - (synopsis "Capture of stdout/stderr and handling of child processes") - (description - "Systemu can be used on any platform to return status, stdout, and stderr -of any command. Unlike other methods like @code{open3} and @code{popen4} -there is no danger of full pipes or threading issues hanging your process or -subprocess.") - (home-page "https://github.com/ahoward/systemu") - (license license:ruby))) - -(define-public ruby-bcrypt - (package - (name "ruby-bcrypt") - (version "3.1.20") - ;; FIXME: Unbundle the bcrypt library used. - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/bcrypt-ruby/bcrypt-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0q6h8kmjb34hg6qjv31v374n3cavv00drsfyzv6nybdwipgyg62i")))) - (build-system ruby-build-system) - (arguments (list #:test-target "default")) ;compile + spec - (native-inputs (list ruby-rake-compiler ruby-rspec)) - (synopsis "Ruby bcrypt wrapper") - (description "This Ruby library provides a simple wrapper to bcrypt, a -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") - (version "0.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bio-commandeer" version)) - (sha256 - (base32 - "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - ;; Run test without calling 'rake' so that jeweler is - ;; not required as an input. - (lambda _ - (invoke "rspec" "spec/bio-commandeer_spec.rb")))))) - (propagated-inputs - (list ruby-bio-logger ruby-systemu)) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Simplified running of shell commands from within Ruby") - (description - "Bio-commandeer provides an opinionated method of running shell commands -from within Ruby. The advantage of bio-commandeer over other methods of -running external commands is that when something goes wrong, messages printed -to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra -detail to ease debugging.") - (home-page "https://github.com/wwood/bioruby-commandeer") - (license license:expat))) - -(define-public ruby-rubytest - (package - (name "ruby-rubytest") - (version "0.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rubytest" version)) - (sha256 - (base32 - "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz")))) - (build-system ruby-build-system) - (arguments - ;; Disable regular testing to break the cycle rubytest, qed, brass, - ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead - ;; simply test that the library can be require'd. - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "ruby" "-Ilib" "-r" "rubytest")))))) - (propagated-inputs - (list ruby-ansi)) - (synopsis "Universal test harness for Ruby") - (description - "Rubytest is a testing meta-framework for Ruby. It can handle any -compliant test framework and can run tests from multiple frameworks in a -single pass.") - (home-page "https://rubyworks.github.io/rubytest") - (license license:bsd-2))) - -(define-public ruby-brass - (package - (name "ruby-brass") - (version "1.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "brass" version)) - (sha256 - (base32 - "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka")))) - (build-system ruby-build-system) - (arguments - ;; Disable tests to break the cycle brass, lemon, ae, qed, brass. - ;; Instead simply test that the library can be require'd. - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" "-Ilib" "-r" "brass"))))))) - (synopsis "Basic foundational assertions framework") - (description - "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic -foundational assertions framework for other assertion and test frameworks to -make use of.") - (home-page "https://rubyworks.github.io/brass") - (license license:bsd-2))) - -(define-public ruby-qed - (package - (name "ruby-qed") - (version "2.9.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "qed" version)) - (sha256 - (base32 - "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" "-Ilib" "bin/qed"))))))) - (native-inputs - (list ruby-ae-bootstrap)) - (propagated-inputs - (list ruby-ansi ruby-brass)) - (synopsis "Test framework utilizing literate programming techniques") - (description - "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for -@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven -Development} (BDD) utilizing Literate Programming techniques. QED sits -somewhere between lower-level testing tools like @code{Test::Unit} and -requirement specifications systems like Cucumber.") - (home-page "https://rubyworks.github.io/qed") - (license license:bsd-2))) - -(define-public ruby-que - (package - (name "ruby-que") - (version "1.0.0.beta3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "que" version)) - (sha256 - (base32 - "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (synopsis "Job queue using PostgreSQL written in Ruby") - (description - "This package provides a job queue that uses PostgreSQL for storing jobs -and locking between worker processes.") - (home-page "https://github.com/chanks/que") - (license license:expat))) - -(define-public ruby-queue-classic - (package - (name "ruby-queue-classic") - (version "4.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "queue_classic" version)) - (sha256 - (base32 - "0npyhajf2fc80apkw9s2kj0n254w5lcl4xpjidg5d5w1fb19abh6")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) ;tests require a postgresql server - (native-inputs (list ruby-activerecord ruby-minitest-reporters)) - (propagated-inputs (list ruby-pg)) - (synopsis "Queuing library for Ruby") - (description "@code{queue_classic} is a queuing library for Ruby -applications (Rails, Sinatra, etc.) @code{queue_classic} features -asynchronous job polling, database maintained locks and has a single -dependency, @code{pg}.") - (home-page "https://github.com/QueueClassic/queue_classic") - (license license:expat))) - -(define-public ruby-pairing-heap - (package - (name "ruby-pairing-heap") - (version "3.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pairing_heap" version)) - (sha256 - (base32 - "059kqpw53cancnp0bp7y1s74y1955riw33w3lqfbnms4b4mdh5zj")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "Rakefile" - (("require \"standard/rake\"") "") - ((":\"standard:fix\",") ""))))))) - (synopsis "Priority queue in pure Ruby") - (description "This package provides a performant priority queue in pure -ruby with support for changing priority using pairing heap data structure") - (home-page "https://github.com/mhib/pairing_heap") - (license license:expat))) - -(define-public ruby-ae - (package - (name "ruby-ae") - (version "1.8.2") - (source - (origin - (method git-fetch) - ;; Fetch from github so tests are included. - (uri (git-reference - (url "https://github.com/rubyworks/ae") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "qed")))) - (add-before 'validate-runpath 'replace-broken-symlink - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (file (string-append - out "/lib/ruby/vendor_ruby/gems/ae-" - ,version "/lib/ae.yml"))) - ;; XXX: This symlink is broken since ruby 2.4. - ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html - (delete-file file) - (symlink "../.index" file))))))) - (propagated-inputs - (list ruby-ansi)) - (native-inputs - (list ruby-qed)) - (synopsis "Assertions library") - (description - "Assertive Expressive (AE) is an assertions library specifically designed -for reuse by other test frameworks.") - (home-page "https://rubyworks.github.io/ae/") - (license license:bsd-2))) - -(define-public ruby-ae-bootstrap - (hidden-package - (package/inherit ruby-ae - (arguments - (substitute-keyword-arguments - (package-arguments ruby-ae) - ((#:tests? _ #t) #f))) - (native-inputs '())))) - -(define-public ruby-lemon - (package - (name "ruby-lemon") - (version "0.9.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "lemon" version)) - (sha256 - (base32 - "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check (lambda _ (invoke "qed")))))) - (propagated-inputs - (list ruby-ae ruby-ansi ruby-rubytest)) - (native-inputs - (list ruby-qed)) - (synopsis "Test framework correlating code structure and test unit") - (description - "Lemon is a unit testing framework that enforces highly formal -case-to-class and unit-to-method test construction. This enforcement can help -focus concern on individual units of behavior.") - (home-page "https://rubyworks.github.io/lemon") - (license license:bsd-2))) - -(define-public ruby-rubytest-cli - (package - (name "ruby-rubytest-cli") - (version "0.2.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rubytest-cli" version)) - (sha256 - (base32 - "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; no tests - (propagated-inputs - (list ruby-ansi ruby-rubytest)) - (synopsis "Command-line interface for rubytest") - (description - "Rubytest CLI is a command-line interface for running tests for -Rubytest-based test frameworks. It provides the @code{rubytest} executable.") - (home-page "https://rubyworks.github.io/rubytest-cli") - (license license:bsd-2))) - -(define-public ruby-hashery - (package - (name "ruby-hashery") - (version "2.1.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "hashery" version)) - (sha256 - (base32 - "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "qed") - (invoke "rubytest" "-Ilib" "-Itest" "test/")))))) - (native-inputs - (list ruby-rubytest-cli ruby-qed ruby-lemon)) - (synopsis "Hash-like classes with extra features") - (description - "The Hashery is a tight collection of @code{Hash}-like classes. -Included are the auto-sorting @code{Dictionary} class, the efficient -@code{LRUHash}, the flexible @code{OpenHash} and the convenient -@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which -defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's -standard @code{Hash} making it possible to subclass and augment to fit any -specific use case.") - (home-page "https://rubyworks.github.io/hashery") - (license license:bsd-2))) - -(define-public ruby-rc4 - (package - (name "ruby-rc4") - (version "0.1.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby-rc4" version)) - (sha256 - (base32 - "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "rspec" "spec/rc4_spec.rb")))))) - (native-inputs - (list ruby-rspec-2)) - (synopsis "Implementation of the RC4 algorithm") - (description - "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.") - (home-page "https://github.com/caiges/Ruby-RC4") - (license license:expat))) - -(define-public ruby-afm - (package - (name "ruby-afm") - (version "0.2.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "afm" version)) - (sha256 - (base32 - "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8")))) - (build-system ruby-build-system) - (native-inputs - (list bundler)) - (synopsis "Read Adobe Font Metrics (afm) files") - (description - "This library provides methods to read @dfn{Adobe Font Metrics} (afm) -files and use the data therein.") - (home-page "https://github.com/halfbyte/afm") - (license license:expat))) - -(define-public ruby-ascii85 - (package - (name "ruby-ascii85") - (version "1.0.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "Ascii85" version)) - (sha256 - (base32 - "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs")))) - (build-system ruby-build-system) - (native-inputs - (list bundler)) - (synopsis "Encode and decode Ascii85 binary-to-text encoding") - (description - "This library provides methods to encode and decode Ascii85 -binary-to-text encoding. The main modern use of Ascii85 is in PostScript and -@dfn{Portable Document Format} (PDF) file formats.") - (home-page "https://github.com/datawraith/ascii85gem") - (license license:expat))) - -(define-public ruby-ttfunk - (package - (name "ruby-ttfunk") - (version "1.7.0") - (source - (origin - (method git-fetch) - ;; Fetch from github as the gem does not contain testing code. - (uri (git-reference - (url "https://github.com/prawnpdf/ttfunk") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1jyxn928mpyb1sikjd93s3v8fmh33232pq41ziaph513j7am6fi5")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" ;avoid the rubocop target - #: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* "ttfunk.gemspec" - ((".*spec.signing_key.*") ""))))))) - (native-inputs (list ruby-prawn-dev)) - (synopsis "Font metrics parser for the Prawn PDF generator") - (description - "TTFunk is a TrueType font parser written in pure Ruby. It is used as -part of the Prawn PDF generator.") - (home-page "https://github.com/prawnpdf/ttfunk") - ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE - ;; for details." - (license %prawn-project-licenses))) - -(define-public ruby-puma - (package - (name "ruby-puma") - (version "6.6.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 - "1pdd7s403pi4y75s1sb4jkghhmm2w9zcqifj7z7yx4z0qfs7lvzv")))) - (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") - ;; The Openssl certificate has expired, causing these tests to fail. - (skip-tests "test/test_puma_server_ssl.rb" - "test_verify_fail_if_client_expired_cert" - "test_verify_client_cert" - "test_server_ssl_with_cert_pem_and_key_pem") - (skip-tests "test/test_integration_ssl.rb" - "test_ssl_run_with_curl_client") - (skip-tests "test/test_web_concurrency_auto.rb" "\ -test_web_concurrency_with_concurrent_ruby_unavailable") - (skip-tests "test/helpers/integration.rb" - "test_puma_started_log_writing")))) - (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-rackup-1 - ruby-rake-compiler - ruby-webrick)) - (inputs - (list openssl - ruby-nio4r)) - (propagated-inputs - (list ruby-concurrent-ruby)) - (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))) - -(define-public ruby-hoe-git - (package - (name "ruby-hoe-git") - (version "1.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "hoe-git" version)) - (sha256 - (base32 - "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-hoe-3)) - (synopsis "Hoe plugins for tighter Git integration") - (description - "This package provides a set of Hoe plugins for tighter Git integration. -It provides tasks to automate release tagging and pushing and changelog -generation.") - (home-page "https://github.com/jbarnette/hoe-git") - (license license:expat))) - -(define-public ruby-hoe-markdown - (package - (name "ruby-hoe-markdown") - (version "1.4.0") - (home-page "https://github.com/flavorjones/hoe-markdown") - (source - (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0wb0yjdx9gx9r0cahpx42pblvglgh1i9pdfxjavq7f40nan2g076")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-before 'check 'disable-bundler-dependency - (lambda _ - (substitute* "spec/spec_helper.rb" - (("require.*bundler/setup.*") - ""))))))) - (native-inputs - (list ruby-rspec)) - (propagated-inputs - (list ruby-rake)) - (synopsis "Hoe plugin with Markdown helpers") - (description - "This package provides a Hoe plugin with various Markdown helpers, which -can be used to e.g. hyperlink Markdown documentation between project files.") - (license license:expat))) - -(define-public ruby-sequel - (package - (name "ruby-sequel") - (version "5.47.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sequel" version)) - (sha256 - (base32 - "03pmhj4kc3ga75wy397l57bvd18jxxmrk3qsznjw93b993qgvj3z")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks. - (synopsis "Database toolkit for Ruby") - (description "Sequel provides thread safety, connection pooling and a -concise DSL for constructing SQL queries and table schemas. It includes a -comprehensive ORM layer for mapping records to Ruby objects and handling -associated records.") - (home-page "https://sequel.jeremyevans.net") - (license license:expat))) - -(define-public ruby-timecop - (package - (name "ruby-timecop") - (version "0.9.6") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "timecop" version)) - (sha256 - (base32 - "0dlx4gx0zh836i7nzna03xdl7fc233s5z6plnr6k3kw46ah8d1fc")))) - (build-system ruby-build-system) - (arguments - (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 - ruby-pry)) - (synopsis "Test mocks for time-dependent functions") - (description - "Timecop provides \"time travel\" and \"time freezing\" capabilities, -making it easier to test time-dependent code. It provides a unified method to -mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single -call.") - (home-page "https://github.com/travisjeffery/timecop") - (license license:expat))) - -(define-public ruby-concurrent-ruby - (package - (name "ruby-concurrent-ruby") - (version "1.3.5") - (source (origin - (method git-fetch) - (uri (git-reference ;for tests - (url "https://github.com/ruby-concurrency/concurrent-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0f0apna8k9cwnpa4lddwimywxzznrd4rjv4m0lka2i54z49iky73")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ;the test suite is run in ruby-concurrent-ruby-edge - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'delete-unwanted-gemspecs - (lambda _ - (for-each delete-file - '("concurrent-ruby-ext.gemspec" - "concurrent-ruby-edge.gemspec")))) - (add-after 'unpack 'do-not-install-concurrent_ruby.jar - (lambda _ - ;; This file is only built when building the Java - ;; extension. - (substitute* "concurrent-ruby.gemspec" - (("'lib/concurrent-ruby/concurrent/concurrent_ruby.jar'") - ""))))))) - (synopsis "Concurrency library for Ruby") - (description "Concurrent Ruby includes concurrency tools such as agents, -futures, promises, thread pools, actors, supervisors, and more. It is -inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency -patterns.") - (home-page "https://github.com/ruby-concurrency/concurrent-ruby") - (license license:expat))) - -;;; The 'gem' is called 'concurrent-ruby'; reversing its name was confusing -;;; and failed to be picked by the gem importer (which led to this newer -;;; package). -(define-public ruby-concurrent - (deprecated-package "ruby-concurrent" ruby-concurrent-ruby)) - -(define-public ruby-concurrent-ruby-ext - (package - (inherit ruby-concurrent-ruby) - (name "ruby-concurrent-ruby-ext") - (arguments - (list - #:tests? #f ;tested as part of concurrent-ruby-edge - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'delete-unwanted-gemspecs - (lambda _ - (for-each delete-file - '("concurrent-ruby.gemspec" - "concurrent-ruby-edge.gemspec"))))))) - (native-inputs (list ruby-rake-compiler)) - (propagated-inputs (list ruby-concurrent-ruby)) - (synopsis "C extensions for concurrent-ruby") - (description "This package provides C extensions to optimize the -concurrent-ruby gem when running under the Matz's Ruby Interpreter (MRI, also -known as CRuby)."))) - -(define-public ruby-concurrent-ruby-edge - (package - (inherit ruby-concurrent-ruby) - (name "ruby-concurrent-ruby-edge") - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'delete-unwanted-gemspecs - (lambda _ - (for-each delete-file - '("concurrent-ruby.gemspec" - "concurrent-ruby-ext.gemspec")))) - ;; The tests rely on the Gem being installed, so move the check - ;; phase after the install phase. - (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? - (invoke "rake" "ci"))))))) - (native-inputs - (list ruby-rake-compiler - ruby-rake-compiler-dock - ruby-rspec - ruby-timecop - ruby-yard)) - (propagated-inputs - (list ruby-concurrent-ruby ruby-concurrent-ruby-ext)) - (synopsis "Edge features and additions to the @code{concurrent-ruby} gem") - (description "The @code{concurrent-ruby-edge} gem includes -@code{concurrent-ruby} features that are under active development and may -change frequently. They are expected not to keep backward -compatibility (there may also lack tests and documentation), although semantic -versions are obeyed though. Features developed in @code{concurrent-ruby-edge} -are expected to move to @code{concurrent-ruby} when final."))) - -(define-public ruby-pkg-config - (package - (name "ruby-pkg-config") - (version "1.2.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "pkg-config" version)) - (sha256 - (base32 - "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar")))) - (build-system ruby-build-system) - (arguments - ;; Tests require extra files not included in the gem. - `(#:tests? #f)) - (synopsis "Detect libraries for compiling Ruby native extensions") - (description - "@code{pkg-config} can be used in your extconf.rb to properly detect need -libraries for compiling Ruby native extensions.") - (home-page "https://github.com/ruby-gnome2/pkg-config") - (license license:lgpl2.0+))) - -(define-public ruby-net-http-digest-auth - (package - (name "ruby-net-http-digest-auth") - (version "1.4.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "net-http-digest_auth" version)) - (sha256 - (base32 - "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe - ruby-minitest)) - (synopsis "RFC 2617 HTTP digest authentication library") - (description - "This library implements HTTP's digest authentication scheme based on -RFC 2617. This enables the use of the digest authentication scheme instead -of the more insecure basic authentication scheme.") - (home-page "https://github.com/drbrain/net-http-digest_auth") - (license license:expat))) - -(define-public ruby-mail - (package - (name "ruby-mail") - (version "2.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mail" version)) - (sha256 - (base32 "1bf9pysw1jfgynv692hhaycfxa8ckay1gjw5hz3madrbrynryfzc")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-mini-mime)) - (arguments - '(#:tests? #f)) ; no rakefile - (synopsis "Mail library for Ruby") - (description - "Mail is an internet library for Ruby that is designed to handle email -generation, parsing and sending. The purpose of this library is to provide -a single point of access to handle all email functions, including sending -and receiving emails. All network type actions are done through proxy -methods to @code{Net::SMTP}, @code{Net::POP3} etc. - -Mail has been designed with a very simple object oriented system that -really opens up the email messages you are parsing, if you know what you -are doing, you can fiddle with every last bit of your email directly.") - (home-page "https://github.com/mikel/mail") - (license license:expat))) - -(define-public ruby-net-protocol - (package - (name "ruby-net-protocol") - (version "0.2.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/net-protocol") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0niivmjx7bc6vsylc1ag17mw6mnvjxw02s7cin1f0422xyr8msq9")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-timeout)) - (synopsis "Abstract interface for Ruby network clients") - (description "This Ruby library provides an abstract interface for network -clients.") - (home-page "https://github.com/ruby/net-protocol") - (license (list license:bsd-2)))) - -(define-public ruby-email-reply-trimmer - (package - (name "ruby-email-reply-trimmer") - (version "0.1.13") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "email_reply_trimmer" version)) - (sha256 - (base32 - "1jgcxifm48xq5dz9k47q43pqm5bfnf14l62l3bqhmv8f6z8dw4ki")))) - (build-system ruby-build-system) - (synopsis "Trim replies from plain text email") - (description "EmailReplyTrimmer is a Ruby small library to trim replies -from plain text email.") - (home-page "https://github.com/discourse/email_reply_trimmer") - (license license:expat))) - -(define-public ruby-mathn - (package - (name "ruby-mathn") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mathn" version)) - (sha256 - (base32 - "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p")))) - (build-system ruby-build-system) - (native-inputs - (list bundler ruby-rake-compiler)) - (synopsis "Extends math operations for increased precision") - (description - "This gem makes mathematical operations more precise in Ruby and -integrates other mathematical standard libraries. Prior to Ruby 2.5, -@code{mathn} was part of the Ruby standard library.") - (home-page "https://github.com/ruby/mathn") - (license license:bsd-2))) - -(define-public ruby-code-statistics - (package - (name "ruby-code-statistics") - (version "0.2.13") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "code_statistics" version)) - (sha256 - (base32 - "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; Not all test code is included in gem. - (synopsis "Port of the rails 'rake stats' method") - (description - "This gem is a port of the rails 'rake stats' method so it can be made -more robust and work for non rails projects.") - (home-page "https://github.com/danmayer/code_statistics") - (license license:expat))) - -(define-public ruby-ruby2-keywords - (package - (name "ruby-ruby2-keywords") - (version "0.0.5") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/ruby2_keywords") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1jhqb152zfr2yrxj6j8rzakkwdkg5viggwnnqrrfxwwy63msdi97")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'delete-extraneous-rake-files - (lambda _ - (for-each delete-file '("rakelib/changelogs.rake" - "rakelib/epoch.rake" - "rakelib/version.rake")))) - (add-after 'extract-gemspec 'adjust-files - (lambda _ - (substitute* "ruby2_keywords.gemspec" - ;; This file is not present in the git checkout. - ((".*\"ChangeLog\",.*") ""))))))) - (synopsis "Shim library for Module#ruby2_keywords") - (description "Provides empty @code{Module#ruby2_keywords} method, for the -forward source-level compatibility against @command{ruby2.7} and -@command{ruby3}.") - (home-page "https://github.com/ruby/ruby2_keywords") - (license license:bsd-2))) - -(define-public ruby-rubypants - (package - (name "ruby-rubypants") - (version "0.6.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rubypants" version)) - (sha256 - (base32 - "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; need Codecov - (synopsis "Port of the smart-quotes library SmartyPants") - (description - "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The -original SmartyPants is a web publishing plug-in for Movable Type, Blosxom, -and BBEdit that easily translates plain ASCII punctuation characters into -smart typographic punctuation HTML entities.") - (home-page "https://github.com/jmcnevin/rubypants") - (license license:bsd-2))) - -(define-public ruby-org-ruby - (package - (name "ruby-org-ruby") - (version "0.9.12") - (source (origin - (method url-fetch) - (uri (rubygems-uri "org-ruby" version)) - (sha256 - (base32 - "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no rakefile - (propagated-inputs - (list ruby-rubypants)) - (synopsis "Org-mode parser written in Ruby") - (description - "Org-ruby is an org-mode parser written in Ruby. The most significant -thing this library does today is convert org-mode files to HTML or Textile or -Markdown.") - (home-page "https://github.com/wallyqs/org-ruby") - (license license:expat))) - -(define-public ruby-rake - (package - (name "ruby-rake") - (version "13.0.6") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/rake") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0c77xyl677s966f8yvk8yv7l31c1ffa1yl4kcwiram219h0s76in")))) - (build-system ruby-build-system) - (native-inputs - (list bundler)) - (synopsis "Rake is a Make-like program implemented in Ruby") - (description - "Rake is a Make-like program where tasks and dependencies are specified -in standard Ruby syntax.") - (home-page "https://github.com/ruby/rake") - (license license:expat))) - -(define-public ruby-rake-manifest - (package - (name "ruby-rake-manifest") - (version "0.2.3") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mvz/rake-manifest") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "16k2yvg773c25kp2vhzhp01rhf53k0nhrcmpv34k1fridw90r2k8")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "default" - #:phases - #~(modify-phases %standard-phases - (delete 'check) ;moved after the install phase - (add-after 'install 'check - (assoc-ref %standard-phases 'check)) - (add-before 'check 'set-GEM_PATH - (lambda _ - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby"))))))) - (native-inputs (list ruby-rspec ruby-simplecov)) - (synopsis "Rake tasks to generate and check a manifest file") - (description "This package provides Rake tasks to generate and check a -manifest file.") - (home-page "https://github.com/mvz/rake-manifest") - (license license:expat))) - -(define-public ruby-sfl - (package - (name "ruby-sfl") - (version "2.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "sfl" version)) - (sha256 - (base32 - "1qm4hvhq9pszi9zs1cl9qgwx1n4wxq0af0hq9sbf6qihqd8rwwwr")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ;; some tests fail, gem is a dummy for ruby >= 1.9 anyway - #:test-target "spec")) - (synopsis "Spawn for Ruby 1.8") - (description "This pure ruby library provides @code{spawn()} which is -almost perfectly compatible with ruby 1.9's.") - (home-page "https://github.com/ujihisa/spawn-for-legacy") - (license license:bsd-2))) - -(define-public ruby-childprocess - (package - (name "ruby-childprocess") - (version "4.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "childprocess" version)) - (sha256 - (base32 - "1lvcp8bsd35g57f7wz4jigcw2sryzzwrpcgjwwf3chmjrjcww5in")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ;; one failing test, even with fixes below - #:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "spec/spec_helper.rb" - (("#!/bin/sh\\\\n") (string-append "#!" (which "sh") "\\n")))))))) - (native-inputs - (list ruby-coveralls ruby-rspec)) - (synopsis "Control external programs running in the background, in Ruby") - (description "@code{childprocess} provides a gem to control external -programs running in the background, in Ruby.") - (home-page "https://github.com/enkessler/childprocess") - (license license:expat))) - -(define-public ruby-public-suffix - (package - (name "ruby-public-suffix") - (version "4.0.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "public_suffix" version)) - (sha256 - (base32 - "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Remove the requirement on Rubocop, as it isn't useful to run, and - ;; including it as an input can lead to circular dependencies. - (add-after 'unpack 'remove-rubocop-from-Rakefile - (lambda _ - (substitute* "Rakefile" - (("require \"rubocop/rake\\_task\"") "") - (("RuboCop::RakeTask\\.new") ""))))))) - (native-inputs - (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, -written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix -is one under which Internet users can (or historically could) directly -register names. Some examples of public suffixes are @code{.com}, -@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of -all known public suffixes.") - (license license:expat))) - -(define-public ruby-addressable - (package - (name "ruby-addressable") - (version "2.8.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "addressable" version)) - (sha256 - (base32 - "1ypdmpdn20hxp5vwxz3zc04r5xcwqc25qszdlg41h8ghdqbllwmw")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'disable-bundler - (lambda _ - (substitute* "spec/spec_helper.rb" - (("require 'bundler/setup'") "")))) - (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile - (lambda _ - (substitute* "Gemfile" - (("git: 'https://github.com/sporkmonger/rack-mount.git',") "") - ((".*launchy.*") "") - ((".*rake.*") "gem 'rake'\n") - ((".*redcarpet.*") "")))) - (add-before 'check 'delete-network-dependent-test - (lambda _ - (delete-file "spec/addressable/net_http_compat_spec.rb")))))) - (native-inputs - (list bundler - ruby-idn-ruby - ruby-rspec - ruby-rspec-its-minimal - ruby-simplecov - ruby-sporkmonger-rack-mount - ruby-yard/minimal)) - (propagated-inputs - (list ruby-public-suffix)) - (home-page "https://github.com/sporkmonger/addressable") - (synopsis "Alternative URI implementation") - (description "Addressable is a replacement for the URI implementation that -is part of Ruby's standard library. It more closely conforms to RFC 3986, -RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.") - (license license:asl2.0))) - -(define-public ruby-colorize - (package - (name "ruby-colorize") - (version "0.8.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "colorize" version)) - (sha256 - (base32 - "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b")))) - (build-system ruby-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-before 'check 'remove-codeclimate-dependency - (lambda _ - (substitute* "test/test_colorize.rb" - ;; Do not hook the tests into the online CodeClimate - ;; service which is unnecessary for these tests. - (("require 'codeclimate-test-reporter'") - "") - (("CodeClimate.*") ""))))))) - (synopsis "Add color effects to the @code{String} class") - (description - "This package extends the @code{String} class and adds a -@code{ColorizedString} with methods to set text color, background color, -and text effects.") - (home-page "https://github.com/fazibear/colorize") - (license license:gpl2+))) - -(define-public ruby-colorator - (package - (name "ruby-colorator") - (version "1.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "colorator" version)) - (sha256 - (base32 - "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72")))) - (build-system ruby-build-system) - (arguments - ;; No test target - `(#:tests? #f)) - (home-page "http://octopress.org/colorator/") - (synopsis "Terminal color library") - (description "Colorator is a Ruby gem that helps you colorize your text -for the terminal.") - (license license:expat))) - -(define-public ruby-command-line-reporter - (package - (name "ruby-command-line-reporter") - (version "4.0.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "command_line_reporter" version)) - (sha256 - (base32 - "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll")))) - (build-system ruby-build-system) - (arguments - ;; No Rakefile - `(#:tests? #f - #:phases - (modify-phases %standard-phases - (add-before 'build 'fix-dependencies - (lambda _ - (substitute* ".gemspec" - ;; colored is unmaintained - (("colored") "colorator") - ;; colorator version - (("= 1.2") "= 1.1"))))))) - (propagated-inputs (list ruby-colorator)) - (home-page "https://github.com/wbailey/command_line_reporter") - (synopsis "Report production while executing Ruby scripts") - (description "This gem provides a DSL that makes it easy to write reports -of various types in ruby. It eliminates the need to litter your source with -puts statements, instead providing a more readable, expressive interface to -your application.") - (license license:asl2.0))) - -(define-public ruby-command-line-reporter-3 - (package - (inherit ruby-command-line-reporter) - (version "3.3.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "command_line_reporter" version)) - (sha256 - (base32 - "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71")))))) - -(define-public ruby-kpeg - (package - (name "ruby-kpeg") - (version "1.3.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "kpeg" version)) - (sha256 - (base32 - "0jxddpyb23digcd8b1b02gn94057a7mw17680c3c8s3bcb5xqfnp")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe)) - (synopsis "PEG library for Ruby") - (description "KPeg is a simple PEG library for Ruby. It provides an API as -well as native grammar to build the grammar. KPeg supports direct left -recursion of rules via the -@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization} -technique.") - (home-page "https://github.com/evanphx/kpeg") - (license license:expat))) - -(define-public ruby-rdoc - (package - (name "ruby-rdoc") - (version "6.7.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/rdoc") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0dy997zi7k17c2yjlq1y7zl9yaiym1f4jgfh84qqzhwl1qm6v41j")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'build 'generate - ;; 'gem build' doesn't honor Rakefile dependencies (see: - ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977). - (lambda _ - (invoke "rake" "generate")))))) - (native-inputs (list bundler ruby-kpeg ruby-racc ruby-rubocop - ruby-test-unit-ruby-core)) - (home-page "https://ruby.github.io/rdoc/") - (synopsis "HTML and command-line documentation utility") - (description "RDoc produces HTML and command-line documentation for Ruby -projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying -documentation from the command-line.") - (license license:gpl2+))) - -(define-public ruby-sass-listen - (package - (name "ruby-sass-listen") - (version "4.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "sass-listen" version)) - (sha256 - (base32 - "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df")))) - (build-system ruby-build-system) - (arguments - ;; No test target - `(#:tests? #f)) - (propagated-inputs - (list ruby-rb-fsevent ruby-rb-inotify)) - (home-page "https://github.com/sass/listen") - (synopsis "File modification notification library") - (description "The Listen gem listens to file modifications and notifies you -about the changes.") - (license license:expat))) - -(define-public ruby-terminfo - (let ((commit "f4a597d92dcc465e7b343f9afb8cd45607c8e969") - (revision "0")) - (package - (name "ruby-terminfo") - (version (git-version "0.2" revision commit)) - (source - (origin - (method git-fetch) - (uri - (git-reference - (url "https://github.com/genki/ruby-terminfo") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0b24sqf0jwj8m106nh35hjayw1kiyrpramb6vg7fnz32mqni6hdi")))) - (build-system ruby-build-system) - (arguments - (list - #: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" "-Ilib:test" "-Ilib:." f)) - (find-files "test" "^test_.*\\.rb$"))))) - (replace 'install - (lambda _ - (invoke "make" "install" (string-append "prefix=" #$output))))))) - (inputs - (list ncurses)) - (native-inputs - (list ruby-rubygems-tasks ruby-rdoc)) - (home-page "http://www.a-k-r.org/ruby-terminfo/") - (synopsis "Terminfo binding for Ruby") - (description "Ruby-terminfo provides terminfo binding for Ruby.") - (license license:bsd-3)))) - -(define-public ruby-diffy - (package - (name "ruby-diffy") - (version "3.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "diffy" version)) - (sha256 - (base32 - "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg")))) - (build-system ruby-build-system) - (arguments - ;; No tests - `(#:tests? #f)) - (native-inputs - (list ruby-rspec)) - (home-page "https://github.com/samg/diffy") - (synopsis "Convenient diffing in ruby") - (description "Diffy provides a convenient way to generate a diff from two -strings or files.") - (license license:expat))) - -(define-public ruby-sass-spec - (package - (name "ruby-sass-spec") - (version "3.5.4") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/sass/sass-spec") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-command-line-reporter-3 - ruby-diffy)) - (arguments - (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 -the @file{spec} directory.") - (license license:expat))) - -(define-public ruby-sass - (package - (name "ruby-sass") - (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 - (list ruby-sass-spec ruby-mathn ruby-cmath)) - (home-page "https://sass-lang.com/") - (synopsis "CSS extension language") - (description "Sass is a CSS extension language. It extends CSS with -features that don't exist yet like variables, nesting, mixins and inheritance.") - (license license:expat))) - -(define-public ruby-sassc - (package - (name "ruby-sassc") - (version "2.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sassc" version)) - (sha256 - (base32 - "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c")))) - (build-system ruby-build-system) - (arguments - '(#:modules ((guix build ruby-build-system) - (guix build utils) - (ice-9 textual-ports)) - #:phases - (modify-phases %standard-phases - ;; TODO: This would be better as a snippet, but the ruby-build-system - ;; doesn't seem to support that - (add-after 'unpack 'remove-libsass - (lambda _ - (delete-file-recursively "ext") - (with-atomic-file-replacement "sassc.gemspec" - (lambda (in out) - (let* ((gemspec (get-string-all in)) - (index (string-contains gemspec "libsass_dir"))) - (display (string-append - (string-take gemspec index) - "\nend\n") - out)))))) - (add-after 'unpack 'dont-check-the-libsass-version - (lambda _ - (substitute* "test/native_test.rb" - (("assert_equal.*Native\\.version") "")))) - (add-after 'unpack 'remove-git-from-gemspec - (lambda _ - (substitute* "sassc.gemspec" - (("`git ls-files -z`") "`find . -type f -print0 |sort -z`")))) - (add-after 'unpack 'remove-extensions-from-gemspec - (lambda _ - (substitute* "sassc.gemspec" - (("\\[\"ext/extconf.rb\"\\]") "[]")))) - (add-after 'unpack 'fix-Rakefile - (lambda _ - (substitute* "Rakefile" - (("test: 'compile:libsass'") ":test")))) - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "test/test_helper.rb" - (("require \"pry\"") "")))) - (add-before 'build 'patch-native.rb - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/sassc/native.rb" - ((".*gem_root = spec.gem_dir") "") - (("ffi_lib .*\n") - (string-append - "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'"))))) - ;; The gemspec still references the libsass files, so just keep the - ;; one in the gem. - (delete 'extract-gemspec)))) - (propagated-inputs - (list ruby-ffi ruby-rake)) - (inputs - (list libsass)) - (native-inputs - (list bundler ruby-rake-compiler ruby-minitest-around - ruby-test-construct)) - (synopsis "Use libsss from Ruby") - (description - "This library provides Ruby q@acronym{FFI, Foreign Function Interface} -bindings to the libsass library. This enables rendering -@acronym{SASS,Syntactically awesome style sheets} from Ruby code.") - (home-page "https://github.com/sass/sassc-ruby") - (license license:expat))) - -(define-public ruby-jekyll-sass-converter - (package - (name "ruby-jekyll-sass-converter") - (version "2.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-sass-converter" version)) - (sha256 - (base32 - "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-sass)) - (arguments - ;; No rakefile - `(#:tests? #f)) - (home-page "https://github.com/jekyll/jekyll-sass-converter") - (synopsis "Sass converter for Jekyll") - (description "This gem provide built-in support for the Sass converter -in Jekyll.") - (license license:expat))) - -(define-public ruby-jekyll-watch - (package - (name "ruby-jekyll-watch") - (version "2.1.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-watch" version)) - (sha256 - (base32 - "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-listen)) - (arguments - ;; No rakefile - `(#:tests? #f)) - (home-page "https://github.com/jekyll/jekyll-watch") - (synopsis "Jekyll auto-rebuild support") - (description "This gems add the @code{--watch} switch to the jekyll CLI -interface. It allows Jekyll to rebuild your site when a file changes.") - (license license:expat))) - -(define-public ruby-parallel - (package - (name "ruby-parallel") - (version "1.21.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/grosser/parallel") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xqjcvl3gq3shvrqp8wc3fbqibzh4mf1yczq6np9gd79558dwj3w")))) - (build-system ruby-build-system) - (arguments - `(;; TODO 3 test failures - ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not - ;; open unnecessary pipes - ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with - ;; SQLite in processes - ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with - ;; SQLite in threads - #:tests? #f - #:test-target "rspec-rerun:spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-Gemfile - (lambda _ - (substitute* "Gemfile" - (("gem 'rspec-legacy_formatters'") "") - (("gem 'activerecord.*$") "gem 'activerecord'\n")))) - (add-before 'check 'delete-Gemfile.lock - (lambda _ - ;; Bundler isn't being used for fetching dependencies, so - ;; delete the Gemfile.lock - (delete-file "Gemfile.lock"))) - (add-before 'build 'patch-gemspec - (lambda _ - (substitute* "parallel.gemspec" - (("git ls-files") "find"))))))) - (native-inputs - (list ruby-rspec - ruby-rspec-rerun - bundler - ruby-activerecord - ruby-progressbar - ruby-bump - procps - lsof - ruby-mysql2 - ruby-sqlite3 - ruby-i18n)) - (home-page "https://github.com/grosser/parallel") - (synopsis "Parallel processing in Ruby") - (description "Parallel allows you to run any code in parallel Processes -(to use all CPUs) or Threads(to speedup blocking operations). It is best -suited for map-reduce or e.g. parallel downloads/uploads.") - (license license:expat))) - -(define-public ruby-cabin - (package - (name "ruby-cabin") - (version "0.9.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cabin" version)) - (sha256 - (base32 - "0b3b8j3iqnagjfn1261b9ncaac9g44zrx1kcg81yg4z9i513kici")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) ;no Rakefile in released gem - (synopsis "Structured and contextual logging experiments in Ruby") - (description "This Ruby library provides an experimental logging system -that tries to make logging more flexible and more consumable than plain-text -logging.") - (home-page "https://github.com/jordansissel/ruby-cabin") - (license license:asl2.0))) - -(define-public ruby-capybara - (package - (name "ruby-capybara") - (version "3.38.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "capybara" version)) - (sha256 - (base32 - "123198zk2ak8mziwa5jc3ckgpmsg08zn064n3aywnqm9s1bwjv3v")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f ;sinatra is currently broken with rack 3 - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'remove-extraneous-requirements - (lambda _ - (substitute* "spec/spec_helper.rb" - ((".*require 'selenium_statistics'.*") "") - ((".*SeleniumStatistics.print_results.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec" "spec"))))))) - (native-inputs - (list ruby-puma - ruby-rspec - ruby-selenium-webdriver - ruby-sinatra)) - (propagated-inputs - (list ruby-addressable - ruby-launchy - ruby-matrix - ruby-mini-mime - ruby-nokogiri - ruby-rack - ruby-rack-test - ruby-regexp-parser - ruby-xpath)) - (synopsis "Integration testing tool for rack-based web applications") - (description "Capybara is an integration testing tool for rack based web -applications. It simulates how a user would interact with a website.") - (home-page "https://github.com/teamcapybara/capybara") - (license license:expat))) - -(define-public ruby-cane - (package - (name "ruby-cane") - (version "3.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cane" version)) - (sha256 - (base32 - "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)); No rakefile - (home-page "https://github.com/square/cane") - (propagated-inputs - (list ruby-parallel)) - (synopsis "Code quality threshold checking") - (description "Cane fails your build if code quality thresholds are not met.") - (license license:asl2.0))) - -(define-public ruby-morecane - (package - (name "ruby-morecane") - (version "0.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "morecane" version)) - (sha256 - (base32 - "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771")))) - (build-system ruby-build-system) - (home-page "https://github.com/yob/morecane") - (arguments `(#:tests? #f)); No rakefile - (propagated-inputs - (list ruby-parallel)) - (synopsis "Extra checks for cane") - (description "The cane gem provides a great framework for running quality -checks over your ruby project as part of continuous integration build. It -comes with a few checks out of the box, but also provides an API for loading -custom checks. This gem provides a set of additional checks.") - (license license:expat))) - -(define-public ruby-pdf-reader - (package - (name "ruby-pdf-reader") - (version "2.4.0") - (source (origin - (method git-fetch) ;no test in distributed gem archive - (uri (git-reference - (url "https://github.com/yob/pdf-reader") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai")))) - (build-system ruby-build-system) - (arguments `(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-after 'unpack 'do-not-use-bundler - (lambda _ - (substitute* "spec/spec_helper.rb" - ((".*[Bb]undler.*") ""))))))) - (native-inputs - (list ruby-rspec ruby-cane ruby-morecane)) - (propagated-inputs - (list ruby-afm ruby-ascii85 ruby-hashery ruby-rc4 ruby-ttfunk)) - (home-page "https://github.com/yob/pdf-reader") - (synopsis "PDF parser in Ruby") - (description "The PDF::Reader library implements a PDF parser conforming as -much as possible to the PDF specification from Adobe. It provides programmatic -access to the contents of a PDF file with a high degree of flexibility.") - (license license:gpl3+))) - -(define-public ruby-pdf-inspector - (let ((revision "1") - (commit "00ee4c92ff917118785ebec188e81effc968abeb")) - (package - (name "ruby-pdf-inspector") - (version (git-version "1.3.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/prawnpdf/pdf-inspector") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-before 'build 'drop-signing-key-requirement - (lambda _ - (substitute* "pdf-inspector.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil")))) - (replace 'check - (lambda _ - (substitute* "pdf-inspector.gemspec" - ((".*rubocop.*") "") - ((".*yard.*") "")) - (invoke "rspec")))))) - (native-inputs - (list ruby-rspec)) - (propagated-inputs - (list ruby-pdf-reader)) - (home-page "https://github.com/prawnpdf/pdf-inspector") - (synopsis "Analysis classes for inspecting PDF output") - (description "This library provides a number of PDF::Reader based tools for -use in testing PDF output. Presently, the primary purpose of this tool is to -support the tests found in Prawn, a pure Ruby PDF generation library.") - (license %prawn-project-licenses)))) - -(define-public ruby-pdf-core - (package - (name "ruby-pdf-core") - (version "0.9.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pdf-core" version)) - (sha256 - (base32 - "1fz0yj4zrlii2j08kaw11j769s373ayz8jrdhxwwjzmm28pqndjg")))) - (build-system ruby-build-system) - (arguments - ; No test target - `(#:tests? #f)) - (home-page "https://github.com/prawnpdf/pdf-core") - (synopsis "Low level PDF features for Prawn") - (description "This is an experimental gem that extracts low-level PDF -functionality from Prawn.") - (license license:gpl3+))) - -(define-public ruby-prawn-dev - (package - (name "ruby-prawn-dev") - (version "0.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "prawn-dev" version)) - (sha256 - (base32 - "1hbzzgm0nwc6h8pyv8h9xx068bf676rispxcz4a0sm8nykz54z4x")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ;no test suite - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'drop-rubocop-dependency - ;; Rubocop depends on Prawn. Remove it to avoid the - ;; dependency cycle when using this tool to build - ;; Prawn components. - (lambda _ - (substitute* "lib/prawn/dev/tasks.rb" - (("require 'rubocop/rake_task'") - "") - (("RuboCop::RakeTask.new") - "")) - (substitute* ".gemspec" - ((".*add.*dependency.*(rubocop|simplecov).*") - ""))))))) - (propagated-inputs (list ruby-rake ruby-rspec ruby-yard)) - (synopsis "Shared tools for Prawn projects development") - (description "Prawn-dev contains tools to aid the development of the -various Prawn projects.") - (home-page "https://prawnpdf.org/") - (license license:expat))) - -(define-public ruby-prawn - ;; There hasn't been a new release since 2017/03/17. - (package - (name "ruby-prawn") - (version "2.4.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/prawnpdf/prawn") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1h1gww12wcdscij0lnd21p9zcbwrwc3miini5ppannc2birmj9ja")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'drop-signing-key-requirement - (lambda _ - (substitute* "prawn.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; The Prawn manual test fails (see: - ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude - ;; it. - (invoke "rspec" - "--exclude-pattern" "prawn_manual_spec.rb"))))))) - (propagated-inputs - (list ruby-matrix - ruby-pdf-core - ruby-ttfunk)) - (native-inputs - (list ruby-pdf-inspector - ruby-prawn-manual-builder - ruby-prawn-dev)) - (home-page "https://prawnpdf.org/api-docs/2.0/") - (synopsis "PDF generation for Ruby") - (description "Prawn is a pure Ruby PDF generation library.") - (license %prawn-project-licenses))) - -(define-public ruby-prawn-table - (package - (name "ruby-prawn-table") - (version "0.2.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "prawn-table" version)) - (sha256 - (base32 - "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-prawn ruby-pdf-inspector)) - (native-inputs - `(("bundler" ,bundler) - ("ruby-yard" ,ruby-yard) - ("ruby-mocha" ,ruby-mocha) - ("ruby-coderay" ,ruby-coderay) - ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder) - ("ruby-simplecov" ,ruby-simplecov) - ("ruby-rspec-2" ,ruby-rspec-2))) - (arguments - '(;; TODO: 1 test fails - ;; Failure/Error: pdf.page_count.should == 1 - ;; expected: 1 - ;; got: 2 (using ==) - ;; # ./spec/table_spec.rb:1308 - ;; - ;; 225 examples, 1 failure - #:tests? #f - #:phases - (modify-phases %standard-phases - (add-before 'check 'patch-gemspec - (lambda _ - (substitute* "prawn-table.gemspec" - ;; Loosen the requirement for pdf-inspector - (("~> 1\\.1\\.0") ">= 0") - ;; Loosen the requirement for pdf-reader - (("~> 1\\.2") ">= 0")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (home-page "https://github.com/prawnpdf/prawn-table") - (synopsis "Tables support for Prawn") - (description "This gem provides tables support for Prawn.") - (license license:gpl3+))) - -(define-public ruby-kramdown - (package - (name "ruby-kramdown") - (version "2.3.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "kramdown" version)) - (sha256 - (base32 - "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)); FIXME: some test failures - (native-inputs - (list ruby-prawn ruby-prawn-table)) - (home-page "https://kramdown.gettalong.org/") - (synopsis "Markdown parsing and converting library") - (description "Kramdown is a library for parsing and converting a superset -of Markdown. It is completely written in Ruby, supports standard Markdown -(with some minor modifications) and various extensions that have been made -popular by the PHP @code{Markdown Extra} package and @code{Maruku}.") - (license license:expat))) - -(define-public ruby-kramdown-parser-gfm - (package - (name "ruby-kramdown-parser-gfm") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "kramdown-parser-gfm" version)) - (sha256 - (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;no rakefile - (propagated-inputs - (list ruby-kramdown)) - (synopsis "Kramdown parser for the GFM dialect of Markdown") - (description - "This is a parser for kramdown that converts Markdown documents in the -GFM dialect to HTML.") - (home-page "https://github.com/kramdown/parser-gfm") - (license license:expat))) - -(define-public ruby-http-parser.rb - (package - (name "ruby-http-parser.rb") - (version "0.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "http_parser.rb" version)) - (sha256 - (base32 - "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi")))) - (build-system ruby-build-system) - (arguments - ;; No tests - `(#:tests? #f)) - (native-inputs - (list ruby-rake-compiler ruby-rspec)) - (home-page "https://github.com/tmm1/http_parser.rb") - (synopsis "HTTP parser un Ruby") - (description "This gem is a simple callback-based HTTP request/response -parser for writing http servers, clients and proxies.") - (license license:expat))) - -(define-public ruby-excon - (package - (name "ruby-excon") - (version "0.109.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/excon/excon") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "199niqbpzj70k3n6ybg4vbcw3qm76kwic4nl9747l1n0v49aaj24")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ;; some tests require DNS - #:phases - #~(modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "excon.gemspec" - (("`git ls-files -- data/. lib/.`") - "`find data lib -type f`")))) - (add-before 'check 'disable-server-spec-checks - (lambda _ ;; TODO: Remove this if ruby-unicorn is available. - ;; Some of the tests in this file require ruby-unicorn, which is - ;; not yet packaged for guix and would pull in a lot of other - ;; dependencies. - (delete-file "spec/excon/test/server_spec.rb")))))) - (native-inputs - (list - ruby-activesupport - ruby-eventmachine - ruby-json - ruby-open4 - ruby-puma - ruby-rspec - ruby-shindo - ruby-sinatra - ruby-webrick)) - (synopsis "Usable, fast, simple Ruby HTTP 1.1") - (description "Excon was designed to be simple, fast and performant. It -works great as a general HTTP(s) client and is particularly well suited to -usage in API clients.") - (home-page "https://github.com/excon/excon") - (license license:expat))) - -(define-public ruby-em-websocket - (package - (name "ruby-em-websocket") - (version "0.5.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "em-websocket" version)) - (sha256 - (base32 - "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3")))) - (build-system ruby-build-system) - (arguments - ;; No tests - `(#:tests? #f)) - (propagated-inputs - (list ruby-eventmachine ruby-http-parser.rb)) - (native-inputs - (list bundler ruby-rspec)) - (home-page "https://github.com/igrigorik/em-websocket") - (synopsis "EventMachine based WebSocket server") - (description "Em-websocket is an EventMachine based WebSocket server -implementation.") - (license license:expat))) - -(define-public ruby-rouge - (package - (name "ruby-rouge") - (version "3.26.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rouge" version)) - (sha256 - (base32 - "197k0vskf72wxx0gzwld2jzg27bb7982xlvnzy9adlvkzp7nh8vf")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)); No rakefile - (home-page "http://rouge.jneen.net/") - (synopsis "Code highlighter") - (description "Rouge is a code highlighter written in Ruby. It supports more -than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output -is compatible with stylesheets designed for pygments.") - (license (list - ;; rouge is licensed under expat - license:expat - ;; pygments is licensed under bsd-2 - license:bsd-2)))) - -(define-public ruby-hashie - (let ((commit "73510552ba580867e9882fe092568916cbcd810b") - (revision "0")) - (package - (name "ruby-hashie") - (version (git-version "5.0.0" revision commit)) - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/hashie/hashie") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "08rpx040h6vgx6ynk6w029f7z7c8aj2p4v135k2l1zxvnw617ddw")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'disable-bundler - (lambda _ - (substitute* "Rakefile" - ((".*require 'bundler'.*") "") - ((".*Bundler.setup.*") "") - (("Bundler::GemHelper\\.install_tasks") "")))) - (add-after 'unpack 'disable-rubocop - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") "")))) - (add-after 'unpack 'relax-requirements - (lambda _ - ;; Contains multiple extraneous dependencies. - (delete-file "Gemfile")))))) - (native-inputs (list ruby-json ruby-pry ruby-rspec ruby-rspec-pending-for)) - (home-page "https://github.com/hashie/hashie") - (synopsis "Extensions to Ruby Hashes") - (description "Hashie is a collection of classes and mixins that make Ruby -hashes more powerful.") - (license license:expat)))) - -(define-public ruby-heredoc-unindent - (package - (name "ruby-heredoc-unindent") - (version "1.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "heredoc_unindent" version)) - (sha256 - (base32 - "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw")))) - (build-system ruby-build-system) - (native-inputs - (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 -as the ones produced by indented heredocs. In other words, it strips out -leading whitespace chars at the beginning of each line, but only as much as -the line with the smallest margin. - -It is acknowledged that many strings defined by heredocs are just code and -fact is that most parsers are insensitive to indentation. If, however, the -strings are to be used otherwise, be it for printing or testing, the extra -indentation will probably be an issue and hence this gem.") - (license license:expat))) - -(define-public ruby-safe-yaml - (package - (name "ruby-safe-yaml") - (version "1.0.5") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/dtao/safe_yaml") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-rspec ruby-hashie ruby-heredoc-unindent)) - (arguments - (list - ;; Tests are broken since the move to ruby@3. - ;; There's ongoing effort on the Jekyll dependent - ;; to remove this orphan dependency. - #:tests? #f ; broken since move to ruby@3 - #: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 -YAML.load suitable for accepting user input in Ruby applications.") - (license license:expat))) - -(define-public ruby-yaml-lint - ;; No tags for releases. - (let ((commit "d6a253f7d33234a9c24660d582cf7014e882c0c2") - (revision "0")) - (package - (name "ruby-yaml-lint") - (version (git-version "0.1.2" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/Pryz/yaml-lint") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0zk0jwzmcaaiyixjvkzdb54xhiqcnjkma72nkv0vm5csaphfdjkx")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-coveralls ruby-rspec ruby-simplecov)) - (synopsis "Simple YAML check tool") - (description - "@code{yaml-lint} will simply try to load the YAML file with the built-in -Ruby yaml library.") - (home-page "https://github.com/Pryz/yaml-lint") - (license license:expat)))) - -(define-public ruby-matrix - (package - (name "ruby-matrix") - (version "0.4.2") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/matrix") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1asxr0jzh39lk5f8a9wm5avykrcy0v2wgd1bl3cszjczh99xy5k2")))) - (build-system ruby-build-system) - (synopsis "@code{Matrix} and @code{Vector} classes implementation for Ruby") - (description "This Ruby library provides an implementation of the -@code{Matrix} and @code{Vector} classes. The @code{Matrix} class represents a -mathematical matrix. It provides methods for creating matrices, operating on -them arithmetically and algebraically, and determining their mathematical -properties (trace, rank, inverse, determinant, eigensystem, etc.). The -@code{Vector} class represents a mathematical vector, which is useful in its -own right, and also constitutes a row or column of a @code{Matrix}.") - (home-page "https://github.com/ruby/matrix") - (license license:bsd-2))) - -(define-public ruby-m - (package - (name "ruby-m") - (version "1.6.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/qrush/m") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1aycfc8l1bsln1y300fv75fknn4amjcvc4rm2kd8hb6cqivjq5rg")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'sanitize-dependencies - (lambda _ - (delete-file "Gemfile") - (delete-file "Gemfile.lock") - ;; Rocco is unmaintained as of 2023/01/08; avoid depending on - ;; it. - (substitute* "m.gemspec" - ;; The rdiscount and rocco dependencies are used for - ;; generating the documentation. - ((".*rdiscount.*") "") - ((".*rocco.*") "") - ((".*appraisal.*") "") - ((".*coveralls.*") "")) - (substitute* "Rakefile" - ;; ruby-appraisal is not packaged, and is used to test against - ;; various dependencies; circumvent its use. - ((".*require 'appraisal'.*") "") - ((".*require 'coveralls'.*") "") - (("appraisal [:graphic:]+ rake") - "rake") - (("Coveralls.push!") "")))) - (add-before 'replace-git-ls-files 'pre-replace-git-ls-files - (lambda _ - (substitute* "m.gemspec" - (("git ls-files -- bin/\\*") - "find bin -type f -not -regex '.*\\.gem$' | sort") - (("git ls-files -- \\{test,spec,features}/\\*") - "find test -type f -not -regex '.*\\.gem$' | sort")))) - (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? - (invoke "rake" "test"))))))) - (native-inputs (list ruby-activesupport)) - (propagated-inputs (list ruby-method-source ruby-rake)) - (synopsis "Ruby test runner that can run tests by line number") - (description "@code{m} stands for metal, a better test/unit and -@code{minitest} test runner that can run tests by line number.") - (home-page "https://github.com/qrush/m") - (license license:expat))) - -(define-public ruby-mercenary - (package - (name "ruby-mercenary") - (version "0.4.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "mercenary" version)) - (sha256 - (base32 - "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj")))) - (build-system ruby-build-system) - (arguments `(#:test-target "spec")) - (native-inputs - (list bundler)) - (home-page "https://github.com/jekyll/mercenary") - (synopsis "Command-line apps library in Ruby") - (description "Mercenary is a lightweight and flexible library for writing -command-line apps in Ruby.") - (license license:expat))) - -(define-public ruby-launchy - (package - (name "ruby-launchy") - (version "2.5.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "launchy" version)) - (sha256 - (base32 - "06r43899384das2bkbrpsdxsafyyqa94il7111053idfalb4984a")))) - (build-system ruby-build-system) - (native-inputs (list curl links ruby-simplecov)) - (propagated-inputs (list ruby-addressable)) - (synopsis "Ruby helper class for launching applications") - (description - "Launchy is helper class for launching applications in a fire and forget -manner. The aim of Launchy is to provide a common approach to launching -external applications from within Ruby programs.") - (home-page "https://github.com/copiousfreetime/launchy") - (license license:isc))) - -(define-public ruby-liquid - (package - (name "ruby-liquid") - (version "5.4.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/Shopify/liquid") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1qdnvd1f9zs6wyilcgxyh93wis7ikbpimjxfpbkpk2ngr1m2c8la")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (delete 'check) ;moved after the install phase - (add-after 'install 'check - (assoc-ref %standard-phases 'check)) - (add-before 'check 'set-GEM_PATH - (lambda _ - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")))) - (add-before 'check 'delete-problematic-tests - (lambda _ - ;; The following test fails with 'Unknown tag' errors (see: - ;; https://github.com/Shopify/liquid/issues/1699). - (delete-file "test/integration/tags/inline_comment_test.rb")))))) - (native-inputs (list ruby-liquid-c-bootstrap ruby-rspec ruby-stackprof)) - (home-page "https://shopify.github.io/liquid/") - (synopsis "Template language") - (description "Liquid is a template language written in Ruby. It is used -to load dynamic content on storefronts.") - (license license:expat))) - -(define-public ruby-liquid-4 - (package - (inherit ruby-liquid) - (name "ruby-liquid") - (version "4.0.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/Shopify/liquid") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0cr321nd0zkbxirgdfmz37xx7j26zfnicjh585fi20vx60frry83")))) - (arguments (list #:tests? #f)))) ;avoid required an older ruby-liquid-c - -;;; This variant is purposefully incomplete, lacking ruby-liquid so that it -;;; can be used for ruby-liquid's test suite. -(define ruby-liquid-c-bootstrap - (package - (name "ruby-liquid-c-bootstrap") - (version "4.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "liquid-c" version)) - (sha256 - (base32 - "0jl37jz9hbfbhknryx4myxqx4n1f5dzyzmf1sapkcbw93xyrmkch")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) - (native-inputs (list ruby-rake-compiler)) - (synopsis "Liquid performance extension in C") - (description "This package provides a Partial native implementation of the -liquid ruby gem in C that makes it operate about three times faster.") - (home-page "https://github.com/shopify/liquid-c") - (license license:expat))) - -(define-public ruby-liquid-c - (package/inherit ruby-liquid-c-bootstrap - (name "ruby-liquid-c") - (arguments - (list - ;; Only run the unit tests, because the test:integration target fails - ;; with "File does not exist: test_helper" (see: - ;; https://github.com/Shopify/liquid-c/issues/188). - #:test-target "test:unit" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "Gemfile" - ;; Do not attempt to fetch a gem from git. - (("git_source\\(:github) do \\|repo_name\\|") - "if false") - ((", github: \"Shopify/liquid\", ref: \"master\"") - "") - ;; Remove extraneous dependencies. - ((".*byebug.*") "") - ((".*rubocop.*") "") - ;; Relax spy version specification. - (("gem \"spy\", \"0.4.1\"") - "gem \"spy\", \">= 0.4.1\""))))))) - (native-inputs - (list ruby-benchmark-ips - ruby-rake-compiler - ruby-ruby-memcheck - ruby-spy - ruby-stackprof)) - (propagated-inputs - (list ruby-liquid)))) - -(define-public ruby-localhost - (package - (name "ruby-localhost") - (version "1.1.10") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/socketry/localhost") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1yp70w15wpfk613ap5f4y15yx4n2qqwa67vqc2f4lv7npf3llcz0")))) - (build-system ruby-build-system) - (arguments - ;; XXX: The test suite requires sus-fixtures-async, which requires async, - ;; only available for Ruby 3.0. - (list #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'remove-missing-signing-key - (lambda _ - ;; Otherwise, the build fails with ENOENT. - (substitute* "localhost.gemspec" - ((".*spec.signing_key.*") ""))))))) - (synopsis "API for generating per-user self-signed root certificates") - (description "This package provides @code{localhost}, a Ruby library for -Managing a local certificate authority for self-signed, localhost development -servers.") - (home-page "https://github.com/socketry/localhost") - (license license:expat))) - -(define-public ruby-forwardable-extended - (package - (name "ruby-forwardable-extended") - (version "2.6.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "forwardable-extended" version)) - (sha256 - (base32 - "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters - (home-page "https://github.com/envygeeks/forwardable-extended") - (synopsis "Delegation to hashes and instance variables in Forwardable") - (description "Forwardable Extended provides more @code{Forwardable} -methods for your source as @code{Forwardable::Extended}.") - (license license:expat))) - -(define-public ruby-pathutil - (package - (name "ruby-pathutil") - (version "0.16.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pathutil" version)) - (sha256 - (base32 - "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-forwardable-extended)) - (native-inputs - (list bundler ruby-rspec)) - ;; Fails with: cannot load such file -- - ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task - (arguments `(#:tests? #f)) - (home-page "https://github.com/envygeeks/pathutil") - (synopsis "Extended implementation of Pathname") - (description "Pathutil tries to be a faster pure Ruby implementation of -Pathname.") - (license license:expat))) - -(define-public ruby-terminal-table - (package - (name "ruby-terminal-table") - (version "3.0.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/tj/terminal-table") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1c3f7ng3lxq962n8sbmlsvjx6srh5i801wzsyhxmfz2g880f5jps")))) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-before 'check 'remove-unnecessary-dependencies - (lambda _ - (substitute* "terminal-table.gemspec" - (("s.add_runtime_dependency.*") "\n") - (("s.add_development_dependency.*") "\n")) - (substitute* "Gemfile" - ((".*tins.*") "\n")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-unicode-display-width)) - (native-inputs - (list ruby-rspec ruby-term-ansicolor)) - (home-page "https://github.com/tj/terminal-table") - (synopsis "Simple, feature rich ASCII table generation library") - (description - "Terminal Table is a fast and simple, yet feature rich -table generator written in Ruby. It supports ASCII and -Unicode formatted tables.") - (license license:expat))) - -(define-public jekyll - (package - (name "jekyll") - (version "4.3.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/jekyll/jekyll") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0sz285x5ppbifrnixi9sdzv28kg4x3qbzds3qniiwh1ip9hi1yk4")))) - (build-system ruby-build-system) - (arguments - (list #:modules '((guix build ruby-build-system) - (guix build utils) - (ice-9 ftw) - (srfi srfi-26)) - ;; The cucumber acceptance suite is not run as it depends on an old - ;; version (5). - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'disable-problematic-tests - ;; TODO: Package the missing test inputs. - (lambda _ - (with-directory-excursion "test" - ;; Requires 'jekyll-coffeescript'. - (delete-file "test_coffeescript.rb") - ;; Requires 'tomlrb'. - (delete-file "test_configuration.rb") - (substitute* "test_filters.rb" - ;; The sassify tests fail due to white space - ;; differences (see: - ;; https://github.com/jekyll/jekyll/issues/9322). - ((".*s?ssify with simple string.*" all) - (string-append all - " skip('fails on guix')\n"))) - ;; Requires kramdown-syntax-coderay. - (delete-file "test_kramdown.rb") - ;; Requires 'test-theme', usually made available from the - ;; local checkout via Bundler (not used here). - (delete-file "test_layout_reader.rb") - ;; Requires a large amount of un-packaged dependencies. - (delete-file "test_plugin_manager.rb") - ;; Requires 'classifier-reborn'. - (delete-file "test_related_posts.rb") - ;; This one causes a test failure similar to the ones for - ;; sassify above. - (delete-file "test_sass.rb") - ;; This would require running the tests via 'bundle - ;; exec', but the Gemfile contains too many (extraneous) - ;; dependencies. - (delete-file "test_site.rb") - ;; Delete the theme tests, as they require 'test-theme', - ;; usually made available from the local checkout via the - ;; Gemfile/bundler (not used here). - (for-each delete-file - (scandir - "." (cut string-prefix? "test_theme" <>))) - ;; This one also relies on 'test-theme'. - (delete-file "test_liquid_renderer.rb") - ;; This test assumes internet connectivity, negate it, as - ;; there's no Internet in the build container. - (substitute* "test_utils.rb" - (("assert Utils::Internet\\.connected\\?") - "refute Utils::Internet.connected?")) - ;; These tests fail non-deterministically (see: - ;; https://github.com/jekyll/jekyll/issues/9323). - (delete-file "test_new_command.rb") - (delete-file "test_collections.rb")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; Invoke the test scripts manually, as 'rake test' - ;; doesn't show any failure details, making debugging - ;; needlessly difficult. - (for-each (lambda (f) - (invoke "ruby" "-I" "test" f)) - (find-files "test" "^test_.*\\.rb$")))))))) - (native-inputs - (list bundler - ruby-httpclient - ruby-minitest-profile - ruby-minitest-reporters - ruby-nokogiri - ruby-rspec - ruby-rspec-mocks - ruby-shoulda - ruby-simplecov)) - (propagated-inputs - (list ruby-addressable - ruby-colorator - ruby-em-websocket - ruby-i18n - ruby-jekyll-sass-converter - ruby-jekyll-watch - ruby-kramdown-parser-gfm - ruby-liquid-4 - ruby-mercenary - ruby-pathutil - ruby-rouge - ruby-safe-yaml - ruby-sassc - ruby-terminal-table - ruby-webrick)) - (home-page "https://jekyllrb.com/") - (synopsis "Static site generator") - (description "Jekyll is a simple, blog aware, static site generator.") - (license license:expat))) - -(define-public ruby-jekyll-paginate-v2 - (package - (name "ruby-jekyll-paginate-v2") - (version "3.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-paginate-v2" version)) - (sha256 - (base32 - "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0")))) - (build-system ruby-build-system) - (propagated-inputs - (list jekyll)) - (home-page "https://github.com/sverrirs/jekyll-paginate-v2") - (synopsis "Pagination Generator for Jekyll 3") - (description "The Pagination Generator forms the core of the pagination -logic in Jekyll. It calculates and generates the pagination pages.") - (license license:expat))) - -(define-public ruby-faraday-net-http - (package - (name "ruby-faraday-net-http") - (version "3.0.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "faraday-net_http" version)) - (sha256 - (base32 - "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8")))) - (build-system ruby-build-system) - ;; Do not run the test suite here as it would introduce a dependency cycle - ;; with ruby-faraday, which uses it as part of its test suite. - (arguments (list #:tests? #f)) - (synopsis "Faraday adapter for Net::HTTP") - (description "This gem is a Faraday adapter for the @code{Net::HTTP} -library. Faraday is an HTTP client library that provides a common interface -over many adapters.") - (home-page "https://github.com/lostisland/faraday-net_http") - (license license:expat))) - -(define-public ruby-faraday - (package - (name "ruby-faraday") - (version "2.7.4") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/lostisland/faraday") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0ya6jqa7ryr4i62mmzjjxzd8i8y0pyw0cbhifd758rs6lvkzmxa3")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec")) - (native-inputs - (list ruby-coveralls - ruby-pry - ruby-rack - ruby-rspec - ruby-simplecov - ruby-webmock)) - ;; Propagate faraday-net-http as this is the default adapter used, and - ;; many Ruby projects assumes it is available. - (propagated-inputs (list ruby-ruby2-keywords ruby-faraday-net-http)) - (synopsis "Ruby HTTP/REST API client library") - (description "Faraday is a HTTP/REST API client library which provides a -common interface over different adapters.") - (home-page "https://github.com/lostisland/faraday") - (license license:expat))) - -(define-public ruby-nio4r - (package - (name "ruby-nio4r") - (version "2.5.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "nio4r" version)) - (sha256 - (base32 - "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "spec/spec_helper.rb" - ;; Coveralls is for uploading test coverage information to an - ;; online service, and thus unnecessary for building the Guix - ;; package - (("require \"coveralls\"") "") - (("Coveralls\\.wear!") "") - ;; Remove rspec/retry as we are not retrying the tests - (("require \"rspec/retry\"") "") - (("config\\.display_try_failure_messages = true") "") - (("config\\.verbose_retry = true") "")))) - (add-before 'check 'compile - (lambda _ - (invoke "rake" "compile"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list bundler ruby-rake-compiler ruby-rspec ruby-rubocop)) - (synopsis "New I/O for Ruby") - (description - "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby -for scalable network clients and servers.") - (home-page "https://github.com/socketry/nio4r") - (license license:expat))) - -(define-public ruby-language-server-protocol - (package - (name "ruby-language-server-protocol") - (version "3.17.0.3") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/mtsmfm/language_server-protocol-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0f2g301fz99c6nkca39s9227brlycznv8a9r4b4i99rg25m91lc6")))) - (build-system ruby-build-system) - (arguments - (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" - (("git ls-files -z([^`]*)" _ files) - (string-append "find " files - " -type f -not -regex '.*\\.gem$'" - " -print0 | sort -z")))))))) - (native-inputs - (list ruby-activesupport - ruby-benchmark-ips - ruby-m - ruby-minitest - 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.") - (home-page "https://github.com/mtsmfm/language_server-protocol-ruby") - (license license:expat))) - -(define-public ruby-spy - (package - (name "ruby-spy") - (version "1.0.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "spy" version)) - (sha256 - (base32 - "0g2mma8q17m26k5s864ndlvvqllhcivwg2wdigjvb7z06iw17gds")))) - (build-system ruby-build-system) - (arguments - (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.*") ""))))))) - (native-inputs - (list ruby-coveralls - ruby-minitest-reporters - ruby-pry - ruby-rspec-core - ruby-rspec-expectations)) - (synopsis "Mocking library for Ruby") - (description "Spy is a mocking library. By default, it will raise an -error if you attempt to stub a method that doesn't exist or call the stubbed -method with the wrong arity.") - (home-page "https://github.com/ryanong/spy") - (license license:expat))) - -(define-public ruby-subprocess - (package - (name "ruby-subprocess") - (version "1.5.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "subprocess" version)) - (sha256 - (base32 - "0v49ahfx9b75qg42sl8a3l367g2vihc16g8z5f2raxpxjl1wh2s2")))) - (build-system ruby-build-system) - ;; Do not run the test suite, as there its test dependency ruby-sord would - ;; introduce a cycle with ruby-sorbet-runtime. - (arguments (list #:tests? #f)) - (native-inputs (list ruby-minitest ruby-pry)) - (synopsis "Ruby library to control and communicate with spawned processes") - (description "This Ruby library is controlling and communicating with -spawned processes. It is designed after Python's @code{subprocess} module.") - (home-page "https://github.com/stripe/subprocess") - (license license:expat))) - -(define-public ruby-sus - (package - (name "ruby-sus") - (version "0.20.3") - (source (origin - (method git-fetch) ;for gems.rb - (uri (git-reference - (url "https://github.com/ioquatix/sus") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0j4rkh9li79674h3lfkxlcdygscmb22l77i7hwhxl3gw103gkpdr")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-before 'build 'prune-gems.rb - (lambda _ - (substitute* "gems.rb" - (("gem \"bake-modernize\"") "") - (("gem \"bake-gem\"") "") - (("gem \"utopia-project\"") "")))) - (add-before 'build 'remove-missing-signing-key - (lambda _ - ;; Otherwise, the build fails with ENOENT. - (substitute* "sus.gemspec" - ((".*spec.signing_key.*") "")))) - (delete 'check) ;moved after install - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "CONSOLE_LEVEL" "debug") - (setenv "HOME" "/tmp") - ;; 'bundle exec' must be used to workaround a problem - ;; when using bake test and GEM_PATH (see: - ;; https://github.com/ioquatix/bake/issues/11). - (invoke "bundle" "exec" "bake" "test")))) - (add-before 'check 'set-paths - (lambda _ - (setenv "PATH" (string-append (getenv "PATH") ":" - #$output "/bin")) - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby"))))))) - (native-inputs (list ruby-bake-test ruby-bake-test-external ruby-covered)) - (synopsis "Fast and scalable test runner for Ruby") - (description "This package provides a fast and scalable test runner for Ruby.") - (home-page "https://github.com/ioquatix/sus") - (license license:expat))) - -(define-public ruby-syntax-tree - (package - (name "ruby-syntax-tree") - (version "6.1.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby-syntax-tree/syntax_tree") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0356lgvqp22nkqlrgszf7myfdg4arclg278awh34zyby1cx6hb2k")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - ;; The tests rely on the Gem being installed, so move the check - ;; phase after the install phase. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (setenv "GEM_PATH" (string-append - #$output "/lib/ruby/vendor_ruby:" - (getenv "GEM_PATH"))) - (when tests? - (invoke "rake" "test"))))))) - (native-inputs (list ruby-rubocop-ast ruby-simplecov)) - (propagated-inputs (list ruby-prettier-print)) - (synopsis "Fast Ruby parser and formatter") - (description "Syntax Tree is a suite of tools built on top of the internal -CRuby parser. It provides the ability to generate a syntax tree from source, -as well as the tools necessary to inspect and manipulate that syntax tree. It -can be used to build formatters, linters, language servers, and more.") - (home-page "https://github.com/ruby-syntax-tree/syntax_tree") - (license license:expat))) - -(define-public ruby-stringio - (package - (name "ruby-stringio") - (version "3.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/stringio") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1jgi2w5y0z0x9mfapr2pdlag4wvn03fpf5kbai8bscyh8nn79yka")))) - (build-system ruby-build-system) - (native-inputs (list ruby-rake-compiler ruby-test-unit-ruby-core)) - (synopsis "Pseudo `IO` class from and to `String`") - (description "Pseudo `IO` class from and to `String`.") - (home-page "https://github.com/ruby/stringio") - (license license:bsd-2))) - -(define-public ruby-stream - (package - (name "ruby-stream") - (version "0.5.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "stream" version)) - (sha256 - (base32 - "016m9v81vpj14d8g5ins91zc4pzl7vf5f1gxl7jhfsfy601k7cv2")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-before 'check 'remove-version-constraints - (lambda _ - (delete-file "Gemfile.lock")))))) - (native-inputs (list bundler ruby-stringio ruby-webrick ruby-yard)) - (synopsis "Interface for external iterators") - (description "Module Stream defines an interface for external iterators.") - (home-page "https://github.com/monora/stream") - (license license:bsd-2))) - -(define sorbet-version "0.5.10610.20230106174520-1fa668010") - -(define sorbet-monorepo - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/sorbet/sorbet") - (commit sorbet-version))) - (file-name (string-append "sorbet-" sorbet-version "-checkout")) - (sha256 - (base32 - "0f21dl06alxwn6xgdxyrkd58plmmsv04z2bcls9ld4cfzsrs5537")))) - -(define (make-sorbet-gem-source gem) - "Return the source of GEM, a sub-directory." - (computed-file - (string-append "ruby-sorbet-" gem "-" sorbet-version "-checkout") - (with-imported-modules (source-module-closure '((guix build utils))) - #~(begin - (use-modules (guix build utils)) - (copy-recursively (string-append #$sorbet-monorepo - "/gems/sorbet-" #$gem) - #$output))))) - -(define-public ruby-sorbet-runtime - (package - (name "ruby-sorbet-runtime") - (version sorbet-version) - (source (make-sorbet-gem-source "runtime")) - (build-system ruby-build-system) - ;; 25 out of 841 tests currently fail, seemingly due to invalid - ;; assumptions about file names in the build environment (see: - ;; https://github.com/sorbet/sorbet/issues/6650). - (arguments (list #:tests? #f)) - (native-inputs - (list ruby-minitest - ruby-mocha - ruby-rubocop - ruby-rubocop-performance - ruby-concurrent-ruby - ruby-pry - ruby-parser - ruby-subprocess)) - (synopsis "Runtime type checking component for Sorbet") - (description "Sorbet's runtime type checking component. Sorbet is a -powerful type checker for Ruby.") - (home-page "https://sorbet.org") - (license license:asl2.0))) - -(define-public ruby-mustache - (package - (name "ruby-mustache") - (version "1.1.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mustache" version)) - (sha256 - (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch")))) - (build-system ruby-build-system) - (native-inputs - `(("ruby-simplecov" ,ruby-simplecov) - ("test-patch" - ,(search-patch "ruby-mustache-1.1.1-fix-race-condition-tests.patch")))) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-tests - (lambda* (#:key inputs #:allow-other-keys) - (invoke "patch" "-p1" "--batch" "-i" - (assoc-ref inputs "test-patch"))))))) - (synopsis "Framework-agnostic way to render logic-free views") - (description - "Mustache is a framework-agnostic way to render logic-free views. -Think of Mustache as a replacement for your views. Instead of views -consisting of ERB or HAML with random helpers and arbitrary logic, -your views are broken into two parts: a Ruby class and an HTML -template.") - (home-page "https://github.com/mustache/mustache") - (license license:expat))) - -(define-public ruby-mustermann - (package - (name "ruby-mustermann") - (version "3.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mustermann" version)) - (sha256 - (base32 - "0rwbq20s2gdh8dljjsgj5s6wqqfmnbclhvv2c2608brv7jm6jdbd")))) - (build-system ruby-build-system) - (arguments - ;; No tests. - '(#:tests? #f)) - (synopsis "Library implementing patterns that behave like regular expressions") - (description "Given a string pattern, Mustermann will turn it into an -object that behaves like a regular expression and has comparable performance -characteristics.") - (home-page "https://github.com/sinatra/mustermann") - (license license:expat))) - -(define-public ruby-prettier-print - (package - (name "ruby-prettier-print") - (version "1.2.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby-syntax-tree/prettier_print") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "00cg40jc0il1hpsrpsrqwhsxmx7day9lxp1ksrm08zxzsrz9ykqz")))) - (build-system ruby-build-system) - (native-inputs (list ruby-simplecov)) - (synopsis "Compatible and featureful implementation of @code{prettyprint}") - (description "This package provides a drop-in replacement for the -@code{prettyprint} gem, with more functionality.") - (home-page "https://github.com/ruby-syntax-tree/prettier_print") - (license license:expat))) - -(define-public ruby-html-proofer - (package - (name "ruby-html-proofer") - (version "5.0.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/gjtorikian/html-proofer") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "01ksss3ikppc45z2q33bx8bb9785bqlp1rdqascaqg9mhs392adk")))) - (build-system ruby-build-system) - (arguments - (list - ;; Tests require vcr, which is under the Hippocratic license, which is - ;; not a free software license (see: - ;; https://www.gnu.org/licenses/license-list.html#hippocratic). - #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "html-proofer.gemspec" - (("required_ruby_version = \\[\">= 3.1\"") - "required_ruby_version = [\">= 2.6\"")))) - (replace 'replace-git-ls-files - (lambda _ - ;; The html-proofer.gemspec file contains 'all_files = %x(git - ;; ls-files -z).split("\x0")', but the original phase matches on - ;; `git ls-files -z`. - ;; TODO: Improve ruby-build-system patterns on core-updates. - (substitute* "html-proofer.gemspec" - (("git ls-files -z") - "find . -type f -not -regex '.*\\.gem$' -print0 \ -| sort -z | cut -zc3-"))))))) - (propagated-inputs - (list ruby-addressable - ruby-mercenary - ruby-nokogiri - ruby-parallel - ruby-rainbow - ruby-typhoeus - ruby-yell)) - (synopsis "Test your rendered HTML files to make sure they're accurate") - (description - "HTMLProofer is a set of tests to validate your HTML output. These -tests check if your image references are legitimate, if they have alt tags, -if your internal links are working, and so on. It's intended to be an -all-in-one checker for your output.") - (home-page "https://github.com/gjtorikian/html-proofer") - (license license:expat))) - -(define-public ruby-htmlentities - (package - (name "ruby-htmlentities") - (version "4.3.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "htmlentities" version)) - (sha256 - (base32 - "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (map (lambda (file) - (invoke "ruby" "-Itest" file)) - (find-files "./test" ".*_test\\.rb"))))))) - (synopsis "Encode and decode (X)HTML entities") - (description - "This package provides a module for encoding and decoding (X)HTML -entities.") - (home-page "https://github.com/threedaymonk/htmlentities") - (license license:expat))) - -;;; FIXME: Currently broken with rack 3, awaiting the merge for -;;; https://github.com/sinatra/sinatra/pull/1857 and a new release. -(define-public ruby-sinatra - (package - (name "ruby-sinatra") - (version "3.0.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sinatra" version)) - (sha256 - (base32 - "1ryfja9yd3fq8n1p5yi3qnd0pjk7bkycmxxmbb1bj0axlr1pdv20")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-mustermann ruby-rack ruby-rack-protection ruby-tilt)) - (synopsis "DSL for quick web applications creation in Ruby") - (description - "Sinatra is a DSL for quickly creating web applications in Ruby with -minimal effort.") - (home-page "https://sinatrarb.com/") - (license license:expat))) - -(define-public ruby-timeout - (package - (name "ruby-timeout") - (version "0.4.3") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/timeout") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1mw2dwyp2j05fl2gmw8cj132kk145sbxj5i0whpxcnddlc8gw781")))) - (build-system ruby-build-system) - (native-inputs (list ruby-test-unit-ruby-core)) - (synopsis "Timeout library for Ruby") - (description "Timeout provides a way to auto-terminate a potentially -long-running operation if it hasn't finished in a fixed amount of time.") - (home-page "https://github.com/ruby/timeout") - (license (list license:bsd-2)))) - -(define-public ruby-thin - (package - (name "ruby-thin") - (version "1.7.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "thin" version)) - (sha256 - (base32 - "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f")))) - (build-system ruby-build-system) - (arguments - ;; No tests. - '(#:tests? #f)) - (propagated-inputs - (list ruby-daemons ruby-eventmachine ruby-rack)) - (synopsis "Thin and fast web server for Ruby") - (description "Thin is a Ruby web server that glues together 3 Ruby libraries: -@itemize -@item the Mongrel parser, -@item Event Machine, a network I/O library with high scalability, performance -and stability, -@item Rack, a minimal interface between webservers and Ruby frameworks. -@end itemize\n") - (home-page "https://github.com/macournoyer/thin") - (license license:ruby))) - -(define-public ruby-truthy - (package - (name "ruby-truthy") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "truthy" version)) - (sha256 - (base32 - "19silgd65j3qwfk5w891p9wcmzdmi9ddm2kg5zbvvqn2h9lkfzmd")))) - (build-system ruby-build-system) - (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (substitute* "spec/spec_helper.rb" - (("require 'spec'") - "require 'rspec'")) - (invoke "rspec"))))))) - (native-inputs (list ruby-rspec)) - (synopsis "Object truthiness-related Ruby library") - (description "This library makes it easier to discover the truth values of -various Ruby objects.") - (home-page "https://github.com/ymendel/truthy") - (license license:expat))) - -(define-public ruby-skinny - (package - (name "ruby-skinny") - (version "0.2.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "skinny" version)) - (sha256 - (base32 - "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f ; No included tests - #:phases - (modify-phases %standard-phases - (add-before 'build 'patch-gemspec - (lambda _ - (substitute* ".gemspec" - ((".freeze, \\[\\\"~> 1.0.0\"") - ", [\">= 1.0.0\"") - ((".freeze, \\[\\\"< 1.7\", ") ", ["))))))) - (propagated-inputs - (list ruby-eventmachine ruby-thin)) - (synopsis "Simple, upgradable WebSockets for Ruby Thin") - (description "Skinny is a simple, upgradable WebSockets for Ruby, using -the Thin library.") - (home-page "https://github.com/sj26/skinny") - (license license:expat))) - -(define-public ruby-sys-filesystem - (package - (name "ruby-sys-filesystem") - (version "1.3.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "sys-filesystem" version)) - (sha256 - (base32 - "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01")))) - (build-system ruby-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-before 'check 'set-HOME - (lambda _ - ;; Some tests attempt to stat $HOME. Let them. - (setenv "HOME" "/tmp")))))) - (propagated-inputs - (list ruby-ffi)) - (native-inputs - (list ruby-mkmf-lite)) - (synopsis "Gather file system information") - (description - "The @code{sys-filesystem} library provides a cross-platform interface -for gathering file system information, such as disk space and mount points.") - (home-page "https://github.com/djberg96/sys-filesystem") - (license license:asl2.0))) - -(define-public mailcatcher - (package - (name "mailcatcher") - (version "0.7.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mailcatcher" version)) - (sha256 - (base32 - "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n")))) - (build-system ruby-build-system) - (arguments - ;; Tests require web/assets which is not included in the output. We - ;; might be able to fix this by adding the Git repository to the GEM_PATH - ;; of the tests. See ruby-mysql2. - '(#:tests? #f - #:phases - (modify-phases %standard-phases - (add-before 'build 'patch-gemspec - (lambda _ - (substitute* ".gemspec" - ((".freeze, \\[\\\"= 1.0.9.1") - ", [\">= 1.0.9.1") - ((".freeze, \\[\\\"~> 1.5") ", [\">= 1.5") - ((".freeze, \\[\\\"~> 1.5.0") ", [\">= 1.5.0") - ((".freeze, \\[\\\"~> 1.2") ", [\">= 1.2")))) - (add-before 'build 'loosen-dependency-contraint - (lambda _ - (substitute* "lib/mail_catcher.rb" - (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"") - (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"") - (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"") - (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))))))) - (inputs - (list ruby-eventmachine - ruby-mail - ruby-rack - ruby-sinatra - ruby-skinny - ruby-sqlite3 - ruby-thin)) - (synopsis "SMTP server which catches messages to display them a browser") - (description - "MailCatcher runs a super simple SMTP server which catches any message -sent to it to display in a web interface. Run mailcatcher, set your favourite -app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server, -then check out http://127.0.0.1:1080 to see the mail.") - (home-page "https://mailcatcher.me") - (license license:expat))) - -(define-public ruby-backport - (package - (name "ruby-backport") - (version "1.1.2") - (source - (origin - ;; The gem does not include test code, so fetch from the Git repository. - (method git-fetch) - (uri (git-reference - (url "https://github.com/castwide/backport") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (native-inputs - (list bundler ruby-rspec)) - (inputs - (list ruby-simplecov)) - (synopsis "Pure Ruby library for event-driven IO") - (description - "This package provides a pure Ruby library for event-driven IO.") - (home-page "https://github.com/castwide/backport") - (license license:expat))) - -(define-public ruby-json-schema - (package - (name "ruby-json-schema") - (version "2.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "json-schema" version)) - (sha256 - (base32 - "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - (replace 'build - (lambda _ - (invoke "gem" "build" ".gemspec")))))) - (propagated-inputs - (list ruby-addressable)) - (synopsis "Ruby JSON Schema Validator") - (description "This library provides Ruby with an interface for validating -JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy -support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1 -is also included.") - (home-page "https://github.com/ruby-json-schema/json-schema") - (license license:expat))) - -(define-public swagger-diff - (package - (name "swagger-diff") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "swagger-diff" version)) - (sha256 - (base32 - "18kbrijkafs3vfsbaqz0cqfj7jrz3aj8xr4fgn5if63wlximybv2")))) - (build-system ruby-build-system) - (arguments - (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 - (list bundler ruby-rspec-core ruby-rspec-expectations)) - (synopsis - "Compare Open API Initiative specification files") - (description - "Swagger::Diff is a utility for comparing two different Open API -Initiative (OAI) specifications (formerly known as Swagger specifications). -It is intended to determine whether a newer API specification is -backwards-compatible with an older API specification.") - (home-page "https://github.com/civisanalytics/swagger-diff") - (license license:bsd-3))) - -(define-public ruby-reverse-markdown - (package - (name "ruby-reverse-markdown") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "reverse_markdown" version)) - (sha256 - (base32 - "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-nokogiri)) - (native-inputs - (list bundler ruby-rspec ruby-kramdown ruby-simplecov)) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (synopsis "Convert HTML into Markdown") - (description - "This Ruby module allows you to map simple HTML back into -Markdown---e.g., if you want to import existing HTML data in your -application.") - (home-page "https://github.com/xijo/reverse_markdown") - (license license:wtfpl2))) - -(define-public ruby-solargraph - (package - (name "ruby-solargraph") - (version "0.40.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "solargraph" version)) - (sha256 - (base32 - "1gf049rm0yvw4r8r5yyi890idbfg8qh0dikqx5prvkh11srl73bz")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-backport - bundler - ruby-benchmark - ruby-e2mmap - ruby-jaro-winkler - ruby-kramdown - ruby-kramdown-parser-gfm - ruby-maruku - ruby-nokogiri - ruby-parser - ruby-reverse-markdown - ruby-rubocop - ruby-thor - ruby-tilt - ruby-yard)) - (native-inputs - (list ruby-rspec ruby-pry ruby-simplecov ruby-webmock)) - ;; FIXME: can't figure out how to run the tests properly: - - ;; An error occurred while loading spec_helper. - ;; Failure/Error: return gem_original_require(path) - ;; LoadError: - ;; cannot load such file -- spec_helper - (arguments - '(#:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (synopsis - "IDE tools for code completion, inline documentation, and static analysis") - (description - "Solargraph provides a comprehensive suite of tools for Ruby -programming: intellisense, diagnostics, inline documentation, and type -checking.") - (home-page "https://solargraph.org/") - (license license:expat))) - -(define-public ruby-wayback-machine-downloader - (package - (name "ruby-wayback-machine-downloader") - (version "2.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri - "wayback_machine_downloader" - version)) - (sha256 - (base32 - "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no tests - (synopsis "Download archived websites from the Wayback Machine") - (description - "Wayback Machine Downloader is a command line tool for downloading -websites from the Internet Archive's Wayback Machine (archive.org). -It allows fine grained control over what to download by specifying -which snapshots to consider and what files to include.") - (home-page - "https://github.com/hartator/wayback-machine-downloader") - (license license:expat))) - -(define-public ruby-zeitwerk - (package - (name "ruby-zeitwerk") - (version "2.7.1") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/fxn/zeitwerk") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19qmcdpbh4bl878zd1w19064yjkpb8sxaydcasqfa7p8cfg3hnsr")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-minitest - ruby-minitest-focus - ruby-minitest-proveit - ruby-minitest-reporters - ruby-warning)) - (synopsis "Efficient and thread-safe code loader for Ruby") - (description - "Zeitwerk implements constant autoloading with Ruby semantics. Each gem -and application may have their own independent autoloader, with its own -configuration, inflector, and logger. Supports autoloading, reloading, and -eager loading.") - (home-page "https://github.com/fxn/zeitwerk") - (license license:expat))) - -(define-public ruby-warning - (package - (name "ruby-warning") - (version "1.5.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "warning" version)) - (sha256 - (base32 "0lwcf7fsz1sda1fdbqq1i4q9kzg4f5vwrzgfg1vpa1hcxagw84hg")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; No tests bundled. - (synopsis "Custom processing for warnings") - (description - "This package adds custom processing for warnings for Ruby, including the -ability to ignore specific warning messages, ignore warnings in specific -files/directories, include backtraces with warnings, treat warnings as errors, -deduplicate warnings, and add custom handling for all warnings in specific -files/directories.") - (home-page "https://github.com/jeremyevans/ruby-warning") - (license license:expat))) - -(define-public ruby-wwtd - (package - (name "ruby-wwtd") - (version "1.4.1") - (home-page "https://github.com/grosser/wwtd") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Remove bundled library. - (delete-file "spec/rake-12.3.0.gem"))))) - (build-system ruby-build-system) - (arguments - '(;; XXX: Tests need multiple versions of ruby, wants to run - ;; `bundle install`, etc. - #:tests? #f - #:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "wwtd.gemspec" - (("git ls-files lib/ bin/`") - "find lib/ bin/ -type f |sort`")))) - (add-before 'check 'remove-version-constraints - (lambda _ - (delete-file "Gemfile.lock"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (if tests? - (invoke "rspec" "spec/") - (format #t "test suite not run~%"))))))) - (native-inputs - (list ruby-bump ruby-rspec)) - (synopsis "Run @file{.travis.yml} files locally") - (description - "WWTD is a @dfn{Travis Simulator} that lets you run test matrices -defined in @file{.travis.yml} on your local machine, using @code{rvm}, -@code{rbenv}, or @code{chruby} to test different versions of Ruby.") - (license license:expat))) - -(define-public ruby-rugged - ;; The last release is old and doesn't build anymore (see: - ;; https://github.com/libgit2/rugged/issues/951). - (let ((commit "6379f23cedd5f527cf6a5c229627e366b590a22d") - (revision "0")) - (package - (name "ruby-rugged") - (version (git-version "1.6.2" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/libgit2/rugged") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0yac7vm0l2jsdsxf2k7xbny4iyzsy8fhiy2g5sphhffp7xgynny8")))) - (build-system ruby-build-system) - (arguments - (list #:gem-flags - #~(list "--" "--use-system-libraries") - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'adjust-extconf.rb - (lambda _ - ;; Neither using --with-git2-dir=$prefix nor providing - ;; pkg-config allows locating the libgit2 prefix (see: - ;; https://github.com/libgit2/rugged/issues/955). - (substitute* "ext/rugged/extconf.rb" - (("LIBGIT2_DIR = File.join.*'vendor', 'libgit2'.*") - (format #f "LIBGIT2_DIR = ~s~%" - #$(this-package-input "libgit2")))))) - (delete 'check) ;moved after the install phase - (add-after 'install 'check - (assoc-ref %standard-phases 'check)) - (add-before 'check 'set-GEM_PATH - (lambda _ - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")))) - (add-before 'check 'disable-problematic-tests - (lambda _ - (with-directory-excursion "test" - (for-each delete-file - ;; These tests require an actual libgit2 git - ;; repository checkout. - '("blame_test.rb" - "blob_test.rb" - "cherrypick_test.rb" - "config_test.rb" - "commit_test.rb" - "diff_test.rb" - "index_test.rb" - "merge_test.rb" - "note_test.rb" - "object_test.rb" - "patch_test.rb" - "rebase_test.rb" - "reference_test.rb" - "remote_test.rb" - "repo_apply_test.rb" - "repo_ignore_test.rb" - "repo_pack_test.rb" - "repo_reset_test.rb" - "repo_test.rb" - "revert_test.rb" - "settings_test.rb" - "status_test.rb" - "submodule_test.rb" - "tag_test.rb" - "tree_test.rb" - "walker_test.rb")) - (delete-file-recursively "online"))))))) - (native-inputs (list git-minimal/pinned ruby-rake-compiler)) - (inputs (list libgit2)) - (synopsis "Ruby bindings to the libgit2 linkable C Git library") - (description "Rugged is a library for accessing libgit2 in Ruby. It gives -you the speed and portability of libgit2 with the beauty of the Ruby -language.") - (home-page "https://www.rubydoc.info/gems/rugged") - (license license:expat)))) - -(define-public ruby-yell - (package - (name "ruby-yell") - (version "2.2.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "yell" version)) - (sha256 - (base32 - "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "rake" "examples")))))) ; there is no test target. - (synopsis - "Extensible logging library for Ruby") - (description - "Yell is a comprehensive logging replacement for Ruby. It defines -multiple adapters, various log level combinations and message formatting -options.") - (home-page "https://github.com/rudionrails/yell") - (license license:expat))) - -(define-public ruby-e2mmap - (package - (name "ruby-e2mmap") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "e2mmap" version)) - (sha256 - (base32 - "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;; There is a rakefile but no tests - (synopsis - "Module for defining custom exceptions with specific messages") - (description - "Exception2MessageMapper (e2mmap) is a helper module for easily defining -exceptions with predefined messages.") - (home-page "https://github.com/ruby/e2mmap") - (license license:bsd-2))) - -(define-public ruby-benchmark - (package - (name "ruby-benchmark") - (version "0.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "benchmark" version)) - (sha256 - (base32 - "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg")))) - (build-system ruby-build-system) - (synopsis "Performance benchmarking library") - (description "This package provides methods for benchmarking Ruby code, -giving detailed reports on the time taken for each task.") - (home-page "https://github.com/ruby/benchmark") - (license license:bsd-2))) - -(define-public ruby-jekyll-feed - (package - (name "ruby-jekyll-feed") - (version "0.15.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-feed" version)) - (sha256 - (base32 - "1zxqkrnix0xiw98531h5ga6h69jhzlx2jh9qhvcl67p8nq3sgza9")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #false)) ;there are none - (propagated-inputs - (list jekyll)) - (synopsis - "Jekyll plugin to generate an Atom feed of your Jekyll posts") - (description - "This package provides a Jekyll plugin to generate an Atom feed -of your Jekyll posts.") - (home-page - "https://github.com/jekyll/jekyll-feed") - (license license:expat))) - -(define-public ruby-jekyll-sitemap - (package - (name "ruby-jekyll-sitemap") - (version "1.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-sitemap" version)) - (sha256 - (base32 - "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #false)) ;there are none - (propagated-inputs - (list jekyll)) - (synopsis - "Automatically generate a sitemap.xml for your Jekyll site") - (description - "This package provides a Jekyll plugin to silently generate -a sitemaps.org compliant sitemap for your Jekyll site.") - (home-page - "https://github.com/jekyll/jekyll-sitemap") - (license license:expat))) - -(define-public ruby-jekyll-seo-tag - (package - (name "ruby-jekyll-seo-tag") - (version "2.7.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-seo-tag" version)) - (sha256 - (base32 - "0fsi75hymk2wswy216fs224p5ycrzjw1kshw1bsl5czhv42wr2w3")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #false)) - (propagated-inputs - (list jekyll)) - (synopsis - "Jekyll plugin to add metadata tags for search engines and social networks") - (description - "This package provides a Jekyll plugin to add metadata tags for search engines -and social networks to better index and display your site's content.") - (home-page - "https://github.com/jekyll/jekyll-seo-tag") - (license license:expat))) - -(define-public ruby-taskjuggler - (package - (name "ruby-taskjuggler") - (version "3.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "taskjuggler" version)) - (sha256 - (base32 - "16d5vgz54all8vl3haqy6j69plny3np4kc3wq7wy3xa3i0h7v60z")))) - (build-system ruby-build-system) - (native-inputs (list ruby-rspec tzdata-for-tests)) - (propagated-inputs - (list ruby-mail ruby-term-ansicolor)) - (arguments - '(#:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "tasks/rdoc.rake" - (("`git ls-files -- lib`") - "`find lib/ -type f |sort`")))) - (add-before 'check 'tzdir-setup - (lambda* (#:key inputs #:allow-other-keys) - (setenv "TZDIR" - (string-append (assoc-ref inputs "tzdata") - "/share/zoneinfo")))) - (add-before 'check 'delete-test-BatchProcessor - ;; test_BatchProcessor fails with exception: - ;; run> terminated with exception (report_on_exception is true) - (lambda _ - (delete-file "test/test_BatchProcessor.rb")))))) - (synopsis - "Project management command line tool with a domain specific language") - (description - "TaskJuggler (tj3) is a project management tool for project planning and -tracking using a domain specific language; projects are plain text files -written using your favourite text editor. It includes reporting in HTML, CSV -or iCalendar format and an email based status tracking system to send and -receive time sheets from collaborators. - -It covers the complete spectrum of project management tasks from the first -idea to the completion of the project. It assists you during project scoping, -resource assignment, cost and revenue planning, risk and communication -management, status tracking and reporting.") - (home-page "https://taskjuggler.org") - (license license:gpl2))) - -(define-public ruby-cmath - (package - (name "ruby-cmath") - (version "1.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cmath" version)) - (sha256 - (base32 - "1xkz6xyhpkjbdvpdib8450w62rls1mjryz0gzbbnadxkxn82nb8m")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #false)) - (native-inputs - (list bundler ruby-rake-compiler)) - (synopsis "Trigonometric functions for complex numbers") - (description - "This gem is a library that provides trigonometric and transcendental -functions for complex numbers. The functions in this module accept integers, -floating-point numbers or complex numbers as arguments.") - (home-page "https://github.com/ruby/cmath") - (license license:bsd-2))) - -(define-public ruby-sucker-punch - (package - (name "ruby-sucker-punch") - (version "3.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sucker_punch" version)) - (sha256 - (base32 "12by9vx8q6l4i56q62k1s1ymaxbpg4rny5zngj5i5h09kyh2yp4p")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'less-strict-dependencies - (lambda _ - (substitute* "sucker_punch.gemspec" - (("1.0.0") "1.0"))))))) - (native-inputs - (list - ruby-pry)) - (propagated-inputs - (list - ruby-concurrent)) - (home-page "https://github.com/brandonhilkert/sucker_punch") - (synopsis "Asynchronous processing library for Ruby") - (description "Sucker Punch is a single-process Ruby asynchronous processing -library. It is perfect for asynchronous processes like emailing, data crunching -or social platform manipulation; and generally recommended for jobs that are -fast and non-mission critical like logs, emails, etc.") - (license license:expat))) - -(define-public ruby-countdownlatch - (package - (name "ruby-countdownlatch") - (version "1.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "countdownlatch" version)) - (sha256 - (base32 "1v6pbay6z07fp7yvnba1hmyacbicvmjndd8rn2h1b5rmpcb5s0j3")))) - (build-system ruby-build-system) - (home-page "https://github.com/benlangfeld/countdownlatch") - (synopsis "Thread synchronization aid Ruby") - (description "CountDownLatch is a synchronization aid that allows one or -more threads to wait until a set of operations being performed in other threads -completes.") - (license license:expat))) - -(define-public ruby-value-semantics - (package - (name "ruby-value-semantics") - (version "3.6.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "value_semantics" version)) - (sha256 - (base32 "1vdwai8wf6r1fkvdpyz1vzxm89q7ghjvb3pqpg2kvwibwzd99dnx")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list - ruby-rspec)) - (home-page "https://github.com/tomdalling/value_semantics") - (synopsis "Ruby gem for making value classes") - (description "ValueSemantics generates modules that provide conventional -value semantics for a given set of attributes. The behaviour is similar to an -immutable Struct class, plus extensible, lightweight validation and coercion.") - (license license:expat))) - -(define-public ruby-promise - (package - (name "ruby-promise") - (version "0.7.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "promise.rb" version)) - (sha256 - (base32 "0a819sikcqvhi8hck1y10d1nv2qkjvmmm553626fmrh51h2i089d")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'less-strict-dependencies - (lambda _ - (substitute* "Rakefile" - (("if Gem.ruby_version.*") "if false\n")) - (substitute* "spec/spec_helper.rb" - ((".*devtools/spec_helper.*") "\n"))))))) - (native-inputs - (list - ruby-rspec - ruby-rspec-its - ruby-awesome-print - ruby-fuubar)) - (home-page "https://github.com/lgierth/promise.rb") - (synopsis "Asynchronous operation library for Ruby") - (description "Promise is a Ruby implementation of the Promises/A+ -specification. It provides 100% mutation coverage, tested on MRI 1.9, 2.0, 2.1, -2.2, Rubinius, and JRuby.") - (license license:unlicense))) - -(define-public ruby-multicodecs - (package - (name "ruby-multicodecs") - (version "0.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "multicodecs" version)) - (sha256 - (base32 "0drq267di57l9zqw6zvqqimilz42rbc8z7392dwkk8wslq30s7v8")))) - (build-system ruby-build-system) - (home-page "https://github.com/SleeplessByte/ruby-multicodec") - (synopsis "Ruby implementation of multiformats/multicodec") - (description "Multicodecs is the ruby implementation of -multiformats/multicodec, a canonical table of of codecs used by various -multiformats.") - (license license:expat))) - -(define-public ruby-multihashes - (package - (name "ruby-multihashes") - (version "0.2.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "multihashes" version)) - (sha256 - (base32 "17wiyy3fiv8rpgdv9ca01yncsmaaf8yg15bg18wc7m9frss1vgqg")))) - (build-system ruby-build-system) - (propagated-inputs - (list - ruby-multicodecs)) - (home-page "https://github.com/multiformats/ruby-multihash") - (synopsis "Multihash implementation for Ruby") - (description "Multihashes provides a simple, low-level multihash -implementation for Ruby. A multihash is a digest with an embedded hash function -code") - (license license:expat))) - -(define-public ruby-lazy-object - (package - (name "ruby-lazy-object") - (version "0.0.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "lazy_object" version)) - (sha256 - (base32 "08px15lahc28ik9smvw1hgamf792gd6gq0s4k94yq1h7jq25wjn8")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (home-page "https://github.com/HornsAndHooves/lazy_object") - (synopsis "Object wrapper that forwards all calls to the reference object") - (description "LazyObject is an object wrapper that forwards all calls to the -reference object. This object is not created until the first method dispatch.") - (license license:expat))) - -(define-public ruby-citrus - (package - (name "ruby-citrus") - (version "3.0.2") - (source - (origin - (method git-fetch) - ;; Download from GitHub because the rubygems version does not contain - ;; files needed for tests. - (uri (git-reference - (url "https://github.com/mjackson/citrus") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "197wrgqrddgm1xs3yvjvd8vkvil4h4mdrcp16jmd4b57rxrrr769")))) - (build-system ruby-build-system) - (home-page "https://mjackson.github.io/citrus/") - (synopsis "Parsing Expressions for Ruby") - (description "Citrus is a parsing library for Ruby that combines the -expressiveness of the language with the parsing expressions.") - (license license:expat))) - -(define-public ruby-cbor - (package - (name "ruby-cbor") - (version "0.5.9.6") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cbor" version)) - (sha256 - (base32 "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (native-inputs - (list - ruby-rspec - ruby-rake-compiler - ruby-yard)) - (home-page "https://cbor.io/") - (synopsis "Concise Binary Object Representation") - (description "CBOR is a library for the -@acronym{CBOR, Concise Binary Object Representation} format, based on -Sadayuki Furuhashi's MessagePack library.") - (license license:asl2.0))) - -(define-public ruby-gem-release - (package - (name "ruby-gem-release") - (version "2.2.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "gem-release" version)) - (sha256 - (base32 "108rrfaiayi14zrqbb6z0cbwcxh8n15am5ry2a86v7c8c3niysq9")))) - (build-system ruby-build-system) - (arguments - ;; No rakefile - `(#:tests? #f)) - (home-page "https://github.com/svenfuchs/gem-release") - (synopsis "Ruby gem plugin for release management") - (description "GemRelease is a gem plugin that aims at making gem development -easier by automating repetitive work based on conventions, configuration, and -templates.") - (license license:expat))) - -(define-public ruby-base32 - (package - (name "ruby-base32") - (version "0.3.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "base32" version)) - (sha256 - (base32 "1fjs0l3c5g9qxwp43kcnhc45slx29yjb6m6jxbb2x1krgjmi166b")))) - (build-system ruby-build-system) - (native-inputs - (list - ruby-gem-release)) - (home-page "https://github.com/stesla/base32") - (synopsis "Ruby extension for base32 encoding and decoding") - (description "Base32 is a library which provides base32 decoding and -encoding.") - (license license:expat))) - -(define-public ruby-dhall - (package - (name "ruby-dhall") - (version "0.5.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "dhall" version)) - (sha256 - (base32 "09wcq8xc1ynld04r2f332bx8cn7rjc4afaq8hm1dr2fc35jlpn6m")))) - (build-system ruby-build-system) - (arguments - ;; No test in gem archive - `(#:tests? #f)) - (propagated-inputs - (list - ruby-base32 - ruby-cbor - ruby-citrus - ruby-lazy-object - ruby-multihashes - ruby-promise - ruby-value-semantics)) - (home-page "https://git.sr.ht/~singpolyma/dhall-ruby") - (synopsis "Ruby implementation of the Dhall configuration language") - (description "Dhall.rb is a Ruby implementation of the Dhall configuration -language. Dhall is a memory safe and non-Turing-complete configuration -language.") - (license license:gpl3+))) - -(define-public ruby-money - (package - (name "ruby-money") - (version "6.16.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "money" version)) - (sha256 - (base32 "0jkmsj5ymadik7bvl670bqwmvhsdyv7hjr8gq9z293hq35gnyiyg")))) - (build-system ruby-build-system) - (arguments - ;; No rakefile. - `(#:tests? #f)) - (propagated-inputs - (list - ruby-i18n)) - (home-page "https://rubymoney.github.io/money/") - (synopsis "Currency conversion library for Ruby") - (description "RubyMoney provides a library for dealing with money and -currency conversion. Its features are: -@itemize -@item -Provides a Money class which encapsulates all information about a certain -amount of money, such as its value and its currency. -@item -Provides a Money::Currency class which encapsulates all information about a -monetary unit. -@item -Represents monetary values as integers, in cents; so avoids floating point -rounding errors. -@item -Represents currency as Money::Currency instances providing a high level of -flexibility. -@item Provides APIs for exchanging money from one currency to another. -@end itemize") - (license license:expat))) - -(define-public ruby-monetize - (package - (name "ruby-monetize") - (version "1.11.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "monetize" version)) - (sha256 - (base32 "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (native-inputs - (list - ruby-rspec)) - (propagated-inputs - (list - ruby-money)) - (home-page "https://github.com/RubyMoney/monetize") - (synopsis "Convert various objects into Money objects") - (description "Monetize provides a library for converting various objects -into Money objects.") - (license license:expat))) - -(define-public ruby-money-open-exchange-rates - (package - (name "ruby-money-open-exchange-rates") - (version "1.4.0") - (source - (origin - (method git-fetch) - ;; Download from GitHub because the rubygems version does not contain - ;; Rakefile. - (uri (git-reference - (url "https://github.com/spk/money-open-exchange-rates") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "11xwqli8snr19k48yh8h77sal5vxd4snzq9gxg08v61f0574m3gw")))) - (build-system ruby-build-system) - (native-inputs - (list - ruby-minitest - ruby-mocha - ruby-monetize - ruby-rake - ruby-rubocop - ruby-timecop - ruby-webmock)) - (propagated-inputs - (list - ruby-money)) - (home-page "https://spk.github.io/money-open-exchange-rates/") - (synopsis "Money open exchange rates for Ruby") - (description "This package provides a gem that calculates the exchange rate -using published rates from open-exchange-rates. Compatible with the money gem.") - (license license:expat))) - -(define-public ruby-roda - (package - (name "ruby-roda") - (version "3.57.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "roda" version)) - (sha256 - (base32 "0nkfxnbcfnriywvx9kpamp850cwjmqv8ssajc95d0aiyjr4kdrfy")))) - (build-system ruby-build-system) - (arguments - ;; No rakefile - `(#:tests? #f)) - (propagated-inputs (list ruby-rack)) - (home-page "https://roda.jeremyevans.net") - (synopsis "Routing Tree Web Toolkit") - (description "Roda is a routing tree web toolkit, designed for building fast -and maintainable web applications in ruby.") - (license license:expat))) - -(define-public ruby-nori - (package - (name "ruby-nori") - (version "2.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "nori" version)) - (sha256 - (base32 "066wc774a2zp4vrq3k7k8p0fhv30ymqmxma1jj7yg5735zls8agn")))) - (build-system ruby-build-system) - (arguments - ;; Tests require too old version of rspec - `(#:tests? #f)) - (native-inputs - (list ruby-nokogiri - ruby-rake - ruby-rspec)) - (home-page "https://github.com/savonrb/nori") - (synopsis "XML to Hash translator") - (description "Nori is a simple XML parsing ripped from Crack which in-turn -ripped from Merb. It supports pluggable parsers and ships with both REXML and -Nokogiri implementations.") - (license license:expat))) - -;; This package is deprecated per upstream and should be phased out. -(define-public ruby-faraday-middleware - (package - (name "ruby-faraday-middleware") - (version "1.2.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "faraday_middleware" version)) - (sha256 - (base32 "1bw8mfh4yin2xk7138rg3fhb2p5g2dlmdma88k82psah9mbmvlfy")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)) - (propagated-inputs (list ruby-faraday)) - (home-page "https://github.com/lostisland/faraday_middleware") - (synopsis "Various middleware for Faraday") - (description "Faraday_Middleware is a collection of middleware for the -Faraday-based API wrappers.") - (license license:expat))) - -(define-public ruby-faraday-multipart - (package - (name "ruby-faraday-multipart") - (version "1.0.4") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/lostisland/faraday-multipart") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0ywxhff40a688n50lxrn4d8y096l8sbrwp1jfz4zd3kdiiygclka")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec")) - (native-inputs (list ruby-faraday ruby-multipart-parser ruby-rspec)) - (propagated-inputs (list ruby-multipart-post)) - (synopsis "Multipart-post requests extension for Faraday") - (description "This Ruby gem extends Faraday to perform multipart-post -requests.") - (home-page "https://github.com/lostisland/faraday-multipart") - (license license:expat))) - -(define-public ruby-bandwidth-iris - (package - (name "ruby-bandwidth-iris") - (version "7.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby-bandwidth-iris" version)) - (sha256 - (base32 "131c4jhyvnrwbhizkks17fi9g85cwsq5f1p8zi408zyf63n7230d")))) - (build-system ruby-build-system) - (arguments - ;; XXX: Tests don't require helper for some reason, so all fail. - `(#:tests? #f)) - (native-inputs - (list ruby-rspec - ruby-yard)) - (propagated-inputs - (list ruby-activesupport - ruby-builder - ruby-faraday - ruby-faraday-middleware - ruby-nori)) - (home-page "https://github.com/Bandwidth/ruby-bandwidth-iris") - (synopsis "Gem for integrating to Bandwidth's Iris API") - (description "Bandwidth IRIS is a Ruby SDK for Bandwidth Phone Number -Dashboard. It is a Ruby Client library for IRIS / BBS API.") - (license license:expat))) - -(define-public ruby-securerandom - (package - (name "ruby-securerandom") - (version "0.4.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "securerandom" version)) - (sha256 - (base32 "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; No tests found. - (synopsis "Interface for secure random number generator") - (description "This package provides a Ruby interface for secure random -number generators.") - (home-page "https://github.com/ruby/securerandom") - (license (list license:bsd-2)))) - -(define-public ruby-selenium-webdriver - (package - (name "ruby-selenium-webdriver") - (version "4.22.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "selenium-webdriver" version)) - (sha256 - (base32 - "0rjxlivsh32xvjq78p1m1sr366aa04wms4hwb2r187ygrnmp0hv4")))) - (build-system ruby-build-system) - ;; FIXME: The gem release lacks test files, and the git checkout lacks - ;; JavaScript source that is generated using Bazel, which isn't available - ;; in Guix yet, so disable the test suite for now. - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-base64 - ruby-rexml - ruby-rubyzip - ruby-websocket)) - (synopsis "Selenium browser automation bindings for Ruby") - (description "Selenium implements the W3C WebDriver protocol to automate -popular browsers. It aims to mimic the behaviour of a real user as it -interacts with the application's HTML. It's primarily intended for web -application testing, but any web-based task can be automated. This package -provides the Ruby bindings of Selenium.") - (home-page "https://www.selenium.dev/") - (license license:asl2.0))) - -(define-public ruby-sentry-core - (package - (name "ruby-sentry-core") - (version "5.3.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sentry-ruby-core" version)) - (sha256 - (base32 "141mrw8wghhsjvln9m6ld3hap3xc5v901jjiz007xywy25725hyd")))) - (build-system ruby-build-system) - (arguments - ;; No rakefile in gem. - `(#:tests? #f)) - (propagated-inputs - (list ruby-concurrent - ruby-faraday)) - (home-page "https://sentry.io/for/ruby/") - (synopsis "Client interface for the Sentry error logger") - (description "Sentry-Core provides a gem that provides a client -interface for the Sentry error logger.") - (license license:expat))) - -(define-public ruby-sentry - (package - (name "ruby-sentry") - (version "5.3.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sentry-ruby" version)) - (sha256 - (base32 "0by9mvw8rklzpyx59vfija8h3ssfvxvf5nbqxfmygfy6lm1vdngz")))) - (build-system ruby-build-system) - (arguments - ;; No rakefile in gem - `(#:tests? #f)) - (propagated-inputs - (list ruby-concurrent - ruby-faraday - ruby-sentry-core)) - (home-page "https://sentry.io/for/ruby/") - (synopsis "Client interface for the Sentry error logger") - (description "Sentry provides a gem that provides a client -interface for the Sentry error logger.") - (license license:expat))) - -(define-public ruby-webrick - (package - (name "ruby-webrick") - (version "1.8.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/webrick") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xb0mk3cghdir65nmj0mblprbf21blli7267b6yyvxclh307yp6s")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'delete-problematic-tests - (lambda _ - ;; The httresponse tests fail for - ;; unknown reasons (see: - ;; https://github.com/ruby/webrick/issues/112). - (delete-file "test/webrick/test_httpresponse.rb")))))) - (home-page "https://github.com/ruby/webrick") - (synopsis "HTTP server toolkit") - (description "WEBrick is an HTTP server toolkit that can be configured as an -HTTPS server, a proxy server, and a virtual-host server.") - (license license:bsd-2))) - -(define-public ruby-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)))) - -(define-public ruby-braintree - (package - (name "ruby-braintree") - (version "4.12.0") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/braintree/braintree_ruby") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0gfgkymy3655drwgs42bj9ap9qib1l30sajxmypmp6s75m9w3gsh")))) - (build-system ruby-build-system) - (arguments - (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 - ruby-rake - ruby-rspec - ruby-webrick)) - (propagated-inputs - (list ruby-builder - ruby-rexml)) - (home-page "https://www.braintreepayments.com/") - (synopsis "Integration access to the Braintree Gateway") - (description "Braintree provides resources and tools for developers to -integrate Braintree's global payments platform.") - (license license:expat))) - -(define-public ruby-niceogiri - (package - (name "ruby-niceogiri") - (version "1.1.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "niceogiri" version)) - (sha256 - (base32 "1ha93211bc9cvh23s9w89zz7rq8irpf64ccd9arvg8v1sxg2798a")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'less-strict-dependencies - (lambda _ - (substitute* "niceogiri.gemspec" - (("2\\.7") "3.8") ;rspec - ((".*dependency.*bundler.*") "\n") - ((".*dependency.*guard-rspec.*") "\n"))))))) - (native-inputs - (list ruby-rspec - ruby-yard)) - (propagated-inputs (list ruby-nokogiri)) - (home-page "https://github.com/benlangfeld/Niceogiri") - (synopsis "Supplement for Nokogiri") - (description "Niceogiri provides wrappers and helpers for XML manipulation -using Nokogiri.") - (license license:expat))) - -(define-public ruby-blather - (package - (name "ruby-blather") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "blather" version)) - (sha256 - (base32 "05ry2x835fj4pzk61282pcz86n018cr39zbgwbi213md74i90s7c")))) - (build-system ruby-build-system) - (arguments - ;; XXX: Tests require too old version of rspec. - `(#:tests? #f)) - (native-inputs - (list ruby-countdownlatch - ruby-mocha - ruby-rb-fsevent - ruby-rspec - ruby-yard)) - (propagated-inputs - (list ruby-activesupport - ruby-eventmachine - ruby-niceogiri - ruby-nokogiri - ruby-sucker-punch)) - (home-page "https://github.com/adhearsion/blather") - (synopsis "XMPP Domain Specific Language for Ruby") - (description "Blather is a XMPP DSL for Ruby written on top of EventMachine -and Nokogiri.") - (license license:expat))) - -(define-public ruby-wapiti - (package - (name "ruby-wapiti") - (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 (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1273dqvn6flq2qv9qbp104rgc7zp1gqx4096s0v0z5f0qnhzc7d6")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-builder - ruby-rexml)) - (native-inputs - (list ruby-pry - ruby-rake-compiler - ruby-rspec - ruby-simplecov)) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'replace-git-ls-files 'replace-another-git-ls-files - (lambda args - (substitute* "wapiti.gemspec" - (("`git ls-files spec`") - "`find spec -type f | sort`")))) - (add-before 'build 'compile - (lambda args - (invoke "rake" "compile")))))) - (home-page "https://github.com/inukshuk/wapiti-ruby") - (synopsis "Wicked fast Conditional Random Fields for Ruby") - (description - "The Wapiti-Ruby gem provides a wicked fast linear-chain @acronym{CRF, -Conditional Random Fields} API for sequence segmentation and labelling. It is -based on the codebase of @url{https://wapiti.limsi.fr, Wapiti}.") - (license license:bsd-2))) - -(define-public ruby-namae - (package - (name "ruby-namae") - (version "1.1.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "namae" version)) - (sha256 - (base32 - "1j3nl1klkx3gymrdxfc1hlq4a8qlvhhl9aj5v1v08b9fz27sky0l")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-cucumber - ruby-rspec - ruby-simplecov)) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'allow-newer-cucumber - (lambda args - (substitute* "Gemfile" - (("'cucumber', '[^']*'") - "'cucumber'")))) - (replace 'check - ;; Avoid 'rake' so we don't need jeweler. - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (apply invoke - "rspec" - (find-files "spec" "_spec\\.rb$")))))))) - (home-page "https://github.com/berkmancenter/namae") - (synopsis "Parser for human names") - (description - "Namae (名前) is a parser for human names. It recognizes personal names -of various cultural backgrounds and tries to split them into their component -parts (e.g., given and family names, honorifics etc.).") - (license (list license:bsd-2 license:agpl3+)))) - -(define-public ruby-latex-decode - (package - (name "ruby-latex-decode") - (version "0.4.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/latex-decode") - (commit (string-append "v" version)))) - (sha256 - (base32 - "1f5j67ayd04pjkmzvn0hk7cr8yqvn0gyg9ns6a0vhzj2gwna9ihy")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (native-inputs - (list ruby-cucumber - ruby-rspec)) - (arguments - (list - #:test-target "cucumber" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'avoid-bundler - (lambda args - (substitute* "Rakefile" - (("require 'bundler" orig) - (string-append "# " orig " # patched for Guix")) - (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig) - (string-append orig " do |c|\n" - " c.bundler = false # patched for Guix\n" - "end")) - (("Bundler\\.setup" orig) - (string-append "true # " orig " # patched for Guix"))) - (substitute* "cucumber.yml" - ;; thanks to avoiding bundler, we can't use this option - ((" --publish-quiet") - "")))) - (add-after 'replace-git-ls-files 'replace-another-git-ls-files - (lambda args - (substitute* "latex-decode.gemspec" - (("`git ls-files -- [{]test,spec,features[}]/\\*`") - "`find {test,spec,features} -type f | sort`"))))))) - (home-page "https://github.com/inukshuk/latex-decode") - (synopsis "Convert LaTeX to Unicode") - (description - "This package provides a gem to convert LaTeX input to Unicode. Its -original use was as an input filter for BibTeX-Ruby, but it can be used -independently to decode LaTeX. Many of the patterns used by this Ruby gem are -based on François Charette's equivalent Perl module @code{LaTeX::Decode}.") - (license license:gpl3+))) - -(define-public ruby-link-header - (package - (name "ruby-link-header") - (version "0.0.8") - (source (origin - (method url-fetch) - (uri (rubygems-uri "link_header" version)) - (sha256 - (base32 - "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm")))) - (build-system ruby-build-system) - (home-page "https://github.com/asplake/link_header") - (synopsis "Parse and format HTTP @code{Link} headers") - (description - "This gem provides the classes @code{LinkHeader} and -@code{LinkHeader::Link}, which represent HTTP @code{Link} headers conforming -to RFC 5988. Objects can be constructed from and converted to text or a -JSON-friendly @code{Array} representation. They can also be used to generate -corresponding HTML @code{link} elements.") - (license license:expat))) - -(define-public ruby-lint-roller - (package - (name "ruby-lint-roller") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "lint_roller" version)) - (sha256 - (base32 "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard. - (native-inputs (list ruby-minitest)) - (synopsis "Specification for linter and formatter rulesets") - (description - "This package provides a plugin specification for Ruby linter and -formatter rulesets.") - (home-page "https://github.com/standardrb/lint_roller") - (license license:expat))) - -(define-public ruby-rdf - (package - (name "ruby-rdf") - (version "3.2.8") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rdf" version)) - (sha256 - (base32 - "1cj0k8ryd8hgbkgqb5swvy6fiygxny3y5bln0my5gv6dbfv3gm20")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-link-header)) - (arguments - (list #:tests? #f)) ;; tests have many cyclic dependencies - (home-page "https://ruby-rdf.github.io/") - (synopsis "Linked Data for Ruby") - (description - "This gem contains the core algorithms and classes used for doing basic -programming with @acronym{RDF, Resource Description Framework} data, -implemented in pure Ruby.") - (license license:unlicense))) - -(define-public ruby-rdf-vocab - (package - (name "ruby-rdf-vocab") - (version "3.2.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rdf-vocab" version)) - (sha256 - (base32 - "1bqmp9rfjvd56ajjz68ij6jla1wjf1fqg7bi4dpnjrsmn4pwaq7l")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-rdf)) - (arguments - (list #:tests? #f)) ;; tests have many cyclic dependencies - (home-page "https://github.com/ruby-rdf/rdf-vocab") - (synopsis "Common RDF vocabularies") - (description - "This gem extends @code{ruby-rdf} with several common @acronym{RDF, -Resource Description Framework} vocabularies.") - (license license:unlicense))) - -(define-public ruby-rdiscount - (package - (name "ruby-rdiscount") - (version "2.2.7") - (source (origin - (method git-fetch) ;for the full test suite - (uri (git-reference - (url "https://github.com/davidfstr/rdiscount") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1lpfxq3gv0dgmnki9jgfnc8n9k4x9vyq9miqdxv6g4kp90qyfifc")))) - (build-system ruby-build-system) - (native-inputs (list perl)) - (synopsis "Discount Markdown Processor for Ruby") - (description "Discount is an implementation of John Gruber's Markdown -markup language in C. It implements all of the language described in the -markdown syntax document and passes the Markdown 1.0 test suite.") - (home-page "https://dafoster.net/projects/rdiscount/") - (license license:bsd-3))) - -(define-public ruby-bibtex-ruby - (package - (name "ruby-bibtex-ruby") - (version "6.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bibtex-ruby" version)) - (sha256 - (base32 - "0vynqa8q9hwghw6sdljr304b5gh11nqzy5nwqqwxmgy7pqyf7qw5")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-latex-decode - ruby-rdf - ruby-rdf-vocab)) - (native-inputs - (list ruby-cucumber - ruby-minitest - ruby-yard)) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'avoid-bundler - (lambda args - (substitute* "Rakefile" - (("require 'bundler" orig) - (string-append "# " orig " # patched for Guix")) - (("Bundler\\.setup" orig) - (string-append "true # " orig " # patched for Guix")))))))) - (home-page "https://github.com/inukshuk/bibtex-ruby") - (synopsis "Rubyist's Swiss Army knife for all things BibTeX") - (description - "BibTeX-Ruby is the Rubyist's Swiss Army knife for all things BibTeX. -It includes a parser for all common BibTeX objects and a sophisticated name -parser that tokenizes correctly formatted names. BibTeX-Ruby recognizes -BibTeX string replacements, joins values containing multiple strings or -variables, supports cross-references, and decodes common LaTeX formatting -instructions to unicode. If you are in a hurry, it also allows for easy -export/conversion to formats such as YAML, JSON, CSL, and XML (BibTeXML).") - (license license:gpl3+))) - -(define-public ruby-unicode-scripts - (package - (name "ruby-unicode-scripts") - (version "1.8.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "unicode-scripts" version)) - (sha256 - (base32 - "0rl6mn908yryhrg8j3mmna54gnrid2nph2kym00lbz6jwdih2a1b")))) - (build-system ruby-build-system) - (native-inputs (list ruby-minitest)) - (arguments (list #:test-target "spec")) - (home-page "https://github.com/janlelis/unicode-scripts") - (synopsis "Unicode script classification library") - (description "This gem provides a simple interface for classifying Ruby -strings using the Unicode @code{Script} and @code{Script_Extensions} -properties.") - (license license:expat))) - -(define-public ruby-citeproc - (package - (name "ruby-citeproc") - (version "1.0.10") - (source (origin - (method url-fetch) - (uri (rubygems-uri "citeproc" version)) - (sha256 - (base32 - "13vl5sjmksk5a8kjcqnjxh7kn9gn1n4f9p1rvqfgsfhs54p0m6l2")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-namae)) - (arguments - (list #:tests? #f)) ;; tests have a cyclic dependency - (home-page "https://github.com/inukshuk/citeproc") - (synopsis "Interface for Ruby citation processors") - (description - "CiteProc is a citation processor interface and citation data API based -on the @acronym{CSL, Citation Style Language} specifications. To actually -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") - (version "3.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/edtf-ruby") - (commit (string-append "v" version)))) - (sha256 - (base32 - "18j8xq8zmrn41cs2gpd1i87agi9905asvnjqndky2cqb5zg3q14g")) - (snippet - ;; remove generated file - #~(delete-file "lib/edtf/parser.rb")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-activesupport)) - (native-inputs - (list ruby-cucumber - ruby-rspec)) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'avoid-bundler - (lambda args - (substitute* "Rakefile" - (("require 'bundler" orig) - (string-append "# " orig " # patched for Guix")) - (("bundle exec racc") - "racc") - (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig) - (string-append orig " do |c|\n" - " c.bundler = false # patched for Guix\n" - "end")) - (("Bundler\\.setup" orig) - (string-append "true # " orig " # patched for Guix"))))) - (add-after 'avoid-bundler 'patch-cucumber-options - (lambda args - (substitute* "cucumber.yml" - ;; this option is not supported, at least in our configuration - ((" --publish-quiet") - "")))) - (add-before 'build 'compile - (lambda args - (invoke "rake" "racc"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rake"))))))) - (home-page "https://github.com/inukshuk/edtf-ruby") - (synopsis "Ruby implementation of Extended Date/Time Format") - (description - "EDTF-Ruby provides a parser and an API for the @acronym{EDTF, Extended -Date/Time Format} standard, implemented as an extension to Ruby's @code{Date} -class.") - (license license:bsd-2))) - -(define-public ruby-gli - (package - (name "ruby-gli") - (version "2.21.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/davetron5000/gli") - (commit (string-append "v" version)))) - (sha256 - (base32 - "09b1r9hlx4dy2yq036nk7hc2nbswhia6q3na9v11z94yibc8mgja")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (native-inputs - (list ruby-minitest - ruby-rainbow - ruby-rdoc - ruby-sdoc)) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'patch-gemspec-version - (lambda args - (substitute* "gli.gemspec" - ;; this trick fails in our build environment - (("require File\\.join[(]\\[" orig) - (string-append "# patched for Guix # " orig)) - (("s\\.version = GLI::VERSION") - #$(string-append "s.version = '" - (package-version this-package) - "' # patched for Guix"))))) - (add-after 'replace-git-ls-files 'replace-another-git-ls-files - (lambda args - (substitute* "gli.gemspec" - (("`git ls-files -- [{]test,spec,features[}]/\\*`") - "`find {test,spec,features} -type f | sort`")))) - (add-after 'replace-another-git-ls-files 'fix-rubyopt - (lambda args - (substitute* "Rakefile" - (("ENV\\[\"RUBYOPT\"]") - "(ENV['RUBYOPT'] || '')"))))))) - (home-page "https://davetron5000.github.io/gli/") - (synopsis "Git-Like Interface command-line parser") - (description - "GLI allows you to create command-line applications in Ruby with Git-Like -Interfaces: that is, they take subcommands in the style of @command{git} and -@command{gem}. GLI uses a simple domain-specific language, but retains all -the power of the built-in @code{OptionParser}.") - (license license:asl2.0))) - -(define-public ruby-anystyle-data - (package - (name "ruby-anystyle-data") - (version "1.3.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/anystyle-data") - (commit (string-append "v" version)))) - (sha256 - (base32 - "1jh880310m3gjdrk4m8rwwnsf0824zkf26clpr8p64sac2fyy907")) - (snippet - ;; remove pre-built file - #~(delete-file "lib/anystyle/data/dict.txt.gz")) - (patches - (search-patches "ruby-anystyle-data-immutable-install.patch")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ;; there are none - #:modules - `((guix build ruby-build-system) - (guix build utils) - (srfi srfi-26)) - #:phases - #~(modify-phases %standard-phases - (add-after 'replace-git-ls-files 'replace-another-git-ls-files - (lambda args - (substitute* "anystyle-data.gemspec" - (("`git ls-files lib README\\.md LICENSE`\\.split[(][^)]*[)]") - (string-append - "[" - (string-join - (map (cut string-append "\"" <> "\"") - `("README.md" - "LICENSE" - "lib/anystyle/data.rb" - "lib/anystyle/data/dict.txt.gz" - "lib/anystyle/data/setup.rb" - "lib/anystyle/data/version.rb")) - ", ") - "]"))))) - (add-before 'build 'compile-dict - (lambda args - (invoke "rake" "compile")))))) - (home-page "https://anystyle.io") - (synopsis "AnyStyle parser dictionary data") - (description - "This gem provides parser dictionary data for AnyStyle.") - (license license:bsd-2))) - -(define-public ruby-anystyle - (package - (name "ruby-anystyle") - (version "1.4.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/anystyle") - (commit (string-append "v" version)))) - (sha256 - (base32 - "0xhy7wj8v7iahikck6vxbdpncaz5w2gb11b32kmvg5ckgi2kz23p")) - (snippet - ;; There is an optional dependency on - ;; , which - ;; seems like it was intended to be free software, but - ;; doesn't have a clear license statement. Maybe someone can - ;; do more sleuthing, or else find a replacement? See also - ;; . For - ;; now, patch it out, but leave a pointer to follow up. - #~(begin - (use-modules (guix build utils)) - (substitute* "Gemfile" - (("gem 'language_detector', github: '[^']*'" orig) - (string-append "# " orig " # unclear license"))) - (substitute* "spec/anystyle/parser_spec.rb" - (("language: 'en'," orig) - (string-append "# " orig " # no lanugage_detector"))))) - (patches - (search-patches - "ruby-anystyle-fix-dictionary-populate.patch")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-anystyle-data - ruby-bibtex-ruby - ruby-namae - ruby-wapiti)) - (native-inputs - (list ruby-byebug - ruby-citeproc - ruby-edtf - ruby-gdbm - ruby-rspec - ruby-unicode-scripts)) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'avoid-bundler - (lambda args - (substitute* "Rakefile" - (("require 'bundler" orig) - (string-append "# " orig " # patched for Guix")) - (("Bundler\\.setup" orig) - (string-append "true # " orig " # patched for Guix"))))) - (add-after 'replace-git-ls-files 'replace-another-git-ls-files - (lambda args - (substitute* "anystyle.gemspec" - (("`git ls-files spec`") - "`find spec -type f | sort`")))) - (add-after 'wrap 'populate-dictionaries - (lambda args - ;; We must initialize these files here, or they will never be - ;; usable with the default settings. A more flexible approach - ;; might use something like `Gem.find_files()` or - ;; XDG_DATA_DIRS. - (with-output-to-file "initialize-dictionaries.rb" - (lambda () - (display "\ -require 'anystyle/dictionary' # must come before 'anystyle/data' -require 'anystyle/data' -[:marshal, :gdbm].each do |adapter| - AnyStyle::Dictionary.create({adapter: adapter}).open().close() -end -"))) - (let* ((old-gems (getenv "GEM_PATH")) - (new-gems (string-append #$output - "/lib/ruby/vendor_ruby:" - old-gems))) - (dynamic-wind - (lambda () - (setenv "GEM_PATH" new-gems)) - (lambda () - (invoke "ruby" "initialize-dictionaries.rb")) - (lambda () - (setenv "GEM_PATH" old-gems))))))))) - (home-page "https://anystyle.io") - (synopsis "Fast and smart citation reference parsing (Ruby library)") - (description - "AnyStyle is a very fast and smart parser for academic reference lists -and bibliographies. AnyStyle uses powerful machine learning heuristics based -on Conditional Random Fields and aims to make it easy to train the model with -data that is relevant to your parsing needs. - -This package provides the Ruby module @code{AnyStyle}. AnyStyle can also be -used via the @command{anystyle} command-line utility or a web application, -though the later has not yet been packaged for Guix.") - (license license:bsd-2))) - -(define-public anystyle - (package - (name "anystyle") - (version "1.4.5") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/anystyle-cli") - (commit (string-append "v" version)))) - (sha256 - (base32 - "10jx830mx9vh7rsz87ndvz8w5b5azd9s231vwyb0dqxs921v6qwy")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-anystyle - ruby-bibtex-ruby - ruby-gli)) - (native-inputs - (list ruby-gdbm - txt2man)) - (arguments - (list - #:modules - `((guix build ruby-build-system) - (ice-9 popen) - (srfi srfi-1) - (guix build utils)) - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'less-strict-dependencies - (lambda args - (substitute* "anystyle-cli.gemspec" - (("'bibtex-ruby', '[^']*'") - "'bibtex-ruby'")))) - (add-before 'build 'change-default-dictionary-adapter - (lambda args - ;; Since we always have gdbm available, using it will give a - ;; faster startup time, which is particularly worth-while for - ;; a command-line tool. - (substitute* "bin/anystyle" - (("default_value: 'ruby',") - "default_value: 'gdbm', # patched for Guix")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - ;; There are no tests, but let's use this opportunity to do a - ;; basic test of our own that things run ok. It works especially - ;; well to test this here since we know the 'ruby-anystile' - ;; package is in its final, immutable installed form. - (when tests? - (let ((common - `("require 'anystyle'" - ,(string-append - "pp AnyStyle.parse 'Derrida, J. (1967). L’écriture" - " et la différence (1 éd.). Paris: Éditions du" - " Seuil.'")))) - (for-each - (lambda (lines) - (apply invoke "ruby" - (fold-right (lambda (line lst) - (cons* "-e" line lst)) - '() - lines))) - `(,common - ("require 'anystyle/dictionary'" - "AnyStyle::Dictionary.defaults[:adapter] = :gdbm" - ,@common))))))) - (add-after 'wrap 'check-cli - (lambda* (#:key tests? outputs #:allow-other-keys) - (when tests? - (with-output-to-file "check-cli.in" - (lambda () - (for-each - display - '("Derrida, J. (1967). L’écriture et la différence " - "(1 éd.). Paris: Éditions du Seuil.\n")))) - (invoke (search-input-file outputs "/bin/anystyle") - "parse" - "check-cli.in")))) - (add-after 'wrap 'generate-man-page - ;; generating a man page also tests that the command actually runs - (lambda args - (define (run-with-output-file file command . args) - (format (current-output-port) - "running: ~s\nwith output to: ~s\n" - (cons command args) - file) - (unless (zero? - (with-output-to-file file - (lambda () - (status:exit-val - (close-pipe - (apply open-pipe* OPEN_WRITE command args)))))) - (error "command failed"))) - (let ((anystyle (string-append #$output "/bin/anystyle"))) - (run-with-output-file "intro.txt" - anystyle "--help") - (for-each (lambda (cmd) - (let ((file (string-append cmd ".txt"))) - (run-with-output-file file - anystyle cmd "--help") - ;; indent headings to create subsections - (substitute* file - (("^[A-Z]" orig) - (string-append " " orig))) - ;; generate a section heading - (call-with-output-file - (string-append "section-" file) - (lambda (out) - (format out "\n\n~a COMMAND\n\n" - (string-upcase cmd)))))) - '("check" "find" "parse" "train")) - (substitute* `("intro.txt" - "check.txt" "find.txt" "parse.txt" "train.txt") - ;; format "tag list" for txt2man" - ((" - ") - " ") - ;; restore formatting of the "name" sections - (("(anystyle|check|find|parse|train) ([A-Z])" _ cmd post) - (string-append cmd " - " post))) - (run-with-output-file "anystyle.txt" - "cat" - "intro.txt" - "section-check.txt" "check.txt" - "section-find.txt" "find.txt" - "section-parse.txt" "parse.txt" - "section-train.txt" "train.txt") - (run-with-output-file - "anystyle.1" - "txt2man" - "-v" "General Commands Manual" "-t" "anystyle" "-s" "1" - "-r" #$(string-append "anystyle-cli " - (package-version this-package)) - "-B" "check" "-B" "find" "-B" "parse" "-B" "train" - "anystyle.txt") - (install-file "anystyle.1" - (string-append #$output "/share/man/man1")))))))) - (home-page "https://anystyle.io") - (synopsis "Fast and smart citation reference parsing") - (description - "AnyStyle is a very fast and smart parser for academic reference lists -and bibliographies. AnyStyle uses powerful machine learning heuristics based -on Conditional Random Fields and aims to make it easy to train the model with -data that is relevant to your parsing needs. - -This package provides the @command{anystyle} command-line utility. AnyStyle -can also be used as a Ruby library or as a web application, though the later -has not yet been packaged for Guix.") - (license license:bsd-2) - (properties `((upstream-name . "anystyle-cli"))))) - -(define-public ruby-google-protobuf - (package - (name "ruby-google-protobuf") - (version "3.25.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "google-protobuf" version)) - (sha256 - (base32 - "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;; has no tests - (native-inputs (list ruby-rake)) - (synopsis "Protocol Buffers are Google's data interchange format") - (description "This library contains the Ruby extension that implements -Protocol Buffers functionality in Ruby. - -The Ruby extension makes use of generated Ruby code that defines message and -enum types in a Ruby DSL. You may write definitions in this DSL directly, but -we recommend using protoc's Ruby generation support with @code{.proto} files. -The build process in this directory only installs the extension; you need to -install @code{protoc} (in package ruby-grpc-tools) as well to have Ruby code -generation functionality.") - (home-page "https://protobuf.dev") - (license license:bsd-3))) - -(define-public ruby-googleapis-common-protos-types - (package - (name "ruby-googleapis-common-protos-types") - (version "1.13.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "googleapis-common-protos-types" version)) - (sha256 - (base32 - "1zrxnv9s2q39f2nh32x7nbfi8lpwzmmn3ji4adglg8dlfr1xrz16")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;; has no tests - (propagated-inputs (list ruby-google-protobuf)) - (synopsis "Common protocol buffer types used by Google APIs") - (description "Common protocol buffer types used by Google APIs") - (home-page "https://github.com/googleapis/common-protos-ruby") - (license license:asl2.0))) - -(define-public ruby-grpc - (package - (name "ruby-grpc") - (version "1.62.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "grpc" version)) - (sha256 - (base32 - "03z8yq0z228g6xxxq6s2mmslpv6psrdmi30dpmhysr4px16d897n")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;; has no tests - ;; TODO remove third-party sources (zlib, upb, utf8-range, re2, c-ares, - ;; boringssl-with-bazel, address_sorting, abseil-cpp), see Makefile - (propagated-inputs (list ruby-google-protobuf - ruby-googleapis-common-protos-types)) - (synopsis "GRPC system in Ruby") - (description "GRPC is a high performance, open-source universal RPC -framework. This package provides a ruby interface for it.") - (home-page "https://github.com/grpc/grpc/tree/master/src/ruby") - (license license:asl2.0))) - ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm index 6c1bd0dc17..e88994ce3d 100644 --- a/gnu/packages/shellutils.scm +++ b/gnu/packages/shellutils.scm @@ -74,6 +74,8 @@ (define-module (gnu packages shellutils) #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages shells) #:use-module (gnu packages textutils) #:use-module (gnu packages tmux) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 0f9f25989c..7a9e915537 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -96,7 +96,8 @@ (define-module (gnu packages statistics) #:use-module (gnu packages python-science) #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages shells) #:use-module (gnu packages sphinx) #:use-module (gnu packages ssh) diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm index 61220bb9fe..0a9df7fd25 100644 --- a/gnu/packages/syndication.scm +++ b/gnu/packages/syndication.scm @@ -65,7 +65,7 @@ (define-module (gnu packages syndication) #:use-module (gnu packages python-xyz) #:use-module (gnu packages python-web) #:use-module (gnu packages qt) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages rust) #:use-module (gnu packages sqlite) #:use-module (gnu packages time) @@ -252,8 +252,8 @@ (define-public newsboat openssl pkg-config) ;; For building documentation. - (if (supported-package? ruby-asciidoctor) - (list ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) + (list ruby-asciidoctor/minimal) '()))) (inputs (list curl diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm index a383dc8c5d..342bffde38 100644 --- a/gnu/packages/task-management.scm +++ b/gnu/packages/task-management.scm @@ -59,7 +59,7 @@ (define-module (gnu packages task-management) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) @@ -280,7 +280,7 @@ (define-public timewarrior "../timew-1.4.3/completion/timew-completion.bash" (string-append bash-completion-install-dir "/timew")))))))) (native-inputs - (list ruby-asciidoctor)) + (list ruby-asciidoctor/minimal)) (inputs (list gnutls python `(,util-linux "lib"))) (home-page "https://timewarrior.net") diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index f03266643c..455cee71f5 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -98,6 +98,7 @@ (define-module (gnu packages tex) #:use-module (gnu packages qt) #:use-module (gnu packages readline) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages shells) #:use-module (gnu packages tcl) #:use-module (gnu packages time) diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index c288500f4b..e3fd3f8ffc 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -121,7 +121,6 @@ (define-module (gnu packages text-editors) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages regex) - #:use-module (gnu packages ruby) #:use-module (gnu packages sdl) #:use-module (gnu packages slang) #:use-module (gnu packages sqlite) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index f0a0e73eb0..f849ee46ce 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -164,7 +164,7 @@ (define-module (gnu packages version-control) #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages rsync) - #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) #:use-module (gnu packages sqlite) #:use-module (gnu packages texinfo) #:use-module (gnu packages text-editors) @@ -4161,8 +4161,8 @@ (define-public git-lfs go-golang-org-x-sync go-golang-org-x-sys) ;; make `ronn` available during build for man page generation - (if (supported-package? ruby-asciidoctor) - (list ronn-ng ruby-asciidoctor) + (if (supported-package? ruby-asciidoctor/minimal) + (list ronn-ng ruby-asciidoctor/minimal) '()))) (home-page "https://git-lfs.github.com/") (synopsis "Git extension for versioning large files") diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index d538034cf1..66c8c982c4 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -149,6 +149,8 @@ (define-module (gnu packages virtualization) #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages ruby) + #:use-module (gnu packages ruby-check) + #:use-module (gnu packages ruby-xyz) #:use-module (gnu packages rsync) #:use-module (gnu packages sdl) #:use-module (gnu packages selinux)