* Guile 2.0.5, HTTP downloads, and progress reports
@ 2013-08-20 12:46 Ludovic Courtès
2013-08-21 9:47 ` Ludovic Courtès
0 siblings, 1 reply; 6+ messages in thread
From: Ludovic Courtès @ 2013-08-20 12:46 UTC (permalink / raw)
To: guix-devel
Hello,
I just realized that users of Guile 2.0.5 are observing weird behavior
when substituting binaries: the substituter would remain silent, write
“the server is unresponsive”, then remain silent some more, and finally
write tens of lines of “progress report” in a row when it’s done
downloading.
This is because 2.0.5’s HTTP client would return directly all of the
downloaded data, instead of returning an input port, making it
impossible to implement a progress report. (guix http-client) hides
that, hence the behavior above.
I really recommend upgrading Guile anyway, since 2.0.5 is 1.5 year old.
We still want to support it though (because some distros still have
that), but I’m not sure we can do much better. Well, we could do
better by shipping the (web ...) modules from Guile 2.0.9 when we detect
an old Guile, but that sounds overkill to me.
Thoughts?
Ludo’.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Guile 2.0.5, HTTP downloads, and progress reports
2013-08-20 12:46 Guile 2.0.5, HTTP downloads, and progress reports Ludovic Courtès
@ 2013-08-21 9:47 ` Ludovic Courtès
2013-08-21 10:08 ` Andreas Enge
0 siblings, 1 reply; 6+ messages in thread
From: Ludovic Courtès @ 2013-08-21 9:47 UTC (permalink / raw)
To: guix-devel
ludo@gnu.org (Ludovic Courtès) skribis:
> I just realized that users of Guile 2.0.5 are observing weird behavior
> when substituting binaries: the substituter would remain silent, write
> “the server is unresponsive”, then remain silent some more, and finally
> write tens of lines of “progress report” in a row when it’s done
> downloading.
>
> This is because 2.0.5’s HTTP client would return directly all of the
> downloaded data, instead of returning an input port, making it
> impossible to implement a progress report. (guix http-client) hides
> that, hence the behavior above.
Commit db90b40 partially addresses this by removing the fake progress
report on Guile 2.0.5, and by printing “please wait” (and “please
upgrade”).
Feedback from 2.0.5 users is welcome!
Ludo’.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Guile 2.0.5, HTTP downloads, and progress reports
2013-08-21 9:47 ` Ludovic Courtès
@ 2013-08-21 10:08 ` Andreas Enge
2013-08-21 12:41 ` Ludovic Courtès
0 siblings, 1 reply; 6+ messages in thread
From: Andreas Enge @ 2013-08-21 10:08 UTC (permalink / raw)
To: guix-devel
Am Mittwoch, 21. August 2013 schrieb Ludovic Courtès:
> Commit db90b40 partially addresses this by removing the fake progress
> report on Guile 2.0.5, and by printing “please wait” (and “please
> upgrade”).
>
> Feedback from 2.0.5 users is welcome!
As far as I can tell, nothing changed, I still get the progress report.
Andreas
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Guile 2.0.5, HTTP downloads, and progress reports
2013-08-21 10:08 ` Andreas Enge
@ 2013-08-21 12:41 ` Ludovic Courtès
2013-08-21 16:06 ` Andreas Enge
0 siblings, 1 reply; 6+ messages in thread
From: Ludovic Courtès @ 2013-08-21 12:41 UTC (permalink / raw)
To: Andreas Enge; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 683 bytes --]
Andreas Enge <andreas@enge.fr> skribis:
> Am Mittwoch, 21. August 2013 schrieb Ludovic Courtès:
>> Commit db90b40 partially addresses this by removing the fake progress
>> report on Guile 2.0.5, and by printing “please wait” (and “please
>> upgrade”).
>>
>> Feedback from 2.0.5 users is welcome!
>
> As far as I can tell, nothing changed, I still get the progress report.
What do the following print?
guile -c '(use-modules (guix utils)) (pk (version>? (version) "2.0.5"))'
guile -c '(pk (version))'
My guess is that (version) return "2.0.5-foobar-deb", which defeats the
test above.
If that is the case, that patch should solve the problem:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 820 bytes --]
diff --git a/guix/scripts/substitute-binary.scm b/guix/scripts/substitute-binary.scm
index 0fdec45..bfaebee 100755
--- a/guix/scripts/substitute-binary.scm
+++ b/guix/scripts/substitute-binary.scm
@@ -418,7 +418,10 @@ PORT. REPORT-PROGRESS is a two-argument procedure such as that returned by
;; Since `http-fetch' in Guile 2.0.5 returns all the data once it's done,
;; don't pretend to report any progress in that case.
- (if (version>? (version) "2.0.5")
+ (if (version>? (string-append (major-version) "."
+ (minor-version) "."
+ (micro-version))
+ "2.0.5")
(make-custom-binary-input-port "progress-port-proc"
read! #f #f
(cut close-port port))
[-- Attachment #3: Type: text/plain, Size: 52 bytes --]
Could you try and report back?
TIA,
Ludo’.
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: Guile 2.0.5, HTTP downloads, and progress reports
2013-08-21 12:41 ` Ludovic Courtès
@ 2013-08-21 16:06 ` Andreas Enge
2013-08-23 13:53 ` Ludovic Courtès
0 siblings, 1 reply; 6+ messages in thread
From: Andreas Enge @ 2013-08-21 16:06 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel
Am Mittwoch, 21. August 2013 schrieb Ludovic Courtès:
> What do the following print?
> guile -c '(pk (version))'
> My guess is that (version) return "2.0.5-foobar-deb", which defeats the
> test above.
Indeed, this prints
;;; ("2.0.5-deb+1-3")
My report may have been wrong, as it appears that I did not correctly
install the newest guix version. Anyway, with
git-911b1b9cb693b59c4001899f144d77c3437c12fe I now cannot download any
more:
$ git build intltool
The following file will be downloaded:
/nix/store/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-intltool-0.50.2
@ substituter-started /nix/store/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 /usr/local/guix-git/libexec/guix/substitute-binary
downloading `/nix/store/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-intltool-0.50.2'
from `http://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2'...
http://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-intltool-0.50.2
4.0 KiBhttp://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 8.0 KiB transferredBacktrace:
In ice-9/boot-9.scm:
http://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-intltool-0.50.2
12.0 KiBhttp://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 16.0
KiBhttp://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 20.0
KiBhttp://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 24.0
KiBhttp://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 28.0
KiBhttp://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 32.0
KiBhttp://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 34.4
KiBhttp://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 34.4
KiBhttp://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 34.4
KiBhttp://hydra.gnu.org/nar/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 34.4 KiB transferred 149: 12 [catch #t #<catch-
closure 92d1a0> ...]
157: 11 Exception thrown while printing backtrace:
ERROR: In procedure set-current-output-port: Wrong type argument in
position 1 (expecting open output port): #<closed: file 0>
ERROR: In procedure execl:
ERROR: In procedure execl: Datei oder Verzeichnis nicht gefunden
Backtrace:
In ice-9/boot-9.scm:
149: 14 [catch #t #<catch-closure 92d1a0> ...]
157: 13 [#<procedure 8cb0f0 ()>]
In unknown file:
?: 12 [catch-closure]
In ice-9/boot-9.scm:
63: 11 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
407: 10 [eval # #]
In ice-9/boot-9.scm:
2111: 9 [save-module-excursion #<procedure 8d0100 at
ice-9/boot-9.scm:3646:3 ()>]
3651: 8 [#<procedure 8d0100 at ice-9/boot-9.scm:3646:3 ()>]
In unknown file:
?: 7 [load-compiled/vm "/root/.cache/guile/ccache/2.0-
LE-8-2.0/usr/local/guix-git/bin/guix.go"]
In guix/ui.scm:
475: 6 [run-guix-command substitute-binary "--substitute" ...]
In ice-9/boot-9.scm:
149: 5 [catch getaddrinfo-error ...]
157: 4 [#<procedure c62370 ()>]
In guix/scripts/substitute-binary.scm:
532: 3 [#<procedure d81400 at guix/scripts/substitute-binary.scm:457:2
()>]
In guix/nar.scm:
177: 2 [restore-file #<input: #{read pipe}# 10> ...]
In guix/serialization.scm:
77: 1 [read-string #<input: #{read pipe}# 10>]
49: 0 [read-int #<input: #{read pipe}# 10>]
guix/serialization.scm:49:4: In procedure read-int:
guix/serialization.scm:49:4: In procedure bv-u32-ref: Wrong type argument
in position 1 (expecting bytevector): #<eof>
@ substituter-failed /nix/store/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
intltool-0.50.2 256 fetching path
`/nix/store/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-intltool-0.50.2' failed with
exit code 1
guix build: error: build failed: some substitutes for the outputs of
derivation `/nix/store/ag99pv3rjk6bjf3fblnx2jrvmg6q7a96-
intltool-0.50.2.drv' failed; try `--fallback'
The file itself can be downloaded without problem with wget.
After applying your patch, the progress report is indeed suppressed, but
the download problem persists.
Andreas
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Guile 2.0.5, HTTP downloads, and progress reports
2013-08-21 16:06 ` Andreas Enge
@ 2013-08-23 13:53 ` Ludovic Courtès
0 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2013-08-23 13:53 UTC (permalink / raw)
To: Andreas Enge; +Cc: guix-devel
Andreas Enge <andreas@enge.fr> skribis:
> Am Mittwoch, 21. August 2013 schrieb Ludovic Courtès:
>> What do the following print?
>> guile -c '(pk (version))'
>> My guess is that (version) return "2.0.5-foobar-deb", which defeats the
>> test above.
>
> Indeed, this prints
> ;;; ("2.0.5-deb+1-3")
OK, I committed something similar to what I posted.
> $ git build intltool
>
> The following file will be downloaded:
> /nix/store/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-intltool-0.50.2
> @ substituter-started /nix/store/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
[...]
> In guix/scripts/substitute-binary.scm:
> 532: 3 [#<procedure d81400 at guix/scripts/substitute-binary.scm:457:2
> ()>]
> In guix/nar.scm:
> 177: 2 [restore-file #<input: #{read pipe}# 10> ...]
> In guix/serialization.scm:
> 77: 1 [read-string #<input: #{read pipe}# 10>]
> 49: 0 [read-int #<input: #{read pipe}# 10>]
>
> guix/serialization.scm:49:4: In procedure read-int:
> guix/serialization.scm:49:4: In procedure bv-u32-ref: Wrong type argument
> in position 1 (expecting bytevector): #<eof>
> @ substituter-failed /nix/store/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-
> intltool-0.50.2 256 fetching path
> `/nix/store/khmpbvi9ivsfhhxz3a7k7cy7vkadczdp-intltool-0.50.2' failed with
So commit b6952ca fixes what I thought was the source of the bug, but
according to our last discussion IRL, it seems not. We’ll keep
investigating...
Thanks,
Ludo’, live from the GHM. :-)
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-08-23 13:58 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-20 12:46 Guile 2.0.5, HTTP downloads, and progress reports Ludovic Courtès
2013-08-21 9:47 ` Ludovic Courtès
2013-08-21 10:08 ` Andreas Enge
2013-08-21 12:41 ` Ludovic Courtès
2013-08-21 16:06 ` Andreas Enge
2013-08-23 13:53 ` Ludovic Courtès
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).