X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=ghc.spec.in;h=2a70043eea2f302489b86d40427f168b6975d248;hp=63c726e83d8ed5b93531897c107621f9882cff51;hb=HEAD;hpb=300832ea98f1b5aaf2faa17ed974933b4d23e608 diff --git a/ghc.spec.in b/ghc.spec.in index 63c726e..2a70043 100644 --- a/ghc.spec.in +++ b/ghc.spec.in @@ -1,6 +1,9 @@ +# WARNING: ghc.spec is automatically generated from ghc.spec.in by +# ./configure. Make sure you are editing ghc.spec.in, not ghc.spec. +# # 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 # earlier versions and Pixel for coding tips. @@ -21,8 +24,9 @@ Source0: http://haskell.org/ghc/dist/%{version}/ghc-%{version}-src.tar.bz Source1: http://haskell.org/ghc/dist/%{version}/ghc-%{version}-src-extralibs.tar.bz2 Packager: Sven Panne BuildRoot: %{_tmppath}/%{name}-%{version}-build +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 @@ -81,16 +85,33 @@ needed. %setup -b1 %build -test -f configure || autoreconf -./configure --prefix=%{prefix} -make +test -f configure || perl 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 +119,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,32 +134,54 @@ 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 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/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)