X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=ghc.spec.in;h=5d3fa1f1d1859285ff9c0d96a3170bda3c6e2f9b;hp=7e30dbb61e35c957b35bd64bab67c2509f6a6c71;hb=85cc239b47833892df0e70ce7c03f203f2ba4e6c;hpb=7a1d53cf93ac4c354402846fe4a94dfe5fc71114 diff --git a/ghc.spec.in b/ghc.spec.in index 7e30dbb..5d3fa1f 100644 --- a/ghc.spec.in +++ b/ghc.spec.in @@ -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 for suggestions in +# Thanks to Zoltan Vorosbaranyi for suggestions in # earlier versions and Pixel 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 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)