diff --git a/.gitignore b/.gitignore index f1217b7..063c566 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /clisp-*.tar.?z +/clisp-*.tar.bz2 diff --git a/README.md b/README.md new file mode 100644 index 0000000..e2490fd --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# clisp + +[ANSI Common Lisp](http://www.lispworks.com/documentation/HyperSpec/Front/) is +a high-level, general-purpose programming language. +[GNU CLISP](https://clisp.sourceforge.io/) is a Common Lisp implementation by +Bruno Haible of Karlsruhe University and Michael Stoll of Munich University, +both in Germany. It mostly supports the Lisp described in the ANSI Common +Lisp standard. It runs on most Unix workstations (GNU/Linux, FreeBSD, NetBSD, +OpenBSD, Solaris, Tru64, HP-UX, BeOS, NeXTstep, IRIX, AIX and others) and on +other systems (Windows NT/2000/XP, Windows 95/98/ME) and needs only 4 MiB of +RAM. + +It is Free Software and may be distributed under the terms of GNU GPL, while +it is possible to distribute commercial proprietary applications compiled with +GNU CLISP. + +The user interface comes in English, German, French, Spanish, Dutch, Russian +and Danish, and can be changed at run time. GNU CLISP includes an +interpreter, a compiler, a debugger, CLOS, MOP, a foreign language interface, +sockets, i18n, fast bignums and more. An X11 interface is available through +CLX, Garnet, CLUE/CLIO. GNU CLISP runs Maxima, ACL2 and many other Common +Lisp packages. diff --git a/clhs.el b/clhs.el new file mode 100644 index 0000000..0628082 --- /dev/null +++ b/clhs.el @@ -0,0 +1,136 @@ +;;; clhs.el --- Access the Common Lisp HyperSpec (CLHS) -*- lexical-binding: t -*- +;; Version: 2 +;; Homepage: https://gitlab.com/sam-s/clhs +;; Maintainer: Sam Steingold + +;;; This works with both +;;; * the "long file name" version released by Harlequin and available +;;; at the MIT web site as +;;; http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/ +;;; * the "8.3 file name" version released later by Xanalys/LispWorks and +;;; available at http://www.lispworks.com/documentation/common-lisp.html +;;; This is accomplished by not hard-wiring the symbol->file table +;;; but reading the Data/ file instead. + +;;; Copyright (C) 2002-2008, 2017, 2019, 2021 Sam Steingold +;;; Keywords: lisp, common lisp, emacs, ANSI CL, hyperspec +;;; released under the GNU GPL +;;; as a part of GNU CLISP + +;;; Usage: + +;; (autoload 'clhs-doc "clhs" "Get doc on ANSI CL" t) +;; (define-key help-map "\C-l" 'clhs-doc) +;; (custom-set-variables +;; '(tags-apropos-additional-actions '(("Common Lisp" clhs-doc clhs-symbols)))) + +;;; Commentary: + +;; Kent Pitman and the Harlequin Group (later Xanalys) have made the +;; text of the "American National Standard for Information Technology -- +;; Programming Language -- Common Lisp", ANSI X3.226-1994 available on +;; the WWW, in the form of the Common Lisp HyperSpec. This package +;; makes it convenient to peruse this documentation from within Emacs. + +;; This is inspired by the Erik Naggum's version of 1997. + +;;; Code: + +(require 'browse-url) +(require 'thingatpt) +(require 'url) + +(defvar clhs-symbols nil) + +(defcustom clhs-root "http://clhs.lisp.se/" + ;; "http://www.lispworks.com/documentation/HyperSpec/" + ;; "http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/html/hyperspec/HyperSpec/" + ;; "http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/" + "*The root of the Common Lisp HyperSpec URL. +If you copy the HyperSpec to your local system, set this variable to +something like \"file:/usr/local/doc/HyperSpec/\"." + :group 'lisp + :set (lambda (s v) + (setq clhs-symbols nil) + (set-default s v)) + :type 'string) + +(defvar clhs-history nil + "History of symbols looked up in the Common Lisp HyperSpec so far.") + +(defun clhs-table-buffer (&optional root) + "Create a buffer containing the CLHS symbol table. +Optional argument ROOT specifies the CLHS root location + and defaults to `clhs-root'." + (unless root (setq root clhs-root)) + (if (string-match "^file:/" root) + (with-current-buffer (get-buffer-create " *clhs-tmp-buf*") + (insert-file-contents-literally + (let* ((d (concat (substring root 6) "/Data/")) + (f (concat d "Map_Sym.txt"))) + (if (file-exists-p f) f + (setq f (concat d "Symbol-Table.text")) + (if (file-exists-p f) f + (error "No symbol table at %s" root)))) + nil nil nil t) + (goto-char 0) + (current-buffer)) + (let* ((d (concat root "/Data/")) + (f (concat d "Map_Sym.txt"))) + (set-buffer (url-retrieve-synchronously f)) + (goto-char 0) + (unless (looking-at "^HTTP/.*200 *OK$") + (kill-buffer (current-buffer)) + (setq f (concat d "Symbol-Table.text")) + (set-buffer (url-retrieve-synchronously f)) + (goto-char 0) + (unless (looking-at "^HTTP/.*200 *OK$") + (kill-buffer (current-buffer)) + (error "No symbol table at %s" root))) + ;; skip to the first symbol + (search-forward "\n\n") + (current-buffer)))) + +(defun clhs-read-symbols () + "Read variable `clhs-symbols' from the current position in the current buffer." + (while (not (eobp)) + (puthash (buffer-substring-no-properties ; symbol + (line-beginning-position) (line-end-position)) + (progn (forward-line 1) ; file name + (buffer-substring-no-properties ; strip "../" + (+ 3 (line-beginning-position)) (line-end-position))) + clhs-symbols) + (forward-line 1))) + +(defun clhs-symbols () + "Get variable `clhs-symbols' from `clhs-root'." + (if (and clhs-symbols (not (= 0 (hash-table-count clhs-symbols)))) + clhs-symbols + (with-current-buffer (clhs-table-buffer) + (unless clhs-symbols + (setq clhs-symbols (make-hash-table :test 'equal :size 1031))) + (clhs-read-symbols) + (kill-buffer (current-buffer)) + clhs-symbols))) + +;;;###autoload +(defun clhs-doc (symbol-name &optional kill) + "Browse the Common Lisp HyperSpec documentation for SYMBOL-NAME. +Finds the HyperSpec at `clhs-root'. +With prefix arg KILL, save the URL in the `kill-ring' instead." + (interactive (list (let ((sym (thing-at-point 'symbol t)) + (completion-ignore-case t)) + (completing-read + "Look-up symbol in the Common Lisp HyperSpec: " + (clhs-symbols) nil t sym 'clhs-history)) + current-prefix-arg)) + (unless (= ?/ (aref clhs-root (1- (length clhs-root)))) + (setq clhs-root (concat clhs-root "/"))) + (let ((url (concat clhs-root (gethash (upcase symbol-name) (clhs-symbols))))) + (if kill + (kill-new url) + (browse-url url)))) + +(provide 'clhs) + +;;; clhs.el ends here diff --git a/clisp-db.patch b/clisp-db.patch deleted file mode 100644 index e30179d..0000000 --- a/clisp-db.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- modules/berkeley-db/configure.in.orig 2018-04-23 07:44:21.000000000 -0600 -+++ modules/berkeley-db/configure.in 2018-06-21 20:30:56.502368686 -0600 -@@ -48,7 +48,7 @@ dnl set_errcall() accepts DBE], - ac_cv_dbe_set_errcall_accept_dbe,[ - CFLAGS_save="$CFLAGS" --CFLAGS="$CFLAGS -Werror" -+CFLAGS="$CFLAGS -Wno-uninitialized -Werror" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include - void my_callback (const DB_ENV* dbe, const char *errpfx, const char *msg) {}], - [[DB_ENV dbe; dbe.set_errcall(&dbe,&my_callback);]])], ---- modules/berkeley-db/configure.orig 2018-04-23 07:44:21.000000000 -0600 -+++ modules/berkeley-db/configure 2018-06-21 20:30:56.504368682 -0600 -@@ -5814,7 +5814,7 @@ if ${ac_cv_dbe_set_errcall_accept_dbe+:} - else - - CFLAGS_save="$CFLAGS" --CFLAGS="$CFLAGS -Werror" -+CFLAGS="$CFLAGS -Wno-uninitialized -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include diff --git a/clisp-encoding-leak.patch b/clisp-encoding-leak.patch new file mode 100644 index 0000000..f2b939a --- /dev/null +++ b/clisp-encoding-leak.patch @@ -0,0 +1,10 @@ +--- src/encoding.d.orig 2024-12-28 00:47:59.000000000 -0700 ++++ src/encoding.d 2025-02-04 20:28:22.743346018 -0700 +@@ -2592,6 +2592,7 @@ local maygc object encoding_from_name (c + pushSTACK(STACK_0); + } + } ++ free(name); + #else + unused const_name; unused context; + pushSTACK(unbound); /* :charset */ diff --git a/clisp-iconv-close.patch b/clisp-iconv-close.patch new file mode 100644 index 0000000..db553ad --- /dev/null +++ b/clisp-iconv-close.patch @@ -0,0 +1,38 @@ +--- src/stream.d.orig 2024-12-28 00:47:59.000000000 -0700 ++++ src/stream.d 2025-02-07 11:47:28.448086694 -0700 +@@ -4239,6 +4239,9 @@ global uintL iconv_wcslen (object encodi + != (size_t)(-1)) { + inptr += sizeof(chart); insize -= sizeof(chart); + } else { ++ var int saved_errno = errno; ++ iconv_close(cd); ++ errno = saved_errno; + if (errno != EILSEQ) { + ANSIC_error(); + } else { +@@ -4247,6 +4250,7 @@ global uintL iconv_wcslen (object encodi + } + } + } else { ++ iconv_close(cd); + end_system_call(); + error_unencodable(encoding,*(const chart*)inptr); + } +@@ -4317,6 +4321,9 @@ global void iconv_wcstombs (object encod + if (iconv(cd,&inptr1,&insize1,&outptr,&outsize) != (size_t)(-1)) { + inptr += sizeof(chart); insize -= sizeof(chart); + } else { ++ var int saved_errno = errno; ++ iconv_close(cd); ++ errno = saved_errno; + if (errno != EILSEQ) { + ANSIC_error(); + } else { +@@ -4325,6 +4332,7 @@ global void iconv_wcstombs (object encod + } + } + } else { ++ iconv_close(cd); + end_system_call(); + error_unencodable(encoding,*(const chart*)inptr); + } diff --git a/clisp-no-inline.patch b/clisp-no-inline.patch new file mode 100644 index 0000000..f4e54b9 --- /dev/null +++ b/clisp-no-inline.patch @@ -0,0 +1,11 @@ +--- src/foreign.d.orig 2021-06-28 14:32:42.000000000 -0600 ++++ src/foreign.d 2022-02-03 21:52:22.932176743 -0700 +@@ -2417,7 +2417,7 @@ local void count_walk_post (object fvd, + { + unused(fvd); unused(obj); unused(walk); + } +-local maygc void convert_to_foreign_needs (object fvd, object obj, ++local maygc __attribute__((noinline)) void convert_to_foreign_needs (object fvd, object obj, + struct foreign_layout *sas) + { + struct walk_lisp walk diff --git a/clisp-pari.patch b/clisp-pari.patch deleted file mode 100644 index 285d73c..0000000 --- a/clisp-pari.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- modules/pari/desc2lisp.lisp.orig 2018-07-18 17:50:36.000000000 -0600 -+++ modules/pari/desc2lisp.lisp 2018-08-03 15:05:25.139224753 -0600 -@@ -166,7 +166,15 @@ - (setq h (car h))) - (if (and h (ext:starts-with-p h f) (setq end (search "):" h))) - ;;(parse-arglist-regexp h :start (1+ (position #\( h)) :end end) -- (parse-arglist-read h :start (position #\( h) :end (1+ end)) -+ (let ((l (parse-arglist-read h :start (position #\( h) :end (1+ end)))) -+ (and -+ (consp l) -+ (consp (cdr l)) -+ (consp (cadr l)) -+ (symbolp (caadr l)) -+ (equalp (symbol-name (caadr l)) "T") -+ (setf (caadr l) 'T_)) -+ l) - ;; (or (warn "~S: no arglist in ~S" 'desc-arglist desc) ...) - :unspecific))) - diff --git a/clisp-ppc64le-alignment.patch b/clisp-ppc64le-alignment.patch new file mode 100644 index 0000000..b186bb5 --- /dev/null +++ b/clisp-ppc64le-alignment.patch @@ -0,0 +1,18 @@ +Fixes UBSAN errors such as: + +../src/spvw_typealloc.d:146:450: runtime error: member access within misaligned address 0x17000000009c for type 'struct s8string_', which requires 8 byte alignment +0x17000000009c: note: pointer points here + 53 45 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + ^ + +--- src/lispbibl.d.orig 2025-02-07 19:25:44.207789666 -0700 ++++ src/lispbibl.d 2025-02-10 11:38:31.029348227 -0700 +@@ -6006,7 +6006,7 @@ typedef signed_int_with_n_bits(intVsize) + #if defined(I80386) || defined(POWERPC) || defined(ARM) || defined(S390) + #define varobject_alignment 4 + #endif +-#if defined(SPARC) || defined(HPPA) || defined(MIPS) || defined(DECALPHA) || defined(IA64) || defined(AMD64) || defined(ARM64) || defined(RISCV64) || defined(LOONGARCH64) ++#if defined(SPARC) || defined(HPPA) || defined(MIPS) || defined(DECALPHA) || defined(IA64) || defined(AMD64) || defined(ARM64) || defined(RISCV64) || defined(LOONGARCH64) || defined(POWERPC64) + #define varobject_alignment 8 + #endif + #if (!defined(TYPECODES) || defined(GENERATIONAL_GC)) && (varobject_alignment < 4) diff --git a/clisp-pts-access.patch b/clisp-pts-access.patch new file mode 100644 index 0000000..55d026e --- /dev/null +++ b/clisp-pts-access.patch @@ -0,0 +1,15 @@ +--- tests/streams.tst.orig 2024-07-04 15:55:33.000000000 -0600 ++++ tests/streams.tst 2024-07-08 14:50:23.547424881 -0600 +@@ -1288,9 +1288,9 @@ T + (streamp (setq s (make-stream :error))) T + (or (not (search "#P" (prin1-to-string s))) (pathnamep (truename s))) T + (write-line "foo" s) "foo" +-(let ((*reopen-open-file* nil)) ; stdout can be a file, it will be detected! +- (with-open-file (copy s :direction :output) (streamp copy))) +-#.(if (member (ext:operating-system-type) '("AIX" "Haiku" "Minix" "Windows") :test #'equal) 'ERROR 'T) ++;;(let ((*reopen-open-file* nil)) ; stdout can be a file, it will be detected! ++;; (with-open-file (copy s :direction :output) (streamp copy))) ++;;#.(if (member (ext:operating-system-type) '("AIX" "Haiku" "Minix" "Windows") :test #'equal) 'ERROR 'T) + + #+clisp + (progn diff --git a/clisp-readline.patch b/clisp-readline.patch new file mode 100644 index 0000000..942e67c --- /dev/null +++ b/clisp-readline.patch @@ -0,0 +1,75 @@ +--- modules/readline/readline.lisp.orig 2024-12-28 00:47:59.000000000 -0700 ++++ modules/readline/readline.lisp 2025-02-10 15:17:06.296266455 -0700 +@@ -126,7 +126,7 @@ name in ~/.inputrc. This is preferred wa + (:documentation "Get keymap with given name (e.g., emacs, vi)") + (:arguments (name c-string)) (:return-type keymap)) + +-(def-call-out get-keymap-name (:name "rl_get_keymap_by_name") ; untested ++(def-call-out get-keymap-name (:name "rl_get_keymap_name") ; untested + (:arguments (keymap keymap)) (:return-type c-string)) + + ;;; Binding Keys +@@ -255,7 +255,7 @@ name in ~/.inputrc. This is preferred wa + ;;; Redisplay + + (def-call-out redisplay (:name "rl_redisplay") +- (:arguments) (:return-type int)) ++ (:arguments) (:return-type nil)) + + (def-call-out forced-update-display (:name "rl_forced_update_display") + (:arguments) (:return-type int)) +@@ -308,7 +308,7 @@ name in ~/.inputrc. This is preferred wa + + (def-call-out copy-text (:name "rl_copy_text") ; untested + (:arguments (start int) (end int)) +- (:return-type int)) ++ (:return-type c-string :malloc-free)) + + (def-call-out kill-text (:name "rl_kill_text") ; untested + (:arguments (start int) (end int)) +@@ -316,7 +316,7 @@ name in ~/.inputrc. This is preferred wa + + (def-call-out push-macro-input (:name "rl_push_macro_input") + (:arguments (macro c-string)) +- (:return-type int)) ++ (:return-type nil)) + + ;;; Character input + +@@ -362,7 +362,7 @@ name in ~/.inputrc. This is preferred wa + + (def-call-out extend-line-buffer (:name "rl_extend_line_buffer") ; untested + (:arguments (len int)) +- (:return-type int)) ++ (:return-type nil)) + + (def-call-out ding (:name "rl_ding") + (:arguments) (:return-type int)) +@@ -404,7 +404,7 @@ name in ~/.inputrc. This is preferred wa + (:return-type int)) + + (def-call-out clear-history (:name "rl_clear_history") ; untested +- (:arguments) (:return-type int)) ++ (:arguments) (:return-type nil)) + + (def-call-out get-termcap (:name "rl_get_termcap") ; untested + (:arguments (cap c-string)) +@@ -647,10 +647,16 @@ and the completion character will be ins + (:documentation "reading multiple-key command")) + (def-c-const state-vicmdonce (:name "RL_STATE_VICMDONCE") ; 0x400000 + (:documentation "entered vi command mode at least once")) +-(def-c-const state-redisplaying (:name "RL_STATE_REDISPLAYING") ; 0x800000 ++(def-c-const state-charsearch (:name "RL_STATE_CHARSEARCH") ; 0x800000 ++ (:documentation "vi mode char search")) ++(def-c-const state-redisplaying (:name "RL_STATE_REDISPLAYING") ; 0x1000000 + (:documentation "updating terminal display")) +-(def-c-const state-done (:name "RL_STATE_DONE") ; 0x1000000 ++(def-c-const state-done (:name "RL_STATE_DONE") ; 0x2000000 + (:documentation "done; accepted line")) ++(def-c-const state-timeout (:name "RL_STATE_TIMEOUT") ; 0x4000000 ++ (:documentation "done; timed out")) ++(def-c-const state-eof (:name "RL_STATE_EOF") ; 0x8000000 ++ (:documentation "done; got eof on read")) + + (def-c-const readerr ; (-2) + (:documentation " Input error; can be returned by (*rl_getc_function) diff --git a/clisp-setkey.patch b/clisp-setkey.patch deleted file mode 100644 index 75e11cb..0000000 --- a/clisp-setkey.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- modules/syscalls/posix.lisp.orig 2018-07-18 17:50:36.000000000 -0600 -+++ modules/syscalls/posix.lisp 2018-08-01 15:54:47.410580519 -0600 -@@ -72,7 +72,7 @@ - (addrtype 2 :type fixnum :read-only t)) - - ;;; ============================================================ --#+unix (export '(crypt encrypt setkey)) -+#+unix (export '(crypt)) - - #+unix - (defstruct (user-info (:constructor ---- modules/syscalls/test.tst.orig 2018-07-18 17:50:36.000000000 -0600 -+++ modules/syscalls/test.tst 2018-08-01 15:55:58.241645520 -0600 -@@ -14,20 +14,6 @@ T - (> (length (show (os:service) :pretty t)) (length (os:service nil "tcp"))) T - (equalp (os:service "www" "tcp") (os:service "http" "tcp")) T - --#+unix ;; (encrypt (encrypt X t) nil) == X --(handler-case -- (let* ((v (make-array 8 :element-type '(unsigned-byte 8))) (u (copy-seq v))) -- (loop :repeat 10 :do -- (dotimes (i 8) (setf (aref v i) (setf (aref u i) (random 256)))) -- (os:setkey v) (show (os:encrypt v nil)) (show (os:encrypt v t)) -- :never (if (equalp v u) nil (list v u)))) -- (ext:os-error (err) -- ;; Solaris (sf cf x86-solaris1 & sparc-solaris1) encrypt fails with -- ;; "UNIX error 89 (ENOSYS): Function not implemented" -- (format t "~S: ~A" 'os:encrypt err) -- T)) --#+unix T -- - #+unix (crypt "foo" "bar") #+unix "ba4TuD1iozTxw" - - ;; same as "%F %T" on GNU, but more portable diff --git a/clisp-siginterrupt.patch b/clisp-siginterrupt.patch new file mode 100644 index 0000000..26d0d3b --- /dev/null +++ b/clisp-siginterrupt.patch @@ -0,0 +1,18 @@ +Avoids this warning: + +../src/unixaux.d: In function ‘install_signal_handler’: +../src/unixaux.d:734:3: warning: ‘siginterrupt’ is deprecated: Use sigaction with SA_RESTART instead [-Wdeprecated-declarations] + 734 | siginterrupt(sig,0); + | ^~~~~~~~~~~~ + +--- src/unixaux.d.orig 2024-07-12 09:22:07.000000000 -0600 ++++ src/unixaux.d 2024-08-26 15:42:17.202775988 -0600 +@@ -703,7 +703,7 @@ global int wait2 (pid_t child) { + global signal_handler_t install_signal_handler (int sig, + signal_handler_t handler) { + var signal_handler_t old_handler; +- #if defined(USE_SIGACTION) ++ #if defined(HAVE_SIGACTION) + var struct sigaction old_sa; + var struct sigaction new_sa; + memset(&new_sa,0,sizeof(new_sa)); diff --git a/clisp-undefined-behavior-eval.patch b/clisp-undefined-behavior-eval.patch new file mode 100644 index 0000000..2e6b8e0 --- /dev/null +++ b/clisp-undefined-behavior-eval.patch @@ -0,0 +1,15 @@ +Fixes this UBSAN error: + +../src/eval.d:5808:11: runtime error: variable length array bound evaluates to non-positive value 0 + +--- src/eval.d.orig 2024-12-28 00:47:59.000000000 -0700 ++++ src/eval.d 2025-02-10 09:39:02.285198247 -0700 +@@ -5805,7 +5805,7 @@ local /*maygc*/ Values interpret_bytecod + var uintL private_SP_length = + (uintL)(((Codevec)codeptr)->ccv_spdepth_1) + + jmpbufsize * (uintL)(((Codevec)codeptr)->ccv_spdepth_jmpbufsize); +- var DYNAMIC_ARRAY(private_SP_space,SPint,private_SP_length); ++ var DYNAMIC_ARRAY(private_SP_space,SPint,private_SP_length+1); + var SPint* private_SP = &private_SP_space[private_SP_length]; + #undef SP_ + #undef _SP_ diff --git a/clisp-undefined-behavior-io.patch b/clisp-undefined-behavior-io.patch new file mode 100644 index 0000000..7a9e72b --- /dev/null +++ b/clisp-undefined-behavior-io.patch @@ -0,0 +1,15 @@ +Fixes this UBSAN error: + +runtime error: variable length array bound evaluates to non-positive value 0 + +--- src/io.d.orig 2024-12-28 00:47:59.000000000 -0700 ++++ src/io.d 2025-02-10 09:50:29.262067759 -0700 +@@ -8158,7 +8158,7 @@ local maygc void pr_array (const gcv_obj + LEVEL_CHECK; + { /* determine rank and fetch dimensions and sub-product: */ + var uintL r = (uintL)Iarray_rank(obj); /* rank */ +- var DYNAMIC_ARRAY(dims_sizes,array_dim_size_t,r); /* dynamically allocated array */ ++ var DYNAMIC_ARRAY(dims_sizes,array_dim_size_t,r?r:1); /* dynamically allocated array */ + iarray_dims_sizes(obj,dims_sizes); /* fill */ + var uintL depth = r; /* depth of recursion */ + var pr_array_locals_t locals; /* local variables */ diff --git a/clisp-undefined-behavior-sort.patch b/clisp-undefined-behavior-sort.patch new file mode 100644 index 0000000..8408d13 --- /dev/null +++ b/clisp-undefined-behavior-sort.patch @@ -0,0 +1,23 @@ +Fixes this USBAN error: + +../src/sort.d:42:18: runtime error: applying non-zero offset 18446744073709551584 to null pointer + +--- src/sort.d.orig 2024-12-28 00:47:59.000000000 -0700 ++++ src/sort.d 2025-02-10 09:33:00.121016044 -0700 +@@ -39,7 +39,7 @@ + /* sort(v,n); sorts the array v[0]..v[n-1] in ascending order. */ + local void SORT(SORTID,sort) (SORT_ELEMENT* v, uintL n) + { +- var SORT_ELEMENT* w = &v[-1]; ++ var SORT_ELEMENT* w; + /* w[1]..w[n] point to the same elements as v[0]..v[n-1] . + We collect the numbers 1,...,n to a balanced binary subtree, + so that k has the children 2*k and 2*k+1. +@@ -70,6 +70,7 @@ local void SORT(SORTID,sort) (SORT_ELEME + } + if (n<=1) /* nothing to do? */ + return; ++ w = &v[-1]; + { /* Because of 2*(floor(n/2)+1) > n, + w[floor(n/2)+1]..w[n] is already sorted. */ + var uintL r; diff --git a/clisp.spec b/clisp.spec index 44bca80..94e352d 100644 --- a/clisp.spec +++ b/clisp.spec @@ -1,32 +1,72 @@ -%global commit dd403693629f7b5cee04f360fb559783c6771bf7 -%global shortcommit %(c=%{commit}; echo ${c:0:7}) +# Upstream has not made a new release since 2010 +%global srcname clisp +%global commit f66220939ea7d36fd085384afa4a0ec44597d499 +%global date 20250504 +%global forgeurl https://gitlab.com/gnu-clisp/clisp # There is a plus on the end for unreleased versions, not for released versions %global instdir %{name}-%{version}+ +# This package uses toplevel ASMs which are incompatible with LTO +%global _lto_cflags %{nil} + +%bcond gtk2 %[!(0%{?rhel} > 9)] + Name: clisp Summary: ANSI Common Lisp implementation -Version: 2.49.93 -Release: 9.%{shortcommit}git%{?dist} -License: GPLv2+ +Version: 2.49.95 + +%forgemeta + +# The project as a whole is GPL-2.0-or-later. Exceptions: +# - Some documentation is dual-licensed as GPL-2.0-or-later OR GFDL-1.2-or-later +# - src/gllib is LGPL-2.1-or-later +# - src/socket.d and modules/clx/mit-clx/doc.lisp are HPND +# - src/xthread.d and modules/asdf/asdf.lisp are X11 +License: GPL-2.0-or-later AND (GPL-2.0-or-later OR GFDL-1.2-or-later) AND LGPL-2.1-or-later AND HPND AND X11 +Release: 5%{?dist} URL: http://www.clisp.org/ -# The source for this package was pulled from upstream's git repository. -Source0: https://gitlab.com/gnu-clisp/%{name}/repository/archive.tar.gz?ref=%{commit}#/%{name}-%{shortcommit}.tar.gz +VCS: git:%{forgeurl}.git +Source0: %{forgesource} +# Upstream dropped this file from the distribution +Source1: https://gitlab.com/sam-s/clhs/-/raw/master/clhs.el # Updated translations -Source1: http://translationproject.org/latest/clisp/sv.po -Source2: http://translationproject.org/latest/clisp/de.po -# https://sourceforge.net/p/clisp/patches/35/ -Patch0: %{name}-db.patch +Source2: http://translationproject.org/latest/clisp/sv.po +Source3: http://translationproject.org/latest/clisp/de.po # https://sourceforge.net/p/clisp/patches/32/ -Patch1: %{name}-format.patch -# The encrypt and setkey functions are no longer available from glibc -Patch2: %{name}-setkey.patch -# Adapt to changes in pari 2.11.0 -Patch3: %{name}-pari.patch +Patch0: %{name}-format.patch # The combination of register and volatile is nonsensical -Patch4: %{name}-register-volatile.patch +Patch1: %{name}-register-volatile.patch +# A test that writes to /dev/pts/0 succeeds or fails apparently at random. +# I can only guess that /dev/pts/0 may or may not be what the test expects. +# Perhaps we are racing with something else that allocates a pty. Disable +# the test for now. +Patch2: %{name}-pts-access.patch +# Do not call the deprecated siginterrupt function +Patch3: %{name}-siginterrupt.patch +# Fix an iconv leak in stream.d +Patch4: %{name}-iconv-close.patch +# Fix a memory leak in encoding.d +# https://gitlab.com/gnu-clisp/clisp/-/merge_requests/11 +Patch5: %{name}-encoding-leak.patch +# Fix undefined behavior in SORT +Patch6: %{name}-undefined-behavior-sort.patch +# Fix undefined behavior in interpret_bytecode_ +Patch7: %{name}-undefined-behavior-eval.patch +# Fix undefined behavior in pr_array +Patch8: %{name}-undefined-behavior-io.patch +# Fix misaligned memory accesses on ppc64le +Patch9: %{name}-ppc64le-alignment.patch +# Fix some mismatched readline function declarations +# https://gitlab.com/gnu-clisp/clisp/-/merge_requests/13 +Patch10: %{name}-readline.patch + +# Work around a problem inlining a function on ppc64le +# See https://bugzilla.redhat.com/show_bug.cgi?id=2049371 +Patch100: %{name}-no-inline.patch BuildRequires: dbus-devel +BuildRequires: diffutils BuildRequires: emacs BuildRequires: fcgi-devel BuildRequires: ffcall-devel @@ -35,24 +75,27 @@ BuildRequires: gdbm-devel BuildRequires: gettext-devel BuildRequires: ghostscript BuildRequires: glibc-langpack-en -BUildRequires: glibc-langpack-fr +BuildRequires: glibc-langpack-fr BuildRequires: glibc-langpack-ja BuildRequires: glibc-langpack-zh BuildRequires: groff +%if %{with gtk2} BuildRequires: gtk2-devel +BuildRequires: libglade2-devel +%endif BuildRequires: libXaw-devel BuildRequires: libXft-devel BuildRequires: libdb-devel -BuildRequires: libglade2-devel BuildRequires: libsigsegv-devel BuildRequires: libsvm-devel BuildRequires: libunistring-devel BuildRequires: libxcrypt-devel +BuildRequires: make BuildRequires: pari-devel BuildRequires: pari-gp -BuildRequires: pcre-devel BuildRequires: libpq-devel BuildRequires: readline-devel +BuildRequires: vim-filesystem BuildRequires: zlib-devel Requires: emacs-filesystem @@ -63,25 +106,24 @@ Requires: vim-filesystem Provides: bundled(gnulib) %description -ANSI Common Lisp is a high-level, general-purpose programming -language. GNU CLISP is a Common Lisp implementation by Bruno Haible -of Karlsruhe University and Michael Stoll of Munich University, both -in Germany. It mostly supports the Lisp described in the ANSI Common -Lisp standard. It runs on most Unix workstations (GNU/Linux, FreeBSD, -NetBSD, OpenBSD, Solaris, Tru64, HP-UX, BeOS, NeXTstep, IRIX, AIX and -others) and on other systems (Windows NT/2000/XP, Windows 95/98/ME) -and needs only 4 MiB of RAM. +ANSI Common Lisp is a high-level, general-purpose programming language. GNU +CLISP is a Common Lisp implementation by Bruno Haible of Karlsruhe University +and Michael Stoll of Munich University, both in Germany. It mostly supports +the Lisp described in the ANSI Common Lisp standard. It runs on most Unix +workstations (GNU/Linux, FreeBSD, NetBSD, OpenBSD, Solaris, Tru64, HP-UX, +BeOS, NeXTstep, IRIX, AIX and others) and on other systems (Windows NT/2000/XP, +Windows 95/98/ME) and needs only 4 MiB of RAM. -It is Free Software and may be distributed under the terms of GNU GPL, -while it is possible to distribute commercial proprietary applications -compiled with GNU CLISP. +It is Free Software and may be distributed under the terms of GNU GPL, while +it is possible to distribute commercial proprietary applications compiled with +GNU CLISP. -The user interface comes in English, German, French, Spanish, Dutch, -Russian and Danish, and can be changed at run time. GNU CLISP -includes an interpreter, a compiler, a debugger, CLOS, MOP, a foreign -language interface, sockets, i18n, fast bignums and more. An X11 -interface is available through CLX, Garnet, CLUE/CLIO. GNU CLISP runs -Maxima, ACL2 and many other Common Lisp packages. +The user interface comes in English, German, French, Spanish, Dutch, Russian +and Danish, and can be changed at run time. GNU CLISP includes an +interpreter, a compiler, a debugger, CLOS, MOP, a foreign language interface, +sockets, i18n, fast bignums and more. An X11 interface is available through +CLX, Garnet, CLUE/CLIO. GNU CLISP runs Maxima, ACL2 and many other Common +Lisp packages. %package devel @@ -95,26 +137,29 @@ Files necessary for linking CLISP programs. %prep -%autosetup -p0 -n %{name}-%{commit}-%{commit} +%forgesetup +%autopatch -M99 -p0 +%ifarch %{power64} +%autopatch 100 -p0 +%endif -# Change URLs not affected by the --hyperspec argument to configure -sed -i.orig 's|lisp.org/HyperSpec/Body/chap-7.html|lispworks.com/documentation/HyperSpec/Body/07_.htm|' \ - src/clos-package.lisp -touch -r src/clos-package.lisp.orig src/clos-package.lisp -rm -f src/clos-package.lisp.orig -for f in src/_README.*; do - sed -i.orig 's|lisp.org/HyperSpec/FrontMatter|lispworks.com/documentation/HyperSpec/Front|' $f - touch -r ${f}.orig $f - rm -f ${f}.orig -done +%conf +cp -p %{SOURCE1} emacs +cp -p %{SOURCE2} %{SOURCE3} src/po # We only link against libraries in system directories, so we need -L dir in # place of -Wl,-rpath -Wl,dir cp -p src/build-aux/config.rpath config.rpath.orig sed -i -e 's/${wl}-rpath ${wl}/-L/g' src/build-aux/config.rpath -# Fix modules that need access to symbols in libgnu.a -sed -i 's/\(${GLLIB_A}\) \(${LIBS}\)/-Wl,--whole-archive \1 -Wl,--no-whole-archive \2 -ldl/' src/makemake.in +# Do not use -Werror, or we get build failures on every new gcc version +sed -i '/CFLAGS -Werror/d' modules/berkeley-db/configure + +# Do not override our choice of optimization flags +sed -i "/CFLAGS/s/'-O'/''/;/Z_XCFLAGS/s/' -O'//" src/makemake.in + +# When building modules, put -Wl,--as-needed before the libraries to link +sed -i "s/CC='\${CC}'/CC='\${CC} -Wl,--as-needed'/" src/makemake.in # Enable firefox to be the default browser for displaying documentation sed -i 's/;; \((setq \*browser\* .*)\)/\1/' src/cfgunix.lisp @@ -124,17 +169,11 @@ tar -C modules/clx -xzf modules/clx/clx-manual.tar.gz chmod -R go+r modules/clx/clx-manual chmod a-x modules/clx/clx-manual/html/doc-index.cgi -# Update the translations -cp -p %{SOURCE1} %{SOURCE2} src/po - # On some koji builders, something is already listening on port 9090, which # causes a spurious test failure. Change to port 9096 for the test. sed -i 's/9090/9096/g' tests/socket.tst %build -ulimit -s unlimited -export LC_ALL=C.UTF-8 - # Do not need to specify base modules: i18n, readline, regexp, syscalls. # The dirkey module currently can only be built on Windows/Cygwin/MinGW. # The editor module is not in good enough shape to use. @@ -146,7 +185,6 @@ export LC_ALL=C.UTF-8 --infodir=%{_infodir} \ --docdir=%{_pkgdocdir} \ --fsstnd=redhat \ - --hyperspec=http://www.lispworks.com/documentation/HyperSpec/ \ --with-module=asdf \ --with-module=berkeley-db \ --with-module=bindings/glibc \ @@ -154,23 +192,29 @@ export LC_ALL=C.UTF-8 --with-module=dbus \ --with-module=fastcgi \ --with-module=gdbm \ +%if %{with gtk2} --with-module=gtk2 \ +%endif --with-module=libsvm \ --with-module=pari \ - --with-module=pcre \ --with-module=postgresql \ --with-module=rawsock \ --with-module=zlib \ --with-libreadline-prefix=$PWD/readline \ --with-ffcall \ - --cbcx \ + --config \ build \ - CPPFLAGS="-I/usr/include/libsvm" \ - CFLAGS="%{optflags} -Wa,--noexecstack" \ - LDFLAGS="-Wl,--as-needed -Wl,-z,relro -Wl,-z,noexecstack" + CPPFLAGS='-I/usr/include/libsvm' \ + CFLAGS='%{build_cflags} -Wa,--noexecstack' \ + LDFLAGS='-Wl,--as-needed -Wl,-z,relro -Wl,-z,noexecstack' + +cd build +# Workaround libtool reordering -Wl,--as-needed after all the libraries. +sed -i 's|CC="\(.*g..\)"|CC="\1 -Wl,--as-needed"|' libtool +make +cd - %install -ulimit -s unlimited make -C build DESTDIR=%{buildroot} install cp -a build/full %{buildroot}%{_libdir}/%{instdir} rm -f %{buildroot}%{_pkgdocdir}/doc/clisp.{dvi,1,ps} @@ -185,17 +229,16 @@ find %{buildroot}%{_libdir} -name '*.dvi' -exec rm -f {} \+ cat %{name}low.lang >> %{name}.lang # Compile the Emacs interface -pushd %{buildroot}%{_datadir}/emacs/site-lisp +pushd %{buildroot}%{_emacs_sitelispdir} %{_emacs_bytecompile} *.el popd -# Put back the original config.rpath, and fix executable bits +# Put back the original config.rpath cp -p config.rpath.orig %{buildroot}%{_libdir}/%{instdir}/build-aux/config.rpath -chmod a+x \ - %{buildroot}%{_libdir}/%{instdir}/build-aux/config.guess \ - %{buildroot}%{_libdir}/%{instdir}/build-aux/config.sub \ - %{buildroot}%{_libdir}/%{instdir}/build-aux/depcomp \ - %{buildroot}%{_libdir}/%{instdir}/build-aux/install-sh \ + +# Fix a missing executable bit +chmod a+x %{buildroot}%{_libdir}/%{instdir}/build-aux/depcomp + # Fix paths in the Makefiles for mk in $(find %{buildroot}%{_libdir} -name Makefile); do sed -e "s,$PWD/modules,%{_libdir}/%{instdir}," \ @@ -217,13 +260,9 @@ cp -p build/config.h %{buildroot}%{_libdir}/%{instdir} cp -p build/clx/new-clx/config.h \ %{buildroot}%{_libdir}/%{instdir}/clx/new-clx -# Fix permissions -chmod 0755 %{buildroot}%{_bindir}/%{name} -chmod 0755 %{buildroot}%{_libdir}/%{instdir}/full/lisp.run - # Fix broken symlinks in the full set pushd %{buildroot}%{_libdir}/%{instdir}/full -for obj in bogomips calls gettext readline regexi; do +for obj in calls gettext readline regexi; do rm -f ${obj}.o ln -s ../base/${obj}.o ${obj}.o done @@ -235,18 +274,22 @@ for obj in fastcgi fastcgi_wrappers; do rm -f ${obj}.o ln -s ../fastcgi/${obj}.o ${obj}.o done +for obj in cpari pari; do + rm -f ${obj}.o + ln -s ../pari/${obj}.o ${obj}.o +done rm -f bdb.o ln -s ../berkeley-db/bdb.o bdb.o rm -f clx.o ln -s ../clx/new-clx/clx.o clx.o -rm -f cpcre.o -ln -s ../pcre/cpcre.o cpcre.o rm -f dbus.o ln -s ../dbus/dbus.o dbus.o rm -f gdbm.o ln -s ../gdbm/gdbm.o gdbm.o +%if %{with gtk2} rm -f gtk.o ln -s ../gtk2/gtk.o gtk.o +%endif rm -f libsvm.o ln -s ../libsvm/libsvm.o libsvm.o rm -f linux.o @@ -263,6 +306,11 @@ popd ln -s ../../src/modules.c build/base/modules.c ln -s ../../src/modules.c build/full/modules.c +%check +make -C build check +make -C build extracheck +make -C build base-mod-check + %files -f %{name}.lang %license COPYRIGHT GNU-GPL %{_bindir}/clisp @@ -276,12 +324,14 @@ ln -s ../../src/modules.c build/full/modules.c %{_libdir}/%{instdir}/base/lisp.run %dir %{_libdir}/%{instdir}/berkeley-db/ %{_libdir}/%{instdir}/berkeley-db/*.fas +%{_libdir}/%{instdir}/berkeley-db/preload.lisp %dir %{_libdir}/%{instdir}/bindings/ %dir %{_libdir}/%{instdir}/bindings/glibc/ %{_libdir}/%{instdir}/bindings/glibc/*.fas %dir %{_libdir}/%{instdir}/clx/ %dir %{_libdir}/%{instdir}/clx/new-clx/ %{_libdir}/%{instdir}/clx/new-clx/*.fas +%{_libdir}/%{instdir}/clx/new-clx/clx-preload.lisp %{_libdir}/%{instdir}/data/ %dir %{_libdir}/%{instdir}/dbus/ %{_libdir}/%{instdir}/dbus/*.fas @@ -293,22 +343,27 @@ ln -s ../../src/modules.c build/full/modules.c %{_libdir}/%{instdir}/full/lisp.run %dir %{_libdir}/%{instdir}/gdbm/ %{_libdir}/%{instdir}/gdbm/*.fas +%{_libdir}/%{instdir}/gdbm/preload.lisp +%if %{with gtk2} %dir %{_libdir}/%{instdir}/gtk2/ %{_libdir}/%{instdir}/gtk2/*.fas +%{_libdir}/%{instdir}/gtk2/preload.lisp +%endif %dir %{_libdir}/%{instdir}/libsvm/ %{_libdir}/%{instdir}/libsvm/*.fas +%{_libdir}/%{instdir}/libsvm/preload.lisp %dir %{_libdir}/%{instdir}/pari/ %{_libdir}/%{instdir}/pari/*.fas -%dir %{_libdir}/%{instdir}/pcre/ -%{_libdir}/%{instdir}/pcre/*.fas +%{_libdir}/%{instdir}/pari/preload.lisp %dir %{_libdir}/%{instdir}/postgresql/ %{_libdir}/%{instdir}/postgresql/*.fas %dir %{_libdir}/%{instdir}/rawsock/ %{_libdir}/%{instdir}/rawsock/*.fas +%{_libdir}/%{instdir}/rawsock/preload.lisp %dir %{_libdir}/%{instdir}/zlib/ %{_libdir}/%{instdir}/zlib/*.fas -%{_datadir}/emacs/site-lisp/* -%{_datadir}/vim/vimfiles/after/syntax/* +%{_emacs_sitelispdir}/* +%{vimfiles_root}/after/syntax/* %files devel %doc modules/clx/clx-manual @@ -323,7 +378,7 @@ ln -s ../../src/modules.c build/full/modules.c %{_libdir}/%{instdir}/base/makevars %{_libdir}/%{instdir}/berkeley-db/Makefile %{_libdir}/%{instdir}/berkeley-db/*.h -%{_libdir}/%{instdir}/berkeley-db/*.lisp +%{_libdir}/%{instdir}/berkeley-db/dbi.lisp %{_libdir}/%{instdir}/berkeley-db/*.o %{_libdir}/%{instdir}/berkeley-db/*.sh %{_libdir}/%{instdir}/bindings/glibc/Makefile @@ -335,7 +390,9 @@ ln -s ../../src/modules.c build/full/modules.c %{_libdir}/%{instdir}/clx/new-clx/README %{_libdir}/%{instdir}/clx/new-clx/Makefile %{_libdir}/%{instdir}/clx/new-clx/*.h -%{_libdir}/%{instdir}/clx/new-clx/*.lisp +%{_libdir}/%{instdir}/clx/new-clx/clx.lisp +%{_libdir}/%{instdir}/clx/new-clx/image.lisp +%{_libdir}/%{instdir}/clx/new-clx/resource.lisp %{_libdir}/%{instdir}/clx/new-clx/*.o %{_libdir}/%{instdir}/clx/new-clx/*.sh %{_libdir}/%{instdir}/config.h @@ -356,34 +413,32 @@ ln -s ../../src/modules.c build/full/modules.c %{_libdir}/%{instdir}/full/makevars %{_libdir}/%{instdir}/gdbm/Makefile %{_libdir}/%{instdir}/gdbm/*.h -%{_libdir}/%{instdir}/gdbm/*.lisp +%{_libdir}/%{instdir}/gdbm/gdbm.lisp %{_libdir}/%{instdir}/gdbm/*.o %{_libdir}/%{instdir}/gdbm/*.sh +%if %{with gtk2} %{_libdir}/%{instdir}/gtk2/Makefile %{_libdir}/%{instdir}/gtk2/*.cfg %{_libdir}/%{instdir}/gtk2/*.glade %{_libdir}/%{instdir}/gtk2/*.h -%{_libdir}/%{instdir}/gtk2/*.lisp +%{_libdir}/%{instdir}/gtk2/gtk.lisp %{_libdir}/%{instdir}/gtk2/*.o %{_libdir}/%{instdir}/gtk2/*.sh +%endif %{_libdir}/%{instdir}/libsvm/README %{_libdir}/%{instdir}/libsvm/Makefile %{_libdir}/%{instdir}/libsvm/*.h -%{_libdir}/%{instdir}/libsvm/*.lisp +%{_libdir}/%{instdir}/libsvm/libsvm.lisp %{_libdir}/%{instdir}/libsvm/*.o %{_libdir}/%{instdir}/libsvm/*.sh %{_libdir}/%{instdir}/linkkit/ %{_libdir}/%{instdir}/pari/README %{_libdir}/%{instdir}/pari/Makefile %{_libdir}/%{instdir}/pari/*.h -%{_libdir}/%{instdir}/pari/*.lisp +%{_libdir}/%{instdir}/pari/desc2lisp.lisp +%{_libdir}/%{instdir}/pari/pari.lisp %{_libdir}/%{instdir}/pari/*.o %{_libdir}/%{instdir}/pari/*.sh -%{_libdir}/%{instdir}/pcre/Makefile -%{_libdir}/%{instdir}/pcre/*.h -%{_libdir}/%{instdir}/pcre/*.lisp -%{_libdir}/%{instdir}/pcre/*.o -%{_libdir}/%{instdir}/pcre/*.sh %{_libdir}/%{instdir}/postgresql/README %{_libdir}/%{instdir}/postgresql/Makefile %{_libdir}/%{instdir}/postgresql/*.h @@ -393,7 +448,7 @@ ln -s ../../src/modules.c build/full/modules.c %{_libdir}/%{instdir}/rawsock/demos/ %{_libdir}/%{instdir}/rawsock/Makefile %{_libdir}/%{instdir}/rawsock/*.h -%{_libdir}/%{instdir}/rawsock/*.lisp +%{_libdir}/%{instdir}/rawsock/sock.lisp %{_libdir}/%{instdir}/rawsock/*.o %{_libdir}/%{instdir}/rawsock/*.sh %{_libdir}/%{instdir}/zlib/Makefile @@ -405,6 +460,154 @@ ln -s ../../src/modules.c build/full/modules.c %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 2.49.95-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Mon Jun 02 2025 Jerry James - 2.49.95-4 +- Update to latest git snapshot +- Drop one upstreamed patch to fix undefined behavior + +* Fri Feb 14 2025 Jerry James - 2.49.95-3 +- Add patches to fix more undefined behavior +- Fix misaligned memory accesses on ppc64le +- Fix mismatched readline function declarations + +* Fri Feb 7 2025 Jerry James - 2.49.95-3 +- Add patch to fix undefined behavior (rhbz#2339979) +- Add two patches to fix memory leaks +- Do not force -O1 + +* Thu Jan 16 2025 Fedora Release Engineering - 2.49.95-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Mon Jan 13 2025 Jerry James - 2.49.95-2 +- Update to latest git snapshot +- Move configuration steps to %%conf + +* Mon Nov 25 2024 Jerry James - 2.49.95-1 +- Version 2.49.95 +- Drop upstreamed patches: db, c99, bdb-mismatched-pointer, new-clx, pari + +* Sat Oct 5 2024 Jerry James - 2.49.93-40 +- Rebuild for pari 2.17.0 + +* Tue Sep 3 2024 Jerry James - 2.49.93-39 +- Update to latest git snapshot +- Add patch to fix FTBFS in the new-clx code +- Add patch to avoid calling the deprecated siginterrupt function +- Add VCS field +- Setting LC_ALL is no longer necessary + +* Wed Jul 17 2024 Fedora Release Engineering - 2.49.93-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jan 24 2024 Fedora Release Engineering - 2.49.93-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 2.49.93-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Dec 1 2023 Jerry James - 2.49.93-35 +- Fix a mismatched pointer type error with GCC 14 + +* Wed Aug 16 2023 Jerry James - 2.49.93-34 +- Build without pcre support (rhbz#2128278) + +* Wed Jul 19 2023 Fedora Release Engineering - 2.49.93-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jul 18 2023 Jerry James - 2.49.93-32 +- Update to fix message typos + +* Mon May 08 2023 Florian Weimer - 2.49.93-31 +- Port to C99 + +* Tue Apr 4 2023 Jerry James - 2.49.93-30 +- Update to allow non-simple strings in FORMAT and FORMATTER +- Drop upstreamed ensure-6x patch +- Disable gtk2 support for RHEL 10 (thanks to Yaakov Selkowitz) + +* Thu Jan 19 2023 Fedora Release Engineering - 2.49.93-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Jan 10 2023 Jerry James - 2.49.93-29 +- Update to latest git snapshot for buffer overflow fix +- Drop upstreamed pari patch + +* Mon Sep 19 2022 Jerry James - 2.49.93-28 +- Rebuild for pari 2.15.0 + +* Thu Aug 18 2022 Jerry James - 2.49.93-27 +- Rebuild for libsvm 3.3 + +* Mon Aug 15 2022 Jerry James - 2.49.93-26 +- Convert License tag to SPDX + +* Wed Aug 10 2022 Jerry James - 2.49.93-26 +- Move preload.lisp files to the main package + +* Mon Aug 8 2022 Jerry James - 2.49.93-25 +- Add -ensure-6x patch (rhbz#2115476) + +* Wed Jul 20 2022 Fedora Release Engineering - 2.49.93-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jul 18 2022 Jerry James - 2.49.93-23 +- Reduce the impact of the -no-inline patch + +* Thu Feb 3 2022 Jerry James - 2.49.93-23 +- Add -no-inline patch to workaround bz 2049371 (ppc64le segfault) + +* Fri Jan 28 2022 Jerry James - 2.49.93-23 +- Add -pts-access patch to fix FTBFS + +* Wed Jan 19 2022 Fedora Release Engineering - 2.49.93-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 2.49.93-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jul 16 2021 Jerry James - 2.49.93-21.20210628gitde01f0f +- Update to latest git snapshot for autoconf + glib updates +- Drop upstreamed -setkey patch +- Use forge macros +- Use default HyperSpec URLs + +* Thu Jun 17 2021 Jerry James - 2.49.93-20.d9cbf22git +- Rebuild for ffcall 2.4 and multithreaded pari + +* Tue May 25 2021 Florian Weimer - 2.49.93-19.d9cbf22git +- Rebuild with new binutils to fix ppc64le corruption (#1960730) + +* Tue Mar 23 2021 Jerry James - 2.49.93-18.d9cbf22git +- Update to latest git snapshot for autoconf + glib updates +- Fix broken symlinks in the full set + +* Mon Feb 08 2021 Pavel Raiskup - 2.49.93-17.a9aeb80git +- rebuild for libpq ABI fix rhbz#1908268 + +* Tue Jan 26 2021 Fedora Release Engineering - 2.49.93-16.a9aeb80git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Nov 9 2020 Jerry James - 2.49.93-15.a9aeb80git +- Update to latest git snapshot for more HyperSpec fixes + +* Sat Aug 01 2020 Fedora Release Engineering - 2.49.93-14.c26de78git +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Jeff Law - 2.49.93-13.c26de78git +- Disable LTO + +* Mon Jul 27 2020 Fedora Release Engineering - 2.49.93-12.c26de78git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jan 28 2020 Fedora Release Engineering - 2.49.93-11.c26de78git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Dec 17 2019 Jerry James - 2.49.93-10.c26de78git +- Update to latest git snapshot for HyperSpec fixes + * Mon Aug 26 2019 Jerry James - 2.49.93-9.dd40369git - Update to latest git snapshot for bug fixes - Add latest German translation diff --git a/sources b/sources index c49bdf0..43b7795 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (clisp-dd40369.tar.gz) = 92b897363e3cefd5669fc6eb42f6359f4495fcbb93ca492a17a64dd1deba144aeda625d240917c7b467cfbf464503c0bb9f2d157dbccf12a3346b98b0a24c3e2 +SHA512 (clisp-f66220939ea7d36fd085384afa4a0ec44597d499.tar.bz2) = 16d6ccba500d60fe36c20b5bd1d6c9403567996020cef406e42813a302a86d94dc0d5e36aae434b5b846d39ec37d6db2b50565a69d24291b973724bcc0874bd0