Subject: Re: [bug#35518] [PATCH] fix guile-pfds bug

From: [email-masked]
Date: Mon, 06 May 2019 14:42:45 +0200

On 2019-05-06 13:09, Ricardo Wurmus wrote:
> [email-masked] writes:
> 
>> Forgo the first, this patch is not perfect because It doesn't force an
>> update.
> 
> The attached patch is more than 15MB in size.  I haven’t looked at it
> but I guess that’s not correct.

I am not sure which patch you are referring to.

Here is another patch. I followed the "Submitting Patches" section
from the manual.

From 50f143b119d42042009fb94e5d6a74d47740f6d2 Mon Sep 17 00:00:00 2001
From: Amirouche <[email-masked]>
Date: Mon, 6 May 2019 14:40:42 +0200
Subject: [PATCH] gnu: guile-pfds bugfix

- gnu/packages/guile-xyz.scm(guile-pfds)[version]: add revision 1
- gnu/packages/guile-xyz.scm(guile-pfds)[arguments]: New phase 'patch'
---
 gnu/packages/guile-xyz.scm | 121 ++++++++++++++++++++-----------------
 1 file changed, 65 insertions(+), 56 deletions(-)

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 03fd63837e..f80cd72442 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 Eraim Flashner <[email-masked]>
 ;;; Copyright © 2016, 2017 Alex Kost <[email-masked]>
 ;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <[email-masked]>
-;;; Copyright © 2016 Amirouche <[email-masked]>
+;;; Copyright © 2016, 2019 Amirouche <[email-masked]>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <[email-masked]>
 ;;; Copyright © 2017 Andy Wingo <[email-masked]>
 ;;; Copyright © 2017 David Thompson <[email-masked]>
@@ -624,60 +624,69 @@ using Guile's foreign function interface.")
     (license license:gpl3+)))
 
 (define-public guile-pfds
-  (package
-    (name "guile-pfds")
-    (version "0.3")
-    (home-page "https://github.com/ijp/pfds")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url home-page)
-                    (commit (string-append "v" version))))
-              (sha256
-               (base32
-                "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
-              (file-name (string-append name "-" version "-checkout"))))
-    (build-system guile-build-system)
-    (arguments
-     '(#:source-directory "src"
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'move-files-around
-                    (lambda _
-                      ;; Move files under a pfds/ directory to reflect the
-                      ;; module hierarchy.
-                      (mkdir-p "src/pfds")
-                      (for-each (lambda (file)
-                                  (rename-file file
-                                               (string-append "src/pfds/"
-                                                              file)))
-                                '("bbtrees.sls"
-                                  "deques"
-                                  "deques.sls"
-                                  "dlists.sls"
-                                  "fingertrees.sls"
-                                  "hamts.sls"
-                                  "heaps.sls"
-                                  "private"
-                                  "psqs.sls"
-                                  "queues"
-                                  "queues.sls"
-                                  "sequences.sls"
-                                  "sets.sls"))
-
-                      ;; In Guile <= 2.2.4, there's no way to tell 'guild
-                      ;; compile' to accept the ".sls" extension.  So...
-                      (for-each (lambda (file)
-                                  (rename-file file
-                                               (string-append
-                                                (string-drop-right file 4)
-                                                ".scm")))
-                                (find-files "." "\\.sls$"))
-                      #t)))))
-    (native-inputs
-     `(("guile" ,guile-2.2)))
-    (synopsis "Purely functional data structures for Guile")
-    (description
-     "This package provides purely functional data structures written in R6RS
+  (let ((commit "454033f82dac7c0b0ea9e84eed1e8ed316487c78")
+        (revision "1"))
+    (package
+      (name "guile-pfds")
+      (version (git-version "0.3" revision commit))
+      (home-page "https://github.com/ijp/pfds")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
+                (file-name (git-file-name name version))))
+      (build-system guile-build-system)
+      (arguments
+       '(#:source-directory "src"
+         #:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'patch
+                      ;; note: upstream is not responsive.
+                      (lambda _
+                        (substitute* "hamts.sls"
+                          (("subtrie-vector vector")
+                           "subtrie-vector trie"))
+                        #t))
+                    (add-after 'patch 'move-files-around
+                      (lambda _
+                        ;; Move files under a pfds/ directory to reflect the
+                        ;; module hierarchy.
+                        (mkdir-p "src/pfds")
+                        (for-each (lambda (file)
+                                    (rename-file file
+                                                 (string-append "src/pfds/"
+                                                                file)))
+                                  '("bbtrees.sls"
+                                    "deques"
+                                    "deques.sls"
+                                    "dlists.sls"
+                                    "fingertrees.sls"
+                                    "hamts.sls"
+                                    "heaps.sls"
+                                    "private"
+                                    "psqs.sls"
+                                    "queues"
+                                    "queues.sls"
+                                    "sequences.sls"
+                                    "sets.sls"))
+
+                        ;; In Guile <= 2.2.4, there's no way to tell 'guild
+                        ;; compile' to accept the ".sls" extension.  So...
+                        (for-each (lambda (file)
+                                    (rename-file file
+                                                 (string-append
+                                                  (string-drop-right file 4)
+                                                  ".scm")))
+                                  (find-files "." "\\.sls$"))
+                        #t)))))
+      (native-inputs
+       `(("guile" ,guile-2.2)))
+      (synopsis "Purely functional data structures for Guile")
+      (description
+       "This package provides purely functional data structures written in R6RS
 Scheme and compiled for Guile.  It has been tested with Racket, Guile 2,
 Vicare Scheme and IronScheme.  Right now it contains:
 
@@ -693,7 +702,7 @@ Vicare Scheme and IronScheme.  Right now it contains:
 @item heaps
 @item hash array mapped tries (HAMTs).
 @end itemize\n")
-    (license license:bsd-3)))
+      (license license:bsd-3))))
 
 (define-public guile-aa-tree
   (package
-- 
2.19.1