GNU bug report logs - #19364
search-patch fails to consult GUIX_PACKAGE_PATH

Previous Next

Package: guix;

Reported by: Mark H Weaver <mhw <at> netris.org>

Date: Sat, 13 Dec 2014 08:46:01 UTC

Severity: normal

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

Full log


Message #10 received at 19364-done <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Mark H Weaver <mhw <at> netris.org>
Cc: 19364-done <at> debbugs.gnu.org
Subject: Re: bug#19364: search-patch fails to consult GUIX_PACKAGE_PATH
Date: Sun, 04 Jan 2015 00:01:19 +0100
[Message part 1 (text/plain, inline)]
Mark H Weaver <mhw <at> netris.org> skribis:

> Tomáš Čech <sleep_walker <at> suse.cz> reported on IRC that 'search-patch'
> failed to find a patch he had put into DIR/gnu/packages/patches/, where
> DIR was in $GUIX_PACKAGE_PATH.  Adding DIR to GUILE_LOAD_PATH fixed the
> problem.

Fixed in ee06af5.

> Also, it would be good to improve the error message when 'search-patch'
> fails.  This is what he reported seeing:
>
> guix/packages.scm:374:17: In procedure #<procedure 47c70c0 at guix/packages.scm:372:9 (number patch)>:
> guix/packages.scm:374:17: Throw to key `match-error' with args `("match" "no matching pattern" #f)'.

I came up with this patch:

[Message part 2 (text/x-patch, inline)]
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 7f0b58b..57a3e21 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -30,6 +30,8 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:use-module (srfi srfi-39)
   #:export (search-patch
             search-bootstrap-binary
@@ -70,13 +72,23 @@
         %load-path)))
 
 (define (search-patch file-name)
-  "Search the patch FILE-NAME."
-  (search-path (%patch-path) file-name))
+  "Search the patch FILE-NAME.  Raise an error if not found."
+  (or (search-path (%patch-path) file-name)
+      (raise (condition
+              (&message (message (format #f (_ "~a: patch not found")
+                                         file-name)))))))
 
 (define (search-bootstrap-binary file-name system)
-  "Search the bootstrap binary FILE-NAME for SYSTEM."
-  (search-path (%bootstrap-binaries-path)
-               (string-append system "/" file-name)))
+  "Search the bootstrap binary FILE-NAME for SYSTEM.  Raise an error if not
+found."
+  (or (search-path (%bootstrap-binaries-path)
+                   (string-append system "/" file-name))
+      (raise (condition
+              (&message
+               (message
+                (format #f (_ "could not find bootstrap binary '~a' \
+for system '~a'")
+                        file-name system)))))))
 
 (define %distro-root-directory
   ;; Absolute file name of the module hierarchy.
[Message part 3 (text/plain, inline)]
However, since ‘search-patch’ errors happen at load time, the actual
exception is hidden, and one just gets a “package not found” error.

To fix that, we’d need to make ‘patches’ a thunked field, which sounds
reasonable to me.  WDYT?

Thanks,
Ludo’.

This bug report was last modified 10 years and 142 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.