Subject: Re: [bug#47851] [PACKAGE] Add cl-svg, inferior-shell, fare-mop, cl-png

From: Guillaume Le Vaillant <[email-masked]>
Date: Mon, 19 Apr 2021 15:54:24 +0000

Patches pushed as 1cef75faaebec55d0c5f1c03aed8deebff1dbad4 and
following with a few fixes. Thanks

Sharlatan Hellseher <[email-masked]> skribis:

> Hi Guix team!
>
> Preparation list of patches for art generation system Weir
> I've packed it but it's failed on ECL build with
>
> ;;; Warning: ;;; in file various.lisp, position 144 ;;; at
> (DEFCONSTANT PII ...) ;;; ! The expression 6.283185307179586477l0 is
> not of the expected type DOUBLE-FLOAT ;;; Warning: ;;; in file
> various.lisp, position 195 ;;; at (DEFCONSTANT PI5 ...) ;;; ! The
> expression 1.5707963267948966193l0 is not of the expected type
> DOUBLE-FLOAT
>
> Maintainer has not option for opening an issue.
>
> For someone who has more knowledge in CL to check
> https://github.com/Hellseher/guix-channel/blob/main/ffab/packages/lisp-xyz.scm#L1467

I think it's a bug in the "various.lisp" file. Inside it there is:

--8<---------------cut here---------------start------------->8---
(declaim (type double-float PII PI5))

(defconstant PII (the double-float #.(* PI 2d0)))
(defconstant PI5 (the double-float #.(* PI 0.5d0)))
--8<---------------cut here---------------end--------------->8---

However the Common Lisp spec indicates that 'pi' is a 'long-float'. It
works with SBCL because it implements 'double-float' and 'long-float' as
the same type (which is allowed according to the spec). However in ECL
the types are different ('long-float' has more precision than
'double-float').

Converting 'pi' to a 'double-float' should make the code work in both
SBCL and ECL (note: I've not tested):

--8<---------------cut here---------------start------------->8---
(declaim (type double-float PII PI5))

(defconstant PII (the double-float #.(* (float PI 1.0d0) 2d0)))
(defconstant PI5 (the double-float #.(* (float PI 1.0d0) 0.5d0)))
--8<---------------cut here---------------end--------------->8---