File lem.spec of Package lem
Name: lem
Version: 1.9.2
Release: 0
Summary: Common Lisp editor/IDE with high expansibility
License: MIT
Group: Productivity/Text/Editors
URL: https://github.com/lem-project/lem
Source0: lem-%{version}.tar.gz
Source1: asdf-dependencies.tar
Source2: https://beta.quicklisp.org/quickstart/quicklisp.tar
Source3: https://beta.quicklisp.org/quickstart/setup.lisp
Source4: https://beta.quicklisp.org/quickstart/asdf.lisp
Requires: libncurses5
BuildRequires: automake
BuildRequires: autoconf
BuildRequires: libtool
BuildRequires: ncurses5-devel
BuildRequires: sbcl
BuildRequires: gcc-c++
BuildRequires: roswell
%description
Lem is the editor/IDE well-tuned for Common Lisp.
%define roswell_home ~/.roswell
%define ql_home %{roswell_home}/lisp/quicklisp
%define ql_local_projects %{roswell_home}/local-projects
%prep
%setup -q
ros sbcl-bin.version=system setup
mkdir -p %{ql_home}/{dists/,local-init/} %{ql_local_projects}
tar -C %{ql_home} -xf %{SOURCE2}
cp %{SOURCE3} %{SOURCE4} %{ql_home}
echo '(roswell:include "patch-quicklisp")' > %{ql_home}/local-init/roswell.lisp
tar -C %{ql_local_projects} -xf %{SOURCE1}
find %{ql_local_projects} -name '*.tgz' -exec tar -C %{ql_local_projects} -xzf {} \;
# libncurses6 causes error "Trying to access undefined foreign variable "COLORS"."
find %{ql_local_projects} -name curses-bindings.lisp \
-exec sed -r 's/(libncursesw?\.so)\.6/\1.5/g' -i {} \;
# https://github.com/lem-project/lem/issues/330
sed -re '/push bin cffi:.foreign-library-directories./d' \
-e 's!push lib (cffi:.foreign-library-directories.)!setf \1 (list #P"%{_libdir}/lem/")!' \
-i scripts/build/set-foreign-path.lisp
%build
ASYNCPROCESSDIR=$(find %{ql_local_projects} -type d -name "async-process-*")
env -C ${ASYNCPROCESSDIR} sh bootstrap
sh bootstrap
%configure
make
%install
%make_install
mkdir %{buildroot}%{_libdir}/lem/
mv %{buildroot}%{_libdir}/{,lem/}libasyncprocess.so
%files
%defattr(-,root,root)
%{_bindir}/lem
%{_bindir}/lem-ncurses
%{_libdir}/lem/
%{_libdir}/lem/libasyncprocess.so
%{_datadir}/lem/
%changelog