Hi,

The following diff backports a commit 
(https://gitlab.com/embeddable-common-lisp/ecl/-/commit/f3d4cf4b66ab6c3cd8629ab6d0c7f7c50d7fd8a4)
 
to fix a compiler bug.

This bug is on the way to update lang/sbcl to more recent version (I tested 
compiling sbcl-2.3.6 with ecl on amd64).

While here, some smalls changes:
- V isn't present in PLIST, no need to add it to SUBST_VARS
- the licence is wrong: it is LGPLv2 or later
- use --enable-gmp=system instead of --with-system-gmp to unify the way system 
libraries are configured

Comments or OK ?
-- 
Sebastien Marie

diff /home/semarie/repos/openbsd/ports
commit - d5e6a0c0580dc3232cdef998743855ad7ea2aaa7
path + /home/semarie/repos/openbsd/ports
blob - a2867ce45cd5dfb740d810a62664d2b1f2cc5c8a
file + lang/ecl/Makefile
--- lang/ecl/Makefile
+++ lang/ecl/Makefile
@@ -5,13 +5,14 @@ HOMEPAGE =    https://common-lisp.net/project/ecl/
 DISTNAME =     ecl-$V
 SHARED_LIBS += ecl     8.0
 
+REVISION =     0
+
 HOMEPAGE =     https://common-lisp.net/project/ecl/
 MAINTAINER =   Timo Myyra <[email protected]>
 
-SUBST_VARS =   V
 EXTRACT_SUFX = .tgz
 
-# GPLv2 or later
+# LGPLv2 or later
 PERMIT_PACKAGE =       Yes
 
 MASTER_SITES =         ${HOMEPAGE}static/files/release/
@@ -27,7 +28,7 @@ CONFIGURE_ARGS +=     --enable-boehm=system \
 
 CONFIGURE_ARGS +=      --enable-boehm=system \
                        --enable-libatomic=system \
-                       --with-system-gmp \
+                       --enable-gmp=system \
                        --with-gmp-prefix=${LOCALBASE}
 
 # etags gets picked up if it's installed, and dumps core while
blob - /dev/null
file + lang/ecl/patches/patch-src_cmp_cmpc-wt_lsp (mode 640)
--- /dev/null
+++ lang/ecl/patches/patch-src_cmp_cmpc-wt_lsp
@@ -0,0 +1,25 @@
+backport 
https://gitlab.com/embeddable-common-lisp/ecl/-/commit/f3d4cf4b66ab6c3cd8629ab6d0c7f7c50d7fd8a4
+
+Index: src/cmp/cmpc-wt.lsp
+--- src/cmp/cmpc-wt.lsp.orig
++++ src/cmp/cmpc-wt.lsp
+@@ -19,18 +19,7 @@
+ (defun wt1 (form)
+   (cond ((not (floatp form))
+          (typecase form
+-           (INTEGER
+-            (princ form *compiler-output1*)
+-            (princ
+-             (cond ((typep form (rep-type->lisp-type :int)) "")
+-                   ((typep form (rep-type->lisp-type :unsigned-int)) "U")
+-                   ((typep form (rep-type->lisp-type :long)) "L")
+-                   ((typep form (rep-type->lisp-type :unsigned-long)) "UL")
+-                   ((typep form (rep-type->lisp-type :long-long)) "LL")
+-                   ((typep form (rep-type->lisp-type :unsigned-long-long)) 
"ULL")
+-                   (t (baboon :format-control "wt1: The number ~A doesn't fit 
any integer type." form)))
+-             *compiler-output1*))
+-           ((or STRING CHARACTER)
++           ((or INTEGER STRING CHARACTER)
+             (princ form *compiler-output1*))
+            (VAR (wt-var form))
+            (t (wt-loc form))))
blob - /dev/null
file + lang/ecl/patches/patch-src_cmp_cmploc_lsp (mode 640)
--- /dev/null
+++ lang/ecl/patches/patch-src_cmp_cmploc_lsp
@@ -0,0 +1,36 @@
+backport 
https://gitlab.com/embeddable-common-lisp/ecl/-/commit/f3d4cf4b66ab6c3cd8629ab6d0c7f7c50d7fd8a4
+
+Index: src/cmp/cmploc.lsp
+--- src/cmp/cmploc.lsp.orig
++++ src/cmp/cmploc.lsp
+@@ -181,10 +181,30 @@
+ (defun wt-temp (temp)
+   (wt "T" temp))
+ 
++(defun wt-fixnum (value &optional vv)
++  (declare (ignore vv))
++  (princ value *compiler-output1*)
++  ;; Specify explicit type suffix as a workaround for MSVC. C99
++  ;; standard compliant compilers don't need type suffixes and choose
++  ;; the correct type themselves. Note that we cannot savely use
++  ;; anything smaller than a long long here, because we might perform
++  ;; some other computation on the integer constant which could
++  ;; overflow if we use a smaller integer type (overflows in long long
++  ;; computations are taken care of by the compiler before we get to
++  ;; this point).
++  #+msvc (princ (cond ((typep value (rep-type->lisp-type :long-long)) "LL")
++                      ((typep value (rep-type->lisp-type 
:unsigned-long-long)) "ULL")
++                      (t (baboon :format-control
++                                 "wt-fixnum: The number ~A doesn't fit any 
integer type."
++                                 value)))
++                *compiler-output1*))
++
+ (defun wt-number (value &optional vv)
++  (declare (ignore vv))
+   (wt value))
+ 
+ (defun wt-character (value &optional vv)
++  (declare (ignore vv))
+   ;; We do not use the '...' format because this creates objects of type
+   ;; 'char' which have sign problems
+   (wt value))
blob - /dev/null
file + lang/ecl/patches/patch-src_cmp_cmptables_lsp (mode 640)
--- /dev/null
+++ lang/ecl/patches/patch-src_cmp_cmptables_lsp
@@ -0,0 +1,14 @@
+backport 
https://gitlab.com/embeddable-common-lisp/ecl/-/commit/f3d4cf4b66ab6c3cd8629ab6d0c7f7c50d7fd8a4
+
+Index: src/cmp/cmptables.lsp
+--- src/cmp/cmptables.lsp.orig
++++ src/cmp/cmptables.lsp
+@@ -182,7 +182,7 @@
+ 
+     (temp . wt-temp)
+     (lcl . wt-lcl-loc)
+-    (fixnum-value . wt-number)
++    (fixnum-value . wt-fixnum)
+     (long-float-value . wt-number)
+     (double-float-value . wt-number)
+     (single-float-value . wt-number)

Reply via email to