%define opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0) %define debug_package %{nil} %define ocamllibdir %{_libdir}/ocaml Name: ocaml-ancient Version: 0.9.0 Release: 4%{?dist} Summary: OCaml library for large memory structures and sharing Group: Development/Libraries License: LGPLv2+ with exceptions URL: http://merjis.com/developers/ancient Source0: http://merjis.com/_file/ancient-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: ocaml >= 3.10.0 BuildRequires: ocaml-findlib-devel BuildRequires: ocaml-ocamldoc BuildRequires: chrpath ExcludeArch: sparc64 s390 s390x %define _use_internal_dependency_generator 0 %define __find_requires /usr/lib/rpm/ocaml-find-requires.sh %define __find_provides /usr/lib/rpm/ocaml-find-provides.sh %description Ancient is an OCaml module that allows you to use in-memory data structures which are larger than available memory and so are kept in swap. If you try this in normal OCaml code, you'll find that the machine quickly descends into thrashing as the garbage collector repeatedly iterates over swapped memory structures. This module lets you break that limitation. Of course the module doesn't work by magic. If your program tries to access these large structures, they still need to be swapped back in, but it is suitable for large, sparsely accessed structures. Secondly, this module allows you to share those structures between processes. In this mode, the structures are backed by a disk file, and any process that has read/write access to that disk file can map that file in and see the structures. Developers should read the README.txt file included with the ocaml-ancient-devel package carefully. %package devel Summary: Development files for %{name} Group: Development/Libraries Requires: %{name} = %{version}-%{release} %description devel The %{name}-devel package contains libraries and signature files for developing applications that use %{name}. %prep %setup -q -n ancient-%{version} %build pushd mmalloc %configure make popd make CFLAGS='-g -fPIC -Wall -Werror -I%{ocamllibdir} -DOCAML_VERSION_MAJOR=$(OCAML_VERSION_MAJOR) -DOCAML_VERSION_MINOR=$(OCAML_VERSION_MINOR) %{optflags}' make doc ||: %install rm -rf $RPM_BUILD_ROOT export DESTDIR=$RPM_BUILD_ROOT export OCAMLFIND_DESTDIR=$RPM_BUILD_ROOT%{_libdir}/ocaml mkdir -p $RPM_BUILD_ROOT%{_libdir} mkdir -p $OCAMLFIND_DESTDIR $OCAMLFIND_DESTDIR/stublibs ocamlfind install ancient ancient.cmi *.mli *.cma ancient.cmx *.cmxa *.a *.so \ mmalloc/*.a META strip $OCAMLFIND_DESTDIR/stublibs/dll*.so chrpath --delete $OCAMLFIND_DESTDIR/stublibs/dll*.so %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %doc mmalloc/COPYING.LIB %{_libdir}/ocaml/ancient %if %opt %exclude %{_libdir}/ocaml/ancient/*.a %exclude %{_libdir}/ocaml/ancient/*.cmxa %exclude %{_libdir}/ocaml/ancient/*.cmx %endif %exclude %{_libdir}/ocaml/ancient/*.mli %{_libdir}/ocaml/stublibs/*.so %{_libdir}/ocaml/stublibs/*.so.owner %files devel %defattr(-,root,root,-) %doc README.txt html/* %if %opt %{_libdir}/ocaml/ancient/*.a %{_libdir}/ocaml/ancient/*.cmxa %{_libdir}/ocaml/ancient/*.cmx %endif %{_libdir}/ocaml/ancient/*.mli %changelog * Wed Dec 30 2009 Richard W.M. Jones - 0.9.0-4 - Rebuild for OCaml 3.11.2. * Tue Sep 22 2009 Dennis Gilmore - 0.9.0-3 - ExcludeArch sparc64 s390 s390x no ocaml * Sat Jul 25 2009 Fedora Release Engineering - 0.9.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild * Tue May 26 2009 Richard W.M. Jones - 0.9.0-1 - Initial RPM release.