Skip to content

Commit

Permalink
Update to ECL 16.0.0.
Browse files Browse the repository at this point in the history
Based on changes from Matthew Mondor as forwarded by Kamil Rytarowski.


Changes since 15.3.7:
 API changes
 - There is no UFFI nickname for FFI package - we piggyback on
   cffi-uffi-compat for UFFI dependent systems (our UFFI wasn't version 2.0
   compatible and there were problems with ADSF dependencies on UFFI - it
   wasn't a system)
 - CLOS has the new nickname "MOP"
 - The new ext:run-program :error argument can automatically create a
   separate stream if provided with the :stream keyword.
   The external-process structure also has a new field to hold that stream.
 - ext:run-program accepts new arguments - :if-input-does-not-exist,
   :if-error-exists and :external-format
 - ext:system no longer binds *standard-input* and *standard-output* and
   now ignores input and output (use ext:run-program for more control)
 - methods can be specialized on both single-float and double-float
   (built-in classes were added for them)
 - LET/FLET/LABELS will signal error if parameter of the same name will
   appear multiple times
 - lambda lists with repeated required parameter name are considered invalid
 - deprecated configure options "--with-system-boehm=x" and
   "--enable-slow-config" removed

 Enhancements:
 - Verification if manual is up-to-date, providing corrections for
   outdated parts
 - Documentation is now included in the main repository under the
   toplevel directory `doc'
 - Update libffi to version 3.2.1
 - Update asdf to version 3.1.5.4
 - Update Boehm-Demers-Weiser garbage collector to version 7.4.2
 - Pathname string-parts internal representation is now character,
   not base-char
 - Dead code removal, tabulators were replaced by spaces
 - Better quality of generated code (explicit casting when necessary)

 Issues fixed:
 - Various fixes of bogus declarations
 - Remove deprecated GC calls
 - ROTATEF, SHIFTF, PSETF reworked to conform to the ANSI standard.
   Places were handled improperly in regard of multiple values.
 - Improved unicode support in character handling
 - Format handles floats and exponentials correctly (major format rework)
 - Stack limits refinements and cleanup, inconsistency and bug fixes
 - Duplicate large block deallocation with GMP 6.0.0a fixed
 - ECL builds on OpenBSD with threads enabled
 - Closures put in mapcar work as expected in both compiled and
   interpreted code
 - Improved readtable-case handling (:invert and character literals now
   conform)
 - Library initialization functions have unique names - no risk of
   clashing symbol names in object files
 - Format float bug fixed, when width and fdigits were not set, but k was
 - `logical-pathname-translations' now throws an error if logical
   pathname wasn't defined yet, to conform with ANSI (it used to return NIL)
 - Wildcards in logical pathname translations are replaced correctly
 - Regression testing framework and unit tests cleanup
 - deftype ANSI conformity fix (deftype accepts macro labda-lists)
 - ECL built with MSVC doesn't crash when Control-C is pressed
 - Other minor tweaks


Changes in 15.3.7 since 15.2.21:
 Issues fixed:
 - DEFUN functions not defined as toplevel forms were also directly
   referenced by other code in the same file.
 - STABLE-SORT works as desired (bogus optimization for strings fixed).
 - broken --with-sse=yes configure flag works once again.

 Enhancements:
 - autoconf scripts are rewritten to support version 2.69 stack.
 - stack direction is now correctly determined, fixing gcc 5.x builds.
 - compilation of ECL under MSVC (2008/2010/2012) even with custom
   code pages.
 - In compiled code it is possible to declare variables to have a C
   type such as in (declare (:double a)) and then the variable is
   enforced to be unboxed to such type.
 - New form FFI:C-PROGN used to interleave C statements with lisp
   code, where the lisp code may refer to any number of variables.
   Example:
       (lambda (i)
         (let* ((limit i)
                (iterator 0))
           (declare (:int limit iterator))
           (ffi:c-progn (limit iterator)
                        "for (#1 = 0; #1 < #0; #1++) {"
                        (print iterator)
                        "}")))


Changes in 15.2.21 since 13.5.1:
 - Features coverity scan model, ffi-unload-module implementation,
   probably more.
 - Build system enhancements, parallel builds, fixes, simplifications,
   cleanups, maintenance.  minor cleanup, maintenance.
 - Numerous fixes.
  • Loading branch information
asau committed Dec 9, 2015
1 parent acde1bf commit 73e9c3e
Show file tree
Hide file tree
Showing 6 changed files with 174 additions and 44 deletions.
9 changes: 3 additions & 6 deletions lang/ecl/Makefile
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
# $NetBSD: Makefile,v 1.20 2015/08/30 10:12:29 kamil Exp $
# $NetBSD: Makefile,v 1.21 2015/12/09 21:00:47 asau Exp $

DISTNAME= ecl-13.5.1
PKGREVISION= 2
DISTNAME= ecl-16.0.0
CATEGORIES= lang
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=ecls/}
MASTER_SITES= https://common-lisp.net/project/ecl/files/
EXTRACT_SUFX= .tgz

MAINTAINER= [email protected]
HOMEPAGE= https://common-lisp.net/project/ecl/
COMMENT= Embeddable Common Lisp
LICENSE= gnu-lgpl-v2

MAKE_JOBS_SAFE= no

USE_PKGLOCALEDIR= yes
GNU_CONFIGURE= yes
USE_LIBTOOL= yes
Expand Down
6 changes: 3 additions & 3 deletions lang/ecl/buildlink3.mk
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# $NetBSD: buildlink3.mk,v 1.8 2014/04/30 14:19:40 wiz Exp $
# $NetBSD: buildlink3.mk,v 1.9 2015/12/09 21:00:47 asau Exp $

BUILDLINK_TREE+= ecl

.if !defined(ECL_BUILDLINK3_MK)
ECL_BUILDLINK3_MK:=

BUILDLINK_API_DEPENDS.ecl+= ecl>=10.3.1
BUILDLINK_ABI_DEPENDS.ecl+= ecl>=13.5.1nb2
BUILDLINK_API_DEPENDS.ecl+= ecl>=16.0.0
BUILDLINK_ABI_DEPENDS.ecl+= ecl>=16.0.0
BUILDLINK_PKGSRCDIR.ecl?= ../../lang/ecl

.include "../../devel/boehm-gc/buildlink3.mk"
Expand Down
12 changes: 6 additions & 6 deletions lang/ecl/distinfo
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
$NetBSD: distinfo,v 1.16 2015/11/03 22:50:34 agc Exp $
$NetBSD: distinfo,v 1.17 2015/12/09 21:00:47 asau Exp $

SHA1 (ecl-13.5.1.tgz) = db7f732e5e12182118f00c02d8d2531f6d6aefb2
RMD160 (ecl-13.5.1.tgz) = e704fbe2d598376d9818bd5512a9457ca3661feb
SHA512 (ecl-13.5.1.tgz) = a09f8b824aa78e461d700eefb1a8b68b876e15d49124a397e0b5b58ad73b80f818133a7b8e48ddb83505eea2f9c5fb024de8701b527524004e336e456eb07c84
Size (ecl-13.5.1.tgz) = 9401163 bytes
SHA1 (patch-aa) = 84c5a7617843594d83229bb8621d897a183dc8f9
SHA1 (ecl-16.0.0.tgz) = 3309b5f4126d1a024f7eacaec6aca0e391dd3c75
RMD160 (ecl-16.0.0.tgz) = adf1e77f0bf602534566fd986d27a7c84deac045
Size (ecl-16.0.0.tgz) = 8009304 bytes
SHA1 (patch-aa) = 2f4ce3ab55b4d8a03480191bf2820b9655d4fc3c
SHA1 (patch-ab) = f0229ede69a04648eadf03e0d4bcbed2c200c340
SHA1 (patch-ac) = d4266cdf41f1df3fe3014dcd28c03113d798efd5
7 changes: 4 additions & 3 deletions lang/ecl/options.mk
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# $NetBSD: options.mk,v 1.8 2012/07/26 22:58:33 asau Exp $
# $NetBSD: options.mk,v 1.9 2015/12/09 21:00:47 asau Exp $

PKG_OPTIONS_VAR= PKG_OPTIONS.ecl
PKG_SUPPORTED_OPTIONS+= debug threads unicode ffi clx
PKG_SUGGESTED_OPTIONS+= # empty
PKG_SUGGESTED_OPTIONS+= unicode ffi clx
# Unicode support proved to break Axioms.
# Threads are off, since threaded ECL requires threads support
# in Boehm GC (off by default).
Expand All @@ -20,12 +20,13 @@ CONFIGURE_ARGS+= --enable-threads
CONFIGURE_ENV+= THREAD_CFLAGS=${PTHREAD_CFLAGS:Q}
CONFIGURE_ENV+= THREAD_LDLAGS=${BUILDLINK_LDLAGS.pthread:Q}
CONFIGURE_ENV+= THREAD_LIBS=${BUILDLINK_LIBS.pthread:Q}
# XXX Although NetBSD-6+ supports TLS, ECL oddly crashes on startup
# on NetBSD-6 when it's used here. Untested yet with NetBSD-7.
.if ${OPSYS} == "FreeBSD" || ${OPSYS} == "Linux" || ${OPSYS} == "Darwin"
CONFIGURE_ARGS+= --with-__thread=yes
.else
CONFIGURE_ARGS+= --with-__thread=no
.endif
PLIST_SRC+= PLIST.threads
.include "../../mk/pthread.buildlink3.mk"
.else
CONFIGURE_ARGS+= --disable-threads
Expand Down
52 changes: 26 additions & 26 deletions lang/ecl/patches/patch-aa
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
$NetBSD: patch-aa,v 1.4 2012/07/26 21:09:29 asau Exp $
$NetBSD: patch-aa,v 1.5 2015/12/09 21:00:47 asau Exp $

--- src/c/file.d.orig 2012-07-24 16:51:53.000000000 +0000
+++ src/c/file.d
@@ -5358,7 +5358,7 @@ ecl_integer_to_off_t(cl_object offset)
} else if (ECL_BIGNUMP(offset)) {
if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) == sizeof(cl_index)) {
if (ECL_BIGNUM_SIZE(offset) > 2) {
- goto ERR;
+ goto ERROR;
}
if (ECL_BIGNUM_SIZE(offset) == 2) {
output = ECL_BIGNUM_LIMBS(offset)[1];
@@ -5367,12 +5367,12 @@ ecl_integer_to_off_t(cl_object offset)
output += ECL_BIGNUM_LIMBS(offset)[0];
} else if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) >= sizeof(ecl_off_t)) {
if (ECL_BIGNUM_SIZE(offset) > 1) {
- goto ERR;
+ goto ERROR;
}
output = ECL_BIGNUM_LIMBS(offset)[0];
}
} else {
- ERR: FEerror("Not a valid file offset: ~S", 1, offset);
+ ERROR: FEerror("Not a valid file offset: ~S", 1, offset);
}
return output;
--- src/c/file.d.orig 2015-08-24 02:41:27.000000000 -0400
+++ src/c/file.d 2015-10-25 15:28:33.000000000 -0400
@@ -5367,7 +5367,7 @@ ecl_integer_to_off_t(cl_object offset)
} else if (ECL_BIGNUMP(offset)) {
if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) == sizeof(cl_index)) {
if (ECL_BIGNUM_SIZE(offset) > 2) {
- goto ERR;
+ goto ERROR;
}
if (ECL_BIGNUM_SIZE(offset) == 2) {
output = ECL_BIGNUM_LIMBS(offset)[1];
@@ -5376,12 +5376,12 @@ ecl_integer_to_off_t(cl_object offset)
output += ECL_BIGNUM_LIMBS(offset)[0];
} else if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) >= sizeof(ecl_off_t)) {
if (ECL_BIGNUM_SIZE(offset) > 1) {
- goto ERR;
+ goto ERROR;
}
output = ECL_BIGNUM_LIMBS(offset)[0];
}
} else {
- ERR: FEerror("Not a valid file offset: ~S", 1, offset);
+ ERROR: FEerror("Not a valid file offset: ~S", 1, offset);
}
return output;
}
132 changes: 132 additions & 0 deletions lang/ecl/patches/patch-ac
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
$NetBSD: patch-ac,v 1.1 2015/12/09 21:00:47 asau Exp $

Post-release fix:
commit d077473517d2f5d62a297037b466826b4f0d7d11
check for GC_get_thr_restart_signal only on threaded build

--- src/aclocal.m4.orig
+++ src/aclocal.m4
@@ -935,12 +935,12 @@ if test "${enable_boehm}" = auto -o "${enable_boehm}" = system; then
dnl Try first with the prebuilt versions, if installed and accessible
dnl
system_boehm=yes
- AC_CHECK_LIB( [gc], [GC_get_thr_restart_signal],
- [], [system_boehm="no"] )
if test "${enable_threads}" = no; then
AC_CHECK_LIB( [gc], [GC_malloc],
[], [system_boehm="no"] )
else
+ AC_CHECK_LIB( [gc], [GC_get_thr_restart_signal],
+ [], [system_boehm="no"] )
AC_CHECK_LIB( [gc], [GC_register_my_thread],
[], [system_boehm="no"] )
fi
--- src/configure.orig
+++ src/configure
@@ -5841,9 +5841,10 @@ case "${enable_boehm}" in
esac
if test "${enable_boehm}" = auto -o "${enable_boehm}" = system; then
system_boehm=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GC_get_thr_restart_signal in -lgc" >&5
-$as_echo_n "checking for GC_get_thr_restart_signal in -lgc... " >&6; }
-if ${ac_cv_lib_gc_GC_get_thr_restart_signal+:} false; then :
+ if test "${enable_threads}" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GC_malloc in -lgc" >&5
+$as_echo_n "checking for GC_malloc in -lgc... " >&6; }
+if ${ac_cv_lib_gc_GC_malloc+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -5857,27 +5858,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifdef __cplusplus
extern "C"
#endif
-char GC_get_thr_restart_signal ();
+char GC_malloc ();
int
main ()
{
-return GC_get_thr_restart_signal ();
+return GC_malloc ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_gc_GC_get_thr_restart_signal=yes
+ ac_cv_lib_gc_GC_malloc=yes
else
- ac_cv_lib_gc_GC_get_thr_restart_signal=no
+ ac_cv_lib_gc_GC_malloc=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gc_GC_get_thr_restart_signal" >&5
-$as_echo "$ac_cv_lib_gc_GC_get_thr_restart_signal" >&6; }
-if test "x$ac_cv_lib_gc_GC_get_thr_restart_signal" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gc_GC_malloc" >&5
+$as_echo "$ac_cv_lib_gc_GC_malloc" >&6; }
+if test "x$ac_cv_lib_gc_GC_malloc" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBGC 1
_ACEOF
@@ -5888,10 +5889,10 @@ else
system_boehm="no"
fi

- if test "${enable_threads}" = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GC_malloc in -lgc" >&5
-$as_echo_n "checking for GC_malloc in -lgc... " >&6; }
-if ${ac_cv_lib_gc_GC_malloc+:} false; then :
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GC_get_thr_restart_signal in -lgc" >&5
+$as_echo_n "checking for GC_get_thr_restart_signal in -lgc... " >&6; }
+if ${ac_cv_lib_gc_GC_get_thr_restart_signal+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -5905,27 +5906,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifdef __cplusplus
extern "C"
#endif
-char GC_malloc ();
+char GC_get_thr_restart_signal ();
int
main ()
{
-return GC_malloc ();
+return GC_get_thr_restart_signal ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_gc_GC_malloc=yes
+ ac_cv_lib_gc_GC_get_thr_restart_signal=yes
else
- ac_cv_lib_gc_GC_malloc=no
+ ac_cv_lib_gc_GC_get_thr_restart_signal=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gc_GC_malloc" >&5
-$as_echo "$ac_cv_lib_gc_GC_malloc" >&6; }
-if test "x$ac_cv_lib_gc_GC_malloc" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gc_GC_get_thr_restart_signal" >&5
+$as_echo "$ac_cv_lib_gc_GC_get_thr_restart_signal" >&6; }
+if test "x$ac_cv_lib_gc_GC_get_thr_restart_signal" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBGC 1
_ACEOF
@@ -5936,7 +5937,6 @@ else
system_boehm="no"
fi

- else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GC_register_my_thread in -lgc" >&5
$as_echo_n "checking for GC_register_my_thread in -lgc... " >&6; }
if ${ac_cv_lib_gc_GC_register_my_thread+:} false; then :

0 comments on commit 73e9c3e

Please sign in to comment.