Subject: bug#18831: closed (Re: bug#18831: Error handling in guix import?)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 05 Nov 2014 17:07:02 +0000

Your bug report

#18831: Error handling in guix import?

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
18831: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18831
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#18831: Error handling in guix import?
From: [email-masked] (Ludovic Courtès)
To: Ian Denhardt <[email-masked]>
Cc: [email-masked]
Date: Wed, 05 Nov 2014 18:06:20 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Thanks for the report and analysis.  This is fixed in 467a3c9.

Ian Denhardt <[email-masked]> skribis:

>     starting download of `/tmp/guix-file.5J1eOy' from `https://pypi.python.org/pypi/schema/json'...
>     ;;; Failed to autoload make-session in (gnutls):
>     ;;; ERROR: missing interface for module (gnutls)
>     ERROR: In procedure module-lookup: Unbound variable: make-session

As for this part, note that GnuTLS is actually required here, because
pypi.python.org is only accessibly over HTTPS here.  We’ll make that
clear in the manual.

Ludo’.

Subject: Error handling in guix import?
From: Ian Denhardt <[email-masked]>
To: [email-masked]
Date: Sat, 25 Oct 2014 05:19:17 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

So I was trying to play with the pypi importer, and (as a test) ran:

    guix import pypi schema

and got back:

    starting download of `/tmp/guix-file.5J1eOy' from `https://pypi.python.org/pypi/schema/json'...
    ;;; Failed to autoload make-session in (gnutls):
    ;;; ERROR: missing interface for module (gnutls)
    ERROR: In procedure module-lookup: Unbound variable: make-session
    failed to download "/tmp/guix-file.5J1eOy" from "https://pypi.python.org/pypi/schema/json"
    Backtrace:
    In ice-9/boot-9.scm:
     157: 13 [catch #t #<catch-closure 28ab1c0> ...]
    In unknown file:
       ?: 12 [apply-smob/1 #<catch-closure 28ab1c0>]
    In ice-9/boot-9.scm:
      63: 11 [call-with-prompt prompt0 ...]
    In ice-9/eval.scm:
     432: 10 [eval # #]
    In ice-9/boot-9.scm:
    2401: 9 [save-module-excursion #<procedure 28ca940 at ice-9/boot-9.scm:4045:3 ()>]
    4050: 8 [#<procedure 28ca940 at ice-9/boot-9.scm:4045:3 ()>]
    1724: 7 [%start-stack load-stack ...]
    1729: 6 [#<procedure 28e2ea0 ()>]
    In unknown file:
       ?: 5 [primitive-load "/home/isd/src/guix/scripts/guix"]
    In guix/ui.scm:
     776: 4 [run-guix-command import "pypi" "schema"]
    In guix/scripts/import.scm:
     109: 3 [guix-import "pypi" "schema"]
    In guix/import/pypi.scm:
     167: 2 [pypi->guix-package "schema"]
     112: 1 [latest-source-release #f]
    In unknown file:
       ?: 0 [find #<procedure 3b00920 at guix/import/pypi.scm:112:14 (release)> #f]
    
    ERROR: In procedure find:
    ERROR: In procedure find: Wrong type argument in position 2 (expecting list): #f

It's obvious from the stuff at the beginning that there's some
underlying issue to due with gnutls that's causing the url fetch to
fail. My hunch is that's just my system, However, it's perfectly
reasonable to expect it to fail under more normal circumstances -
e.g. you're not connected to a network.

I poked through the source a bit, and it looks like the importer is just
not checking for errors from (guix build download)'s url-fetch (which
returns #f on error), so when it fails you get a stack trace like the
above. We should do a proper check for download failures, and print an
intelligible error message.

-Ian