Blob Blame History Raw
# Build options:
#
# --with termite
#   The termite distributed programming system is currently broken

%define dirname gambc-v4_3_2-devel
%define termite_rev 080714_2216

%if %($(pkg-config emacs) ; echo $?)
%define emacs_lispdir %{_datadir}/emacs/site-lisp
%define emacs_startdir %{_datadir}/emacs/site-lisp/site-start.d
%else
%define emacs_version %(pkg-config emacs --modversion)
%define emacs_lispdir %(pkg-config emacs --variable sitepkglispdir)
%define emacs_startdir %(pkg-config emacs --variable sitestartdir)
%endif

Name:           gambit-c
Version:        4.3.2
Release:        1%{?dist}
Summary:        Gambit-C Scheme programming system

Group:          Development/Languages
License:        ASL 2.0 or LGPLv2
URL:            http://www.iro.umontreal.ca/~gambit
Source0:        http://www.iro.umontreal.ca/~gambit/download/gambit/v4.3/source/%{dirname}.tgz

%if %{?_with_termite:1}%{!?_with_termite:0}
Source1:        http://termite.googlecode.com/files/termite%{termite_rev}.tar.gz
%endif
Source2:        gambit-init.el
Patch0:         gambc-v4_2_8-modtime.patch
BuildRoot:      %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

BuildRequires:  emacs emacs-el
Requires:       gcc

%description
Gambit-C includes a Scheme interpreter and a Scheme compiler which can
be used to build standalone executables.  Because the compiler
generates portable C code it is fairly easy to port to any platform
with a decent C compiler.

The Gambit-C system conforms to the R4RS, R5RS and IEEE Scheme
standards.  The full numeric tower is implemented, including: infinite
precision integers (bignums), rationals, inexact reals (floating point
numbers), and complex numbers.


%package        doc
Summary:        Documentation for %{name}
Group:          Documentation
Requires:       %{name} = %{version}-%{release}
Requires(post):  info
Requires(preun): info


%description    doc
Gambit-C includes a Scheme interpreter and a Scheme compiler which can
be used to build standalone executables.  Because the compiler
generates portable C code it is fairly easy to port to any platform
with a decent C compiler.

This package contains the Gambit-C user manual in HTML and PDF formats.


%if %{?_with_termite:1}%{!?_with_termite:0}
%package        termite
Summary:        Termite distributed programming system
Group:          Development/Languages
URL:            http://www.toute.ca/
Requires:       %{name} = %{version}-%{release}


%description    termite
Termite is an Erlang-like distributed programming system written in Scheme.


%package        termite-doc
Summary:        Examples for the Termite distributed programming system
Group:          Documentation
Requires:       %{name}-termite = %{version}-%{release}

%description    termite-doc
Termite is an Erlang-like distributed programming system written in Scheme.

This package contains examples and benchmarks for Termite.
%endif


%package -n emacs-gambit
Summary:        Gambit-C editing mode for Emacs
Group:          Applications/Editors
%if 0%{?rhel}
Requires:       emacs >= 21.4
%else
Requires:       emacs(bin) >= %{emacs_version}
%endif


%description -n emacs-gambit
An Emacs mode for editing Gambit-C Scheme source code.


%prep
%if %{?_with_termite:1}%{!?_with_termite:0}
%setup -q -n %{dirname} -a1
%else
%setup -q -n %{dirname}
%endif
%patch0 -p1 -b .modtime

find . -name '*.scm' | xargs chmod 0644
find examples -name '*.scm' | xargs sed -i 's|/usr/local/Gambit-C|/usr|g'
sed -i "s|\xE9|\xC3\xA9|g" doc/gambit-c.info-2
# Permission fixes
chmod -x lib/{mem.c,setup.h}


%build
%configure --enable-single-host \
           --enable-gcc-opts \
           --prefix=%{_libdir}/%{name}

make %{?_smp_mflags}

# Compile emacs module
(cd misc && emacs -batch -f batch-byte-compile gambit.el)


%check
make check


%install
rm -rf $RPM_BUILD_ROOT
make install prefix=$RPM_BUILD_ROOT%{_libdir}/%{name} \
  includedir=$RPM_BUILD_ROOT%{_includedir}
mkdir -p $RPM_BUILD_ROOT%{_bindir}
for i in gsc gsi
do
  ln -sf ../%{_lib}/%{name}/current/bin/$i $RPM_BUILD_ROOT%{_bindir}/$i
done
cat > $RPM_BUILD_ROOT%{_bindir}/gsix <<EOF
#!/bin/sh
%{_libdir}/%{name}/current/bin/six $@
EOF
chmod +x $RPM_BUILD_ROOT%{_bindir}/gsix

# Remove duplicate docs
rm -rf $RPM_BUILD_ROOT%{_libdir}/%{name}/current/doc
mkdir -p $RPM_BUILD_ROOT%{_infodir}
cp -a $RPM_BUILD_ROOT%{_libdir}/%{name}/current/info/* $RPM_BUILD_ROOT%{_infodir}
rm -rf $RPM_BUILD_ROOT%{_libdir}/%{name}/current/info
rm -rf $RPM_BUILD_ROOT%{_libdir}/%{name}/current/share

# Emacs mode files
mkdir -p $RPM_BUILD_ROOT%{emacs_lispdir}
mkdir -p $RPM_BUILD_ROOT%{emacs_startdir}
cp -p misc/gambit.el* $RPM_BUILD_ROOT%{emacs_lispdir}
cp -p %{SOURCE2} $RPM_BUILD_ROOT%{emacs_startdir}

# Link static libs
(cd $RPM_BUILD_ROOT%{_libdir} && ln -s %{name}/current/lib/*.a .)

%if %{?_with_termite:1}%{!?_with_termite:0}
# Termite
chmod 755 termite termite/examples
chmod -R g+r-w,o+r termite
cd termite
mv tsi $RPM_BUILD_ROOT%{_bindir}

# Fix script interpreters
find benchmarks examples otp -name '*.scm' | xargs \
  sed -i 's|/usr/local/Gambit-C/bin/gsi|/usr/bin/gsi|g'
chmod +x otp/gen_event.scm

# Move docs
mkdir ../termite-doc ../termite-more-docs
mv CHANGELOG LICENSE README VERSION ../termite-doc
chmod a-x ../termite-doc/* ../termite-more-docs/benchmarks/*
mv benchmarks examples ../termite-more-docs
rm INSTALL
cd ..

mv termite $RPM_BUILD_ROOT%{_libdir}/%{name}/current/lib
%endif


%clean
rm -rf $RPM_BUILD_ROOT


%post doc
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :


%preun doc
if [ $1 -eq 0 ]; then
  /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :
fi


%files
%defattr(-,root,root,-)
%doc LGPL.txt LICENSE-2.0.txt README
%if %{?_with_termite:1}%{!?_with_termite:0}
%exclude %{_bindir}/tsi
%endif
%{_bindir}/*
%{_includedir}/*.h
%if %{?_with_termite:1}%{!?_with_termite:0}
%exclude %{_libdir}/%{name}/*/lib/termite
%endif
%{_libdir}/%{name}
%{_libdir}/*.a

%if %{?_with_termite:1}%{!?_with_termite:0}
%files termite
%defattr(-,root,root,-)
%doc termite-doc/*
%{_bindir}/tsi
%{_libdir}/%{name}/v%{version}/lib/termite
%endif

%files -n emacs-gambit
%defattr(-,root,root,-)
%{emacs_lispdir}/*

%files doc
%defattr(-,root,root,-)
%doc doc/gambit-c.html doc/gambit-c.pdf examples
%{_infodir}/*

%if %{?_with_termite:1}%{!?_with_termite:0}
%files termite-doc
%defattr(-,root,root,-)
%doc termite-more-docs/*
%endif



%changelog
* Fri Dec 19 2008 Michel Salim <salimma@fedoraproject.org> - 4.3.2-1
- Update to 4.3.2

* Tue Oct 14 2008 Michel Salim <salimma@fedoraproject.org> - 4.2.9-1
- Update to 4.2.9
- Disable Termite for now; still broken
- When built on EL-5, depend directly on emacs binary rather than emacs(bin)

* Mon Jul 14 2008 Michel Salim <salimma@fedoraproject.org> - 4.2.8-6
- Put include files and libraries in standard paths

* Thu Jun 19 2008 Michel Salim <salimma@fedoraproject.org> - 4.2.8-5
- Package Termite as a module instead of bundling a custom Gambit-C with it

* Thu Jun 19 2008 Michel Salim <salimma@fedoraproject.org> - 4.2.8-4
- Permission fixes for Termite subpackage

* Wed Jun 18 2008 Michel Salim <salimma@fedoraproject.org> - 4.2.8-3
- Bundle Termite as a subpackage

* Sat Jun  7 2008 Michel Salim <salimma@fedoraproject.org> - 4.2.8-2
- Rename six symlink to avoid clash with existing six package

* Mon Jun  2 2008 Michel Salim <salimma@fedoraproject.org> - 4.2.8-1
- Update to 4.2.8
- Rename to gambit-c

* Fri Dec 28 2007 Gerard Milmeister <gemi@bluewin.ch> - 4.1.2-1
- new release 4.1.2

* Sat Apr 14 2007 Gerard Milmeister <gemi@bluewin.ch> - 4.0-1.b22
- new version 4.0b22

* Sun Oct 15 2006 Gerard Milmeister <gemi@bluewin.ch> - 4.0-1.b20
- new version 4.0b20

* Sat Feb  4 2006 Gerard Milmeister <gemi@bluewin.ch> - 4.0-1.b17
- new version 4.0b17

* Mon Nov  7 2005 Gerard Milmeister <gemi@bluewin.ch> - 4.0-1.b15
- New Version 4.0b15

* Fri Aug 12 2005 Gerard Milmeister <gemi@bluewin.ch> - 4.0-1.b14
- First Fedora release