Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…
Cannot retrieve contributors at this time
188 lines (168 sloc) 6.97 KB
# WARNING: ghc.spec is automatically generated from by
# ./configure. Make sure you are editing, not ghc.spec.
# RPM spec file for GHC -*-rpm-spec-*-
# Copyright [1998..2007] The GHC Team
# 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.
%define name ghc
%define version @ProjectVersion@
%define release @release@
Name: %{name}
Version: %{version}
Release: %{release}
License: BSD-like
Group: Development/Languages/Haskell
Packager: Sven Panne <>
BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: update-alternatives
Requires: gmp, readline
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
Haskell is the standard lazy purely functional programming language.
The current language version is Haskell 98, agreed in December 1998,
with a revised version published in January 2003.
GHC is a state-of-the-art programming suite for Haskell. Included is
an optimising compiler generating good code for a variety of
platforms, together with an interactive system for convenient, quick
development. The distribution includes space and time profiling
facilities, a large collection of libraries, and support for various
language extensions, including concurrency, exceptions, and foreign
language interfaces (C, C++, whatever).
A wide variety of Haskell related resources (tutorials, libraries,
specifications, documentation, compilers, interpreters, references,
contact information, links to research groups) are available from the
Haskell home page at
Krasimir Angelov <>
Manuel Chakravarty <>
Koen Claessen <>
Robert Ennals <>
Sigbjorn Finne <>
Gabrielle Keller <>
Marcin Kowalczyk <>
Jeff Lewis <>
Ian Lynagh <>
Simon Marlow <>
Sven Panne <>
Ross Paterson <>
Simon Peyton Jones <>
Don Stewart <>
Volker Stolz <>
Wolfgang Thaller <>
Andrew Tolmach <>
Keith Wansbrough <>
Michael Weber <>
plus a dozen helping hands...
%package prof
Requires: ghc = %{version}-%{release}
Summary: Profiling libraries for GHC
Group: Development/Libraries
%description prof
Profiling libraries for Glorious Glasgow Haskell Compilation System
(GHC). They should be installed when GHC's profiling subsystem is
%setup -b1
test -f configure || perl boot
./configure --prefix=%{_prefix} --mandir=%{_mandir}
# Don't install these tools, we'll use update-alternatives below.
touch mk/
echo "NO_INSTALL_HSC2HS=YES" >>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
# 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
# * 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
# 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?
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
rm -rf ${RPM_BUILD_ROOT}
# 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
if test "$1" = 0; then
update-alternatives --remove runhaskell %{_bindir}/runghc
update-alternatives --remove hsc2hs %{_bindir}/hsc2hs-ghc
%files -f rpm-noprof-lib-files
%doc docs/docbook-cheat-sheet/docbook-cheat-sheet
%doc docs/comm
%doc docs/ext-core/
%doc docs/storage-mgt/
%doc docs/storage-mgt/
%doc docs/storage-mgt/
%doc docs/users_guide/users_guide
%doc libraries/Cabal/doc/Cabal
%doc html-docs/*
%files prof -f rpm-prof-lib-files
Jump to Line
Something went wrong with that request. Please try again.