Subject: bug#42802: Unhandled FTP exception when using GNU importer

From: Maxim Cournoyer <[email-masked]>
Date: Tue, 02 Feb 2021 09:12:34 -0500

Hi Ludo,

Ludovic Courtès <[email-masked]> writes:

> Hi,
>
> Maxim Cournoyer <[email-masked]> skribis:
>
>> Here I naively tried importing libsocketcan, which isn't a GNU project:
>>
>> guix import gnu libsocketcan
>> Backtrace:
>>           10 (primitive-load "/home/maxim/.config/guix/current/bin/guix")
>> In guix/ui.scm:
>>   2046:12  9 (run-guix-command _ . _)
>> In guix/scripts/import.scm:
>>    116:11  8 (guix-import . _)
>> In ice-9/boot-9.scm:
>>   1736:10  7 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
>>   1731:15  6 (with-exception-handler #<procedure 7f19d6ef7270 at ice-9/boot-9.scm:1815:7 (exn)> _ #:unwind? _ #:unwind-for-type _)
>> In guix/import/gnu.scm:
>>     111:2  5 (gnu->guix-package "libsocketcan" #:key-download _)
>> In guix/gnu-maintenance.scm:
>>    364:20  4 (latest-ftp-release "libsocketcan" #:server _ #:directory _ #:keep-file? _ #:file->signature _ #:ftp-open _ #:ftp-close _)
>> In guix/ftp-client.scm:
>>     233:6  3 (ftp-list #<<ftp-connection> socket: #<input-output: socket 16> addrinfo: #(32 2 1 6 #(2 3509828628 21) #f)> _ #:timeout _)
>> In srfi/srfi-1.scm:
>>    460:18  2 (fold #<procedure 7f19d6ef71b0 at guix/ftp-client.scm:187:10 (dir result)> _ _)
>> In guix/ftp-client.scm:
>>      74:8  1 (_ _ _)
>> In ice-9/boot-9.scm:
>>   1669:16  0 (raise-exception _ #:continuable? _)
>>
>> ice-9/boot-9.scm:1669:16: In procedure raise-exception:
>> Throw to key `ftp-error' with args `(#<input-output: socket 16> "CWD
>> libsocketcan" 550 "Failed to change directory.\r")'.
>>
>> The error should be handled and a more appropriate message should be
>> displayed to the user.
>
> I believe this is fixed by be84fc600e76e3962123b94bf14baea4a2e4f442.
>
> Ludo’.

./pre-inst-env guix import gnu libsocketcan
guix import: error: failed to determine latest release of GNU libsocketcan

Thanks for the fix; that's much nicer than a backtrace.  It would be
even better if it said:

'guix import: error: No GNU package found for "libsocketcan"'

Thanks!

Maxim