lol
1{ stdenv, fetchurl, libsigsegv, gettext, ncurses, readline, libX11
2, libXau, libXt, pcre, zlib, libXpm, xproto, libXext, xextproto
3, libffi, libffcall, coreutils}:
4
5stdenv.mkDerivation rec {
6 v = "2.49";
7 name = "clisp-${v}";
8
9 src = fetchurl {
10 url = "mirror://gnu/clisp/release/${v}/${name}.tar.bz2";
11 sha256 = "8132ff353afaa70e6b19367a25ae3d5a43627279c25647c220641fed00f8e890";
12 };
13
14 inherit libsigsegv gettext coreutils;
15
16 buildInputs =
17 [ libsigsegv gettext ncurses readline libX11 libXau
18 libXt pcre zlib libXpm xproto libXext xextproto libffi
19 libffcall
20 ];
21
22 patches = [ ./bits_ipctypes_to_sys_ipc.patch ]; # from Gentoo
23
24 # First, replace port 9090 (rather low, can be used)
25 # with 64237 (much higher, IANA private area, not
26 # anything rememberable).
27 # Also remove reference to a type that disappeared from recent glibc
28 # (seems the correct thing to do, found no reference to any solution)
29 postPatch = ''
30 sed -e 's@9090@64237@g' -i tests/socket.tst
31 sed -i 's@/bin/pwd@${coreutils}&@' src/clisp-link.in
32 find . -type f | xargs sed -e 's/-lICE/-lXau &/' -i
33
34 substituteInPlace modules/bindings/glibc/linux.lisp --replace "(def-c-type __swblk_t)" ""
35 '';
36
37 configureFlags =
38 ''
39 --with-readline builddir --with-dynamic-ffi --with-ffcall
40 --with-module=clx/new-clx --with-module=i18n --with-module=bindings/glibc
41 --with-module=pcre --with-module=rawsock --with-module=readline
42 --with-module=syscalls --with-module=wildcard --with-module=zlib
43 --with-threads=POSIX_THREADS
44 '';
45
46 preBuild = ''
47 sed -e '/avcall.h/a\#include "config.h"' -i src/foreign.d
48 cd builddir
49 '';
50
51 postInstall = ''
52 ./clisp-link add "$out"/lib/clisp*/base "$(dirname "$out"/lib/clisp*/base)"/full \
53 clx/new-clx bindings/glibc pcre rawsock wildcard zlib
54 '';
55
56 NIX_CFLAGS_COMPILE="-O0";
57
58 # TODO : make mod-check fails
59 doCheck = false;
60
61 meta = {
62 description = "ANSI Common Lisp Implementation";
63 homepage = http://clisp.cons.org;
64 maintainers = [stdenv.lib.maintainers.raskin];
65 platforms = stdenv.lib.platforms.linux;
66 };
67}
68