allow parallel minor collections too
[ghc.git] / ghc.spec.in
index 7e30dbb..5d3fa1f 100644 (file)
@@ -1,8 +1,8 @@
 # RPM spec file for GHC                                                 -*-rpm-spec-*-
 #
-# Copyright [1998..2004] The GHC Team
+# Copyright [1998..2007] The GHC Team
 #
-# Thanks to Zoltan Vorosbaranyi <vbzoli@vbzo.li> for suggestions in 
+# Thanks to Zoltan Vorosbaranyi <vbzoli@vbzo.li> for suggestions in
 # earlier versions and Pixel <pixel@mandrakesoft.com> for coding tips.
 #
 # This file is subject to the same free software license as GHC.
@@ -17,12 +17,13 @@ Release:        %{release}
 License:        BSD-like
 Group:          Development/Languages/Haskell
 URL:            http://haskell.org/ghc/
-Source:         http://haskell.org/ghc/dist/%{version}/ghc-%{version}-src.tar.bz2
+Source0:        http://haskell.org/ghc/dist/%{version}/ghc-%{version}-src.tar.bz2
+Source1:        http://haskell.org/ghc/dist/%{version}/ghc-%{version}-src-extralibs.tar.bz2
 Packager:       Sven Panne <sven.panne@aedion.de>
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-Prefix:         %{_prefix}
+PreReq:         update-alternatives
 Requires:       gmp, readline
-BuildRequires:  alex >= 2.0, happy >= 1.15, ghc >= 5, haddock, docbook-dtd, docbook-xsl-stylesheets, libxslt, libxml2, fop, xmltex, dvips, gmp, readline-devel, mesaglut-devel
+BuildRequires:  update-alternatives, alex >= 2.0, happy >= 1.15, ghc >= 5, haddock, docbook-dtd, docbook-xsl-stylesheets, libxslt, libxml2, fop, xmltex, dvips, gmp, readline-devel, mesaglut-devel
 Provides:       haskell
 Summary:        The Glasgow Haskell Compiler
 
@@ -78,19 +79,36 @@ Profiling libraries for Glorious Glasgow Haskell Compilation System
 needed.
 
 %prep
-%setup
+%setup -b1
 
 %build
-test -f configure || autoreconf
-./configure --prefix=%{prefix}
-make
+test -f configure || sh boot
+./configure --prefix=%{_prefix} --mandir=%{_mandir}
+
+# Don't install these tools, we'll use update-alternatives below.
+touch mk/build.mk
+echo "NO_INSTALL_RUNHASKELL=YES" >>mk/build.mk
+echo "NO_INSTALL_HSC2HS=YES" >>mk/build.mk
+
+make %{?jobs:-j%jobs}
 make html
+# Alas, we don't pass make options/arguments down to "libraries", so let's redo make here...
+make -C libraries HADDOCK_DOCS=YES
+( cd libraries/Cabal && docbook2html doc/Cabal.xml --output doc/Cabal )
 make -C docs/ext-core ps
 make -C docs/storage-mgt ps
+
 %install
-make prefix=${RPM_BUILD_ROOT}%{prefix} install
-make datadir=`pwd` install-docs
+# This is a cruel hack: There seems to be no way to install the Haddock
+# documentation into the build directory, because DESTDIR is alway prepended.
+# Furthermore, rpm removes the target documentation directory before the doc
+# macros are processed. Therefore we have to copy things back into safety... :-P
+# The right thing would be being able to install directly into the build tree.
+make DESTDIR=${RPM_BUILD_ROOT} docdir=%{_datadir}/doc/packages/%{name} HADDOCK_DOCS=YES install install-docs
+mkdir html-docs
+cp -a ${RPM_BUILD_ROOT}%{_datadir}/doc/packages/%{name}/{index.html,libraries} html-docs
+# Use version-less hsc2hs out of the way, we use update-alternatives.
+mv ${RPM_BUILD_ROOT}%{_prefix}/bin/hsc2hs ${RPM_BUILD_ROOT}%{_prefix}/bin/hsc2hs-ghc
 
 # generate the file list for lib/ _excluding_ all files needed for profiling
 # only
@@ -98,14 +116,14 @@ make datadir=`pwd` install-docs
 # * generating file lists in a BUILD_ROOT spec is a bit tricky: the file list
 #   has to contain complete paths, _but_ without the BUILD_ROOT, we also do
 #   _not_ want have directory names in the list; furthermore, we have to make
-#   sure that any leading / is removed from %{prefix}/lib, as find has to 
+#   sure that any leading / is removed from %{_prefix}/lib, as find has to
 #   interpret the argument as a relative path; however, we have to include the
 #   leading / again in the final file list (otherwise, rpm complains)
 # * isn't there an easier way to do all this?
 #
 dir=`pwd`
 cd ${RPM_BUILD_ROOT}
-libdir=`echo %{prefix}/lib | sed 's|^/||'`
+libdir=`echo %{_prefix}/lib | sed 's|^/||'`
 find $libdir ! -type d !  -name '*.p_hi' !   -name '*_p.a'    -print | sed 's|^|/|' > $dir/rpm-noprof-lib-files
 find $libdir ! -type d \( -name '*.p_hi' -or -name '*_p.a' \) -print | sed 's|^|/|' > $dir/rpm-prof-lib-files
 cd $dir
@@ -113,33 +131,55 @@ cd $dir
 %clean
 rm -rf ${RPM_BUILD_ROOT}
 
+%post
+# Alas, GHC, Hugs and nhc all come with different set of tools in addition to
+# a runFOO:
+#
+#   * GHC:  hsc2hs
+#   * Hugs: hsc2hs, cpphs
+#   * nhc:  cpphs
+#
+# Therefore it is currently not possible to use --slave below to form link
+# groups under a single name 'runhaskell'. Either these tools should be
+# disentangled from the Haskell implementations or all implementations should
+# have the same set of tools. *sigh*
+update-alternatives --install %{_bindir}/runhaskell runhaskell %{_bindir}/runghc     500
+update-alternatives --install %{_bindir}/hsc2hs     hsc2hs     %{_bindir}/hsc2hs-ghc 500
+
+%preun
+if test "$1" = 0; then
+  update-alternatives --remove runhaskell %{_bindir}/runghc
+  update-alternatives --remove hsc2hs     %{_bindir}/hsc2hs-ghc
+fi
+
 %files -f rpm-noprof-lib-files
 %defattr(-,root,root)
 %doc docs/docbook-cheat-sheet/docbook-cheat-sheet
 %doc ANNOUNCE
 %doc LICENSE
 %doc README
-%doc docs/building/building
+%doc docs/comm
 %doc docs/ext-core/core.ps
 %doc docs/storage-mgt/ldv.ps
 %doc docs/storage-mgt/rp.ps
 %doc docs/storage-mgt/sm.ps
 %doc docs/users_guide/users_guide
-%doc hslibs/doc/hslibs
-%doc html/*
 %doc libraries/Cabal/doc/Cabal
-%{prefix}/bin/ghc
-%{prefix}/bin/ghc-%{version}
-%{prefix}/bin/ghc-pkg
-%{prefix}/bin/ghc-pkg-%{version}
-%{prefix}/bin/ghci
-%{prefix}/bin/ghci-%{version}
-%{prefix}/bin/ghcprof
-%{prefix}/bin/hasktags
-%{prefix}/bin/hp2ps
-%{prefix}/bin/hsc2hs
-%{prefix}/bin/runghc
-%{prefix}/bin/runhaskell
+%doc html-docs/*
+%{_mandir}/man1/ghc.1*
+%{_prefix}/bin/ghc
+%{_prefix}/bin/ghc-%{version}
+%{_prefix}/bin/ghc-pkg
+%{_prefix}/bin/ghc-pkg-%{version}
+%{_prefix}/bin/ghci
+%{_prefix}/bin/ghci-%{version}
+%{_prefix}/bin/ghcprof
+%{_prefix}/bin/hasktags
+%{_prefix}/bin/hp2ps
+%{_prefix}/bin/hpc
+%{_prefix}/bin/hsc2hs-ghc
+%{_prefix}/bin/hsc2hs-%{version}
+%{_prefix}/bin/runghc
 
 %files prof -f rpm-prof-lib-files
 %defattr(-,root,root)