File ocaml.spec of Package ocaml

#
# spec file for package ocaml (Version 3.10.2)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

# norootforbuild


Name:           ocaml
BuildRequires:  emacs-nox gdbm-devel gtk-devel ncurses-devel tk-devel
License:        GPL v2 or later; THE Q PUBLIC LICENSE (QPL)
Group:          Development/Languages/Other
AutoReqProv:    on
Version:        3.10.2
Release:        36
%define doc_version 3.10
%ifarch s390 s390x
%define do_opt 0
%else
%define do_opt 1
%endif
Source0:        ftp://ftp.inria.fr/lang/caml-light/ocaml-%{version}.tar.bz2
Source1:        ftp://ftp.inria.fr/lang/caml-light/ocaml-%{doc_version}-refman.html.tar.bz2
Source2:        ftp://ftp.inria.fr/lang/caml-light/ocaml-%{doc_version}-refman.ps.bz2
Source3:        ftp://ftp.inria.fr/lang/caml-light/ocaml-%{doc_version}-refman.info.tar.bz2
Source4:        rpmlintrc
Patch0:         ocaml-3.00-camldebug_el.patch
Patch1:         ocaml-3.04-info.patch
Patch2:         ocaml-3.04-ocamltags--no-site-start.patch
Patch3:         ocaml-rpath.patch
Patch4:         ocaml-3.08.1-type_punning.patch
Patch5:         ocaml-3.08.3-gcc4.patch
Patch6:         ocaml-3.08.3.patch
Patch7:         ocaml-3.09-emacs_localcompile.patch
Patch8:         ocaml-3.09-rpmoptflags.patch
Patch9:         ocaml-Tk8.5.diff 
Patch64:        ocaml.ppc64.patch
Url:            http://caml.inria.fr/
Summary:        The Objective Caml Compiler and Programming Environment
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
PreReq:         %install_info_prereq

%description
Objective Caml is a high-level, strongly-typed, functional and
object-oriented programming language from the ML family of languages.

This package comprises two batch compilers (a fast bytecode compiler
and an optimizing native-code compiler), an interactive top level
system, Lex&Yacc tools, a replay debugger, and a comprehensive library.



Authors:
--------
    Pierre Weis <Pierre.Weis@inria.fr>

%package devel
License:        GPL v2 or later; THE Q PUBLIC LICENSE (QPL)
Summary:        The Objective Caml Compiler and Programming Environment
Group:          Development/Languages/Other
Provides:       libz:/usr/include/zlib.h
Requires:       zlib = %{version}
AutoReqProv:    on

%description devel
Objective Caml is a high-level, strongly-typed, functional and
object-oriented programming language from the ML family of languages.

This package comprises two batch compilers (a fast bytecode compiler
and an optimizing native-code compiler), an interactive top level
system, Lex&Yacc tools, a replay debugger, and a comprehensive library.



Authors:
--------
    Pierre Weis <Pierre.Weis@inria.fr>

%package -n labltk
License:        GPL v2 or later; THE Q PUBLIC LICENSE (QPL)
Group:          Development/Languages/Other
Summary:        The Objective Caml Compiler and Programming Environment
Requires:       ocaml = %{version}-%{release}

%description -n labltk
Objective Caml is a high-level, strongly-typed, functional and
object-oriented programming language from the ML family of languages.

This package comprises two batch compilers (a fast bytecode compiler
and an optimizing native-code compiler), an interactive top level
system, Lex&Yacc tools, a replay debugger, and a comprehensive library.



Authors:
--------
    Pierre Weis <Pierre.Weis@inria.fr>

%package -n camlp4
License:        GPL v2 or later; THE Q PUBLIC LICENSE (QPL)
Group:          Development/Languages/Other
Summary:        The Objective Caml compiler and programming environment
Requires:       ocaml = %{version}-%{release}

%description -n camlp4
Objective Caml is a high-level, strongly-typed, functional and
object-oriented programming language from the ML family of languages.

This package comprises two batch compilers (a fast bytecode compiler
and an optimizing native-code compiler), an interactive toplevel
system, Lex&Yacc tools, a replay debugger, and a comprehensive library.



Authors:
--------
    Pierre Weis <Pierre.Weis@inria.fr>

%package ocamldoc
License:        GPL v2 or later; THE Q PUBLIC LICENSE (QPL)
Group:          Development/Languages/Other
Summary:        The Objective Caml Compiler and Programming Environment
Requires:       ocaml = %{version}-%{release}

%description ocamldoc
Objective Caml is a high-level, strongly-typed, functional and
object-oriented programming language from the ML family of languages.

This package comprises two batch compilers (a fast bytecode compiler
and an optimizing native-code compiler), an interactive top level
system, Lex&Yacc tools, a replay debugger, and a comprehensive library.



Authors:
--------
    Pierre Weis <Pierre.Weis@inria.fr>

%package emacs
License:        GPL v2 or later; THE Q PUBLIC LICENSE (QPL)
Group:          Development/Languages/Other
Summary:        The Objective Caml Compiler and Programming Environment
Requires:       ocaml = %{version}-%{release}
Requires:       emacs

%description emacs
Objective Caml is a high-level, strongly-typed, functional and
object-oriented programming language from the ML family of languages.

This package comprises two batch compilers (a fast bytecode compiler
and an optimizing native-code compiler), an interactive top level
system, Lex&Yacc tools, a replay debugger, and a comprehensive library.



Authors:
--------
    Pierre Weis <Pierre.Weis@inria.fr>

%package docs
License:        GPL v2 or later; THE Q PUBLIC LICENSE (QPL)
Group:          Development/Languages/Other
Summary:        The Objective Caml Compiler and Programming Environment
Requires:       ocaml = %{version}-%{release}

%description docs
Objective Caml is a high-level, strongly-typed, functional and
object-oriented programming language from the ML family of languages.

This package comprises two batch compilers (a fast bytecode compiler
and an optimizing native-code compiler), an interactive top level
system, Lex&Yacc tools, a replay debugger, and a comprehensive library.



Authors:
--------
    Pierre Weis <Pierre.Weis@inria.fr>

%prep
%setup -q -T -b 0
%setup -q -T -D -a 1
%setup -q -T -D -a 3
%patch0 -p1
gzip -d infoman/ocaml.info.gz
%patch1 -p1
%patch2 -p1
%patch3
%patch4
%patch5
%patch6
%patch7
%patch8
%patch9
%patch64 -p1
find -name ".cvsignore" | xargs -r rm -f

%build
%ifarch %ix86
export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -O0"
%endif
./configure -bindir %{_bindir} \
            -libdir %{_libdir}/ocaml \
	    -mandir %{_mandir} \
            -x11include %{_includedir} \
            -x11lib %{_libdir}
#
make world
%if %{do_opt}
make opt ocamlc.opt ocamlopt.opt
%endif

%install
make install BINDIR="$RPM_BUILD_ROOT%{_bindir}" LIBDIR="$RPM_BUILD_ROOT%{_libdir}/ocaml" MANDIR="$RPM_BUILD_ROOT%{_mandir}"
%if %{do_opt}
make installopt BINDIR="$RPM_BUILD_ROOT%{_bindir}" LIBDIR="$RPM_BUILD_ROOT%{_libdir}/ocaml" MANDIR="$RPM_BUILD_ROOT%{_mandir}"
%endif
#
install -d $RPM_BUILD_ROOT%{_infodir} \
           $RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp
(cd emacs
make install BINDIR=$RPM_BUILD_ROOT/%{_bindir} EMACSDIR=$RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp
make install-ocamltags BINDIR=$RPM_BUILD_ROOT/%{_bindir}
)
(cd infoman; cp -f ocaml* $RPM_BUILD_ROOT%{_infodir})
# fix bnc#411232
echo '(load "ocaml.el" nil t t)' >$RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/suse-start-ocaml.el
cat <<EOF >$RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp/%{name}.el
(autoload 'caml-mode "caml" "Caml editing mode" t)
(add-hook 'caml-mode-hook 'font-lock-mode)
(add-to-list 'auto-mode-alist '("\\\\.mli?$" . caml-mode))
EOF
export EXCLUDE_FROM_STRIP="ocamldebug ocamlbrowser"
sed s,$RPM_BUILD_ROOT,,g < $RPM_BUILD_ROOT%{_libdir}/ocaml/ld.conf >/tmp/buildroot_sucks_ass
mv /tmp/buildroot_sucks_ass $RPM_BUILD_ROOT%{_libdir}/ocaml/ld.conf
sed -i -e "s@$RPM_BUILD_ROOT@@" $RPM_BUILD_ROOT/%{_libdir}/ocaml/Makefile.config

%post
%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz

%postun
%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root)
%doc Changes LICENSE README
%{_bindir}/*
%{_mandir}/*/*
%{_libdir}/ocaml
%{_infodir}/*
%exclude %{_bindir}/camlp4*
%exclude %{_bindir}/mkcamlp4
%exclude %{_bindir}/labltk
%exclude %{_bindir}/ocamltags
%exclude %{_bindir}/ocamlbrowser
%exclude %{_bindir}/ocamldoc*
%exclude %{_libdir}/ocaml/camlp4
%exclude %{_libdir}/ocaml/labltk
%exclude %{_libdir}/ocaml/ocamldoc
%exclude %{_libdir}/ocaml/stublibs/dlllabltk.so
%exclude %{_libdir}/ocaml/stublibs/dlltkanim.so

%files -n labltk
%defattr(-,root,root,-)
%{_bindir}/labltk
%{_bindir}/ocamlbrowser
%{_libdir}/ocaml/labltk
%{_libdir}/ocaml/stublibs/dlllabltk.so
%{_libdir}/ocaml/stublibs/dlltkanim.so
%doc otherlibs/labltk/examples_labltk
%doc otherlibs/labltk/examples_camltk

%files -n camlp4
%defattr(-,root,root,-)
%{_bindir}/camlp4*
%{_bindir}/mkcamlp4
%{_libdir}/ocaml/camlp4

%files ocamldoc
%defattr(-,root,root,-)
%{_bindir}/ocamldoc*
%{_libdir}/ocaml/ocamldoc
%doc ocamldoc/Changes.txt

%files docs
%defattr(-,root,root,-)
%doc htmlman

%files emacs
%defattr(-,root,root,-)
%doc emacs/README
%dir %{_datadir}/emacs
%dir %{_datadir}/emacs/site-lisp
%{_datadir}/emacs/site-lisp/*
%{_bindir}/ocamltags

%changelog
* Thu Jul 24 2008 anicka@suse.cz
- fix loading caml-mode in emacs (bnc#411232)
* Thu Jul 10 2008 olh@suse.de
- build also on ppc64 (fate#304103)
* Wed Apr 09 2008 anicka@suse.cz
- update to 3.10.2
  * PR#1217 (partial) Typo in ocamldep man page
  * PR#3952 (partial) ocamlopt: allocation problems on ARM
  * PR#4339 (continued) ocamlopt: problems on HPPA
  * PR#4455 str.mli not installed under Windows
  * PR#4473 crash when accessing float array with polymorphic method
  * PR#4480 runtime would not compile without gcc extensions
  * PR#4481 wrong typing of exceptions with object arguments
  * PR#4490 typo in error message
  * Random crash on 32-bit when major_heap_increment >= 2^22
  * Big performance bug in Weak hashtables
  * Small bugs in the make-package-macosx script
  * Bug in typing of polymorphic variants (reported on caml-list)
* Mon Apr 07 2008 anicka@suse.cz
- fix build for tk 8.5
* Mon Mar 10 2008 anicka@suse.cz
- update to 3.10.1
 - made configure script work on PlayStation 3
 - ARM port: brought up-to-date for Debian 4.0 (Etch)
 - many other small changes and bugfixes in camlp4, ocamlbuild, labltk,
  emacs files,
 - Added virtual instance variables in classes "val virtual v : t"
  * Changed the behaviour of instance variable overriding; the new
  definition replaces the old one, rather than creating a new
  variable.
 - ocamlbuild: compilation manager for OCaml applications and libraries.
  See draft documentation at http://gallium.inria.fr/~pouillar/
  * Camlp4: heavily revised implementation, new API.
 - Faster type-checking of functor applications.
 - Referencing an interface compiled with -rectypes from a module
  not compiled with -rectypes is now an error.
 - Revised the "fragile matching" warning.
 - Print a stack backtrace on an uncaught exception.
  (Compile and link with ocamlopt -g; execute with OCAMLRUNPARAM=b.)
  Supported on Intel/AMD in 32 and 64 bits, PPC in 32 and 64 bits.
 - Stack overflow detection on MS Windows 32 bits (courtesy O. Andrieu).
 - Stack overflow detection on MacOS X PPC and Intel.
 - Intel/AMD 64 bits: generate position-independent code by default.
 - Fixed bug involving -for-pack and missing .cmx files (PR#4124).
 - Fixed bug causing duplication of literals  (PR#4152).
 - C/Caml interface functions take "char const *" arguments
  instead of "char *" when appropriate.
 - Faster string comparisons (fast case if strings are ==).
* Wed Nov 28 2007 ro@suse.de
- added -O0 to optflags for now on x86 (#343760)
* Sun Nov 04 2007 ro@suse.de
- updated rpmlintrc
* Fri Jun 15 2007 ro@suse.de
- clean up specfile a bit (thanks to dirk stoecker)
* Wed May 16 2007 ro@suse.de
- split up package similar to f-e
- update to 3.09.3
  * featurelist
  - ocamldoc: name resolution in cross-referencing {!name}: if name is not
  found, then it is searched in the parent module/class, and in the parent
  of the parent, and so on until it is found.
  - ocamldoc: new option -short-functors to use a short form to display
  functors in html generator PR#4017
  - ocamlprof: added "-version" option
  - ported to MacOS X on Intel PR#3985
  - configure: added support for GNU Hurd PR#3991
  - otherlibs/labltk: browser uses menu bars instead of menu buttons
  - Introduction of private row types, for abstracting the row in object
  and variant types.
  - configure: find X11 config in some 64-bit Linux distribs
  - ocamldoc: (**/**) can be canceled with another (**/**) PR#3665
  - graphics: added resize_window
  - graphics: check for invalid arguments to drawing primitives PR#3595
  - ocamlbrowser: use windows subsystem on mingw
  * disruptive changes
  * Revised implementation of the -pack option (packing of several compilation
  units into one).  The .cmx files that are to be packed with
  "ocamlopt -pack -o P.cmx" must be compiled with "ocamlopt -for-pack P".
  In exchange for this additional constraint, ocamlopt -pack is now
  available on all platforms (no need for binutils).
  * Fixed wrong evaluation order for arguments to certain inlined functions.
* Thu Mar 29 2007 rguenther@suse.de
- add emacs site-lisp directories
* Fri Mar 23 2007 rguenther@suse.de
- add gdbm-devel and ncurses-devel BuildRequires
* Thu Aug 17 2006 cthiel@suse.de
- fix build with X.Org 7.1
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Thu May 12 2005 ro@suse.de
- update to 3.08.3
- reduce register pressure in bng_ia32.c (thanks to matz)
* Tue Sep 14 2004 jj@suse.de
- version update (done by pthomas)
* Wed Apr 28 2004 ro@suse.de
- added -fno-strict-aliasing also to native build
* Mon Apr 19 2004 mmj@suse.de
- declare void functions as such
* Sat Jan 10 2004 adrian@suse.de
- use x-devel-packages
* Sat Jun 21 2003 mmj@suse.de
- Own all dirs
* Wed May 21 2003 coolo@suse.de
- fix man page installation
* Thu Apr 24 2003 ro@suse.de
- fix install_info --delete call and move from preun to postun
* Mon Apr 07 2003 mmj@suse.de
- head -1 is head -n 1 with the new coreutils
* Tue Feb 11 2003 mmj@suse.de
- Use %%install_info macro [#23440]
* Tue Sep 17 2002 uli@suse.de
- update -> 3.0.6 (needed for mldonkey)
* Mon Jun 17 2002 meissner@suse.de
- copy over config.* from libtool repository and other ppc64 fixes.
* Tue May 28 2002 ro@suse.de
- fix installation in camlp4 directory (bindir was without
  buildroot prefix)
* Fri May 24 2002 mmj@suse.de
- Disabling build of optional architecture specific stuff on plat-
  forms where ocaml does not procide the necessary asm parts.
* Wed May 15 2002 schwab@suse.de
- Fix neededforbuild.
* Mon May 13 2002 mmj@suse.de
- Update to 3.04, maily bugfix release
* Tue Jan 15 2002 schwab@suse.de
- Fix for ia64.
* Thu Aug 16 2001 grimmer@suse.de
- initial SuSE package (version 3.02), added to be able to build
  package "unison"
- spec file derived from Mandrake Linux source RPM (thanks, pixel!)
openSUSE Build Service is sponsored by