Update to latest git snapshot for autoconf + glib updates.

- Drop upstreamed -setkey patch.
- Use forge macros.
- Use default HyperSpec URLs.
This commit is contained in:
Jerry James 2021-07-16 21:24:30 -06:00
parent 94e796d993
commit 7cecc3c028
7 changed files with 208 additions and 84 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/clisp-*.tar.?z
/clisp-*.tar.bz2

136
clhs.el Normal file
View File

@ -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 <sds@gnu.org>
;;; 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/<map> file instead.
;;; Copyright (C) 2002-2008, 2017, 2019, 2021 Sam Steingold <sds@gnu.org>
;;; Keywords: lisp, common lisp, emacs, ANSI CL, hyperspec
;;; released under the GNU GPL <https://www.gnu.org/copyleft/gpl.html>
;;; as a part of GNU CLISP <https://www.clisp.org>
;;; 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

View File

@ -1,5 +1,16 @@
--- 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
--- 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 <db.h>
--- 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 <http://www.sleepycat.com/docs/ref/u
AC_CACHE_CHECK([whether DB_ENV->set_errcall() accepts DBE],
ac_cv_dbe_set_errcall_accept_dbe,[
@ -9,14 +20,3 @@
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <db.h>
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 <db.h>

View File

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

11
clisp-test.patch Normal file
View File

@ -0,0 +1,11 @@
--- tests/streams.tst.orig 2021-06-28 14:32:42.000000000 -0600
+++ tests/streams.tst 2021-07-16 16:59:50.530422810 -0600
@@ -1290,7 +1290,7 @@ 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" "HP-UX" "Minix" "Windows") :test #'equal) 'ERROR 'T)
+#.(if (member (ext:operating-system-type) '("AIX" "Haiku" "HP-UX" "Linux" "Minix" "Windows") :test #'equal) 'ERROR 'T)
#+clisp
(progn

View File

@ -1,5 +1,8 @@
%global commit d9cbf22d18680f9b9c84579be6bc363e4bd1090c
%global shortcommit %(c=%{commit}; echo ${c:0:7})
# Upstream has not made a new release since 2010
%global srcname clisp
%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
%global instdir %{name}-%{version}+
@ -7,20 +10,24 @@
Name: clisp
Summary: ANSI Common Lisp implementation
Version: 2.49.93
Release: 20.%{shortcommit}git%{?dist}
%forgemeta
Release: 21%{?dist}
License: GPLv2+
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
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
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/
Patch1: %{name}-format.patch
# The encrypt and setkey functions are no longer available from glibc
Patch2: %{name}-setkey.patch
# Work around for a test that fails with permission denied
Patch2: %{name}-test.patch
# Adapt to changes in pari 2.11.0
Patch3: %{name}-pari.patch
# The combination of register and volatile is nonsensical
@ -97,18 +104,10 @@ Files necessary for linking CLISP programs.
%prep
%autosetup -p0 -n %{name}-%{commit}-%{commit}
# 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
%forgesetup
%autopatch -p0
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
@ -118,6 +117,9 @@ 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
# 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
@ -126,9 +128,6 @@ 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
@ -150,7 +149,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 \
@ -167,12 +165,18 @@ export LC_ALL=C.UTF-8
--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"
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
make -C build DESTDIR=%{buildroot} install
cp -a build/full %{buildroot}%{_libdir}/%{instdir}
@ -192,13 +196,12 @@ pushd %{buildroot}%{_datadir}/emacs/site-lisp
%{_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}," \
@ -220,10 +223,6 @@ 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 calls gettext readline regexi; do
@ -270,6 +269,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
@ -412,6 +416,12 @@ ln -s ../../src/modules.c build/full/modules.c
%changelog
* Fri Jul 16 2021 Jerry James <loganjerry@gmail.com> - 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 <loganjerry@gmail.com> - 2.49.93-20.d9cbf22git
- Rebuild for ffcall 2.4 and multithreaded pari

View File

@ -1 +1 @@
SHA512 (clisp-d9cbf22.tar.gz) = 80260a22f999c5af26bfec5a69fce1dfd639855feb18e079fea80b8e43cb2dae2ad5ed75db9031e9452470e7b741c3a7868c2aee15dfd716a710d9938f4978d0
SHA512 (clisp-de01f0f47bb44d3a0f9e842464cf2520b238f356.tar.bz2) = d135248d22233194c0cb087053c02b72bd24c0bb2c6b23f6ff9a931ef7b09446a55f061626bfa5da55531a11665c615dae0c2a651df5114a019c5188b67e8b5a