diff --git a/clisp-db.patch b/clisp-db.patch new file mode 100644 index 0000000..aced4e2 --- /dev/null +++ b/clisp-db.patch @@ -0,0 +1,22 @@ +--- modules/berkeley-db/configure.orig 2021-06-28 14:32:42.000000000 -0600 ++++ modules/berkeley-db/configure 2021-07-16 15:35:19.789568797 -0600 +@@ -6376,7 +6376,7 @@ then : + else $as_nop + + CFLAGS_save="$CFLAGS" +-CFLAGS="$CFLAGS -Werror" ++CFLAGS="$CFLAGS -Wno-uninitialized -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include +--- modules/berkeley-db/configure.in.orig 2021-06-28 14:32:42.000000000 -0600 ++++ modules/berkeley-db/configure.in 2021-07-16 15:35:19.786568792 -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);]])], diff --git a/clisp-encoding-leak.patch b/clisp-encoding-leak.patch deleted file mode 100644 index f2b939a..0000000 --- a/clisp-encoding-leak.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- 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-ensure-6x.patch b/clisp-ensure-6x.patch new file mode 100644 index 0000000..5c9207d --- /dev/null +++ b/clisp-ensure-6x.patch @@ -0,0 +1,11 @@ +--- modules/syscalls/calls.c.orig 2021-06-28 14:32:42.000000000 -0600 ++++ modules/syscalls/calls.c 2022-08-04 13:21:10.461997402 -0600 +@@ -677,7 +677,7 @@ DEFUN(OS:VERSION>=, string1 string2){VAL + && name[name##_bytelen-6]=='X') { \ + c_template = name; \ + } else { \ +- c_template = (char*)alloca(name##_bytelen+6); \ ++ c_template = (char*)alloca(name##_bytelen+7); \ + strcpy(c_template,name); \ + strcat(c_template,"XXXXXX"); \ + } diff --git a/clisp-iconv-close.patch b/clisp-iconv-close.patch deleted file mode 100644 index db553ad..0000000 --- a/clisp-iconv-close.patch +++ /dev/null @@ -1,38 +0,0 @@ ---- 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-pari.patch b/clisp-pari.patch new file mode 100644 index 0000000..285d73c --- /dev/null +++ b/clisp-pari.patch @@ -0,0 +1,19 @@ +--- 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 deleted file mode 100644 index b186bb5..0000000 --- a/clisp-ppc64le-alignment.patch +++ /dev/null @@ -1,18 +0,0 @@ -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 index 55d026e..15e3ee8 100644 --- a/clisp-pts-access.patch +++ b/clisp-pts-access.patch @@ -1,15 +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 +--- tests/streams.tst.orig 2021-06-28 14:32:42.000000000 -0600 ++++ tests/streams.tst 2022-01-28 14:04:45.685239619 -0700 @@ -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) +-#.(if (member (ext:operating-system-type) '("AIX" "Haiku" "HP-UX" "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) ++;;#.(if (member (ext:operating-system-type) '("AIX" "Haiku" "HP-UX" "Minix" "Windows") :test #'equal) 'ERROR 'T) #+clisp (progn diff --git a/clisp-readline.patch b/clisp-readline.patch deleted file mode 100644 index 942e67c..0000000 --- a/clisp-readline.patch +++ /dev/null @@ -1,75 +0,0 @@ ---- 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-siginterrupt.patch b/clisp-siginterrupt.patch deleted file mode 100644 index 26d0d3b..0000000 --- a/clisp-siginterrupt.patch +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 2e6b8e0..0000000 --- a/clisp-undefined-behavior-eval.patch +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index 7a9e72b..0000000 --- a/clisp-undefined-behavior-io.patch +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index 8408d13..0000000 --- a/clisp-undefined-behavior-sort.patch +++ /dev/null @@ -1,23 +0,0 @@ -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 94e352d..c68b773 100644 --- a/clisp.spec +++ b/clisp.spec @@ -1,7 +1,7 @@ # Upstream has not made a new release since 2010 %global srcname clisp -%global commit f66220939ea7d36fd085384afa4a0ec44597d499 -%global date 20250504 +%global commit de01f0f47bb44d3a0f9e842464cf2520b238f356 +%global date 20210628 %global forgeurl https://gitlab.com/gnu-clisp/clisp # There is a plus on the end for unreleased versions, not for released versions @@ -10,60 +10,41 @@ # 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.95 +Version: 2.49.93 %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} +Release: 26%{?dist} +License: GPLv2+ URL: http://www.clisp.org/ -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 Source2: http://translationproject.org/latest/clisp/sv.po Source3: http://translationproject.org/latest/clisp/de.po +# https://sourceforge.net/p/clisp/patches/35/ +Patch0: %{name}-db.patch # https://sourceforge.net/p/clisp/patches/32/ -Patch0: %{name}-format.patch +Patch1: %{name}-format.patch +# Adapt to changes in pari 2.11.0 +Patch2: %{name}-pari.patch # The combination of register and volatile is nonsensical -Patch1: %{name}-register-volatile.patch +Patch3: %{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 - +Patch4: %{name}-pts-access.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 +Patch5: %{name}-no-inline.patch +# The ENSURE_6X macro adds 6 'X' characters to a string. However, it allocates +# only 6 bytes more than the length of the string, which is not enough for the +# null terminator. See https://bugzilla.redhat.com/show_bug.cgi?id=2115476. +Patch6: %{name}-ensure-6x.patch BuildRequires: dbus-devel BuildRequires: diffutils @@ -75,17 +56,15 @@ 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 @@ -93,9 +72,9 @@ 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 @@ -106,24 +85,25 @@ 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 @@ -138,12 +118,15 @@ Files necessary for linking CLISP programs. %prep %forgesetup -%autopatch -M99 -p0 +%patch0 -p0 +%patch1 -p0 +%patch2 -p0 +%patch3 -p0 +%patch4 -p0 %ifarch %{power64} -%autopatch 100 -p0 +%patch5 -p0 %endif - -%conf +%patch6 -p0 cp -p %{SOURCE1} emacs cp -p %{SOURCE2} %{SOURCE3} src/po @@ -152,11 +135,8 @@ cp -p %{SOURCE2} %{SOURCE3} src/po cp -p src/build-aux/config.rpath config.rpath.orig sed -i -e 's/${wl}-rpath ${wl}/-L/g' src/build-aux/config.rpath -# 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 +# 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 # 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 @@ -174,6 +154,8 @@ chmod a-x modules/clx/clx-manual/html/doc-index.cgi sed -i 's/9090/9096/g' tests/socket.tst %build +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. @@ -192,11 +174,10 @@ sed -i 's/9090/9096/g' tests/socket.tst --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 \ @@ -204,9 +185,9 @@ sed -i 's/9090/9096/g' tests/socket.tst --with-ffcall \ --config \ build \ - CPPFLAGS='-I/usr/include/libsvm' \ - CFLAGS='%{build_cflags} -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. @@ -229,7 +210,7 @@ find %{buildroot}%{_libdir} -name '*.dvi' -exec rm -f {} \+ cat %{name}low.lang >> %{name}.lang # Compile the Emacs interface -pushd %{buildroot}%{_emacs_sitelispdir} +pushd %{buildroot}%{_datadir}/emacs/site-lisp %{_emacs_bytecompile} *.el popd @@ -282,14 +263,14 @@ 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 @@ -307,6 +288,7 @@ ln -s ../../src/modules.c build/base/modules.c ln -s ../../src/modules.c build/full/modules.c %check +export LC_ALL=C.UTF-8 make -C build check make -C build extracheck make -C build base-mod-check @@ -344,17 +326,18 @@ make -C build base-mod-check %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 %{_libdir}/%{instdir}/pari/preload.lisp +%dir %{_libdir}/%{instdir}/pcre/ +%{_libdir}/%{instdir}/pcre/*.fas +%{_libdir}/%{instdir}/pcre/preload.lisp %dir %{_libdir}/%{instdir}/postgresql/ %{_libdir}/%{instdir}/postgresql/*.fas %dir %{_libdir}/%{instdir}/rawsock/ @@ -362,8 +345,8 @@ make -C build base-mod-check %{_libdir}/%{instdir}/rawsock/preload.lisp %dir %{_libdir}/%{instdir}/zlib/ %{_libdir}/%{instdir}/zlib/*.fas -%{_emacs_sitelispdir}/* -%{vimfiles_root}/after/syntax/* +%{_datadir}/emacs/site-lisp/* +%{_datadir}/vim/vimfiles/after/syntax/* %files devel %doc modules/clx/clx-manual @@ -416,7 +399,6 @@ make -C build base-mod-check %{_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 @@ -424,7 +406,6 @@ make -C build base-mod-check %{_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 @@ -439,6 +420,11 @@ make -C build base-mod-check %{_libdir}/%{instdir}/pari/pari.lisp %{_libdir}/%{instdir}/pari/*.o %{_libdir}/%{instdir}/pari/*.sh +%{_libdir}/%{instdir}/pcre/Makefile +%{_libdir}/%{instdir}/pcre/*.h +%{_libdir}/%{instdir}/pcre/pcre.lisp +%{_libdir}/%{instdir}/pcre/*.o +%{_libdir}/%{instdir}/pcre/*.sh %{_libdir}/%{instdir}/postgresql/README %{_libdir}/%{instdir}/postgresql/Makefile %{_libdir}/%{instdir}/postgresql/*.h @@ -460,89 +446,6 @@ make -C build base-mod-check %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 diff --git a/sources b/sources index 43b7795..188f8e2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (clisp-f66220939ea7d36fd085384afa4a0ec44597d499.tar.bz2) = 16d6ccba500d60fe36c20b5bd1d6c9403567996020cef406e42813a302a86d94dc0d5e36aae434b5b846d39ec37d6db2b50565a69d24291b973724bcc0874bd0 +SHA512 (clisp-de01f0f47bb44d3a0f9e842464cf2520b238f356.tar.bz2) = d135248d22233194c0cb087053c02b72bd24c0bb2c6b23f6ff9a931ef7b09446a55f061626bfa5da55531a11665c615dae0c2a651df5114a019c5188b67e8b5a