From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Woodcroft Subject: [PATCH 4/4] gnu: Add ruby-concurrent. Date: Sun, 5 Jun 2016 23:00:53 +1000 Message-ID: <1465131653-28176-5-git-send-email-donttrustben@gmail.com> References: <1465131653-28176-1-git-send-email-donttrustben@gmail.com> Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48915) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b9XgC-00041T-Jk for guix-devel@gnu.org; Sun, 05 Jun 2016 09:01:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b9XgA-0000fz-83 for guix-devel@gnu.org; Sun, 05 Jun 2016 09:01:24 -0400 Received: from mail-pf0-x232.google.com ([2607:f8b0:400e:c00::232]:34952) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b9Xg9-0000fT-Un for guix-devel@gnu.org; Sun, 05 Jun 2016 09:01:22 -0400 Received: by mail-pf0-x232.google.com with SMTP id g64so58381340pfb.2 for ; Sun, 05 Jun 2016 06:01:21 -0700 (PDT) Received: from localhost.localdomain ([103.25.181.216]) by smtp.googlemail.com with ESMTPSA id 4sm20716239pfz.35.2016.06.05.06.01.18 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 05 Jun 2016 06:01:20 -0700 (PDT) In-Reply-To: <1465131653-28176-1-git-send-email-donttrustben@gmail.com> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org * gnu/packages/ruby.scm (ruby-concurrent): New variable. * gnu/packages/patches/ruby-concurrent-ignore-broken-test.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + .../ruby-concurrent-ignore-broken-test.patch | 37 ++++++++++++++ gnu/packages/ruby.scm | 58 ++++++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 gnu/packages/patches/ruby-concurrent-ignore-broken-test.patch diff --git a/gnu/local.mk b/gnu/local.mk index c3a3ea4..65146db 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -731,6 +731,7 @@ dist_patch_DATA = \ %D%/packages/patches/ripperx-missing-file.patch \ %D%/packages/patches/rpm-CVE-2014-8118.patch \ %D%/packages/patches/rsem-makefile.patch \ + %D%/packages/patches/ruby-concurrent-ignore-broken-test.patch \ %D%/packages/patches/ruby-symlinkfix.patch \ %D%/packages/patches/rush-CVE-2013-6889.patch \ %D%/packages/patches/sed-hurd-path-max.patch \ diff --git a/gnu/packages/patches/ruby-concurrent-ignore-broken-test.patch b/gnu/packages/patches/ruby-concurrent-ignore-broken-test.patch new file mode 100644 index 0000000..803d8a8 --- /dev/null +++ b/gnu/packages/patches/ruby-concurrent-ignore-broken-test.patch @@ -0,0 +1,37 @@ +diff --git a/spec/concurrent/channel_spec.rb b/spec/concurrent/channel_spec.rb +index d70fba8..f1bcc0a 100644 +--- a/spec/concurrent/channel_spec.rb ++++ b/spec/concurrent/channel_spec.rb +@@ -598,19 +598,19 @@ module Concurrent + }.to raise_error(ArgumentError) + end + +- it 'loops until the block returns false' do +- actual = 0 +- expected = 3 +- latch = Concurrent::CountDownLatch.new(expected) +- Channel.go_loop do +- actual += 1 +- latch.count_down +- actual < expected +- end +- +- latch.wait(10) +- expect(actual).to eq expected +- end ++ # it 'loops until the block returns false' do ++ # actual = 0 ++ # expected = 3 ++ # latch = Concurrent::CountDownLatch.new(expected) ++ # Channel.go_loop do ++ # actual += 1 ++ # latch.count_down ++ # actual < expected ++ # end ++ ++ # latch.wait(10) ++ # expect(actual).to eq expected ++ # end + end + + context '.go_loop_via' do diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 71b13e4..e761062 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -4005,4 +4005,62 @@ provides a unified method to mock @code{Time.now}, @code{Date.today}, and (home-page "https://github.com/travisjeffery/timecop") (license license:expat))) +(define-public ruby-concurrent + (package + (name "ruby-concurrent") + (version "1.0.2") + (source + (origin + (method url-fetch) + ;; Download from GitHub because the rubygems version does not contain + ;; Rakefile. + (uri (string-append + "https://github.com/ruby-concurrency/concurrent-ruby/archive/v" + version + ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1x3g2admp14ykwfxidsicqbhlfsnxh9wyc806np4i15hws4if1d8")) + ;; Exclude failing test reported at + ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534 + (patches (search-patches "ruby-concurrent-ignore-broken-test.patch")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-before 'build 'remove-git-lsfiles-and-extra-gemspecs + (lambda _ + (for-each (lambda (file) + (substitute* file + (("git ls-files") "find *"))) + (list "concurrent-ruby.gemspec" + "concurrent-ruby-edge.gemspec" + "support/file_map.rb")) + #t)) + (add-before 'build 'remove-extra-gemspecs + (lambda _ + ;; Delete extra gemspec files so 'first-gemspec' chooses the + ;; correct one. + (delete-file "concurrent-ruby-edge.gemspec") + (delete-file "concurrent-ruby-ext.gemspec") + #t)) + (add-before 'check 'rake-compile + ;; Fix the test error described at + ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408 + (lambda _ (zero? (system* "rake" "compile"))))))) + (native-inputs + `(("ruby-rake-compiler" ,ruby-rake-compiler) + ("ruby-yard" ,ruby-yard) + ("ruby-rspec" ,ruby-rspec) + ("ruby-timecop" ,ruby-timecop))) + (synopsis "Concurrency tools for Ruby") + (description + "This library provides modern concurrency tools including agents, +futures, promises, thread pools, actors, supervisors, and more. It is +inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency +patterns.") + (home-page "http://www.concurrent-ruby.com") + (license license:expat))) -- 2.7.4