* [bug#43817] [PATCH 0/1] guix: build: hg: Add 'guard' to handle error.
@ 2020-10-05 16:35 zimoun
2020-10-05 16:36 ` [bug#43817] [PATCH 1/1] " zimoun
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: zimoun @ 2020-10-05 16:35 UTC (permalink / raw)
To: 43817; +Cc: zimoun
Dear,
This patch allows to gently report failure with 'hg clone'.
For example, let consider the package using 'hg-fetch':
--8<---------------cut here---------------start------------->8---
(define-module (hello)
#:use-module (guix packages)
#:use-module (gnu packages base)
#:use-module (guix hg-download))
(define-public hi-hg
(package
(inherit hello)
(name "hi-hg")
(source (origin
(method hg-fetch)
(uri (hg-reference
(url "https://example.org/hg")
(changeset "314a11282586")))
(sha256
(base32
"1yb0rsrbjg2bwyhfk677crhw0k7ijm6slaq0qq7cd4lznlz2yvji"))))
(home-page "https://example.org/hg")))
--8<---------------cut here---------------end--------------->8---
Then, the current behaviour report an (opinionated: ugly!) backtrace:
--8<---------------cut here---------------start------------->8---
$ guix build -L /tmp/foo/ hi-hg
The following derivations will be built:
/gnu/store/awdr7qhl6hyjgr1m9a40zfnban9ip98x-hi-hg-2.10.drv
/gnu/store/bgdwj7ajkm9xwcyib83wpby1zb9l8si2-hg-checkout.drv
building /gnu/store/bgdwj7ajkm9xwcyib83wpby1zb9l8si2-hg-checkout.drv...
guile: warning: failed to install locale
warning: connection security to example.org is disabled per current settings; communication is susceptible to eavesdropping and tampering
abort: HTTP Error 404: Not Found
Backtrace:
3 (primitive-load "/gnu/store/rf02zx0dscns2bzzics9i93l1xm?")
In ice-9/eval.scm:
293:34 2 (_ #<directory (guile-user) 7ffff5bb8f00>)
In guix/build/hg.scm:
38:2 1 (hg-fetch "https://example.org/hg" "314a11282586" "/gn?" ?)
In guix/build/utils.scm:
654:6 0 (invoke _ . _)
guix/build/utils.scm:654:6: In procedure invoke:
ERROR:
1. &invoke-error:
program: "/gnu/store/0qx1yjfnjn77jag9rmv4z49vfrzk5bgc-mercurial-5.5.1/bin/hg"
arguments: ("clone" "https://example.org/hg" "--rev" "314a11282586" "--insecure" "/gnu/store/6x6hccx9cqpfrcav79inl43ys6frgvw2-hg-checkout")
exit-status: 255
term-signal: #f
stop-signal: #f
builder for `/gnu/store/bgdwj7ajkm9xwcyib83wpby1zb9l8si2-hg-checkout.drv' failed with exit code 1
build of /gnu/store/bgdwj7ajkm9xwcyib83wpby1zb9l8si2-hg-checkout.drv failed
View build log at '/var/log/guix/drvs/bg/dwj7ajkm9xwcyib83wpby1zb9l8si2-hg-checkout.drv.bz2'.
cannot build derivation `/gnu/store/awdr7qhl6hyjgr1m9a40zfnban9ip98x-hi-hg-2.10.drv': 1 dependencies couldn't be built
guix build: error: build of `/gnu/store/awdr7qhl6hyjgr1m9a40zfnban9ip98x-hi-hg-2.10.drv' failed
--8<---------------cut here---------------end--------------->8---
Instead, the proposing patch handles the error and reports:
--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build -L /tmp/foo/ hi-hg
The following derivations will be built:
/gnu/store/zam0r6fvyp9qkzp6kf087iifvnhw140n-hi-hg-2.10.drv
/gnu/store/z4y6xhnaipx0p7sx4ink0bll9i7rww87-hg-checkout.drv
building /gnu/store/z4y6xhnaipx0p7sx4ink0bll9i7rww87-hg-checkout.drv...
guile: warning: failed to install locale
warning: connection security to example.org is disabled per current settings; communication is susceptible to eavesdropping and tampering
abort: HTTP Error 404: Not Found
hg-fetch: '/gnu/store/0qx1yjfnjn77jag9rmv4z49vfrzk5bgc-mercurial-5.5.1/bin/hg clone https://example.org/hg --rev 314a11282586 --insecure /gnu/store/6x6hccx9cqpfrcav79inl43ys6frgvw2-hg-checkout' failed with exit code 255
Trying content-addressed mirror at berlin.guix.gnu.org...
Trying content-addressed mirror at berlin.guix.gnu.org...
builder for `/gnu/store/z4y6xhnaipx0p7sx4ink0bll9i7rww87-hg-checkout.drv' failed to produce output path `/gnu/store/6x6hccx9cqpfrcav79inl43ys6frgvw2-hg-checkout'
build of /gnu/store/z4y6xhnaipx0p7sx4ink0bll9i7rww87-hg-checkout.drv failed
View build log at '/var/log/guix/drvs/z4/y6xhnaipx0p7sx4ink0bll9i7rww87-hg-checkout.drv.bz2'.
cannot build derivation `/gnu/store/zam0r6fvyp9qkzp6kf087iifvnhw140n-hi-hg-2.10.drv': 1 dependencies couldn't be built
guix build: error: build of `/gnu/store/zam0r6fvyp9qkzp6kf087iifvnhw140n-hi-hg-2.10.drv' failed
--8<---------------cut here---------------end--------------->8---
(Note: the code is highly copied from guix/build/git.scm. :-))
All the best,
simon
zimoun (1):
guix: build: hg: Add 'guard' to handle error.
guix/build/hg.scm | 50 +++++++++++++++++++++++++++++++----------------
1 file changed, 33 insertions(+), 17 deletions(-)
base-commit: 2b73e50c31a61b5dcef35a1e4b9484d9dbcb0fbc
--
2.28.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [bug#43817] [PATCH 1/1] guix: build: hg: Add 'guard' to handle error.
2020-10-05 16:35 [bug#43817] [PATCH 0/1] guix: build: hg: Add 'guard' to handle error zimoun
@ 2020-10-05 16:36 ` zimoun
2020-10-05 16:47 ` [bug#43817] [PATCH 2/2] guix: build: svn: " zimoun
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: zimoun @ 2020-10-05 16:36 UTC (permalink / raw)
To: 43817; +Cc: zimoun
* guix/build/hg.scm (hg-fetch): Add 'guard' to handle error.
---
guix/build/hg.scm | 50 +++++++++++++++++++++++++++++++----------------
1 file changed, 33 insertions(+), 17 deletions(-)
diff --git a/guix/build/hg.scm b/guix/build/hg.scm
index b3e3ff7ac3..9245181d8b 100644
--- a/guix/build/hg.scm
+++ b/guix/build/hg.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
+;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,6 +21,8 @@
(define-module (guix build hg)
#:use-module (guix build utils)
+ #:use-module (srfi srfi-34)
+ #:use-module (ice-9 format)
#:export (hg-fetch))
;;; Commentary:
@@ -35,22 +38,35 @@
"Fetch CHANGESET from URL into DIRECTORY. CHANGESET must be a valid
Mercurial changeset identifier. Return #t on success, #f otherwise."
- (invoke hg-command
- "clone" url
- "--rev" changeset
- ;; Disable TLS certificate verification. The hash of
- ;; the checkout is known in advance anyway.
- "--insecure"
- directory)
-
- ;; The contents of '.hg' vary as a function of the current
- ;; status of the Mercurial repo. Since we want a fixed
- ;; output, this directory needs to be taken out.
- ;; Since the '.hg' file is also in sub-modules, we have to
- ;; search for it in all sub-directories.
- (for-each delete-file-recursively
- (find-files directory "^\\.hg$" #:directories? #t))
-
- #t)
+ (mkdir-p directory)
+
+ (guard (c ((invoke-error? c)
+ (format (current-error-port)
+ "hg-fetch: '~a~{ ~a~}' failed with exit code ~a~%"
+ (invoke-error-program c)
+ (invoke-error-arguments c)
+ (or (invoke-error-exit-status c) ;XXX: not quite accurate
+ (invoke-error-stop-signal c)
+ (invoke-error-term-signal c)))
+ (delete-file-recursively directory)
+ #f))
+ (with-directory-excursion directory
+ (invoke hg-command
+ "clone" url
+ "--rev" changeset
+ ;; Disable TLS certificate verification. The hash of
+ ;; the checkout is known in advance anyway.
+ "--insecure"
+ directory)
+
+ ;; The contents of '.hg' vary as a function of the current
+ ;; status of the Mercurial repo. Since we want a fixed
+ ;; output, this directory needs to be taken out.
+ ;; Since the '.hg' file is also in sub-modules, we have to
+ ;; search for it in all sub-directories.
+ (for-each delete-file-recursively
+ (find-files directory "^\\.hg$" #:directories? #t))
+
+ #t)))
;;; hg.scm ends here
--
2.28.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#43817] [PATCH 2/2] guix: build: svn: Add 'guard' to handle error.
2020-10-05 16:35 [bug#43817] [PATCH 0/1] guix: build: hg: Add 'guard' to handle error zimoun
2020-10-05 16:36 ` [bug#43817] [PATCH 1/1] " zimoun
@ 2020-10-05 16:47 ` zimoun
2020-10-05 16:49 ` [bug#43817] [PATCH 0/1] guix: build: hg: " zimoun
2020-10-06 8:26 ` bug#43817: " Mathieu Othacehe
3 siblings, 0 replies; 6+ messages in thread
From: zimoun @ 2020-10-05 16:47 UTC (permalink / raw)
To: 43817; +Cc: zimoun
* guix/build/svn.scm (svn-fetch): Add 'guard' to handle error.
---
guix/build/svn.scm | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/guix/build/svn.scm b/guix/build/svn.scm
index 33783f3056..0afe887487 100644
--- a/guix/build/svn.scm
+++ b/guix/build/svn.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,6 +21,8 @@
(define-module (guix build svn)
#:use-module (guix build utils)
+ #:use-module (srfi srfi-34)
+ #:use-module (ice-9 format)
#:export (svn-fetch))
;;; Commentary:
@@ -36,7 +39,20 @@
(password #f))
"Fetch REVISION from URL into DIRECTORY. REVISION must be an integer, and a
valid Subversion revision. Return #t on success, #f otherwise."
- (apply invoke svn-command
+ (mkdir-p directory)
+
+ (guard (c ((invoke-error? c)
+ (format (current-error-port)
+ "svn-fetch: '~a~{ ~a~}' failed with exit code ~a~%"
+ (invoke-error-program c)
+ (invoke-error-arguments c)
+ (or (invoke-error-exit-status c) ;XXX: not quite accurate
+ (invoke-error-stop-signal c)
+ (invoke-error-term-signal c)))
+ (delete-file-recursively directory)
+ #f))
+ (with-directory-excursion directory
+ (apply invoke svn-command
"export" "--non-interactive"
;; Trust the server certificate. This is OK as we
;; verify the checksum later. This can be removed when
@@ -50,6 +66,6 @@ valid Subversion revision. Return #t on success, #f otherwise."
'()
(list "--ignore-externals"))
,url ,directory))
- #t)
+ #t)))
;;; svn.scm ends here
--
2.28.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#43817] [PATCH 0/1] guix: build: hg: Add 'guard' to handle error.
2020-10-05 16:35 [bug#43817] [PATCH 0/1] guix: build: hg: Add 'guard' to handle error zimoun
2020-10-05 16:36 ` [bug#43817] [PATCH 1/1] " zimoun
2020-10-05 16:47 ` [bug#43817] [PATCH 2/2] guix: build: svn: " zimoun
@ 2020-10-05 16:49 ` zimoun
2020-10-06 8:26 ` bug#43817: " Mathieu Othacehe
3 siblings, 0 replies; 6+ messages in thread
From: zimoun @ 2020-10-05 16:49 UTC (permalink / raw)
To: 43817
On Mon, 5 Oct 2020 at 18:35, zimoun <zimon.toutoune@gmail.com> wrote:
> This patch allows to gently report failure with 'hg clone'.
>
> For example, let consider the package using 'hg-fetch':
The patch dealing with 'svn-fetch' is also in this thread.
All the best,
simon
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#43817: [PATCH 0/1] guix: build: hg: Add 'guard' to handle error.
2020-10-05 16:35 [bug#43817] [PATCH 0/1] guix: build: hg: Add 'guard' to handle error zimoun
` (2 preceding siblings ...)
2020-10-05 16:49 ` [bug#43817] [PATCH 0/1] guix: build: hg: " zimoun
@ 2020-10-06 8:26 ` Mathieu Othacehe
2020-10-07 17:29 ` [bug#43817] " zimoun
3 siblings, 1 reply; 6+ messages in thread
From: Mathieu Othacehe @ 2020-10-06 8:26 UTC (permalink / raw)
To: zimoun; +Cc: 43817-done
Hello zimoun,
> This patch allows to gently report failure with 'hg clone'.
I applied both patches with minor edits.
Thanks,
Mathieu
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-10-07 17:36 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-10-05 16:35 [bug#43817] [PATCH 0/1] guix: build: hg: Add 'guard' to handle error zimoun
2020-10-05 16:36 ` [bug#43817] [PATCH 1/1] " zimoun
2020-10-05 16:47 ` [bug#43817] [PATCH 2/2] guix: build: svn: " zimoun
2020-10-05 16:49 ` [bug#43817] [PATCH 0/1] guix: build: hg: " zimoun
2020-10-06 8:26 ` bug#43817: " Mathieu Othacehe
2020-10-07 17:29 ` [bug#43817] " zimoun
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).