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

From: Maxim Cournoyer <[email-masked]>
Date: Mon, 10 Aug 2020 14:33:38 -0400

Here I naively tried importing libsocketcan, which isn't a GNU project:

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

--8<---------------cut here---------------end--------------->8---

The error should be handled and a more appropriate message should be
displayed to the user.

Maxim