-%define __strip %{_mingw32_strip}
-%define __objdump %{_mingw32_objdump}
+#%define __strip %{_mingw32_strip}
+#%define __objdump %{_mingw32_objdump}
+%define __strip :
+%define __objdump :
%define _use_internal_dependency_generator 0
%define __find_requires %{_mingw32_findrequires}
%define __find_provides %{_mingw32_findprovides}
%define debug_package %{nil}
+%define otherlibraries win32unix str num dynlink bigarray systhreads win32graph
+
Name: mingw32-ocaml
Version: 3.11.0+beta1
-Release: 3%{?dist}
+Release: 8%{?dist}
Summary: Objective Caml MinGW cross-compiler and programming environment
License: QPL and (LGPLv2+ with exceptions)
# which is why this is commented out.
#Requires: ocaml-runtime = %{version}
+# The built program will try to run the cross-compiler and flexdll, so
+# these must be runtime requires.
+Requires: mingw32-gcc
+Requires: mingw32-binutils
+Requires: mingw32-flexdll
+
+# i686-pc-mingw32-ocamlmklib tries to run ocamlopt which is probably a
+# bug, but requires this (XXX).
+Requires: ocaml
+
%description
Objective Caml is a high-level, strongly-typed, functional and
%build
+# Don't run out of memory.
+ulimit -s unlimited
+
# Build native ocamlrun and ocamlc which contain the filename-win32-dirsep
# patch.
./configure \
-e 's,@bindir@,%{_bindir},g' \
-e 's,@libdir@,%{_libdir},g' \
-e 's,@target@,%{_mingw32_target},g' \
+ -e 's,@otherlibraries@,%{otherlibraries},g' \
< %{SOURCE1000} > Makefile
popd
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{_mingw32_target}-ocaml
mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{_mingw32_target}-ocaml/threads
+mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{_mingw32_target}-ocaml/stublibs
# This is the equivalent of 'make install installopt', but
# we only want to install the parts which are really necessary
%define makevars BINDIR=$RPM_BUILD_ROOT%{_bindir} LIBDIR=$RPM_BUILD_ROOT%{_libdir}/%{_mingw32_target}-ocaml
make %{makevars} -C byterun install
make %{makevars} -C stdlib install
+for i in %{otherlibraries}; do
+ make %{makevars} -C otherlibs/$i install
+done
+make %{makevars} -C tools install
make %{makevars} installopt
+install -m 0755 ocamlc $RPM_BUILD_ROOT%{_bindir}
+
cp config/Makefile \
$RPM_BUILD_ROOT%{_libdir}/%{_mingw32_target}-ocaml/Makefile.config
-# Rename the binaries so they don't clash with base OCaml package.
-mv $RPM_BUILD_ROOT%{_bindir}/ocamlrun \
- $RPM_BUILD_ROOT%{_bindir}/%{_mingw32_target}-ocamlrun
-echo '#!%{_bindir}/%{_mingw32_target}-ocamlrun' \
- > $RPM_BUILD_ROOT%{_bindir}/%{_mingw32_target}-ocamlopt
-tail -n +2 $RPM_BUILD_ROOT%{_bindir}/ocamlopt \
- >> $RPM_BUILD_ROOT%{_bindir}/%{_mingw32_target}-ocamlopt
-chmod 0755 $RPM_BUILD_ROOT%{_bindir}/%{_mingw32_target}-ocamlopt
-rm $RPM_BUILD_ROOT%{_bindir}/ocamlopt
+# For bytecode binaries, change the bang-path to point to the locally
+# installed ocamlrun.
+pushd $RPM_BUILD_ROOT%{_bindir}
+for f in ocamlc ocamlcp ocamldep ocamlmklib ocamlopt ocamlprof; do
+ mv $f $f.old
+ echo '#!%{_bindir}/%{_mingw32_target}-ocamlrun' > $f
+ tail -n +2 $f.old >> $f
+ chmod +x $f
+ rm $f.old
+done
+popd
+
+# Rename all the binaries to target-binary.
+pushd $RPM_BUILD_ROOT%{_bindir}
+for f in ocamlc ocamlcp ocamldep ocamlmklib ocamlmktop ocamlopt ocamlprof ocamlrun; do
+ mv $f %{_mingw32_target}-$f
+done
+popd
%clean
%files
%defattr(-,root,root)
-%{_bindir}/%{_mingw32_target}-ocamlrun
+%{_bindir}/%{_mingw32_target}-ocamlc
+%{_bindir}/%{_mingw32_target}-ocamlcp
+%{_bindir}/%{_mingw32_target}-ocamldep
+%{_bindir}/%{_mingw32_target}-ocamlmklib
+%{_bindir}/%{_mingw32_target}-ocamlmktop
+%{_bindir}/%{_mingw32_target}-ocamlprof
%{_bindir}/%{_mingw32_target}-ocamlopt
+%{_bindir}/%{_mingw32_target}-ocamlrun
%{_libdir}/%{_mingw32_target}-ocaml/
%changelog
-* Sat Nov 15 2008 Richard W.M. Jones <rjones@redhat.com> - 3.11.0+beta1-3
+* Sun Nov 16 2008 Richard W.M. Jones <rjones@redhat.com> - 3.11.0+beta1-8
+- Install ocamlc.
+
+* Sat Nov 15 2008 Richard W.M. Jones <rjones@redhat.com> - 3.11.0+beta1-7
+- Further requirements.
+
+* Sat Nov 15 2008 Richard W.M. Jones <rjones@redhat.com> - 3.11.0+beta1-6
+- Install tools, particularly ocamlmklib.
+
+* Sat Nov 15 2008 Richard W.M. Jones <rjones@redhat.com> - 3.11.0+beta1-5
+- +Requires mingw32-flexdll and the cross-compiler.
+
+* Sat Nov 15 2008 Richard W.M. Jones <rjones@redhat.com> - 3.11.0+beta1-4
- Initial RPM release.