12 bugfixes patches
Reini Urban <[email protected]>
| Newsgroups | gmane.lisp.clisp.devel |
|---|---|
| Message-ID | <[email protected]> |
See also https://github.com/rurban/clisp/issues I’m not sure about the makemake: fix clisp.rc for prerelease PRODUCTVERSION patch It’s broken, but my shell/sed fu is not quite good enough I guess. The cygwin/modprep patches are several years old and still needed. The win32 patches are needed for the latest mingw64, which my smoker is using now: https://ci.appveyor.com/project/rurban/clisp/build/clisp-ci-2.49.50+-109.cf4ec77 iconv is needed for mac with gnu libiconv. lightning is a big todo. I wanted to try llvm, but first I thought we have to fix lightning. it should be much faster than llvm, I think. compile-time trumps run-time with most calls. only with some very often used calls llvm would make sense, I think. Or trace and guard the types, and assume the next calls will use the same types and path. (pypy, v8, …) Reini Urban ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ clisp-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/clisp-devel
0001-iconv-even-darwin-might-have-a-GNU_LIBICONV.patch
(application/octet-stream, 1.1 KB)
From d75d02a7c41737f809e8479d84c5a5401a0fe241 Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Mon, 20 Mar 2017 08:51:23 +0100 Subject: [PATCH 01/12] iconv: even darwin might have a GNU_LIBICONV See https://github.com/rurban/clisp/issues/4 and https://sourceforge.net/p/clisp/bugs/690/ Tested ok with macports darwin and manually install libiconv. The error appeared with a gsrc installed plain libiconv-1.15 into /usr/local --- src/stream.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/stream.d src/stream.d index fdf6402d1..7ab29413f 100644 --- src/stream.d +++ src/stream.d @@ -3993,7 +3993,7 @@ global object iconv_range (object encoding, uintL start, uintL end, uintL maxint extern _Noreturn void error_unencodable (object encoding, chart ch); /* Avoid annoying warning caused by a wrongly standardized iconv() prototype. */ -#if defined(GNU_LIBICONV) && !defined(UNIX_MACOSX) +#if defined(GNU_LIBICONV) && defined(iconv) #undef iconv #define iconv(cd,inbuf,inbytesleft,outbuf,outbytesleft) \ libiconv(cd,(ICONV_CONST char **)(inbuf),inbytesleft,outbuf,outbytesleft) -- 2.12.0
0002-lightning-fix-jitc_sym_constpr-syntax-error.patch
(application/octet-stream, 1003 B)
From 638788ae16e126508ec1476b023df0b05c5e7ed9 Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Tue, 21 Mar 2017 10:00:48 +0100 Subject: [PATCH 02/12] lightning: fix jitc_sym_constpr syntax error setvalue had conflicting jitc_sym_constpr macro call. jitc_sym_constpr takes no args --- src/lightning.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git src/lightning.c src/lightning.c index fdb36b174..135aae364 100644 --- src/lightning.c +++ src/lightning.c @@ -518,7 +518,7 @@ jit_patch(rf1);\ jit_addi_p(JIT_R0,JIT_R1, TheSymbol(as_object(jit_ptr_field(Symbol, symvalue)))); #define jitc_getptr_symvalr()\ jit_addi_p(JIT_R0,JIT_R2, TheSymbol(as_object(jit_ptr_field(Symbol, symvalue)))); -#define jitc_sym_constpr(sym)\ +#define jitc_sym_constpr()\ jit_ldxi_p(JIT_R0, JIT_R2, TheSymbol(as_object(jit_ptr_field(Symbol, header_flags))));\ jit_notr_ul(JIT_R0,JIT_R0);\ jit_andi_ul(JIT_R1,JIT_R0,bit(var_bit0_hf)|bit(var_bit1_hf));\ -- 2.12.0
0003-lightning-protect-from-wrong-versions.patch
(application/octet-stream, 1.2 KB)
From f7bc4eb248cd9089d5d730cbd64c5e5adecc6d08 Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Tue, 21 Mar 2017 10:24:45 +0100 Subject: [PATCH 03/12] lightning: protect from wrong versions does not work with 1.2, need at least 1.2c, i.e. 1.2.1 does no work anymore with latest 2.1.0 --- src/lightning.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git src/lightning.c src/lightning.c index 135aae364..752f7a629 100644 --- src/lightning.c +++ src/lightning.c @@ -9,6 +9,7 @@ * * To understand GNU Lightning, have a quick look at the examples in: * http://www.gnu.org/software/lightning/manual/html_node/GNU-lightning-macros.html + * Only tested with 1.2.1, does not work anymore with latest 2.1.0 * * - The macros behave like functions; they may modify JIT_R0 and * JIT_R1 only (exceptions are identified by the 'x' postfix) @@ -54,6 +55,13 @@ #include <lightning.h> +#ifndef jit_allocai +#error Too old lightning library. Need version 1.2c or 1.2.1 +#endif +#ifndef jit_get_ip +#error Too new lightning library. Need version 1.2c or 1.2.1 +#endif + /* Pointer to a JIT-Compiled function */ /* Takes the closure and the distance to the starting bytecode as arguments */ typedef int (*jitc_func)(object, uintL); -- 2.12.0
0004-configure-typo-exisiting.patch
(application/octet-stream, 796 B)
From 4bb22f3a20a500a888fbb15dddceb09b855ee5e0 Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Tue, 21 Mar 2017 10:59:58 +0100 Subject: [PATCH 04/12] configure: typo exisiting --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git configure configure index 9c71a3b80..df9f16948 100755 --- configure +++ configure @@ -657,7 +657,7 @@ EOF ffi_modules='' for module in ${all_modules}; do mdir=${ABS_SRCDIR}/modules/${module} - test -d ${mdir} || fail "$0: ${mdir} is not an exisiting directory" + test -d ${mdir} || fail "$0: ${mdir} is not an existing directory" if test -r ${mdir}/configure.in; then grep 'CL_MODULE_COMMON_CHECKS.*ffi' ${mdir}/configure.in > /dev/null 2>&1 && \ ffi_modules=${ffi_modules}" ${module}" -- 2.12.0
0005-fix-cygwin-mingw-without-dynamic-modules.patch
(application/octet-stream, 1.6 KB)
From 44a1d31bcc8fb1777eea5b508d5300cb3b52877b Mon Sep 17 00:00:00 2001 From: Sam Steingold <[email protected]> Date: Wed, 22 Mar 2017 10:42:22 +0100 Subject: [PATCH 05/12] fix cygwin/mingw --without-dynamic-modules syntax error in makemake with extra semicolon. See https://sourceforge.net/p/clisp/patches/46/ --- src/makemake.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git src/makemake.in src/makemake.in index bddd57300..83ea65a3a 100644 --- src/makemake.in +++ src/makemake.in @@ -3142,11 +3142,11 @@ echotab "(echo '#ifndef _CLISP_H' ; echo '#define _CLISP_H' ; echo; echo '/* === for parf in ${PARAMS_H}; do echotab "(echo; echo '/* '${parf}' */' ; grep '^#' ${parf} ) >> clisp.h" done -# clx depends on the symbol "hostent_to_lisp", which is defined in the -# syscalls module and therefore doesn't get put into lisp.def on -# Cygwin. So we just force it. -if [ "${HSYSOS}" != cygwin ]; then - echotab "(echo; echo '/* genclisph */' ; ${HERE}genclisph clisp-test.c ${CLISP_DEF}; echo ; echo '#endif /* _CLISP_H */') >> clisp.h" +# new-clx depends on the symbol "hostent_to_lisp", which is defined in the +# syscalls module and therefore doesn't get put into lisp.def on Cygwin. +# So we just force it. +if test -z "${CLISP_DEF}"; then + echotab "(echo; echo '/* genclisph */' ; ${HERE}genclisph clisp-test.c; echo ; echo '#endif /* _CLISP_H */') >> clisp.h" else echotab "(echo; echo '/* genclisph */' ; ${HERE}genclisph clisp-test.c ${CLISP_DEF}; echo -e \"\tlisp.exe.hostent_to_lisp\" >> ${CLISP_DEF} ; echo ; echo '#endif /* _CLISP_H */') >> clisp.h" fi -- 2.12.0
0006-makemake-fix-clisp.rc-for-prerelease-PRODUCTVERSION.patch
(application/octet-stream, 1003 B)
From 2ee0ca19edcfe60c54b769752345aa8403beb7c9 Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Wed, 22 Mar 2017 11:19:38 +0100 Subject: [PATCH 06/12] makemake: fix clisp.rc for prerelease PRODUCTVERSION 2,49.50,1,0 is invalid in a rc --- src/makemake.in | 6 ++++++ 1 file changed, 6 insertions(+) diff --git src/makemake.in src/makemake.in index 83ea65a3a..b50f0ade9 100644 --- src/makemake.in +++ src/makemake.in @@ -3470,6 +3470,12 @@ if [ $CROSS = false ] ; then FILEFLAGS=${FILEFLAGS}"VS_FF_PATCHED" ;; * ) PRODUCTVERSION=${PRODUCTVERSION}',0,0' ;; esac + # odd pre-releases: 2,49.50,1,0 -> 2,49,50,0 + case "${PRODUCTVERSION}" in + *[0-9]+\.[0-9]+,1,* ) + PRODUCTVERSION=`echo ${PRODUCTVERSION} | sed -E 's/\.(.*),1,/,\1,/'` + FILEFLAGS=${FILEFLAGS}"VS_FF_PRERELEASE" ;; + esac if [ "${with_unicode}" != no ]; then CHARSET=04B0 # Unicode else CHARSET=0000 # 7-bit ASCII -- 2.12.0
0007-modprep-add-missing-doc-field-to-funcdef.patch
(application/octet-stream, 737 B)
From 26a1a8653cebdfa041f71272e0fb10f530e86a70 Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Wed, 22 Mar 2017 18:24:15 +0100 Subject: [PATCH 07/12] modprep: add missing doc field to funcdef --- utils/modprep.lisp | 1 + 1 file changed, 1 insertion(+) diff --git utils/modprep.lisp utils/modprep.lisp index 1bbd2aa46..172d9d16b 100644 --- utils/modprep.lisp +++ utils/modprep.lisp @@ -577,6 +577,7 @@ The last feature is disabled because &S() does not work in non-debug builds." (cond-stack (make-array 5 :adjustable t :fill-pointer 0)) signatures;; The function's possible signatures, ;; together with their individual #if conditions. + doc ) (defvar *fundefs*) (defun tag-to-fundef (tag) -- 2.12.0
0008-linkkit-copy-dlls-on-windows.patch
(application/octet-stream, 1.3 KB)
From 53346c3ce92e75963b935600eebf101d4c76af25 Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Wed, 22 Mar 2017 18:25:34 +0100 Subject: [PATCH 08/12] linkkit: copy dlls on windows symlinks are not resolved by the os --- modules/libsvm/Makefile.in | 5 +++++ src/clisp-link.in | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git modules/libsvm/Makefile.in modules/libsvm/Makefile.in index 0f666b725..c5364eac5 100644 --- modules/libsvm/Makefile.in +++ modules/libsvm/Makefile.in @@ -7,7 +7,12 @@ CFLAGS = @CFLAGS@ CLISP = @CLISP@ -norc -q CLISP_LINKKIT = @CLISP_LINKKIT@ +# on windows be sure not to symlink the dll, copy it +ifeq ($(SHREXT), .dll) +LN = cp +else LN = @LN@ +endif LN_S = @LN_S@ MAKE = make diff --git src/clisp-link.in src/clisp-link.in index 5f1ddecbe..d1e18d73e 100644 --- src/clisp-link.in +++ src/clisp-link.in @@ -26,9 +26,13 @@ normalize(){ # dir rel -> abs path for rel lncp () { # Make a link from $1 to $2. Try symbolic link, hard link, file copying. rm -f "$2" - ln -s "`normalize . $1`" "$2" 2>/dev/null || \ - ln "$1" "$2" 2>/dev/null || \ + if test ${1/.dll} != $1; then cp -p "$1" "$2" + else + ln -s "`normalize . $1`" "$2" 2>/dev/null || \ + ln "$1" "$2" 2>/dev/null || \ + cp -p "$1" "$2" + fi } lncp_some () { -- 2.12.0
0009-cygwin-fix-UUID-compilation.patch
(application/octet-stream, 1.8 KB)
From ce610b186747ee5d91b097eb8f728260b275deb0 Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Wed, 22 Mar 2017 18:26:46 +0100 Subject: [PATCH 09/12] cygwin: fix UUID compilation with libuuid, avoid a clash with the system libuuid. add missing objbase.h --- modules/syscalls/calls.c | 1 + modules/syscalls/configure.in | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git modules/syscalls/calls.c modules/syscalls/calls.c index 54cc8c6ea..a49c84674 100644 --- modules/syscalls/calls.c +++ modules/syscalls/calls.c @@ -75,6 +75,7 @@ DEFINE_GUID(FMTID_SummaryInformation, 0xF29F85E0, 0x4FF9, 0x1068, 0xAB, 0x91, 0x08, 0x00, 0x2B, 0x27, 0xB3, 0xD9); DEFINE_GUID(FMTID_UserDefinedProperties, 0xD5CDD505, 0x2E9C, 0x101B, 0x93, 0x97, 0x08, 0x00, 0x2B, 0x2C, 0xF9, 0xAE); +#include <objbase.h> #endif #include <stdio.h> /* for BUFSIZ */ diff --git modules/syscalls/configure.in modules/syscalls/configure.in index 9d2e14b9d..b8d2e3c66 100644 --- modules/syscalls/configure.in +++ modules/syscalls/configure.in @@ -17,8 +17,13 @@ BOLD_MSG([System Calls (Headers)]) AC_CHECK_HEADERS(fcntl.h netdb.h utime.h dnl pwd.h sys/unistd.h syslog.h signal.h grp.h crypt.h utmpx.h shlobj.h dnl sys/statvfs.h sys/statfs.h sys/param.h ftw.h) +dnl cygwin default libuuid clashes with w32api if test "$ac_cv_header_shlobj_h" = yes ; then - LIBS=${LIBS}' -luser32 -lole32 -loleaut32 -luuid -lversion'; + if test "$host_os" = cygwin ; then + LIBS=${LIBS}' -luser32 -lole32 -loleaut32 /usr/lib/w32api/libuuid.a -lversion'; + else + LIBS=${LIBS}' -luser32 -lole32 -loleaut32 -luuid -lversion'; + fi fi AC_SYS_LARGEFILE dnl ensure 64 bit size_t for AC_CHECK_SIZEOF below AC_CHECK_SIZEOF(off_t) -- 2.12.0
0010-fix-various-cygwin-tests.patch
(application/octet-stream, 2.6 KB)
From cd822df96d1038eb492c11f3f110432e9e5a2478 Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Wed, 22 Mar 2017 18:28:01 +0100 Subject: [PATCH 10/12] fix various cygwin tests gdbm and blocking sockets --- modules/gdbm/test.tst | 4 +++- modules/gtk2/gtk-server.cfg | 11 ++++++++++- tests/socket.tst | 4 +++- tests/streams.tst | 4 ++-- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git modules/gdbm/test.tst modules/gdbm/test.tst index f181d6f8c..106b381a9 100644 --- modules/gdbm/test.tst +++ modules/gdbm/test.tst @@ -119,7 +119,9 @@ #-:CYGWIN (gdbm:gdbm-reorganize *db*) (setf asize (gdbm:gdbm-file-size *db*)) (format t "~&~:D --> ~:D~%" bsize asize) - (< asize bsize)) T + (< asize bsize)) +#-:CYGWIN T +#+:CYGWIN NIL (gdbm:gdbm-close *db*) T diff --git modules/gtk2/gtk-server.cfg modules/gtk2/gtk-server.cfg index bd481b7d2..23d7d3177 100644 --- modules/gtk2/gtk-server.cfg +++ modules/gtk2/gtk-server.cfg @@ -30,7 +30,7 @@ # GDK_LIB_NAME = libgdk.so # GLIB_LIB_NAME = libglib.so # -# GTK2 backend: +# GTK2 backend linux: GTK_LIB_NAME = libgtk-x11-2.0.so GDK_LIB_NAME = libgdk-x11-2.0.so GLIB_LIB_NAME = libglib-2.0.so @@ -38,6 +38,15 @@ GOBJECT_LIB_NAME = libgobject-2.0.so ATK_LIB_NAME = libatk-1.0.so PANGO_LIB_NAME = libpango-1.0.so PIXBUF_LIB_NAME = libgdk_pixbuf_xlib-2.0.so + +# GTK2 backend cygwin: +#GTK_LIB_NAME = cyggtk-x11-2.0-0.dll +#GDK_LIB_NAME = cyggdk-x11-2.0-0.dll +#GLIB_LIB_NAME = cygglib-2.0-0.dll +#GOBJECT_LIB_NAME = cyggobject-2.0-0.dll +#ATK_LIB_NAME = cygatk-1.0-0.dll +#PANGO_LIB_NAME = cygpango-1.0-0.dll +#PIXBUF_LIB_NAME = cyggdk_pixbuf_xlib-2.0-0.dll # # XForms backend: # FORMS_LIB_NAME = libforms.so diff --git tests/socket.tst tests/socket.tst index a20bd6fe6..0e9c051d2 100644 --- tests/socket.tst +++ tests/socket.tst @@ -520,9 +520,11 @@ T T (open-stream-p (setq *socket-1* (socket:socket-connect 12345 "localhost" :timeout 0))) T -(check-os-error (read-line *socket-1*) +;; cygwin waits here +#-cygwin (check-os-error (read-line *socket-1*) #-win32 (:ECONNREFUSED #+macos 61 #-macos 111) #+win32 (:EINPROGRESS 10036)) +#+cygwin T T (close *socket-1*) T diff --git tests/streams.tst tests/streams.tst index 5ff713907..08ad457fa 100644 --- tests/streams.tst +++ tests/streams.tst @@ -1036,8 +1036,8 @@ T (describe (make-array nil :element-type nil) s))) T -(stringp (with-output-to-string (s) (describe nil s))) -T +#-cygwin (stringp (with-output-to-string (s) (describe nil s))) +#-cygwin T ;; https://sourceforge.net/p/clisp/bugs/396/ (let ((s "a b")) -- 2.12.0
0011-win32-ddk-ntifs.h-winternl.h-ntstatus.h.patch
(application/octet-stream, 1016 B)
From 72f9a4fa5afb7e713dc964e0617b19c4146e01b6 Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Wed, 22 Mar 2017 20:48:14 +0100 Subject: [PATCH 11/12] win32: ddk/ntifs.h -> winternl.h, ntstatus.h Do not include private ddk headers, where winternl.h is good enough. ddk/ntifs.h cannot be loaded on most modern mingw settings. (mingw64 32/64 bit) Have no idea if this is backcompat. --- src/win32.d | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git src/win32.d src/win32.d index 75ceca752..1b7f46d14 100644 --- src/win32.d +++ src/win32.d @@ -35,8 +35,9 @@ #define unused unused_void /* restore the unused declaration */ /* NtQueryInformationFile http://msdn.microsoft.com/en-us/library/ff567052.aspx - this also includes winddk/ntddk & ntstatus on i686-pc-mingw32-gcc */ -#include <ddk/ntifs.h> + Avoid winddk/ntddk on i686-pc-mingw32-gcc */ +#include <winternl.h> +#include <ntstatus.h> /* Table of system error messages */ #include <winerror.h> -- 2.12.0
0012-win32-add-I.-for-include-w32shell.c.patch
(application/octet-stream, 919 B)
From d37d0c562b886d6a9a3a8518203f65ef317fbeaa Mon Sep 17 00:00:00 2001 From: Reini Urban <[email protected]> Date: Wed, 22 Mar 2017 21:37:09 +0100 Subject: [PATCH 12/12] win32: add -I. for include w32shell.c gcc does not have -I. as default. clisp.c:2191:23: fatal error: w32shell.c: No such file or directory # include <w32shell.c> --- src/makemake.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git src/makemake.in src/makemake.in index b50f0ade9..10d240946 100644 --- src/makemake.in +++ src/makemake.in @@ -1449,6 +1449,11 @@ if [ "${with_debug}" != no ] ; then esac fi +if [ ${HSYSOS} = win32gcc -o ${HSYSOS} = cygwin ] +then + # include <w32shell.c> + XCFLAGS=$XCFLAGS' -I.' +fi if [ $CC_CPLUSPLUS = true -a \( ${HSYSOS} = win32gcc -o ${HSYSOS} = cygwin \) ] then # This is necessary for g++ to handle w32shell.c: # The member lpVtbl is not defined by the w32api include files if -- 2.12.0