Re: lang/ecl: backport a fix for building recent lang/sbcl

2023-06-28 Thread Timo Myyrä
On Wed, Jun 28 2023, Sebastien Marie wrote:

> 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 ?


looks good to me.

timo



lang/ecl: backport a fix for building recent lang/sbcl

2023-06-28 Thread Sebastien Marie
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 
 
-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  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  vv)
++  (declare (ignore vv))
+   (wt value))
+ 
+ (defun wt-character (value  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 .