ocaml-camomile/ocaml-camomile.spec
Richard W.M. Jones 3a02209c15 Remove ExcludeArch ppc64.
- Add sed hack to reduce size of long entry function which breaks
  ppc64 code generator.  See comment in spec file for full details.
2012-05-30 13:30:13 +02:00

224 lines
7.0 KiB
RPMSpec

%define opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0)
%define debug_package %{nil}
Name: ocaml-camomile
Version: 0.8.3
Release: 4%{?dist}
Summary: Unicode library for OCaml
Group: Development/Libraries
# Several files are MIT and UCD licensed, but the overall work is LGPLv2+
# and the LGPL/GPL supercedes compatible licenses.
# https://www.redhat.com/archives/fedora-legal-list/2008-March/msg00005.html
License: LGPLv2+
URL: http://sourceforge.net/projects/camomile/
Source0: http://downloads.sourceforge.net/camomile/camomile-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
ExcludeArch: sparc64 s390 s390x
BuildRequires: ocaml, ocaml-findlib-devel, ocaml-ocamldoc, ocaml-camlp4-devel
# This works around a segfault when the gen_mappings.ml program is
# run after being compiled with the new ARM backend.
Patch1: camomile-new-arm-segfault-workaround.patch
%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
Camomile is a Unicode library for ocaml. Camomile provides Unicode
character type, UTF-8, UTF-16, UTF-32 strings, conversion to/from
about 200 encodings, collation and locale-sensitive case mappings, and
more.
%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}.
%package data
Summary: Data files for %{name}
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description data
The %{name}-data package contains data files for developing
applications that use %{name}.
%prep
%setup -q -n camomile-%{version}
%patch1 -p1
# This is a horrible hack to work around a bug in our ppc64 code
# generator. For some reason which we don't fully understand it barfs
# on the long entry function created by the series of alias commands
# at the end of public/charEncoding.ml:
#
# let () = alias "IANA/csGB2312" "GB2312"
# let () = alias "IANA/GB2312" "GB2312"
# (* etc for 573 lines *)
#
# Use a sed script to change to the equivalent code:
#
# let aliases = [
# "IANA/csGB2312", "GB2312";
# "IANA/GB2312", "GB2312";
# (* etc *)
# ] ;; List.iter (fun (a,b) -> alias a b) aliases
#
# The equivalent code contains just data plus a small entry function
# so it doesn't break the ppc64 generator. It's likely also to be
# more efficient. Since the code is equivalent, we do this
# transformation on all arches, not just ppc64.
#
# - RWMJ 2012-05-30
mv public/charEncoding.ml public/charEncoding.ml.orig
sed -e 's/let () = alias \("[^[:space:]]*"\) \("[^[:space:]]*"\)/\1, \2;/' \
-e 's/(\* IANA \*)/let aliases = [/' \
-e '$ i] ;; List.iter (fun (a,b) -> alias a b) aliases' \
public/charEncoding.ml.orig > public/charEncoding.ml
%build
./configure --prefix=%{_prefix} --datadir=%{_datadir} --libdir=%{_libdir}
make
make dochtml
make man
strip tools/*.opt
%install
rm -rf $RPM_BUILD_ROOT
export DESTDIR=$RPM_BUILD_ROOT
export OCAMLFIND_DESTDIR=$RPM_BUILD_ROOT%{_libdir}/ocaml
mkdir -p $OCAMLFIND_DESTDIR $OCAMLFIND_DESTDIR/stublibs
mkdir -p $RPM_BUILD_ROOT%{_bindir}
make install prefix=$RPM_BUILD_ROOT%{_prefix} DATADIR=$RPM_BUILD_ROOT%{_datadir}
%if %opt
cp tools/camomilecharmap.opt $RPM_BUILD_ROOT%{_bindir}/camomilecharmap
cp tools/camomilelocaledef.opt $RPM_BUILD_ROOT%{_bindir}/camomilelocaledef
%endif
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc README
%{_libdir}/ocaml/camomile
%if %opt
%exclude %{_libdir}/ocaml/camomile/*.a
%exclude %{_libdir}/ocaml/camomile/*.cmxa
%exclude %{_libdir}/ocaml/camomile/*.cmx
%endif
%exclude %{_libdir}/ocaml/camomile/*.mli
%if %opt
%{_bindir}/camomilecharmap
%{_bindir}/camomilelocaledef
%endif
%files devel
%defattr(-,root,root,-)
%doc README dochtml/*
%if %opt
%{_libdir}/ocaml/camomile/*.a
%{_libdir}/ocaml/camomile/*.cmxa
%{_libdir}/ocaml/camomile/*.cmx
%endif
%{_libdir}/ocaml/camomile/*.mli
%files data
%defattr(-,root,root,-)
%doc README
%{_datadir}/camomile/
%changelog
* Wed May 30 2012 Richard W.M. Jones <rjones@redhat.com> - 0.8.3-4
- Remove ExcludeArch ppc64.
- Add sed hack to reduce size of long entry function which breaks
ppc64 code generator. See comment in spec file for full details.
* Sat May 19 2012 Richard W.M. Jones <rjones@redhat.com> - 0.8.3-2
- Include workaround for segfault in gen_mappings.ml on ARM.
- Bump release and rebuild for new OCaml on ARM.
* Fri Jan 6 2012 Richard W.M. Jones <rjones@redhat.com> - 0.8.3-1
- New upstream version 0.8.3.
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.8.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Wed Jan 5 2011 Richard W.M. Jones <rjones@redhat.com> - 0.8.1-1
- New upstream version 0.8.1.
- Rebuild for OCaml 3.12.0.
- camomilecharmap and camomilelocaledef no longer installed by default,
install them by hand instead.
* Wed Dec 30 2009 Richard W.M. Jones <rjones@redhat.com> - 0.7.2-2
- Rebuild for OCaml 3.11.2.
* Thu Oct 8 2009 Richard W.M. Jones <rjones@redhat.com> - 0.7.2-1
- New upstream version 0.7.2.
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.7.1-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Sat May 23 2009 Richard W.M. Jones <rjones@redhat.com> - 0.7.1-11
- Rebuild for OCaml 3.11.1
* Thu Apr 16 2009 S390x secondary arch maintainer <fedora-s390x@lists.fedoraproject.org>
- ExcludeArch sparc64, s390, s390x as we don't have OCaml on those archs
(added sparc64 per request from the sparc maintainer)
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.7.1-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Wed Nov 26 2008 Richard W.M. Jones <rjones@redhat.com> - 0.7.1-9
- Rebuild for OCaml 3.11.0+rc1.
* Wed Nov 19 2008 Richard W.M. Jones <rjones@redhat.com> - 0.7.1-8
- Rebuild for OCaml 3.11.0
* Wed Apr 23 2008 Richard W.M. Jones <rjones@redhat.com> - 0.7.1-7
- Rebuild for OCaml 3.10.2
* Fri Mar 21 2008 Richard W.M. Jones <rjones@redhat.com> - 0.7.1-6
- ExcludeArch ppc64 (#438486).
* Mon Mar 17 2008 Richard W.M. Jones <rjones@redhat.com> - 0.7.1-5
- Definitive license.
- Move ./configure into the build section.
- Remove a superfluous comment in the install section.
- Fix rpmlint error 'configure-without-libdir-spec'.
- Scratch build in Koji.
* Wed Mar 5 2008 Richard W.M. Jones <rjones@redhat.com> - 0.7.1-4
- License is LGPLv2+ (no OCaml exception).
* Wed Mar 5 2008 Richard W.M. Jones <rjones@redhat.com> - 0.7.1-3
- Remove ExcludeArch ppc64.
* Tue Feb 12 2008 Richard W.M. Jones <rjones@redhat.com> - 0.7.1-2
- Added BR ocaml-camlp4-devel.
- Rename /usr/bin/*.opt as /usr/bin.
* Wed Aug 08 2007 Richard W.M. Jones <rjones@redhat.com> - 0.7.1-1
- Initial RPM release.