From patchwork Mon Mar 20 17:13:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Maxim Cournoyer X-Patchwork-Id: 48410 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 810BB16F42; Mon, 20 Mar 2023 17:42:55 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_MSPIKE_H2,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 13DAA16EC7 for ; Mon, 20 Mar 2023 17:42:52 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1peJVS-0007mY-JI; Mon, 20 Mar 2023 13:41:14 -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 1peJVO-0007iW-6N for guix-patches@gnu.org; Mon, 20 Mar 2023 13:41:10 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1peJVN-000581-UQ for guix-patches@gnu.org; Mon, 20 Mar 2023 13:41:09 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1peJVN-0005M7-Pf for guix-patches@gnu.org; Mon, 20 Mar 2023 13:41:09 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#62196] [PATCH 037/223] gnu: Add ruby-hiredis. Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 20 Mar 2023 17:41:09 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62196 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 62196@debbugs.gnu.org Cc: Maxim Cournoyer Received: via spool by 62196-submit@debbugs.gnu.org id=B62196.167933402120183 (code B ref 62196); Mon, 20 Mar 2023 17:41:09 +0000 Received: (at 62196) by debbugs.gnu.org; 20 Mar 2023 17:40:21 +0000 Received: from localhost ([127.0.0.1]:56582 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peJUb-0005FL-2W for submit@debbugs.gnu.org; Mon, 20 Mar 2023 13:40:21 -0400 Received: from mail-qt1-f172.google.com ([209.85.160.172]:41509) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1peJ8C-0003GP-O0 for 62196@debbugs.gnu.org; Mon, 20 Mar 2023 13:17:13 -0400 Received: by mail-qt1-f172.google.com with SMTP id t9so13932734qtx.8 for <62196@debbugs.gnu.org>; Mon, 20 Mar 2023 10:17:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679332632; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=w5xxj+YThVKVez8C+6oipvmq6J9QeRQgxi+XJ/AeQog=; b=Jg5l/rQnM4tgSwGQRtJ3q+93x61T+Pn9iz8qz93Qo0r2knQMptZBS+6jdAZchs7YoO YjLwoGSRZzGzXLq3qmZ4TAkwIxmn6iiSBskMRR6vAEIbBdyB3SvJ/6whOraJE8dbPuL/ kGh/9eGwvpy+iKdSLNwKNodxP7MlBTKGq7+z1E8X2A9cK7XV0ljk2zirTR04GSDG1B1z d+BOVQ6+41qo5DeeR8Bhe9wH9dZGGJPxnnqoSpHjSMNIWWIiG2cWliFs3PUBPyrkDbDf 8HsHLIy8vIc58xvSfGjr2nHLoAZ/paZ41ycCTdOCo8ZqRuZcDQF6M4t2UWdV+9QF5oaW U9hQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679332632; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=w5xxj+YThVKVez8C+6oipvmq6J9QeRQgxi+XJ/AeQog=; b=0+d9awkdnD75YLIba1zFKrMMBGHabKTGas28HRGf4tQ1zutwyD3kdDuy5vI0i9knRq RTn7g+oV2bEGDnXov47G7O9Rv6qWXCXYG0OzOVLPcGExb/5GPsYm01Vl7Egzrh5+IkXT u3xM3fQrhlVpvjz737Wcdh4RgESG/IlS4uvdCiL0Q6Q797IAQP/q47u6prS94jWP0vJ+ WzlzhVuFCQrHAd6LDUMZOOGYoxEFG230E4GvJfGoc+nnsXUT8gaDMSG7sYvrz7qWuZcp +DkuuswfFa6a6+iV/bexZYLIeDZdqmn9iGLbLxLabHT/Z1XIygNWV3s31LGaDjEWdHMd xhdQ== X-Gm-Message-State: AO0yUKWttGgw05NRGdN8Jj+zA+v1f81b1snVbjUPw7oNYVClYPs84kh8 EuG91jScIysxzvDKjsqeZD020qrAKFg= X-Google-Smtp-Source: AK7set+4s3ReJ4SIUCzO0VSlXzAPP1KuWPK5skJLjDYmn1HXfeYhQGNH6QrXwOnm7A3ihoO8gROAhw== X-Received: by 2002:ac8:5a07:0:b0:3e2:4280:bc5a with SMTP id n7-20020ac85a07000000b003e24280bc5amr5196876qta.27.1679332632057; Mon, 20 Mar 2023 10:17:12 -0700 (PDT) Received: from localhost.localdomain (dsl-10-128-46.b2b2c.ca. [72.10.128.46]) by smtp.gmail.com with ESMTPSA id p17-20020a374211000000b007428e743508sm7673809qka.70.2023.03.20.10.17.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 10:17:11 -0700 (PDT) From: Maxim Cournoyer Date: Mon, 20 Mar 2023 13:13:29 -0400 Message-Id: <20230320171635.11184-37-maxim.cournoyer@gmail.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230320171635.11184-1-maxim.cournoyer@gmail.com> References: <20230320171635.11184-1-maxim.cournoyer@gmail.com> MIME-Version: 1.0 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: , 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/databases.scm (ruby-hiredis): New variable. * gnu/packages/patches/ruby-hiredis-use-system-hiredis.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. --- gnu/local.mk | 1 + gnu/packages/databases.scm | 62 ++++++++++++++++++- .../ruby-hiredis-use-system-hiredis.patch | 52 ++++++++++++++++ 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/ruby-hiredis-use-system-hiredis.patch diff --git a/gnu/local.mk b/gnu/local.mk index 2abece0d2f..8109312e77 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1819,6 +1819,7 @@ dist_patch_DATA = \ %D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch \ %D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch \ %D%/packages/patches/rottlog-direntry.patch \ + %D%/packages/patches/ruby-hiredis-use-system-hiredis.patch \ %D%/packages/patches/ruby-hydra-minimal-no-byebug.patch \ %D%/packages/patches/ruby-anystyle-data-immutable-install.patch \ %D%/packages/patches/ruby-anystyle-fix-dictionary-populate.patch \ diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index e51ddd5bf2..a4560d40e3 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -32,7 +32,7 @@ ;;; Copyright © 2017 Kristofer Buffington ;;; Copyright © 2018 Amirouche Boubekki ;;; Copyright © 2018 Joshua Sierles, Nextjournal -;;; Copyright © 2018, 2021, 2022 Maxim Cournoyer +;;; Copyright © 2018, 2021, 2022, 2023 Maxim Cournoyer ;;; Copyright © 2019 Jack Hill ;;; Copyright © 2019 Alex Griffin ;;; Copyright © 2019 Gábor Boskovits @@ -2520,6 +2520,66 @@ (define-public hiredis (home-page "https://github.com/redis/hiredis") (license license:bsd-3))) +(define-public ruby-hiredis + (package + (name "ruby-hiredis") + (version "0.6.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/redis/hiredis-rb") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "05y4g7frhym59m9x208zpvg2qvqvfjlgqmygxj8sqgl07n0ww1ks")) + (patches (search-patches + "ruby-hiredis-use-system-hiredis.patch")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ;require native extension + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-hiredis-include-directory + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "ext/hiredis_ext/extconf.rb" + ;; Adjust the hiredis include directory. + (("\\$CFLAGS << \" -I/usr/include/hiredis\"") + (format #f "$CFLAGS << \" -I~a\"" + (search-input-directory inputs "include/hiredis")))))) + (add-after 'unpack 'disable-building-c-extension + (lambda _ + ;; FIXME: The produced native extension appears to segfault when + ;; run; disable building it until a solution is found (see: + ;; https://github.com/redis/hiredis-rb/issues/93). + (substitute* "ext/hiredis_ext/extconf.rb" + (("build_hiredis = true") + "build_hiredis = false")))) + ;; FIXME: Un-comment phase after the extension can be made to run + ;; without crashing (see above). + ;; (add-after 'build 'build-ext + ;; (lambda _ + ;; (setenv "CC" #$(cc-for-target)) + ;; (invoke "rake" "compile"))) + (add-before 'check 'start-redis + (lambda _ + (invoke "redis-server" "--daemonize" "yes"))) + (add-after 'install 'delete-mkmf.log + (lambda _ + ;; This build log captures non-deterministic file names (see: + ;; https://github.com/rubygems/rubygems/issues/6259). + (for-each delete-file (find-files #$output "^mkmf\\.log$"))))))) + (native-inputs (list redis ruby-rake-compiler)) + (inputs (list hiredis)) + (synopsis "Ruby wrapper for hiredis") + (description "@code{hiredis-rb} is a Ruby extension that wraps +@code{hiredis}, a minimalist C client for Redis. Both the synchronous +connection API and a separate protocol reader are supported. It is primarily +intended to speed up parsing multi bulk replies.") + (home-page "https://github.com/redis/hiredis-rb") + (license license:bsd-3))) + (define-public ruby-redis (package (name "ruby-redis") diff --git a/gnu/packages/patches/ruby-hiredis-use-system-hiredis.patch b/gnu/packages/patches/ruby-hiredis-use-system-hiredis.patch new file mode 100644 index 0000000000..1b238f5099 --- /dev/null +++ b/gnu/packages/patches/ruby-hiredis-use-system-hiredis.patch @@ -0,0 +1,52 @@ +Retrieved 2023-03-05 from +https://sources.debian.org/data/main/r/ruby-hiredis/0.6.3-2/debian/patches/use_system_libhiredis.patch. + +From: Apollon Oikonomopoulos +Date: Mon, 20 Jan 2020 09:28:45 -0300 +Subject: Use system libhiredis + +Last-Update: 2013-04-10 +Forwarded: no + +Use Debian's libhiredis version instead of downloading one and statically +linking against it. +--- + ext/hiredis_ext/extconf.rb | 18 +++--------------- + 1 file changed, 3 insertions(+), 15 deletions(-) + +diff --git a/ext/hiredis_ext/extconf.rb b/ext/hiredis_ext/extconf.rb +index da39eb5..ffa3abf 100644 +--- a/ext/hiredis_ext/extconf.rb ++++ b/ext/hiredis_ext/extconf.rb +@@ -9,12 +9,6 @@ end + + RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC'] + +-hiredis_dir = File.join(File.dirname(__FILE__), %w{.. .. vendor hiredis}) +-unless File.directory?(hiredis_dir) +- STDERR.puts "vendor/hiredis missing, please checkout its submodule..." +- exit 1 +-end +- + RbConfig::CONFIG['configure_args'] =~ /with-make-prog\=(\w+)/ + make_program = $1 || ENV['make'] + make_program ||= case RUBY_PLATFORM +@@ -27,15 +21,9 @@ else + end + + if build_hiredis +- # Make sure hiredis is built... +- Dir.chdir(hiredis_dir) do +- success = system("#{make_program} static") +- raise "Building hiredis failed" if !success +- end +- +- # Statically link to hiredis (mkmf can't do this for us) +- $CFLAGS << " -I#{hiredis_dir}" +- $LDFLAGS << " #{hiredis_dir}/libhiredis.a" ++ # Debian: use system hiredis ++ $CFLAGS << " -I/usr/include/hiredis" ++ $LDFLAGS << " -lhiredis" + + have_func("rb_thread_fd_select") + create_makefile('hiredis/ext/hiredis_ext')