unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] Add 12 rubygems.
@ 2015-12-29  5:46 Ben Woodcroft
  2015-12-29  5:51 ` Ben Woodcroft
                   ` (2 more replies)
  0 siblings, 3 replies; 22+ messages in thread
From: Ben Woodcroft @ 2015-12-29  5:46 UTC (permalink / raw)
  To: guix-devel@gnu.org

[-- Attachment #1: Type: text/plain, Size: 703 bytes --]

Hi,

These patches are all working towards the popular Ruby web frameworks 
(Rails/Sinatra). I tried where possible to do at least rudimentary 
testing when dependency cycles arose, and fall back to the source code 
on github when the gem on rubygems didn't contain tests.

Actually these are the easier parts to package - the deeper hole is 
ExecJS which requires therubyracer at test time which requires v8 and 
thus a bunch of chromium-related packages. Is anyone thinking about 
working on that?

Unfortunately none of these builds are reproducible because rubygems in 
Guix generally aren't. For one, this is because .gem files are archives 
whose contents are timestamped.

... and thanks!

ben



[-- Attachment #2: 0001-gnu-Add-ruby-ansi.patch --]
[-- Type: text/x-patch, Size: 2258 bytes --]

From 24edad0eac9972e946b80e5919adc99d4fe11d8b Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 14:11:21 +1000
Subject: [PATCH 01/12] gnu: Add ruby-ansi.

* gnu/packages/ruby.scm (ruby-ansi): New variable.
---
 gnu/packages/ruby.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index a3eafb1..0037407 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -2884,3 +2884,39 @@ programs to concentrate on the implementation of network protocols.  It can be
 used to create both network servers and clients.")
     (home-page "http://rubyeventmachine.com")
     (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
+
+(define-public ruby-ansi
+  (package
+    (name "ruby-ansi")
+    (version "1.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       ;; fetch from github as the gem does not contain testing code
+       (uri (string-append
+             "https://github.com/rubyworks/ansi/archive/"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
+    (build-system ruby-build-system)
+    (arguments
+     ;; 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.
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (zero? (system* "ruby" "-Ilib" "-r" "ansi")))))))
+    (synopsis "ANSI escape code related libraries")
+    (description
+     "The ANSI project is a collection of ANSI escape code related libraries
+enabling ANSI colorization and stylization of console output.  Included in the
+library are the Code module, which defines ANSI codes as constants and
+methods, a Mixin module for including color methods, a Logger, a ProgressBar,
+and a String subclass.  The library also includes a Terminal module which
+provides information about the current output device.")
+    (home-page "http://rubyworks.github.io/ansi")
+    (license license:bsd-2)))
+
-- 
2.6.3


[-- Attachment #3: 0002-gnu-Add-ruby-rubytest.patch --]
[-- Type: text/x-patch, Size: 1783 bytes --]

From 81e6d9cb5470f85131e302759c3698d9c6295dd8 Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 14:13:42 +1000
Subject: [PATCH 02/12] gnu: Add ruby-rubytest.

* gnu/packages/ruby.scm (ruby-rubytest): New variable.
---
 gnu/packages/ruby.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 0037407..cb96811 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -2920,3 +2920,34 @@ provides information about the current output device.")
     (home-page "http://rubyworks.github.io/ansi")
     (license license:bsd-2)))
 
+(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 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 _
+             (zero? (system* "ruby" "-Ilib" "-r" "rubytest")))))))
+    (propagated-inputs
+     `(("ruby-ansi" ,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
+     "http://rubyworks.github.io/rubytest")
+    (license license:bsd-2)))
-- 
2.6.3


[-- Attachment #4: 0003-gnu-Add-ruby-brass.patch --]
[-- Type: text/x-patch, Size: 1656 bytes --]

From 356e1fbe6f87e0da6410760a2f177021e5b0302c Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 14:16:42 +1000
Subject: [PATCH 03/12] gnu: Add ruby-brass.

* gnu/packages/ruby.scm (ruby-brass): New variable.
---
 gnu/packages/ruby.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index cb96811..a31c45a 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -2951,3 +2951,32 @@ single pass.")
     (home-page
      "http://rubyworks.github.io/rubytest")
     (license license:bsd-2)))
+
+(define-public ruby-brass
+  ;; download from git so test runner is included
+  (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 _
+             (zero? (system* "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 "http://rubyworks.github.io/brass")
+    (license license:bsd-2)))
-- 
2.6.3


[-- Attachment #5: 0004-gnu-Add-ruby-qed.patch --]
[-- Type: text/x-patch, Size: 1912 bytes --]

From dcb24fdc106d5878c4a5ff24d2fda6e2987bb15d Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 14:36:20 +1000
Subject: [PATCH 04/12] gnu: Add ruby-qed.

* gnu/packages/ruby.scm (ruby-qed): New variable.
---
 gnu/packages/ruby.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index a31c45a..8ad4864 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -2980,3 +2980,35 @@ foundational assertions framework for other assertion and test frameworks to
 make use of.")
     (home-page "http://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
+     ;; disable testing to break the cycle qed, ansi, qed, among others.Instead
+     ;; simply test that the executable runs.
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright")))))))
+    (propagated-inputs
+     `(("ruby-ansi" ,ruby-ansi)
+       ("ruby-brass" ,ruby-brass)))
+    (synopsis "Test framework utilizing literate programming techniques")
+    (description
+     "QED (Quality Ensured Demonstrations) is a TDD (Test Driven
+Development)/BDD (Behaviour Drive Development) framework utilizing Literate
+Programming techniques.  QED sits somewhere between lower-level testing tools
+like Test::Unit and requirement specifications systems like Cucumber.")
+    (home-page "http://rubyworks.github.io/qed")
+    (license license:bsd-2)))
-- 
2.6.3


[-- Attachment #6: 0005-gnu-Add-ruby-ae.patch --]
[-- Type: text/x-patch, Size: 1799 bytes --]

From a6f0972e10e7fe4ede3082cc22b24c0af69f7ae9 Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 14:37:45 +1000
Subject: [PATCH 05/12] gnu: Add ruby-ae.

* gnu/packages/ruby.scm (ruby-ae): New variable.
---
 gnu/packages/ruby.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 8ad4864..a628d9c 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3012,3 +3012,36 @@ Programming techniques.  QED sits somewhere between lower-level testing tools
 like Test::Unit and requirement specifications systems like Cucumber.")
     (home-page "http://rubyworks.github.io/qed")
     (license license:bsd-2)))
+
+(define-public ruby-ae
+  (package
+    (name "ruby-ae")
+    (version "1.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       ;; fetch from github so tests are included ?
+       (uri (string-append
+             "https://github.com/rubyworks/ae/archive/"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (zero? (system* "qed")))))))
+    (propagated-inputs
+     `(("ruby-ansi" ,ruby-ansi)))
+    (native-inputs
+     `(("ruby-qed" ,ruby-qed)))
+    (synopsis "Assertions library")
+    (description
+     "Assertive Expressive (AE) is an assertions library specifically designed
+for reuse by other test frameworks.")
+    (home-page "http://rubyworks.github.io/ae")
+    (license license:bsd-2)))
-- 
2.6.3


[-- Attachment #7: 0006-gnu-Add-ruby-lemon.patch --]
[-- Type: text/x-patch, Size: 1770 bytes --]

From 5edfa6742d7ee5a958bae3e66e978ff63f10c41a Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 14:42:53 +1000
Subject: [PATCH 06/12] gnu: Add ruby-lemon.

* gnu/packages/ruby.scm (ruby-lemon): New variable.
---
 gnu/packages/ruby.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index a628d9c..150eb5d 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3045,3 +3045,35 @@ like Test::Unit and requirement specifications systems like Cucumber.")
 for reuse by other test frameworks.")
     (home-page "http://rubyworks.github.io/ae")
     (license license:bsd-2)))
+
+(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 _
+             (zero? (system* "qed")))))))
+    (propagated-inputs
+     `(("ruby-ae" ,ruby-ae)
+       ("ruby-ansi" ,ruby-ansi)
+       ("ruby-rubytest" ,ruby-rubytest)))
+    (native-inputs
+     `(("ruby-qed" ,ruby-qed)))
+    (synopsis "Test framework that correlates 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 "http://rubyworks.github.io/lemon")
+    (license license:bsd-2)))
-- 
2.6.3


[-- Attachment #8: 0007-gnu-Add-ruby-rubytest-cli.patch --]
[-- Type: text/x-patch, Size: 1572 bytes --]

From 9d9bbcfbfa52744b2b174330164578f5129187d4 Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 14:45:17 +1000
Subject: [PATCH 07/12] gnu: Add ruby-rubytest-cli.

* gnu/packages/ruby.scm (ruby-rubytest-cli): 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 150eb5d..157f40f 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3077,3 +3077,29 @@ case-to-class and unit-to-method test construction.  This enforcement can help
 focus concern on individual units of behavior.")
     (home-page "http://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
+     `(("ruby-ansi" ,ruby-ansi)
+       ("ruby-rubytest" ,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
+     "http://rubyworks.github.io/rubytest-cli")
+    (license license:bsd-2)))
-- 
2.6.3


[-- Attachment #9: 0008-gnu-Add-ruby-hashery.patch --]
[-- Type: text/x-patch, Size: 2003 bytes --]

From 1f13b94614029c3ca7cdc34dbbcac2d2c69e786c Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 14:51:34 +1000
Subject: [PATCH 08/12] gnu: Add ruby-hashery.

* gnu/packages/ruby.scm (ruby-hashery): New variable.
---
 gnu/packages/ruby.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 157f40f..47e3d6f 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3103,3 +3103,38 @@ Rubytest-based test frameworks.  It provides the @code{rubytest} executable.")
     (home-page
      "http://rubyworks.github.io/rubytest-cli")
     (license license:bsd-2)))
+
+(define-public ruby-hashery
+  (package
+    (name "ruby-hashery")
+    (version "2.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "hashery" version))
+       (sha256
+        (base32
+         "0xawbljsjarl9l7700bka672ixwznzwih4s9i38p1y9mp8hyx54g"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (and
+              (zero? (system* "qed"))
+              (zero? (system* "rubytest" "-Ilib" "-Itest" "test/"))))))))
+    (native-inputs
+     `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
+       ("ruby-qed" ,ruby-qed)
+       ("ruby-lemon" ,ruby-lemon)))
+    (synopsis "Hash-like classes with extra features")
+    (description
+     "The Hashery is a tight collection of Hash-like classes.  Included are
+the auto-sorting Dictionary class, the efficient LRUHash, the flexible
+OpenHash and the convenient KeyHash.  Nearly every class is a subclass of the
+CRUDHash which defines a CRUD (Create, Read, Update and Delete) model on top
+of Ruby's standard Hash making it possible to subclass and augment to fit any
+specific use case.")
+    (home-page "http://rubyworks.github.io/hashery")
+    (license license:bsd-2)))
-- 
2.6.3


[-- Attachment #10: 0009-gnu-Add-ruby-rc4.patch --]
[-- Type: text/x-patch, Size: 1582 bytes --]

From 8641b00e5706f6d1fe486df457b75f91a68c5edc Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 14:52:04 +1000
Subject: [PATCH 09/12] gnu: Add ruby-rc4.

* gnu/packages/ruby.scm (ruby-rc4): New variable.
---
 gnu/packages/ruby.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 47e3d6f..84842a0 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3138,3 +3138,31 @@ of Ruby's standard Hash making it possible to subclass and augment to fit any
 specific use case.")
     (home-page "http://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 _
+             (and
+              (zero? (system* "rspec" "spec/rc4_spec.rb"))))))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec-2)))
+    (synopsis "Implementation of the RC4 algorithm")
+    (description
+     "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
+    ;; link on rubygems.org is dead, so use github URL.
+    (home-page "https://github.com/caiges/Ruby-RC4")
+    (license license:expat)))
-- 
2.6.3


[-- Attachment #11: 0010-gnu-Add-ruby-afm.patch --]
[-- Type: text/x-patch, Size: 1303 bytes --]

From 6c0f6264d58f4d1815df209ab0231c4abc054f7a Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 15:00:15 +1000
Subject: [PATCH 10/12] gnu: Add ruby-afm.

* gnu/packages/ruby.scm (ruby-afm): New variable.
---
 gnu/packages/ruby.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 84842a0..1a88fcb 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3166,3 +3166,24 @@ specific use case.")
     ;; link on rubygems.org is dead, so use github URL.
     (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
+     `(("bundler" ,bundler)))
+    (synopsis "Read Adobe Font Metrics (afm) files")
+    (description
+     "@code{afm} is a library to read Adobe Font Metrics (afm) files and use
+the data therein.")
+    (home-page "http://github.com/halfbyte/afm")
+    (license license:expat)))
-- 
2.6.3


[-- Attachment #12: 0011-gnu-Add-ruby-ascii85.patch --]
[-- Type: text/x-patch, Size: 1427 bytes --]

From 8a7a728c843f05206599d777fdd8c8a68f26eea4 Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 15:05:18 +1000
Subject: [PATCH 11/12] gnu: Add ruby-ascii85.

* gnu/packages/ruby.scm (ruby-ascii85): New variable.
---
 gnu/packages/ruby.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 1a88fcb..338b0c5 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3187,3 +3187,26 @@ specific use case.")
 the data therein.")
     (home-page "http://github.com/halfbyte/afm")
     (license license:expat)))
+
+(define-public ruby-ascii85
+  (package
+    (name "ruby-ascii85")
+    (version "1.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "Ascii85" version))
+       (sha256
+        (base32
+         "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("bundler" ,bundler)))
+    (synopsis "Encode and decode Adobe's ascii85 binary-to-text encoding")
+    (description
+     "This library provides methods to encode and decode Adobe's Ascii85
+binary-to-text encoding.  The main modern use of Ascii85 is in Adobe's
+PostScript and Portable Document Format file formats.")
+    (home-page
+     "https://github.com/datawraith/ascii85gem")
+    (license license:expat)))
-- 
2.6.3


[-- Attachment #13: 0012-gnu-Add-ruby-ttfunk.patch --]
[-- Type: text/x-patch, Size: 2385 bytes --]

From 4ccc1fadcb67a0d296bedd51a7f73d911da4680d Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Tue, 29 Dec 2015 15:13:13 +1000
Subject: [PATCH 12/12] gnu: Add ruby-ttfunk.

* gnu/packages/ruby.scm (ruby-ttfunk): New variable.
---
 gnu/packages/ruby.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 338b0c5..b7c2345 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3210,3 +3210,47 @@ PostScript and Portable Document Format file formats.")
     (home-page
      "https://github.com/datawraith/ascii85gem")
     (license license:expat)))
+
+(define-public ruby-ttfunk
+  (package
+    (name "ruby-ttfunk")
+    (version "1.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       ;; fetch from github as the gem does not contain testing code
+       (uri (string-append
+             "https://github.com/prawnpdf/ttfunk/archive/"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'remove-rubocop
+           (lambda _
+             ;; remove rubocop as a dependency as not needed for testing
+             (substitute* "ttfunk.gemspec"
+               (("spec.add_development_dependency\\('rubocop'.*") ""))
+             (substitute* "Rakefile"
+               (("require 'rubocop/rake_task'") "")
+               (("Rubocop::RakeTask.new") ""))
+             #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)
+       ("bundler" ,bundler)))
+    (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 (list license:gpl2 license:gpl3
+                   (license:non-copyleft
+                    "file://src/LICENSE"
+                    "See LICENSE in the distribution.")))))
-- 
2.6.3


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [PATCH] Add 12 rubygems.
  2015-12-29  5:46 [PATCH] Add 12 rubygems Ben Woodcroft
@ 2015-12-29  5:51 ` Ben Woodcroft
  2015-12-30 17:26   ` Ludovic Courtès
  2015-12-29  7:18 ` Ricardo Wurmus
  2015-12-30  9:14 ` [PATCH] Add 12 rubygems Ricardo Wurmus
  2 siblings, 1 reply; 22+ messages in thread
From: Ben Woodcroft @ 2015-12-29  5:51 UTC (permalink / raw)
  To: guix-devel@gnu.org



On 29/12/15 15:46, Ben Woodcroft wrote:
>
> Unfortunately none of these builds are reproducible because rubygems 
> in Guix generally aren't. For one, this is because .gem files are 
> archives whose contents are timestamped.
I should clarify. What I meant was the cache .gem files

/gnu/store/ib83mg5zsyr5x2w0m3i1f84gdvdbp5x9-ruby-ascii85-1.0.2/lib/ruby/gems/2.2.0/cache$ 
tar tvf Ascii85-1.0.2.gem |head
-r--r--r-- wheel/wheel     703 2015-12-27 22:44 metadata.gz
-r--r--r-- wheel/wheel    7436 2015-12-27 22:44 data.tar.gz
-r--r--r-- wheel/wheel     268 2015-12-27 22:44 checksums.yaml.gz

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Add 12 rubygems.
  2015-12-29  5:46 [PATCH] Add 12 rubygems Ben Woodcroft
  2015-12-29  5:51 ` Ben Woodcroft
@ 2015-12-29  7:18 ` Ricardo Wurmus
  2015-12-30  0:51   ` [PATCH] Help Ruby packages be reproducible (was: [PATCH] Add 12 rubygems.) Ben Woodcroft
  2015-12-30  9:14 ` [PATCH] Add 12 rubygems Ricardo Wurmus
  2 siblings, 1 reply; 22+ messages in thread
From: Ricardo Wurmus @ 2015-12-29  7:18 UTC (permalink / raw)
  To: Ben Woodcroft; +Cc: guix-devel@gnu.org


Ben Woodcroft <b.woodcroft@uq.edu.au> writes:

> Unfortunately none of these builds are reproducible because rubygems in 
> Guix generally aren't. For one, this is because .gem files are archives 
> whose contents are timestamped.

I found the same problem with Java stuff.  “.jar” files are archives of
the generated “.class” files and they contain an automatically generated
manifest.  To fix this in a build system I’m planning to unpack all
files from the “.jar”, then “touch -d @0” each file, and then repack
with “jar” without creating a new manifest.

So far “touch”-ing every class file after compilation and leaving off
the manifest at jar creation time has shown that “jar” archives can be
made reproducible.

“gem” archives are really just slightly modified “tar” archives, aren’t
they?  Maybe we could add a phase to the ruby-build-system — or modify
the “build” phase, which unpacks and rebuilds the “.gem” archive.

~~ Ricardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH] Help Ruby packages be reproducible (was: [PATCH] Add 12 rubygems.)
  2015-12-29  7:18 ` Ricardo Wurmus
@ 2015-12-30  0:51   ` Ben Woodcroft
  2015-12-30  0:56     ` [PATCH] Help Ruby packages be reproducible Ben Woodcroft
  0 siblings, 1 reply; 22+ messages in thread
From: Ben Woodcroft @ 2015-12-30  0:51 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel@gnu.org

[-- Attachment #1: Type: text/plain, Size: 1860 bytes --]

On 29/12/15 17:18, Ricardo Wurmus wrote:
> Ben Woodcroft <b.woodcroft@uq.edu.au> writes:
>
>> Unfortunately none of these builds are reproducible because rubygems in
>> Guix generally aren't. For one, this is because .gem files are archives
>> whose contents are timestamped.
> I found the same problem with Java stuff.  “.jar” files are archives of
> the generated “.class” files and they contain an automatically generated
> manifest.  To fix this in a build system I’m planning to unpack all
> files from the “.jar”, then “touch -d @0” each file, and then repack
> with “jar” without creating a new manifest.
>
> So far “touch”-ing every class file after compilation and leaving off
> the manifest at jar creation time has shown that “jar” archives can be
> made reproducible.
>
> “gem” archives are really just slightly modified “tar” archives, aren’t
> they?  Maybe we could add a phase to the ruby-build-system — or modify
> the “build” phase, which unpacks and rebuilds the “.gem” archive.
Yep, they are just tar files. But since it is just a cache, can we just 
delete the gem file as per attached? Too ham-fisted?

Of the 104 gems in my checkout of gnu/packages/ruby.scm, only 14 are now 
not reproducible (as opposed to 104 beforehand I think). None seem to 
fail to build the traditional way. I believe the remaining offendors are 
not reproducible because they compile native extensions leading to 
further timestamp issues. I think after this we are OK to test pure Ruby 
packages for reproducibility.

The offendors:
ruby-byebug
ruby-eventmachine
ruby-ffi
ruby-json
ruby-libxml
ruby-nokogiri
ruby-nokogumbo
ruby-ox
ruby-pg
ruby-rack
ruby-redcarpet
ruby-redcloth
ruby-rjb
ruby-unf-ext

Another case where Ruby was easier than Java? :P

Thanks,
ben

[-- Attachment #2: 0001-build-ruby-Remove-cached-gem-after-install.patch --]
[-- Type: text/x-patch, Size: 2280 bytes --]

From 3568c651f6035fefd35f42917710eb5a1bf72bab Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Wed, 30 Dec 2015 10:27:33 +1000
Subject: [PATCH] build: ruby: Remove cached gem after install.

The .gem file stored in GEM_HOME after install is both redundant and an
archive that stores timestamped files which makes builds non-deterministic. So
delete it after 'gem install'.

* guix/build/ruby-build-system.scm (install): Remove cached gem after install.

will be ignored, and an empty message aborts the commit.  # On branch
ruby-deterministic # Changes to be committed: # modified:
guix/build/ruby-build-system.scm # # Untracked files: # guix_gets #
---
 guix/build/ruby-build-system.scm | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index 2685da1..52d7e96 100644
--- a/guix/build/ruby-build-system.scm
+++ b/guix/build/ruby-build-system.scm
@@ -115,15 +115,19 @@ GEM-FLAGS are passed to the 'gem' invokation, if present."
                                          (assoc-ref inputs "ruby"))
                            1))
          (out (assoc-ref outputs "out"))
-         (gem-home (string-append out "/lib/ruby/gems/" ruby-version ".0")))
-
+         (gem-home (string-append out "/lib/ruby/gems/" ruby-version ".0"))
+         (gem-name (first-matching-file "\\.gem$")))
     (setenv "GEM_HOME" gem-home)
     (mkdir-p gem-home)
-    (zero? (apply system* "gem" "install" (first-matching-file "\\.gem$")
-                  "--local" "--ignore-dependencies"
-                  ;; Executables should go into /bin, not /lib/ruby/gems.
-                  "--bindir" (string-append out "/bin")
-                  gem-flags))))
+    (apply system* "gem" "install" gem-name
+           "--local" "--ignore-dependencies"
+           ;; Executables should go into /bin, not /lib/ruby/gems.
+           "--bindir" (string-append out "/bin")
+           gem-flags)
+    ;; Remove the cached gem file as this is unnecessary and contains
+    ;; timestamped files rendering builds not reproducible.
+    (delete-file (string-append gem-home "/cache/" gem-name))
+    #t))
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
-- 
2.6.3


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2015-12-30  0:51   ` [PATCH] Help Ruby packages be reproducible (was: [PATCH] Add 12 rubygems.) Ben Woodcroft
@ 2015-12-30  0:56     ` Ben Woodcroft
  2015-12-30  2:47       ` Pjotr Prins
  2015-12-30  8:26       ` Ricardo Wurmus
  0 siblings, 2 replies; 22+ messages in thread
From: Ben Woodcroft @ 2015-12-30  0:56 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel@gnu.org

[-- Attachment #1: Type: text/plain, Size: 105 bytes --]

On 30/12/15 10:51, Ben Woodcroft wrote:
> Too ham-fisted?
Maybe, but badly committed at least. Try this.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-build-ruby-Remove-cached-gem-after-install.patch --]
[-- Type: text/x-patch; name="0001-build-ruby-Remove-cached-gem-after-install.patch", Size: 2437 bytes --]

From 3d23171d88b9f38c90efa469f6519b52b15a1d01 Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Wed, 30 Dec 2015 10:27:33 +1000
Subject: [PATCH] build: ruby: Remove cached gem after install.

The .gem file stored in GEM_HOME after install is both redundant and an
archive that stores timestamped files which makes builds non-deterministic. So
delete it after 'gem install'.

* guix/build/ruby-build-system.scm (install): Remove cached gem after install.
---
 guix/build/ruby-build-system.scm | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index 2685da1..b020272 100644
--- a/guix/build/ruby-build-system.scm
+++ b/guix/build/ruby-build-system.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015 Pjotr Prins <pjotr.public01@thebird.nl>
+;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -115,15 +116,19 @@ GEM-FLAGS are passed to the 'gem' invokation, if present."
                                          (assoc-ref inputs "ruby"))
                            1))
          (out (assoc-ref outputs "out"))
-         (gem-home (string-append out "/lib/ruby/gems/" ruby-version ".0")))
-
+         (gem-home (string-append out "/lib/ruby/gems/" ruby-version ".0"))
+         (gem-name (first-matching-file "\\.gem$")))
     (setenv "GEM_HOME" gem-home)
     (mkdir-p gem-home)
-    (zero? (apply system* "gem" "install" (first-matching-file "\\.gem$")
-                  "--local" "--ignore-dependencies"
-                  ;; Executables should go into /bin, not /lib/ruby/gems.
-                  "--bindir" (string-append out "/bin")
-                  gem-flags))))
+    (apply system* "gem" "install" gem-name
+           "--local" "--ignore-dependencies"
+           ;; Executables should go into /bin, not /lib/ruby/gems.
+           "--bindir" (string-append out "/bin")
+           gem-flags)
+    ;; Remove the cached gem file as this is unnecessary and contains
+    ;; timestamped files rendering builds not reproducible.
+    (delete-file (string-append gem-home "/cache/" gem-name))
+    #t))
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
-- 
2.6.3


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2015-12-30  0:56     ` [PATCH] Help Ruby packages be reproducible Ben Woodcroft
@ 2015-12-30  2:47       ` Pjotr Prins
  2015-12-30  8:26       ` Ricardo Wurmus
  1 sibling, 0 replies; 22+ messages in thread
From: Pjotr Prins @ 2015-12-30  2:47 UTC (permalink / raw)
  To: Ben Woodcroft; +Cc: guix-devel@gnu.org

Excellent.

On Wed, Dec 30, 2015 at 10:56:06AM +1000, Ben Woodcroft wrote:
> On 30/12/15 10:51, Ben Woodcroft wrote:
> >Too ham-fisted?
> Maybe, but badly committed at least. Try this.

> From 3d23171d88b9f38c90efa469f6519b52b15a1d01 Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Wed, 30 Dec 2015 10:27:33 +1000
> Subject: [PATCH] build: ruby: Remove cached gem after install.
> 
> The .gem file stored in GEM_HOME after install is both redundant and an
> archive that stores timestamped files which makes builds non-deterministic. So
> delete it after 'gem install'.
> 
> * guix/build/ruby-build-system.scm (install): Remove cached gem after install.
> ---
>  guix/build/ruby-build-system.scm | 19 ++++++++++++-------
>  1 file changed, 12 insertions(+), 7 deletions(-)
> 
> diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
> index 2685da1..b020272 100644
> --- a/guix/build/ruby-build-system.scm
> +++ b/guix/build/ruby-build-system.scm
> @@ -1,6 +1,7 @@
>  ;;; GNU Guix --- Functional package management for GNU
>  ;;; Copyright ?? 2015 David Thompson <davet@gnu.org>
>  ;;; Copyright ?? 2015 Pjotr Prins <pjotr.public01@thebird.nl>
> +;;; Copyright ?? 2015 Ben Woodcroft <donttrustben@gmail.com>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -115,15 +116,19 @@ GEM-FLAGS are passed to the 'gem' invokation, if present."
>                                           (assoc-ref inputs "ruby"))
>                             1))
>           (out (assoc-ref outputs "out"))
> -         (gem-home (string-append out "/lib/ruby/gems/" ruby-version ".0")))
> -
> +         (gem-home (string-append out "/lib/ruby/gems/" ruby-version ".0"))
> +         (gem-name (first-matching-file "\\.gem$")))
>      (setenv "GEM_HOME" gem-home)
>      (mkdir-p gem-home)
> -    (zero? (apply system* "gem" "install" (first-matching-file "\\.gem$")
> -                  "--local" "--ignore-dependencies"
> -                  ;; Executables should go into /bin, not /lib/ruby/gems.
> -                  "--bindir" (string-append out "/bin")
> -                  gem-flags))))
> +    (apply system* "gem" "install" gem-name
> +           "--local" "--ignore-dependencies"
> +           ;; Executables should go into /bin, not /lib/ruby/gems.
> +           "--bindir" (string-append out "/bin")
> +           gem-flags)
> +    ;; Remove the cached gem file as this is unnecessary and contains
> +    ;; timestamped files rendering builds not reproducible.
> +    (delete-file (string-append gem-home "/cache/" gem-name))
> +    #t))
>  
>  (define %standard-phases
>    (modify-phases gnu:%standard-phases
> -- 
> 2.6.3
> 


-- 

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2015-12-30  0:56     ` [PATCH] Help Ruby packages be reproducible Ben Woodcroft
  2015-12-30  2:47       ` Pjotr Prins
@ 2015-12-30  8:26       ` Ricardo Wurmus
  2015-12-30 23:52         ` Ben Woodcroft
  1 sibling, 1 reply; 22+ messages in thread
From: Ricardo Wurmus @ 2015-12-30  8:26 UTC (permalink / raw)
  To: Ben Woodcroft; +Cc: guix-devel@gnu.org


Ben Woodcroft <b.woodcroft@uq.edu.au> writes:

> From 3d23171d88b9f38c90efa469f6519b52b15a1d01 Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Wed, 30 Dec 2015 10:27:33 +1000
> Subject: [PATCH] build: ruby: Remove cached gem after install.

> The .gem file stored in GEM_HOME after install is both redundant and an
> archive that stores timestamped files which makes builds non-deterministic. So
> delete it after 'gem install'.

Good idea!  I don’t know if the existence of the cached gem is checked
for by any Ruby tools (bundler or the like).  Is there some
documentation about this cache?

> -    (zero? (apply system* "gem" "install" (first-matching-file "\\.gem$")
> -                  "--local" "--ignore-dependencies"
> -                  ;; Executables should go into /bin, not /lib/ruby/gems.
> -                  "--bindir" (string-append out "/bin")
> -                  gem-flags))))
> +    (apply system* "gem" "install" gem-name
> +           "--local" "--ignore-dependencies"
> +           ;; Executables should go into /bin, not /lib/ruby/gems.
> +           "--bindir" (string-append out "/bin")
> +           gem-flags)
> +    ;; Remove the cached gem file as this is unnecessary and contains
> +    ;; timestamped files rendering builds not reproducible.
> +    (delete-file (string-append gem-home "/cache/" gem-name))
> +    #t))

I’d prefer to keep ‘(zero? ...)’ and only delete the file when the
‘system*’ call above succeeded.  It would be nice if we could propagate
any bad return value from ‘system*’ to the end of the procedure.

Maybe something like this:

  (and (zero? (apply system* ...))
       (begin (delete-file ...) #t))

It’s a bit clunky but the return value would still be #f if ‘system*’
fails.  What do you think?

~~ Ricardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Add 12 rubygems.
  2015-12-29  5:46 [PATCH] Add 12 rubygems Ben Woodcroft
  2015-12-29  5:51 ` Ben Woodcroft
  2015-12-29  7:18 ` Ricardo Wurmus
@ 2015-12-30  9:14 ` Ricardo Wurmus
  2016-01-07 14:29   ` Ricardo Wurmus
  2 siblings, 1 reply; 22+ messages in thread
From: Ricardo Wurmus @ 2015-12-30  9:14 UTC (permalink / raw)
  To: Ben Woodcroft; +Cc: guix-devel@gnu.org


Ben Woodcroft <b.woodcroft@uq.edu.au> writes:

> These patches are all working towards the popular Ruby web frameworks 
> (Rails/Sinatra). I tried where possible to do at least rudimentary 
> testing when dependency cycles arose, and fall back to the source code 
> on github when the gem on rubygems didn't contain tests.

Thank you!

> From 24edad0eac9972e946b80e5919adc99d4fe11d8b Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 14:11:21 +1000
> Subject: [PATCH 01/12] gnu: Add ruby-ansi.

> * gnu/packages/ruby.scm (ruby-ansi): New variable.
> ---
>  gnu/packages/ruby.scm | 36 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)

> +
> +(define-public ruby-ansi
> +  (package
> +    (name "ruby-ansi")
> +    (version "1.5.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       ;; fetch from github as the gem does not contain testing code

“github” or “GitHub”?  I think it should be the latter.

> +       (uri (string-append
> +             "https://github.com/rubyworks/ansi/archive/"
> +             version ".tar.gz"))

I’m still not happy with breaking lines right after “string-append”, but
I’ll just stop mentioning it :)  It’s not a problem, but it does look weird
to me.

> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
> +    (build-system ruby-build-system)
> +    (arguments
> +     ;; 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.

Please use two spaces between sentences.  Also capitalise “disable”.
The comment should better be moved right above ‘(replace 'check ...)’,
so that it stays relevant even when new, unrelated build phases are
added.

> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'check
> +           (lambda _
> +             (zero? (system* "ruby" "-Ilib" "-r" "ansi")))))))
> +    (synopsis "ANSI escape code related libraries")
> +    (description
> +     "The ANSI project is a collection of ANSI escape code related libraries

I think “This package” would be less confusing than “The ANSI project”.
At first I thought this sentence describes where the ANSI code standard
comes from; but then I realized that the package is also called “ansi”.

> +enabling ANSI colorization and stylization of console output.  Included in the
> +library are the Code module, which defines ANSI codes as constants and

“the @code{Code} module”

> +methods, a Mixin module for including color methods, a Logger, a ProgressBar,
> +and a String subclass.  The library also includes a Terminal module which
> +provides information about the current output device.")

Please wrap all module names in “@code{...}”, e.g. “a @code{Mixin}
module”.

I’ll try to comment on the other patches later.

~~ Ricardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Add 12 rubygems.
  2015-12-29  5:51 ` Ben Woodcroft
@ 2015-12-30 17:26   ` Ludovic Courtès
  0 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2015-12-30 17:26 UTC (permalink / raw)
  To: Ben Woodcroft; +Cc: guix-devel@gnu.org

Ben Woodcroft <b.woodcroft@uq.edu.au> skribis:

> On 29/12/15 15:46, Ben Woodcroft wrote:
>>
>> Unfortunately none of these builds are reproducible because rubygems
>> in Guix generally aren't. For one, this is because .gem files are
>> archives whose contents are timestamped.
> I should clarify. What I meant was the cache .gem files
>
> /gnu/store/ib83mg5zsyr5x2w0m3i1f84gdvdbp5x9-ruby-ascii85-1.0.2/lib/ruby/gems/2.2.0/cache$
> tar tvf Ascii85-1.0.2.gem |head
> -r--r--r-- wheel/wheel     703 2015-12-27 22:44 metadata.gz
> -r--r--r-- wheel/wheel    7436 2015-12-27 22:44 data.tar.gz
> -r--r--r-- wheel/wheel     268 2015-12-27 22:44 checksums.yaml.gz

We should arrange so that gems are created with a fixed timestamp and
UID/GID, and a well-defined file ordering, as with:

  --mtime=@0 --sort=name --owner=root:0 --group=root:0

We also need to make sure gzip is always run with -n/--no-name.  That
way, the gz files above will not include an additional timestamp.

From what I can see in
<git://git.debian.org/git/reproducible/notes.git>, this is not addressed
yet in other distros.

HTH,
Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2015-12-30  8:26       ` Ricardo Wurmus
@ 2015-12-30 23:52         ` Ben Woodcroft
  2015-12-31 10:03           ` Ricardo Wurmus
  2015-12-31 12:03           ` Ben Woodcroft
  0 siblings, 2 replies; 22+ messages in thread
From: Ben Woodcroft @ 2015-12-30 23:52 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel@gnu.org

[-- Attachment #1: Type: text/plain, Size: 3380 bytes --]

On 31/12/15 03:26, Ludovic Courtès wrote:
> Ben Woodcroft <b.woodcroft@uq.edu.au> skribis:
>
>> On 29/12/15 15:46, Ben Woodcroft wrote:
>>> Unfortunately none of these builds are reproducible because rubygems
>>> in Guix generally aren't. For one, this is because .gem files are
>>> archives whose contents are timestamped.
>> I should clarify. What I meant was the cache .gem files
>>
>> /gnu/store/ib83mg5zsyr5x2w0m3i1f84gdvdbp5x9-ruby-ascii85-1.0.2/lib/ruby/gems/2.2.0/cache$
>> tar tvf Ascii85-1.0.2.gem |head
>> -r--r--r-- wheel/wheel     703 2015-12-27 22:44 metadata.gz
>> -r--r--r-- wheel/wheel    7436 2015-12-27 22:44 data.tar.gz
>> -r--r--r-- wheel/wheel     268 2015-12-27 22:44 checksums.yaml.gz
> We should arrange so that gems are created with a fixed timestamp and
> UID/GID, and a well-defined file ordering, as with:
>
>    --mtime=@0 --sort=name --owner=root:0 --group=root:0
>
> We also need to make sure gzip is always run with -n/--no-name.  That
> way, the gz files above will not include an additional timestamp.
>
>  From what I can see in
> <git://git.debian.org/git/reproducible/notes.git>, this is not addressed
> yet in other distros.
Ludo are you suggesting we should abandon the deletion approach?


On 30/12/15 18:26, Ricardo Wurmus wrote:
> Ben Woodcroft <b.woodcroft@uq.edu.au> writes:
>> The .gem file stored in GEM_HOME after install is both redundant and an
>> archive that stores timestamped files which makes builds non-deterministic. So
>> delete it after 'gem install'.
> Good idea!  I don’t know if the existence of the cached gem is checked
> for by any Ruby tools (bundler or the like).  Is there some
> documentation about this cache?
I wondered that too, but I built all of the ruby packages again without 
issue and many of them use bundler. It also doesn't seem like a good 
idea for bundler to use cached gems since I would guess that gems that 
are downloaded but fail to install are kept in the cache. I also wasn't 
able to see any mention of the cache in the rubygems API.
>> -    (zero? (apply system* "gem" "install" (first-matching-file "\\.gem$")
>> -                  "--local" "--ignore-dependencies"
>> -                  ;; Executables should go into /bin, not /lib/ruby/gems.
>> -                  "--bindir" (string-append out "/bin")
>> -                  gem-flags))))
>> +    (apply system* "gem" "install" gem-name
>> +           "--local" "--ignore-dependencies"
>> +           ;; Executables should go into /bin, not /lib/ruby/gems.
>> +           "--bindir" (string-append out "/bin")
>> +           gem-flags)
>> +    ;; Remove the cached gem file as this is unnecessary and contains
>> +    ;; timestamped files rendering builds not reproducible.
>> +    (delete-file (string-append gem-home "/cache/" gem-name))
>> +    #t))
> I’d prefer to keep ‘(zero? ...)’ and only delete the file when the
> ‘system*’ call above succeeded.  It would be nice if we could propagate
> any bad return value from ‘system*’ to the end of the procedure.
>
> Maybe something like this:
>
>    (and (zero? (apply system* ...))
>         (begin (delete-file ...) #t))
>
> It’s a bit clunky but the return value would still be #f if ‘system*’
> fails.  What do you think?
I think you are right as usual. Better in attached?

Thanks,
ben

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-build-ruby-Remove-cached-gem-after-install.patch --]
[-- Type: text/x-patch; name="0001-build-ruby-Remove-cached-gem-after-install.patch", Size: 2498 bytes --]

From c00a032644c02474212be97c185c0953967de4e5 Mon Sep 17 00:00:00 2001
From: Ben Woodcroft <donttrustben@gmail.com>
Date: Wed, 30 Dec 2015 10:27:33 +1000
Subject: [PATCH] build: ruby: Remove cached gem after install.

The .gem file stored in GEM_HOME after install is both redundant and an
archive that stores timestamped files which makes builds non-deterministic. So
delete it after 'gem install'.

* guix/build/ruby-build-system.scm (install): Remove cached gem after install.
---
 guix/build/ruby-build-system.scm | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index 2685da1..6439bf6 100644
--- a/guix/build/ruby-build-system.scm
+++ b/guix/build/ruby-build-system.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015 Pjotr Prins <pjotr.public01@thebird.nl>
+;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -115,15 +116,19 @@ GEM-FLAGS are passed to the 'gem' invokation, if present."
                                          (assoc-ref inputs "ruby"))
                            1))
          (out (assoc-ref outputs "out"))
-         (gem-home (string-append out "/lib/ruby/gems/" ruby-version ".0")))
-
+         (gem-home (string-append out "/lib/ruby/gems/" ruby-version ".0"))
+         (gem-name (first-matching-file "\\.gem$")))
     (setenv "GEM_HOME" gem-home)
     (mkdir-p gem-home)
-    (zero? (apply system* "gem" "install" (first-matching-file "\\.gem$")
-                  "--local" "--ignore-dependencies"
-                  ;; Executables should go into /bin, not /lib/ruby/gems.
-                  "--bindir" (string-append out "/bin")
-                  gem-flags))))
+    (and (apply system* "gem" "install" gem-name
+                "--local" "--ignore-dependencies"
+                ;; Executables should go into /bin, not /lib/ruby/gems.
+                "--bindir" (string-append out "/bin")
+                gem-flags)
+         ;; Remove the cached gem file as this is unnecessary and contains
+         ;; timestamped files rendering builds not reproducible.
+         (begin (delete-file (string-append gem-home "/cache/" gem-name))
+                #t))))
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
-- 
2.6.3


^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2015-12-30 23:52         ` Ben Woodcroft
@ 2015-12-31 10:03           ` Ricardo Wurmus
  2016-01-01 15:10             ` Ludovic Courtès
  2015-12-31 12:03           ` Ben Woodcroft
  1 sibling, 1 reply; 22+ messages in thread
From: Ricardo Wurmus @ 2015-12-31 10:03 UTC (permalink / raw)
  To: Ben Woodcroft; +Cc: guix-devel@gnu.org


Ben Woodcroft <b.woodcroft@uq.edu.au> writes:

> On 31/12/15 03:26, Ludovic Courtès wrote:
>> Ben Woodcroft <b.woodcroft@uq.edu.au> skribis:
>>
>>> On 29/12/15 15:46, Ben Woodcroft wrote:
>>>> Unfortunately none of these builds are reproducible because rubygems
>>>> in Guix generally aren't. For one, this is because .gem files are
>>>> archives whose contents are timestamped.
>>> I should clarify. What I meant was the cache .gem files
>>>
>>> /gnu/store/ib83mg5zsyr5x2w0m3i1f84gdvdbp5x9-ruby-ascii85-1.0.2/lib/ruby/gems/2.2.0/cache$
>>> tar tvf Ascii85-1.0.2.gem |head
>>> -r--r--r-- wheel/wheel     703 2015-12-27 22:44 metadata.gz
>>> -r--r--r-- wheel/wheel    7436 2015-12-27 22:44 data.tar.gz
>>> -r--r--r-- wheel/wheel     268 2015-12-27 22:44 checksums.yaml.gz
>> We should arrange so that gems are created with a fixed timestamp and
>> UID/GID, and a well-defined file ordering, as with:
>>
>>    --mtime=@0 --sort=name --owner=root:0 --group=root:0
>>
>> We also need to make sure gzip is always run with -n/--no-name.  That
>> way, the gz files above will not include an additional timestamp.
>>
>>  From what I can see in
>> <git://git.debian.org/git/reproducible/notes.git>, this is not addressed
>> yet in other distros.
> Ludo are you suggesting we should abandon the deletion approach?

Abandoning the deletion approach only makes sense if we have control
over the way “gem” packages up archives.  As far as I remember “gem”
archives are actually regular tarballs with some additional metadata.
The “gem” command itself does not expose any means by which we could
control the mtime of the archive contents.

As the “.gem” file itself is likely redundant I don’t see a problem
removing it as you proposed.

@Dave: what do you think about just removing the cached “.gem”?

> I think you are right as usual. Better in attached?

It looks good to me, thank you.

~~ Ricardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2015-12-30 23:52         ` Ben Woodcroft
  2015-12-31 10:03           ` Ricardo Wurmus
@ 2015-12-31 12:03           ` Ben Woodcroft
  1 sibling, 0 replies; 22+ messages in thread
From: Ben Woodcroft @ 2015-12-31 12:03 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel@gnu.org



On 31/12/15 09:52, Ben Woodcroft wrote:
> On 30/12/15 18:26, Ricardo Wurmus wrote:
>> Ben Woodcroft <b.woodcroft@uq.edu.au> writes:
>>> The .gem file stored in GEM_HOME after install is both redundant and an
>>> archive that stores timestamped files which makes builds 
>>> non-deterministic. So
>>> delete it after 'gem install'.
>> Good idea!  I don’t know if the existence of the cached gem is checked
>> for by any Ruby tools (bundler or the like).  Is there some
>> documentation about this cache?
> I wondered that too, but I built all of the ruby packages again 
> without issue and many of them use bundler. It also doesn't seem like 
> a good idea for bundler to use cached gems since I would guess that 
> gems that are downloaded but fail to install are kept in the cache. I 
> also wasn't able to see any mention of the cache in the rubygems API.
I found one instance where bundler uses cached gems - when installing a 
bundle using --local

        --local
               Do not attempt to connect to rubygems.org. Instead, 
Bundler will use the gems already present in Rubygems´ cache or in 
vendor/cache. Note that if a appropriate platform-specific gem exists  on
               rubygems.org it will not be found.

This doesn't seem like a deal breaker for the deletion approach to me 
though.

ben

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2015-12-31 10:03           ` Ricardo Wurmus
@ 2016-01-01 15:10             ` Ludovic Courtès
  2016-01-02 15:02               ` Ben Woodcroft
  0 siblings, 1 reply; 22+ messages in thread
From: Ludovic Courtès @ 2016-01-01 15:10 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel@gnu.org

Ricardo Wurmus <rekado@elephly.net> skribis:

> Ben Woodcroft <b.woodcroft@uq.edu.au> writes:
>
>> On 31/12/15 03:26, Ludovic Courtès wrote:
>>> Ben Woodcroft <b.woodcroft@uq.edu.au> skribis:
>>>
>>>> On 29/12/15 15:46, Ben Woodcroft wrote:
>>>>> Unfortunately none of these builds are reproducible because rubygems
>>>>> in Guix generally aren't. For one, this is because .gem files are
>>>>> archives whose contents are timestamped.
>>>> I should clarify. What I meant was the cache .gem files
>>>>
>>>> /gnu/store/ib83mg5zsyr5x2w0m3i1f84gdvdbp5x9-ruby-ascii85-1.0.2/lib/ruby/gems/2.2.0/cache$
>>>> tar tvf Ascii85-1.0.2.gem |head
>>>> -r--r--r-- wheel/wheel     703 2015-12-27 22:44 metadata.gz
>>>> -r--r--r-- wheel/wheel    7436 2015-12-27 22:44 data.tar.gz
>>>> -r--r--r-- wheel/wheel     268 2015-12-27 22:44 checksums.yaml.gz
>>> We should arrange so that gems are created with a fixed timestamp and
>>> UID/GID, and a well-defined file ordering, as with:
>>>
>>>    --mtime=@0 --sort=name --owner=root:0 --group=root:0
>>>
>>> We also need to make sure gzip is always run with -n/--no-name.  That
>>> way, the gz files above will not include an additional timestamp.
>>>
>>>  From what I can see in
>>> <git://git.debian.org/git/reproducible/notes.git>, this is not addressed
>>> yet in other distros.
>> Ludo are you suggesting we should abandon the deletion approach?

Ah no, I hadn’t read the proposal when I replied.  Sorry for the
confusion!

>> I think you are right as usual. Better in attached?
>
> It looks good to me, thank you.

So I guess you (Ricardo?) can push it now.

Ben, do you confirm that the ruby-* packages you tested are indeed
bit-reproducible after this change, using --rounds=2 or so?

Thank you!

Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2016-01-01 15:10             ` Ludovic Courtès
@ 2016-01-02 15:02               ` Ben Woodcroft
  2016-01-06 11:46                 ` Ricardo Wurmus
  2016-01-07 14:31                 ` Ludovic Courtès
  0 siblings, 2 replies; 22+ messages in thread
From: Ben Woodcroft @ 2016-01-02 15:02 UTC (permalink / raw)
  To: Ludovic Courtès, Ricardo Wurmus; +Cc: guix-devel@gnu.org

[-- Attachment #1: Type: text/plain, Size: 2372 bytes --]



On 02/01/16 01:10, Ludovic Courtès wrote:
> Ricardo Wurmus <rekado@elephly.net> skribis:
>
>> Ben Woodcroft <b.woodcroft@uq.edu.au> writes:
>>
>>> On 31/12/15 03:26, Ludovic Courtès wrote:
>>>> Ben Woodcroft <b.woodcroft@uq.edu.au> skribis:
>>>>
>>>>> On 29/12/15 15:46, Ben Woodcroft wrote:
>>>>>> Unfortunately none of these builds are reproducible because rubygems
>>>>>> in Guix generally aren't. For one, this is because .gem files are
>>>>>> archives whose contents are timestamped.
>>>>> I should clarify. What I meant was the cache .gem files
>>>>>
>>>>> /gnu/store/ib83mg5zsyr5x2w0m3i1f84gdvdbp5x9-ruby-ascii85-1.0.2/lib/ruby/gems/2.2.0/cache$
>>>>> tar tvf Ascii85-1.0.2.gem |head
>>>>> -r--r--r-- wheel/wheel     703 2015-12-27 22:44 metadata.gz
>>>>> -r--r--r-- wheel/wheel    7436 2015-12-27 22:44 data.tar.gz
>>>>> -r--r--r-- wheel/wheel     268 2015-12-27 22:44 checksums.yaml.gz
>>>> We should arrange so that gems are created with a fixed timestamp and
>>>> UID/GID, and a well-defined file ordering, as with:
>>>>
>>>>     --mtime=@0 --sort=name --owner=root:0 --group=root:0
>>>>
>>>> We also need to make sure gzip is always run with -n/--no-name.  That
>>>> way, the gz files above will not include an additional timestamp.
>>>>
>>>>   From what I can see in
>>>> <git://git.debian.org/git/reproducible/notes.git>, this is not addressed
>>>> yet in other distros.
>>> Ludo are you suggesting we should abandon the deletion approach?
> Ah no, I hadn’t read the proposal when I replied.  Sorry for the
> confusion!
>
>>> I think you are right as usual. Better in attached?
>> It looks good to me, thank you.
> So I guess you (Ricardo?) can push it now.
>
> Ben, do you confirm that the ruby-* packages you tested are indeed
> bit-reproducible after this change, using --rounds=2 or so?
I do confirm this. Well, I used build then check so that dependencies 
weren't checked, but same thing.

I noticed that ruby-lumberjack, a dependency of ruby-guard, now fails to 
build (and fails before this patch and outside guix). This is because it 
fails to pass tests in early January.. not a source of non-determinism I 
was looking for, but thanks for writing tests into that package - picked 
up the easily fixed bug.
https://github.com/bdurand/lumberjack/pull/26

Thanks for pushing the patch.
ben

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: lumberjack.log --]
[-- Type: text/x-log; name="lumberjack.log", Size: 8448 bytes --]

$ gp build ruby-lumberjack
;;; note: source file /home/ben/git/guix/gnu/packages/ruby.scm
;;;       newer than compiled /home/ben/git/guix/gnu/packages/ruby.go
The following derivation will be built:
   /gnu/store/7707bxq0x97vif50w6yhpijpv7k7in91-ruby-lumberjack-1.0.9.drv
@ build-started /gnu/store/7707bxq0x97vif50w6yhpijpv7k7in91-ruby-lumberjack-1.0.9.drv - x86_64-linux /var/log/guix/drvs/77//07bxq0x97vif50w6yhpijpv7k7in91-ruby-lumberjack-1.0.9.drv.bz2
starting phase `set-paths'
environment variable `PATH' set to `/gnu/store/pgks1l9cl696j34v9mb35lk8x6lac3b0-ruby-2.2.4/bin:/gnu/store/xz8c9ihn3p1d8xqkhzf54bjvjqzvqkc0-tar-1.28/bin:/gnu/store/8m7mgixi5539vqrr1vd1nrvh96vjl66j-gzip-1.6/bin:/gnu/store/yq9vkx7f4zw17gs6b09bg4arcgmmjgxn-bzip2-1.0.6/bin:/gnu/store/hk31a1xlgf6n3yi1yzbdyd2bnjmxc60m-xz-5.0.4/bin:/gnu/store/wl84nj6x2mz7zf5r0ajx5gpi0p689ags-file-5.22/bin:/gnu/store/p1h463zxk0f56jl7snw7s8wxvz1k542q-diffutils-3.3/bin:/gnu/store/0xm4q87qi07gcig4riflrf65vyk1k0mp-patch-2.7.5/bin:/gnu/store/g55pwwrmgi58n1yr57m7vc0y69v1ba89-sed-4.2.2/bin:/gnu/store/7fk9v37a5q4r5sygywq0q0qg7iqrj517-findutils-4.4.2/bin:/gnu/store/k8qgvgwn5anbfy8r70h938kxgd46cyxx-gawk-4.1.3/bin:/gnu/store/021rg9bs7xivw0acp1yr0rxw6mf3h64d-grep-2.21/bin:/gnu/store/mnwjrkbfzkb5ifhqf8hssf3cxfvg11l6-coreutils-8.24/bin:/gnu/store/22k2zmc74dvnri91ma0lwxyyhfi1srk0-make-4.1/bin:/gnu/store/311nvir0pz1mhf0mgsmfrw00qfj7yq0j-bash-4.3.39/bin:/gnu/store/k6r37137lfpg3l3igi50c7lj2za7kqly-ld-wrapper-0/bin:/gnu/store/y5psndwpbbkjrf856x757psb708y62dn-binutils-2.25.1/bin:/gnu/store/hddjjpkfvwaf1j1q3qwpvby0rid3k8by-gcc-4.9.3/bin:/gnu/store/qv7bk62c22ms9i11dhfl71hnivyc82k2-glibc-2.22/bin:/gnu/store/qv7bk62c22ms9i11dhfl71hnivyc82k2-glibc-2.22/sbin:/gnu/store/nmzy77nd7adk19h2b90dakkv9lms66f5-ruby-rspec-core-3.2.3/bin:/gnu/store/fdh00cpj5x6a2n7wdndq8cn8msa4s731-ruby-diff-lcs-1.2.5/bin'
environment variable `GEM_PATH' set to `/gnu/store/pgks1l9cl696j34v9mb35lk8x6lac3b0-ruby-2.2.4/lib/ruby/gems/2.2.0:/gnu/store/2f50n60msd5yn2xggnyk0jrfa0iddjc6-ruby-rspec-3.2.0/lib/ruby/gems/2.2.0:/gnu/store/xiwyf9r66hg1gw79i1nm7nb51vi1pd0w-ruby-rspec-expectations-3.2.1/lib/ruby/gems/2.2.0:/gnu/store/f1wzx5zsyf3r4cvg91x9n06si7640dp5-ruby-rspec-mocks-3.2.1/lib/ruby/gems/2.2.0:/gnu/store/nmzy77nd7adk19h2b90dakkv9lms66f5-ruby-rspec-core-3.2.3/lib/ruby/gems/2.2.0:/gnu/store/fdh00cpj5x6a2n7wdndq8cn8msa4s731-ruby-diff-lcs-1.2.5/lib/ruby/gems/2.2.0:/gnu/store/fp7rn3m41g9nilk6bz3q8yjg17j0wkj9-ruby-rspec-support-3.2.2/lib/ruby/gems/2.2.0'
environment variable `CPATH' set to `/gnu/store/pgks1l9cl696j34v9mb35lk8x6lac3b0-ruby-2.2.4/include:/gnu/store/yq9vkx7f4zw17gs6b09bg4arcgmmjgxn-bzip2-1.0.6/include:/gnu/store/hk31a1xlgf6n3yi1yzbdyd2bnjmxc60m-xz-5.0.4/include:/gnu/store/wl84nj6x2mz7zf5r0ajx5gpi0p689ags-file-5.22/include:/gnu/store/k8qgvgwn5anbfy8r70h938kxgd46cyxx-gawk-4.1.3/include:/gnu/store/22k2zmc74dvnri91ma0lwxyyhfi1srk0-make-4.1/include:/gnu/store/y5psndwpbbkjrf856x757psb708y62dn-binutils-2.25.1/include:/gnu/store/hddjjpkfvwaf1j1q3qwpvby0rid3k8by-gcc-4.9.3/include:/gnu/store/qv7bk62c22ms9i11dhfl71hnivyc82k2-glibc-2.22/include:/gnu/store/lyn2331ilik14yy2jqhndshvxmv9r6w5-linux-libre-headers-3.14.37/include'
environment variable `LIBRARY_PATH' set to `/gnu/store/pgks1l9cl696j34v9mb35lk8x6lac3b0-ruby-2.2.4/lib:/gnu/store/2f50n60msd5yn2xggnyk0jrfa0iddjc6-ruby-rspec-3.2.0/lib:/gnu/store/yq9vkx7f4zw17gs6b09bg4arcgmmjgxn-bzip2-1.0.6/lib:/gnu/store/hk31a1xlgf6n3yi1yzbdyd2bnjmxc60m-xz-5.0.4/lib:/gnu/store/wl84nj6x2mz7zf5r0ajx5gpi0p689ags-file-5.22/lib:/gnu/store/k8qgvgwn5anbfy8r70h938kxgd46cyxx-gawk-4.1.3/lib:/gnu/store/y5psndwpbbkjrf856x757psb708y62dn-binutils-2.25.1/lib:/gnu/store/qv7bk62c22ms9i11dhfl71hnivyc82k2-glibc-2.22/lib:/gnu/store/xmkpq5mx40lv67368cq3zx315j3lxnax-glibc-utf8-locales-2.22/lib:/gnu/store/xiwyf9r66hg1gw79i1nm7nb51vi1pd0w-ruby-rspec-expectations-3.2.1/lib:/gnu/store/f1wzx5zsyf3r4cvg91x9n06si7640dp5-ruby-rspec-mocks-3.2.1/lib:/gnu/store/nmzy77nd7adk19h2b90dakkv9lms66f5-ruby-rspec-core-3.2.3/lib:/gnu/store/fdh00cpj5x6a2n7wdndq8cn8msa4s731-ruby-diff-lcs-1.2.5/lib:/gnu/store/fp7rn3m41g9nilk6bz3q8yjg17j0wkj9-ruby-rspec-support-3.2.2/lib'
environment variable `GUIX_LOCPATH' set to `/gnu/store/xmkpq5mx40lv67368cq3zx315j3lxnax-glibc-utf8-locales-2.22/lib/locale'
phase `set-paths' succeeded after 0.0 seconds
starting phase `install-locale'
using 'en_US.utf8' locale for category "LC_ALL"
phase `install-locale' succeeded after 0.0 seconds
starting phase `unpack'
Unpacked gem: '/tmp/guix-build-ruby-lumberjack-1.0.9.drv-0/0m1ikqigchci66hzcwszfyxjb5yq0aky-lumberjack-1.0.9'
phase `unpack' succeeded after 0.5 seconds
starting phase `patch-usr-bin-file'
phase `patch-usr-bin-file' succeeded after 0.0 seconds
starting phase `patch-source-shebangs'
phase `patch-source-shebangs' succeeded after 0.0 seconds
starting phase `patch-generated-file-shebangs'
phase `patch-generated-file-shebangs' succeeded after 0.0 seconds
starting phase `build'
  Successfully built RubyGem
  Name: lumberjack
  Version: 1.0.9
  File: lumberjack-1.0.9.gem
phase `build' succeeded after 0.5 seconds
starting phase `check'
/gnu/store/pgks1l9cl696j34v9mb35lk8x6lac3b0-ruby-2.2.4/bin/ruby -I/gnu/store/fp7rn3m41g9nilk6bz3q8yjg17j0wkj9-ruby-rspec-support-3.2.2/lib/ruby/gems/2.2.0/gems/rspec-support-3.2.2/lib:/gnu/store/nmzy77nd7adk19h2b90dakkv9lms66f5-ruby-rspec-core-3.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib /gnu/store/nmzy77nd7adk19h2b90dakkv9lms66f5-ruby-rspec-core-3.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
.F.............................................................................................

Failures:

  1) Lumberjack::Device::DateRollingLogFile should roll the file weekly
     Failure/Error: File.read("#{log_file}.#{today.strftime('week-of-%Y-%m-%d')}").should == "test week one#{Lumberjack::LINE_SEPARATOR}"
     Errno::ENOENT:
       No such file or directory @ rb_sysopen - /tmp/guix-build-ruby-lumberjack-1.0.9.drv-0/gem/spec/tmp/b200452538.log.week-of-2016-01-02
     # ./spec/device/date_rolling_log_file_spec.rb:45:in `read'
     # ./spec/device/date_rolling_log_file_spec.rb:45:in `block (2 levels) in <top (required)>'

Deprecation Warnings:

Using `should` from rspec-expectations' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` with `config.expect_with(:rspec) { |c| c.syntax = :should }` instead. Called from /tmp/guix-build-ruby-lumberjack-1.0.9.drv-0/gem/spec/device/date_rolling_log_file_spec.rb:28:in `block (2 levels) in <top (required)>'.

Using `stub` from rspec-mocks' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` instead. Called from /tmp/guix-build-ruby-lumberjack-1.0.9.drv-0/gem/spec/device/date_rolling_log_file_spec.rb:23:in `block (2 levels) in <top (required)>'.


If you need more of the backtrace for any of these deprecations to
identify where to make the necessary changes, you can configure
`config.raise_errors_for_deprecations!`, and it will turn the
deprecation warnings into errors, giving you the full backtrace.

2 deprecation warnings total

Finished in 1.16 seconds (files took 0.21941 seconds to load)
95 examples, 1 failure

Failed examples:

rspec ./spec/device/date_rolling_log_file_spec.rb:32 # Lumberjack::Device::DateRollingLogFile should roll the file weekly

/gnu/store/pgks1l9cl696j34v9mb35lk8x6lac3b0-ruby-2.2.4/bin/ruby -I/gnu/store/fp7rn3m41g9nilk6bz3q8yjg17j0wkj9-ruby-rspec-support-3.2.2/lib/ruby/gems/2.2.0/gems/rspec-support-3.2.2/lib:/gnu/store/nmzy77nd7adk19h2b90dakkv9lms66f5-ruby-rspec-core-3.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib /gnu/store/nmzy77nd7adk19h2b90dakkv9lms66f5-ruby-rspec-core-3.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb failed
phase `check' failed after 1.8 seconds
builder for `/gnu/store/7707bxq0x97vif50w6yhpijpv7k7in91-ruby-lumberjack-1.0.9.drv' failed with exit code 1
@ build-failed /gnu/store/7707bxq0x97vif50w6yhpijpv7k7in91-ruby-lumberjack-1.0.9.drv - 1 builder for `/gnu/store/7707bxq0x97vif50w6yhpijpv7k7in91-ruby-lumberjack-1.0.9.drv' failed with exit code 1
guix build: error: build failed: build of `/gnu/store/7707bxq0x97vif50w6yhpijpv7k7in91-ruby-lumberjack-1.0.9.drv' failed


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2016-01-02 15:02               ` Ben Woodcroft
@ 2016-01-06 11:46                 ` Ricardo Wurmus
  2016-01-07 13:24                   ` Ludovic Courtès
  2016-01-08 14:16                   ` Thompson, David
  2016-01-07 14:31                 ` Ludovic Courtès
  1 sibling, 2 replies; 22+ messages in thread
From: Ricardo Wurmus @ 2016-01-06 11:46 UTC (permalink / raw)
  To: Ben Woodcroft; +Cc: guix-devel@gnu.org


Ben Woodcroft <b.woodcroft@uq.edu.au> writes:

> On 02/01/16 01:10, Ludovic Courtès wrote:
[...]
>> So I guess you (Ricardo?) can push it now.
[...]
> Thanks for pushing the patch.

I did this just now.  Sorry for the delay.  Pushed as 7266848.  Thanks,
Ben, for helping to make Ruby packages reproducible!

~~ Ricardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2016-01-06 11:46                 ` Ricardo Wurmus
@ 2016-01-07 13:24                   ` Ludovic Courtès
  2016-01-08 14:16                   ` Thompson, David
  1 sibling, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2016-01-07 13:24 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel@gnu.org

Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> skribis:

> Ben Woodcroft <b.woodcroft@uq.edu.au> writes:
>
>> On 02/01/16 01:10, Ludovic Courtès wrote:
> [...]
>>> So I guess you (Ricardo?) can push it now.
> [...]
>> Thanks for pushing the patch.
>
> I did this just now.  Sorry for the delay.  Pushed as 7266848.  Thanks,
> Ben, for helping to make Ruby packages reproducible!

Indeed, great work, thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Add 12 rubygems.
  2015-12-30  9:14 ` [PATCH] Add 12 rubygems Ricardo Wurmus
@ 2016-01-07 14:29   ` Ricardo Wurmus
  2016-01-26  6:37     ` Ben Woodcroft
  0 siblings, 1 reply; 22+ messages in thread
From: Ricardo Wurmus @ 2016-01-07 14:29 UTC (permalink / raw)
  To: Ben Woodcroft; +Cc: guix-devel@gnu.org

Here’s the review for the other 11 patches, starting from the last:

> From 4ccc1fadcb67a0d296bedd51a7f73d911da4680d Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 15:13:13 +1000
> Subject: [PATCH 12/12] gnu: Add ruby-ttfunk.

> * gnu/packages/ruby.scm (ruby-ttfunk): New variable.

[...]

> +    (synopsis "Font Metrics Parser for the Prawn PDF generator")

s/Metrics Parser/metrics parser/

> +    (description
> +     "TTFunk is a TrueType font parser written in pure ruby.  It is used as
> +part of the Prawn PDF generator.")

s/ruby/Ruby/

> +    ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
> +    ;; for details."
> +    (license (list license:gpl2 license:gpl3
> +                   (license:non-copyleft
> +                    "file://src/LICENSE"
> +                    "See LICENSE in the distribution.")))))

The license is actually just one of “(list license:gpl2 license:gpl3
license:ruby)”.  LICENSE just contains what appears to be the Ruby
license.

> From 8a7a728c843f05206599d777fdd8c8a68f26eea4 Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 15:05:18 +1000
> Subject: [PATCH 11/12] gnu: Add ruby-ascii85.

> * gnu/packages/ruby.scm (ruby-ascii85): New variable.

[...]

> +    (synopsis "Encode and decode Adobe's ascii85 binary-to-text encoding")

How about

  “Encode and decode Ascii85 binary-to-text encoding”

> +    (description
> +     "This library provides methods to encode and decode Adobe's Ascii85
> +binary-to-text encoding.  The main modern use of Ascii85 is in Adobe's
> +PostScript and Portable Document Format file formats.")

Also here I’d remove “Adobe’s”.  Additionally, you could wrap “Portable
Document Format” in @dfn{}:

     "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")

Please pull this on one line.


> From 6c0f6264d58f4d1815df209ab0231c4abc054f7a Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 15:00:15 +1000
> Subject: [PATCH 10/12] gnu: Add ruby-afm.

> * gnu/packages/ruby.scm (ruby-afm): New variable.

[...]

> +    (synopsis "Read Adobe Font Metrics (afm) files")
> +    (description
> +     "@code{afm} is a library to read Adobe Font Metrics (afm) files and use
> +the data therein.")

How about

  "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
   files and use the data therein."

> From 8641b00e5706f6d1fe486df457b75f91a68c5edc Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 14:52:04 +1000
> Subject: [PATCH 09/12] gnu: Add ruby-rc4.

> * gnu/packages/ruby.scm (ruby-rc4): New variable.

[...]

> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'check
> +           (lambda _
> +             (and
> +              (zero? (system* "rspec" "spec/rc4_spec.rb"))))))))

There’s no need for ‘(and ...)’ here.

> +    (native-inputs
> +     `(("ruby-rspec" ,ruby-rspec-2)))
> +    (synopsis "Implementation of the RC4 algorithm")
> +    (description
> +     "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
> +    ;; link on rubygems.org is dead, so use github URL.

I think we can do without this comment.

> From 1f13b94614029c3ca7cdc34dbbcac2d2c69e786c Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 14:51:34 +1000
> Subject: [PATCH 08/12] gnu: Add ruby-hashery.

> * gnu/packages/ruby.scm (ruby-hashery): New variable.

[...]

> +(define-public ruby-hashery
> +  (package
> +    (name "ruby-hashery")
> +    (version "2.1.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (rubygems-uri "hashery" version))
> +       (sha256
> +        (base32
> +         "0xawbljsjarl9l7700bka672ixwznzwih4s9i38p1y9mp8hyx54g"))))
> +    (build-system ruby-build-system)
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'check
> +           (lambda _
> +             (and
> +              (zero? (system* "qed"))
> +              (zero? (system* "rubytest" "-Ilib" "-Itest" "test/"))))))))

I would prefer moving ‘(and’ and ‘(zero?’ on the same line and then
split the “rubytest” line.

> +    (native-inputs
> +     `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
> +       ("ruby-qed" ,ruby-qed)
> +       ("ruby-lemon" ,ruby-lemon)))
> +    (synopsis "Hash-like classes with extra features")
> +    (description
> +     "The Hashery is a tight collection of Hash-like classes.  Included are
> +the auto-sorting Dictionary class, the efficient LRUHash, the flexible
> +OpenHash and the convenient KeyHash.  Nearly every class is a subclass of the
> +CRUDHash which defines a CRUD (Create, Read, Update and Delete) model on top
> +of Ruby's standard Hash making it possible to subclass and augment to fit any
> +specific use case.")

Could you please wrap all class names in @code{...}?  E.g.

     "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."


> From 9d9bbcfbfa52744b2b174330164578f5129187d4 Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 14:45:17 +1000
> Subject: [PATCH 07/12] gnu: Add ruby-rubytest-cli.

> * gnu/packages/ruby.scm (ruby-rubytest-cli): New variable.

[...]

> +    (synopsis
> +     "Command-line interface for rubytest")

Please let them share one line.

> +    (description
> +     "Rubytest CLI is a command-line interface for running tests for
> +Rubytest-based test frameworks.  It provides the @code{rubytest} executable.")
> +    (home-page
> +     "http://rubyworks.github.io/rubytest-cli")

Same here.

> From 5edfa6742d7ee5a958bae3e66e978ff63f10c41a Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 14:42:53 +1000
> Subject: [PATCH 06/12] gnu: Add ruby-lemon.

> * gnu/packages/ruby.scm (ruby-lemon): New variable.

[...]

> +++ b/gnu/packages/ruby.scm
> @@ -3045,3 +3045,35 @@ like Test::Unit and requirement specifications systems like Cucumber.")
>  for reuse by other test frameworks.")
>      (home-page "http://rubyworks.github.io/ae")
>      (license license:bsd-2)))
> +
> +(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"))))

The indentation here looks wrong.  The paren of “(base32” should be
aligned with the “s” of “sha256”, and the opening quote of the string
should be aligned with the “b” of “base32”.

> +    (build-system ruby-build-system)
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'check
> +           (lambda _
> +             (zero? (system* "qed")))))))

Could this all be one line starting from “(replace” or at least
“(lambda”?

> +    (propagated-inputs
> +     `(("ruby-ae" ,ruby-ae)
> +       ("ruby-ansi" ,ruby-ansi)
> +       ("ruby-rubytest" ,ruby-rubytest)))
> +    (native-inputs
> +     `(("ruby-qed" ,ruby-qed)))
> +    (synopsis "Test framework that correlates code structure and test
> unit")

You could shorten the synopsis a bit by replacing “that correlates” with
“correlating”.

> +    (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.")

Please lowercase “Unit Testing Framework”.

> From a6f0972e10e7fe4ede3082cc22b24c0af69f7ae9 Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 14:37:45 +1000
> Subject: [PATCH 05/12] gnu: Add ruby-ae.

> * gnu/packages/ruby.scm (ruby-ae): New variable.

[...]

> +    (source
> +     (origin
> +       (method url-fetch)
> +       ;; fetch from github so tests are included ?

Not sure? :)

> +       (uri (string-append
> +             "https://github.com/rubyworks/ae/archive/"
> +             version ".tar.gz"))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
> +    (build-system ruby-build-system)
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'check
> +           (lambda _
> +             (zero? (system* "qed")))))))

This line is short enough to merge it with the “(lambda _”.

> +    (propagated-inputs
> +     `(("ruby-ansi" ,ruby-ansi)))
> +    (native-inputs
> +     `(("ruby-qed" ,ruby-qed)))
> +    (synopsis "Assertions library")
> +    (description
> +     "Assertive Expressive (AE) is an assertions library specifically designed
> +for reuse by other test frameworks.")

That’s not very descriptive, but I know it’s difficult to come up with
good descriptions when the upstream descriptions are so vague.  Oh
well.  Let’s leave it like this if you cannot come up with something a
little more expressive.

> From dcb24fdc106d5878c4a5ff24d2fda6e2987bb15d Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 14:36:20 +1000
> Subject: [PATCH 04/12] gnu: Add ruby-qed.

> * gnu/packages/ruby.scm (ruby-qed): New variable.

[...]

> +    (arguments
> +     ;; disable testing to break the cycle qed, ansi, qed, among others.Instead
> +     ;; simply test that the executable runs.

The first line of the comment looks awfully long.  There is no space
after the first sentence.

> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'check
> +           (lambda _
> +             (zero? (system* "ruby" "-Ilib" "bin/qed"
> "--copyright")))))))

Why “--copyright”?  Are you trying to run qed to see if there are any
errors, because there is no test suite?  If so, maybe you could state
your intention in a comment.

> +    (propagated-inputs
> +     `(("ruby-ansi" ,ruby-ansi)
> +       ("ruby-brass" ,ruby-brass)))
> +    (synopsis "Test framework utilizing literate programming techniques")
> +    (description
> +     "QED (Quality Ensured Demonstrations) is a TDD (Test Driven
> +Development)/BDD (Behaviour Drive Development) framework utilizing Literate
> +Programming techniques.  QED sits somewhere between lower-level testing tools
> +like Test::Unit and requirement specifications systems like
> Cucumber.")

Maybe this is better:

     "@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."

> From 356e1fbe6f87e0da6410760a2f177021e5b0302c Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 14:16:42 +1000
> Subject: [PATCH 03/12] gnu: Add ruby-brass.

> * gnu/packages/ruby.scm (ruby-brass): New variable.

[...]

> +(define-public ruby-brass
> +  ;; download from git so test runner is included

But... we are still downloading from Rubygems.

> +  (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.

Again, the comment looks a bit long; also add another space after the
first sentence and capitalise “Disable” at the beginning.

> From 81e6d9cb5470f85131e302759c3698d9c6295dd8 Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft <donttrustben@gmail.com>
> Date: Tue, 29 Dec 2015 14:13:42 +1000
> Subject: [PATCH 02/12] gnu: Add ruby-rubytest.

> * gnu/packages/ruby.scm (ruby-rubytest): New variable.

[...]

> +    (arguments
> +     ;; disable 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.

Same as above: capitalisation and space after first sentence.

> +    (home-page
> +     "http://rubyworks.github.io/rubytest")

On one line please.

And that’s it as I reviewed the first patch already.  Thanks a lot for
the patches!  Could you please send updated patches?

~~ Ricardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2016-01-02 15:02               ` Ben Woodcroft
  2016-01-06 11:46                 ` Ricardo Wurmus
@ 2016-01-07 14:31                 ` Ludovic Courtès
  2016-01-08 11:34                   ` Ben Woodcroft
  1 sibling, 1 reply; 22+ messages in thread
From: Ludovic Courtès @ 2016-01-07 14:31 UTC (permalink / raw)
  To: Ben Woodcroft; +Cc: guix-devel@gnu.org

Hi Ben,

Do you have an account on Savannah?  If not, I invite you to create one
so we can give you write access to the repo.  :-)

Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2016-01-07 14:31                 ` Ludovic Courtès
@ 2016-01-08 11:34                   ` Ben Woodcroft
  2016-01-08 16:55                     ` Ludovic Courtès
  0 siblings, 1 reply; 22+ messages in thread
From: Ben Woodcroft @ 2016-01-08 11:34 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel@gnu.org

On 08/01/16 00:31, Ludovic Courtès wrote:
> Hi Ben,
>
> Do you have an account on Savannah?  If not, I invite you to create one
> so we can give you write access to the repo.  :-)
Sweet, thanks muchly.

My new savannah account name is benwoodcroft

I'll try not to mess things up too badly. Great to be more officially a 
part of GNU, though I'm sure I'll never be able to repay all the 
goodness it has provided me over the years.
ben

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2016-01-06 11:46                 ` Ricardo Wurmus
  2016-01-07 13:24                   ` Ludovic Courtès
@ 2016-01-08 14:16                   ` Thompson, David
  1 sibling, 0 replies; 22+ messages in thread
From: Thompson, David @ 2016-01-08 14:16 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel@gnu.org

On Wed, Jan 6, 2016 at 6:46 AM, Ricardo Wurmus
<ricardo.wurmus@mdc-berlin.de> wrote:
>
> Ben Woodcroft <b.woodcroft@uq.edu.au> writes:
>
>> On 02/01/16 01:10, Ludovic Courtès wrote:
> [...]
>>> So I guess you (Ricardo?) can push it now.
> [...]
>> Thanks for pushing the patch.
>
> I did this just now.  Sorry for the delay.  Pushed as 7266848.  Thanks,
> Ben, for helping to make Ruby packages reproducible!

Just catching up on this conversation now.  Thanks, Ben!

- Dave

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Help Ruby packages be reproducible
  2016-01-08 11:34                   ` Ben Woodcroft
@ 2016-01-08 16:55                     ` Ludovic Courtès
  0 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2016-01-08 16:55 UTC (permalink / raw)
  To: Ben Woodcroft; +Cc: guix-devel@gnu.org

Ben Woodcroft <b.woodcroft@uq.edu.au> skribis:

> On 08/01/16 00:31, Ludovic Courtès wrote:
>> Hi Ben,
>>
>> Do you have an account on Savannah?  If not, I invite you to create one
>> so we can give you write access to the repo.  :-)
> Sweet, thanks muchly.
>
> My new savannah account name is benwoodcroft

I’ve added you, welcome aboard!

Please read the ‘HACKING’ file for commit access rules.  If in doubt
with Git or anything, don’t hesitate to ask here or on #guix on IRC.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] Add 12 rubygems.
  2016-01-07 14:29   ` Ricardo Wurmus
@ 2016-01-26  6:37     ` Ben Woodcroft
  0 siblings, 0 replies; 22+ messages in thread
From: Ben Woodcroft @ 2016-01-26  6:37 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel@gnu.org

On 08/01/16 00:29, Ricardo Wurmus wrote:
> Here’s the review for the other 11 patches,
Thanks for all this Ricardo, all pushed now.

ben

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2016-01-26  6:37 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-29  5:46 [PATCH] Add 12 rubygems Ben Woodcroft
2015-12-29  5:51 ` Ben Woodcroft
2015-12-30 17:26   ` Ludovic Courtès
2015-12-29  7:18 ` Ricardo Wurmus
2015-12-30  0:51   ` [PATCH] Help Ruby packages be reproducible (was: [PATCH] Add 12 rubygems.) Ben Woodcroft
2015-12-30  0:56     ` [PATCH] Help Ruby packages be reproducible Ben Woodcroft
2015-12-30  2:47       ` Pjotr Prins
2015-12-30  8:26       ` Ricardo Wurmus
2015-12-30 23:52         ` Ben Woodcroft
2015-12-31 10:03           ` Ricardo Wurmus
2016-01-01 15:10             ` Ludovic Courtès
2016-01-02 15:02               ` Ben Woodcroft
2016-01-06 11:46                 ` Ricardo Wurmus
2016-01-07 13:24                   ` Ludovic Courtès
2016-01-08 14:16                   ` Thompson, David
2016-01-07 14:31                 ` Ludovic Courtès
2016-01-08 11:34                   ` Ben Woodcroft
2016-01-08 16:55                     ` Ludovic Courtès
2015-12-31 12:03           ` Ben Woodcroft
2015-12-30  9:14 ` [PATCH] Add 12 rubygems Ricardo Wurmus
2016-01-07 14:29   ` Ricardo Wurmus
2016-01-26  6:37     ` Ben Woodcroft

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).