@@ -138,11 +138,16 @@ (define (module->dist-name module)
"Return the base distribution module for a given module. E.g. the 'ok'
module is distributed with 'Test::Simple', so (module->dist-name \"ok\") would
return \"Test-Simple\""
- (assoc-ref (json-fetch (string-append
- (%metacpan-base-url) "/module/"
- module
- "?fields=distribution"))
- "distribution"))
+ (let* ((url (string-append
+ (%metacpan-base-url) "/module/" module
+ "?fields=distribution"))
+ (json-alist (json-fetch url))
+ (dist-name (assoc-ref json-alist "distribution")))
+ (if (not dist-name)
+ (format (current-error-port)
+ "Cannot determine distribution name for module ~s from ~s~%"
+ module url))
+ dist-name))
(define (package->upstream-name package)
"Return the CPAN name of PACKAGE."
@@ -249,10 +254,14 @@ (define (cran-dependency->upstream-input dependency)
#f))))
(and type
(not (core-module? module)) ;expensive call!
- (upstream-input
- (name (module->dist-name module))
- (downstream-name (cpan-name->downstream-name name))
- (type type)))))))
+ (let* ((cpan-name (module->dist-name module))
+ (downstream-name (if cpan-name
+ (cpan-name->downstream-name cpan-name)
+ (format #f "Module ~a not found on CPAN" module))))
+ (upstream-input
+ (name cpan-name)
+ (downstream-name downstream-name)
+ (type type))))))))
(define (cpan-module-inputs release)
"Return the list of <upstream-input> for dependencies of RELEASE, a