summaryrefslogtreecommitdiff
path: root/dev-lisp/clisp
diff options
context:
space:
mode:
Diffstat (limited to 'dev-lisp/clisp')
-rw-r--r--dev-lisp/clisp/Manifest2
-rw-r--r--dev-lisp/clisp/clisp-2.49.92-r2.ebuild193
-rw-r--r--dev-lisp/clisp/files/clisp-2.49.92-gdbm_and_bdb5.3.patch105
3 files changed, 300 insertions, 0 deletions
diff --git a/dev-lisp/clisp/Manifest b/dev-lisp/clisp/Manifest
index 78c96f1e4e5c..24013ff45c74 100644
--- a/dev-lisp/clisp/Manifest
+++ b/dev-lisp/clisp/Manifest
@@ -1,4 +1,6 @@
AUX clisp-2.49.92-after_glibc_cfree_bdb.patch 8499 BLAKE2B d093b76cdf25b0822aaca87bd6055c6b58edc68e387d78d7fd979171d881fe585b674246b3a2a6f37a8412b5aef1b997210b4019a1595a07b64471cb9324656f SHA512 1b8cb29bf9caa30ca05474a67202f72f013e57d6b0d2dff1fb5ab0472df9f5c5a5b5de46922c931fa9a4d4a0a25890a05e1f7d38ddfb56c967026eef80001919
+AUX clisp-2.49.92-gdbm_and_bdb5.3.patch 4492 BLAKE2B e590a72838a15fc72ec621058fb4a2b80070f2ed89110e7f0232052b630c1d3d5d356277ba3c476ce9bb8ed6279f5c05187bf5f28ec5efbfae05bb7fc2c5dcc9 SHA512 604f03d234eff2a575e0a0eaaf235911c8c9e1d8b8ba843ddc263c0a8b3297d66017c3f672b3710a9ff59a9904f7f2b8d3bcf1a39d1d4ac752c12fa027fce7d7
DIST clisp-2.49.92.tar.bz2 9055207 BLAKE2B 6cf331eb9f99f62579e35469e2d01cae066083592ccc71cf483b70b4d1be349cdee9d403e0a7ed1ad1c8c5d805c1dab51c1a5031d77469ff8c4dc52eb58913df SHA512 cc9412a7b3f21c85b040bf5e660380fafb3c2374765a1c00272feb3f7838f2161e27a5d6295cef9976f0c4522f10796cf5ee5447716090d1cc69ecfe598ef306
EBUILD clisp-2.49.92-r1.ebuild 4120 BLAKE2B 4c5c561486a39e75eafa4e888c0163a78bd2c9200a2c9d56b561052b574eed90f5ffbe6a18c7e3316a60bcd446c8e933f0675fe60abbb19bb8e7c14890e17cf7 SHA512 106014a3f803f9c1ed88cc80c265c56a1922f9f9d2cb8d25c596e87f617b88348fa85dffd970e80b74ba3ad651fc5bc019cd4a6c0c036e9cd450fc243ab16f5e
+EBUILD clisp-2.49.92-r2.ebuild 4640 BLAKE2B d21f60d71b82fee6656b1b0b72146ff7c43e13c6036ddbf80f224ad0ffa42e39a1cc3481fa1de5cbb3b6e9214fe13885c06609db9a421aa3dd2e225025aba7a5 SHA512 7dc8867b87a9302a8e7492b79287501ea94077d7160ebf09d8cee43e4e4b7027cdde3c62dfae129d58d654da75270399fed1bced9a8a090ad8afc02cab30d344
MISC metadata.xml 1308 BLAKE2B 02dbccbb3e24ce041a0e2823ce2e815931d23c899d38d4196ace33ebe17d7f84604437b3fb40916c79d0fe58e1acda1fad27743df542e37e6b2bbbad694f185b SHA512 47baf028f20c851e2bd8d0e384c34e2961581221a308f969961b3148f6718255bcc9138fb8475ad6ffc1073aeb33bd05a8b89d3259da8ac7eb027147279c9bb6
diff --git a/dev-lisp/clisp/clisp-2.49.92-r2.ebuild b/dev-lisp/clisp/clisp-2.49.92-r2.ebuild
new file mode 100644
index 000000000000..167263a375bf
--- /dev/null
+++ b/dev-lisp/clisp/clisp-2.49.92-r2.ebuild
@@ -0,0 +1,193 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit edo flag-o-matic toolchain-funcs xdg-utils
+
+DESCRIPTION="Portable, bytecode-compiled implementation of Common Lisp"
+HOMEPAGE="https://clisp.sourceforge.io/"
+SRC_URI="mirror://gentoo/${P}.tar.bz2"
+
+LICENSE="GPL-2+"
+SLOT="2/8"
+KEYWORDS="~alpha ~amd64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+# "jit" disabled ATM
+IUSE="hyperspec X berkdb dbus fastcgi gdbm gtk +pcre postgres +readline svm threads +unicode +zlib"
+# Needs work still
+RESTRICT="test"
+
+RDEPEND="
+ >=dev-lisp/asdf-2.33-r3
+ >=dev-libs/libsigsegv-2.10
+ >=dev-libs/ffcall-1.10
+ virtual/libcrypt:=
+ virtual/libiconv
+ dbus? ( sys-apps/dbus )
+ fastcgi? ( dev-libs/fcgi )
+ gdbm? ( sys-libs/gdbm:= )
+ gtk? (
+ >=gnome-base/libglade-2.6
+ >=x11-libs/gtk+-2.10:2
+ )
+ postgres? ( >=dev-db/postgresql-8.0:* )
+ readline? ( >=sys-libs/readline-7.0:= )
+ pcre? ( dev-libs/libpcre:3 )
+ svm? ( sci-libs/libsvm )
+ zlib? ( sys-libs/zlib )
+ X? ( x11-libs/libXpm )
+ hyperspec? ( dev-lisp/hyperspec )
+ berkdb? ( sys-libs/db:5.3 )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+"
+BDEPEND="X? ( x11-misc/imake )"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-after_glibc_cfree_bdb.patch
+ "${FILESDIR}"/${P}-gdbm_and_bdb5.3.patch
+)
+
+BUILDDIR="builddir"
+
+enable_modules() {
+ [[ $# = 0 ]] && die "${FUNCNAME[0]} must receive at least one argument"
+
+ local m
+ for m in "$@" ; do
+ einfo "Enabling module ${m}"
+ myconf+=( --with-module=${m} )
+ done
+}
+
+src_prepare() {
+ default
+
+ # More than -O1 breaks alpha
+ if use alpha; then
+ sed -i -e 's/-O2//g' src/makemake.in || die
+ fi
+
+ xdg_environment_reset
+}
+
+src_configure() {
+ # Not local so enable_modules() can use it
+ myconf=(
+ --prefix="${EPREFIX}"/usr
+ --libdir="${EPREFIX}"/usr/$(get_libdir)
+ --enable-portability
+ $(use_with readline)
+ $(use_with unicode)
+ --hyperspec=${CLHSROOT}
+ )
+
+ # Temporary workaround for bug #932564 with GCC 15
+ # This can be dropped with a new release.
+ strip-flags
+ tc-is-gcc && {
+ append-flags -fno-tree-dce -fno-tree-dse -fno-tree-pta
+ }
+
+ # -Werror=lto-type-mismatch
+ # https://bugs.gentoo.org/856103
+ # https://gitlab.com/gnu-clisp/clisp/-/issues/49
+ filter-lto
+
+ if use alpha; then
+ # We need this to build on alpha
+ replace-flags -O? -O1
+ elif use x86; then
+ # bug #585182
+ append-flags -falign-functions=4
+ fi
+
+ # built-in features
+ myconf+=(
+ --with-ffcall
+ --without-dynamic-modules
+ )
+
+ # There's a problem with jit_allocai function
+ #if use jit; then
+ # myconf+=" --with-jitc=lightning"
+ #fi
+
+ if use threads; then
+ myconf+=( --with-threads=POSIX_THREADS )
+ fi
+
+ # modules not enabled:
+ # * berkdb: must figure out a way to make the configure script pick up the
+ # currect version of the library and headers
+ # * dirkey: fails to compile, requiring windows.h, possibly wrong #ifdefs
+ # * matlab, netica: not in portage
+ # * oracle: can't install oracle-instantclient
+ #
+ # default modules
+ enable_modules rawsock
+ # optional modules
+ use elibc_glibc && enable_modules bindings/glibc
+ use X && enable_modules clx/new-clx
+ if use postgres; then
+ enable_modules postgresql
+ append-cppflags -I$(pg_config --includedir)
+ fi
+ if use berkdb; then
+ enable_modules berkeley-db
+ append-cppflags -I"${EPREFIX}"/usr/include/db5.3
+ fi
+ use dbus && enable_modules dbus
+ use fastcgi && enable_modules fastcgi
+ use gdbm && enable_modules gdbm
+ use gtk && enable_modules gtk2
+ use pcre && enable_modules pcre
+ use svm && enable_modules libsvm
+ use zlib && enable_modules zlib
+
+ if use hyperspec; then
+ CLHSROOT="file://${EPREFIX}/usr/share/hyperspec/HyperSpec/"
+ else
+ CLHSROOT="http://www.lispworks.com/reference/HyperSpec/"
+ fi
+
+ myconf+=(
+ --config
+ CC="$(tc-getCC)"
+ CFLAGS="${CFLAGS}"
+ LDFLAGS="${LDFLAGS}"
+ )
+
+ # configure chokes on --sysconfdir option
+ edo ./configure "${myconf[@]}" ${BUILDDIR}
+
+ IMPNOTES="file://${EPREFIX}/usr/share/doc/${PN}-${PVR}/html/impnotes.html"
+ sed -i "s,http://clisp.cons.org/impnotes/,${IMPNOTES},g" \
+ "${BUILDDIR}"/config.lisp || die "Cannot fix link to implementation notes"
+}
+
+src_compile() {
+ export VARTEXFONTS="${T}"/fonts
+ # parallel build fails
+ emake -C "${BUILDDIR}" -j1
+}
+
+src_test() {
+ emake -C "${BUILDDIR}" -j1 check
+ # Test non-portable features and modules
+ emake -C "${BUILDDIR}" -j1 extracheck mod-check
+}
+
+src_install() {
+ pushd "${BUILDDIR}" || die
+ emake -j1 DESTDIR="${D}" prefix="${EPREFIX}"/usr install-bin
+ doman clisp.1
+ dodoc ../SUMMARY README* ../src/NEWS ../unix/MAGIC.add ../ANNOUNCE
+ popd || die
+
+ dodoc doc/{CLOS-guide,LISP-tutorial}.txt
+ docinto html
+ dodoc doc/impnotes.{css,html} doc/regexp.html doc/clisp.png
+}
diff --git a/dev-lisp/clisp/files/clisp-2.49.92-gdbm_and_bdb5.3.patch b/dev-lisp/clisp/files/clisp-2.49.92-gdbm_and_bdb5.3.patch
new file mode 100644
index 000000000000..360b5b269aac
--- /dev/null
+++ b/dev-lisp/clisp/files/clisp-2.49.92-gdbm_and_bdb5.3.patch
@@ -0,0 +1,105 @@
+cherry picked from:
+i
+https://gitlab.com/gnu-clisp/clisp/-/commit/fe98f04798677f3b85f24e1a3d267e926ca031cc
+https://gitlab.com/gnu-clisp/clisp/-/commit/14017a35e2c1dc02b18f09b6d079eeb441bb9b92
+https://gitlab.com/gnu-clisp/clisp/-/commit/50120fab20ac508852938ebe7cd73dc09d5a50a1
+
+diff --git a/modules/berkeley-db/bdb.c b/modules/berkeley-db/bdb.c
+index 1efa285..86d9645 100644
+--- a/modules/berkeley-db/bdb.c
++++ b/modules/berkeley-db/bdb.c
+@@ -2758,8 +2758,8 @@ DEFUN(BDB:TXN-RECOVER, dbe &key FIRST :NEXT)
+ DB_ENV *dbe = (DB_ENV*)bdb_handle(popSTACK(),`BDB::DBE`,BH_VALID);
+ u_int32_t tx_max;
+ DB_PREPLIST *preplist;
+- int status, ii;
+- u_int32_t retnum;
++ int status;
++ long ii, retnum;
+ SYSCALL(dbe->get_tx_max,(dbe,&tx_max));
+ preplist = (DB_PREPLIST*)clisp_malloc(tx_max * sizeof(DB_PREPLIST));
+ begin_blocking_system_call();
+diff --git a/modules/berkeley-db/configure b/modules/berkeley-db/configure
+index 8a4cf06..c0f1346 100755
+--- a/modules/berkeley-db/configure
++++ b/modules/berkeley-db/configure
+@@ -5712,7 +5712,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ int
+ main ()
+ {
+-DB db; db.stat(&db,NULL,0,NULL);
++DB *db; db_create(&db,NULL,0); db->stat(db,NULL,NULL,0);
+ ;
+ return 0;
+ }
+@@ -5747,7 +5747,7 @@ void my_callback (const DB_ENV* dbe, const char *errpfx, const char *msg) {}
+ int
+ main ()
+ {
+-DB_ENV dbe; dbe.set_errcall(&dbe,&my_callback);
++DB_ENV *dbe; db_env_create(&dbe,0); dbe->set_errcall(dbe,&my_callback);
+ ;
+ return 0;
+ }
+@@ -5780,7 +5780,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ int
+ main ()
+ {
+-DB db; db.get_transactional(&db);
++DB *db; db_create(&db,NULL,0); db->get_transactional(db);
+ ;
+ return 0;
+ }
+diff --git a/modules/berkeley-db/configure.in b/modules/berkeley-db/configure.in
+index 623d633..475251a 100644
+--- a/modules/berkeley-db/configure.in
++++ b/modules/berkeley-db/configure.in
+@@ -38,7 +38,7 @@ AC_CHECK_SIZEOF(db_recno_t,,[#include <stdio.h>
+ dnl <http://www.sleepycat.com/docs/ref/upgrade.4.3/stat.html>
+ AC_CACHE_CHECK([whether DB->stat() accepts TXNid],ac_cv_db_stat_accept_txn,[
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <db.h>],
+-[[DB db; db.stat(&db,NULL,0,NULL);]])],
++[[DB *db; db_create(&db,NULL,0); db->stat(db,NULL,NULL,0);]])],
+ ac_cv_db_stat_accept_txn=yes,ac_cv_db_stat_accept_txn=no)])
+ if test "$ac_cv_db_stat_accept_txn" = "yes"; then
+ AC_DEFINE(HAVE_DB_STAT_ACCEPT_TXN,1,[Define to 1 if DB->stat() accepts TXNid])
+@@ -51,7 +51,7 @@ CFLAGS_save="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror"
+ 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);]])],
++[[DB_ENV *dbe; db_create(&db,NULL,0); dbe->set_errcall(&dbe,&my_callback);]])],
+ ac_cv_dbe_set_errcall_accept_dbe=yes,ac_cv_dbe_set_errcall_accept_dbe=no)
+ CFLAGS=$CFLAGS_save])
+ if test "$ac_cv_dbe_set_errcall_accept_dbe" = "yes"; then
+@@ -63,7 +63,7 @@ dnl unannounced!
+ AC_CACHE_CHECK([whether DB->get_transactional() accepts just 1 argument],
+ ac_cv_db_get_transactional_1arg,[
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <db.h>],
+-[[DB db; db.get_transactional(&db);]])],
++[[DB *db; db_create(&db,NULL,0); db->get_transactional(db);]])],
+ ac_cv_db_get_transactional_1arg=yes,ac_cv_db_get_transactional_1arg=no)])
+ if test "$ac_cv_db_get_transactional_1arg" = "yes"; then
+ AC_DEFINE(HAVE_DB_GET_TRANSACTIONAL_1ARG,1,
+diff --git a/modules/gdbm/gdbm.c b/modules/gdbm/gdbm.c
+index a42706e..d81d7e3 100644
+--- a/modules/gdbm/gdbm.c
++++ b/modules/gdbm/gdbm.c
+@@ -66,7 +66,7 @@ DEFCHECKER(check_gdbm_errno, prefix=GDBM, NO-ERROR MALLOC-ERROR \
+ READER-CANT-REORGANIZE UNKNOWN-UPDATE ITEM-NOT-FOUND \
+ REORGANIZE-FAILED CANNOT-REPLACE ILLEGAL-DATA OPT-ALREADY-SET \
+ OPT-ILLEGAL)
+-static _Noreturn void error_gdbm (char *fatal_message) {
++static _Noreturn void error_gdbm (const char *fatal_message) {
+ end_blocking_system_call(); /* in case we are called from _gdbm_fatal() */
+ pushSTACK(`GDBM::GDBM-ERROR`);
+ pushSTACK(`:MESSAGE`);
+@@ -126,7 +126,7 @@ static object open_gdbm (object path, int bsize, int rw, int mode) {
+ GDBM_FILE gdbm;
+ with_string_0(path, GLO(pathname_encoding), name, {
+ SYSCALL(gdbm = gdbm_open(name, bsize, rw, mode,
+- (void (*)(void))error_gdbm));
++ error_gdbm));
+ });
+ if (gdbm == NULL) error_gdbm(NULL);
+ return allocate_fpointer(gdbm);