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


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: tracker <at> debbugs.gnu.org
Subject: bug#19364: closed (search-patch fails to consult GUIX_PACKAGE_PATH)
Date: Sat, 03 Jan 2015 23:02:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Sun, 04 Jan 2015 00:01:19 +0100
with message-id <87vbkn79kw.fsf <at> gnu.org>
and subject line Re: bug#19364: search-patch fails to consult GUIX_PACKAGE_PATH
has caused the debbugs.gnu.org bug report #19364,
regarding search-patch fails to consult GUIX_PACKAGE_PATH
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
19364: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19364
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Mark H Weaver <mhw <at> netris.org>
To: bug-guix <at> gnu.org
Subject: search-patch fails to consult GUIX_PACKAGE_PATH
Date: Sat, 13 Dec 2014 03:43:14 -0500
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.

Also, it would be good to improve the error message when 'search-patch'
fails.  This is what he reported seeing:

--8<---------------cut here---------------start------------->8---
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)'.
--8<---------------cut here---------------end--------------->8---

      Mark


[Message part 3 (message/rfc822, inline)]
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 4 (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 5 (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 6 (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.