+# TODO:
+# - review alpha patch
#
# Conditional build:
%bcond_with tests # run test suite `make check' (uses network, won't pass on vserver)
#
Summary: Common Lisp (ANSI CL) implementation
-Summary(pl.UTF-8): Implementacja Common Lisp (ANSI CL)
-Summary(pt_BR.UTF-8): Implementação do Common Lisp (ANSI CL)
+Summary(pl.UTF-8): Implementacja Common Lisp (ANSI CL)
+Summary(pt_BR.UTF-8): Implementação do Common Lisp (ANSI CL)
Name: clisp
-Version: 2.41
-Release: 2
+Version: 2.49
+Release: 1
License: GPL
Group: Development/Languages
-Source0: http://dl.sourceforge.net/clisp/%{name}-%{version}.tar.bz2
-# Source0-md5: 3a7a00e82ebeeb72a75a032f84c36c6c
+Source0: http://download.sourceforge.net/clisp/%{name}-%{version}.tar.bz2
+# Source0-md5: 1962b99d5e530390ec3829236d168649
Patch0: %{name}-shell.patch
Patch1: %{name}-alpha.patch
+Patch2: %{name}-glibc2.16.patch
URL: http://clisp.cons.org/
+BuildRequires: ffcall-devel
BuildRequires: gettext-devel
BuildRequires: libsigsegv >= 2.4
BuildRequires: ncurses-devel
BuildRequires: xorg-proto-xextproto-devel
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%define specflags_ppc -DNO_GENERATIONAL_GC
+%define specflags_ppc64 -DNO_GENERATIONAL_GC
+
%description
Common Lisp is a high-level, all-purpose programming language. CLISP
is a Common Lisp implementation by Bruno Haible of Karlsruhe
%setup -q
%patch0 -p1
%patch1 -p1
+%patch2 -p1
# changing default -O to optflags causes memory fault on amd64
# - so something is broken... code or compiler
#%{__perl} -pi -e "s@' -O2?([^0])@' %{rpmcflags} -fno-strict-aliasing\$1@" src/makemake.in
%build
+
+%ifarch ppc ppc64
+ulimit -s unlimited
+%else
+ulimit -s 32768
+%endif
+
CC="%{__cc}" \
+%ifarch sparc sparcv9 sparc64
+CFLAGS="%{rpmcflags} -DSAFETY=3" \
+%else
+CFLAGS="%{rpmcflags}" \
+%endif
./configure \
--prefix=%{_prefix}
--with-module=bindings/glibc \
--with-module=clx/new-clx \
>Makefile
-%{__make} config.lisp
-%{__make} \
- libdir=%{_libdir}
+%{__make} -j1 config.lisp \
+ TOPDIR=clisp
+%{__make} -j1 \
+ libdir=%{_libdir} \
+ TOPDIR=clisp
-%{?with_tests:%{__make} check}
+%{?with_tests:%{__make} -j1 check}
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} -C src install \
+%{__make} -j1 -C src install \
DESTDIR=$RPM_BUILD_ROOT \
libdir=%{_libdir} \
- lispdocdir=%{_docdir}/%{name}-%{version} \
- mandir=%{_mandir}
+ docdir=%{_docdir}/%{name}-%{version} \
+ mandir=%{_mandir} \
+ TOPDIR=clisp
-install -d $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/modules
-install modules/*/*.dvi $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/modules
+# already packaged as man/html/pdf
+%{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/doc/clisp*.{1,ps}
+# clisp and clisplow domains
%find_lang %{name} --all-name
%clean
%files -f %{name}.lang
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/clisp
-%doc %{_docdir}/%{name}-%{version}
+%attr(755,root,root) %{_bindir}/clisp-link
+%doc %{_docdir}/%{name}-%{version}
%dir %{_libdir}/clisp
%dir %{_libdir}/clisp/base
%{_libdir}/clisp/base/*.[aho]
%{_libdir}/clisp/base/lispinit.mem
%attr(755,root,root) %{_libdir}/clisp/base/lisp.run
%{_libdir}/clisp/base/makevars
-%{_libdir}/clisp/clisp-link
+%{_libdir}/clisp/bindings
+%{_libdir}/clisp/build-aux
+%{_libdir}/clisp/clx
%{_libdir}/clisp/data
-%dir %{_libdir}/clisp/full
-%attr(755,root,root) %{_libdir}/clisp/full/lisp.run
-%{_libdir}/clisp/full/*.[aho]
-%{_libdir}/clisp/full/lispinit.mem
-%{_libdir}/clisp/full/makevars
+%dir %{_libdir}/clisp/dynmod
+%{_libdir}/clisp/dynmod/*.lisp
+%attr(755,root,root) %{_libdir}/clisp/dynmod/lib-*.so
%{_libdir}/clisp/linkkit
-%{_mandir}/man[13]/*
+%{_libdir}/clisp/wildcard
+%{_aclocaldir}/clisp.m4
+%{_mandir}/man1/clisp.1*
+%{_mandir}/man1/clisp-link.1*
+
+# TODO:
+#%{_datadir}/emacs/site-lisp/clhs.el
+#%{_datadir}/emacs/site-lisp/clisp-coding.el
+#%{_datadir}/emacs/site-lisp/clisp-ffi.el
+#%{_datadir}/emacs/site-lisp/clisp-indent.el
+#%{_datadir}/emacs/site-lisp/clisp-indent.lisp
+#%{_datadir}/vim/vimfiles/after/syntax/lisp.vim