[asdf-install-devel] Re: [cclan-list] proposed asdf-install patch

Gary King gwking at metabang.com
Wed Feb 27 20:20:56 UTC 2008


(cc'd to ASDF-Install list).

Thanks Robert; I'll add this later today.


On Feb 27, 2008, at 2:50 PM, Robert Goldman wrote:

> There was some discussion of asdf-install on #lisp today, when Athas  
> found that cl-yacc installation crashed asdf-install (the sbcl fork)  
> and I found the same thing (portable fork).
>
> For some reason the web server at which cl-yacc is stored, serves up  
> the gpg signature badly, although without setting a condition.  This  
> revealed the fact that asdf-install will raise cryptic make-string  
> errors when there is either no content-length header, or there is a  
> bad content-length header.  I made the attached patch so that it's  
> more obvious to the user when this happens.
>
> Best,
> r
> Index: installer.lisp
> ===================================================================
> RCS file: /cvsroot/cclan/asdf-install/installer.lisp,v
> retrieving revision 1.15
> diff -b -u -F^(def -r1.15 installer.lisp
> --- installer.lisp	20 Mar 2006 16:46:21 -0000	1.15
> +++ installer.lisp	27 Feb 2008 19:49:26 -0000
> @@ -176,13 +176,29 @@ (defun add-locations (loc-name site syst
> ;;;---------------------------------------------------------------------------
> ;;; Conditions.
>
> -(define-condition download-error (error)
> -  ((url :initarg :url :reader download-url)
> -   (response :initarg :response :reader download-response))
> +(define-condition http-transfer-error (error)
> +   ((url :initarg :url :reader download-url)))
> +
> +(define-condition download-error (http-transfer-error)
> +  ((response :initarg :response :reader download-response))
>   (:report (lambda (c s)
> 	     (format s "Server responded ~A for GET ~A"
> 		     (download-response c) (download-url c)))))
>
> +(define-condition content-length-missing (http-transfer-error)
> +  ()
> +  (:report (lambda (c s)
> +	     (format s "No content-length header, expected in transfer  
> from ~A"
> +		     (download-url c)))))
> +
> +(define-condition content-length-parse-error (http-transfer-error)
> +  ((header-text :initarg :header-text :reader header-text))
> +  (:report (lambda (c s)
> +	     (format s "Unable to parse content-length header in transfer  
> from ~A: header-text: ~A"
> +		     (download-url c) (header-text c)))))
> +
> +
> +
> (define-condition signature-error (error)
>   ((cause :initarg :cause :reader signature-error-cause))
>   (:report (lambda (c s)
> @@ -472,11 +488,16 @@ (defun verify-gpg-signature/url (url fil
>                                 :response 200))
>                        (setf (char data i) (code-char byte)))))))
>           (if (= response 200)
> -            (let ((data (make-string (parse-integer
> -                                      (cdr (assoc :CONTENT-LENGTH  
> headers))
> -                                      :junk-allowed t))))
> +	      (flet ((content-length ()
> +		       (let ((cell (assoc :CONTENT-LENGTH headers)))
> +			 (unless cell
> +			   (error 'content-length-missing :url (concatenate 'string url  
> ".asc"))
> +			   (or (parse-integer (cdr cell) :junk-allowed t)
> +			       (error 'content-length-parse-error :url (concatenate  
> 'string url ".asc")
> +				      :header-text (cdr cell)))))))
> +		(let ((data (make-string (content-length))))
>               (read-signature data stream)
> -              (verify-gpg-signature/string data file-name))
> +		  (verify-gpg-signature/string data file-name)))
>             (error 'download-error :url  (concatenate 'string url  
> ".asc")
>                    :response response)))
>         (close stream)))))
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/_______________________________________________
> cclan-list mailing list
> cclan-list at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/cclan-list

--
Gary Warren King, metabang.com
Cell: (413) 559 8738
Fax: (206) 338-4052
gwkkwg on Skype * garethsan on AIM







More information about the asdf-install-devel mailing list