ghc.spec.in 7 KB
Newer Older
Ian Lynagh's avatar
Ian Lynagh committed
1
2
3
# WARNING: ghc.spec is automatically generated from ghc.spec.in by
# ./configure.  Make sure you are editing ghc.spec.in, not ghc.spec.
#
chak's avatar
chak committed
4
# RPM spec file for GHC					         -*-rpm-spec-*-
chak's avatar
chak committed
5
#
6
# Copyright [1998..2007] The GHC Team
chak's avatar
chak committed
7
#
8
# Thanks to Zoltan Vorosbaranyi <vbzoli@vbzo.li> for suggestions in
chak's avatar
chak committed
9
# earlier versions and Pixel <pixel@mandrakesoft.com> for coding tips.
chak's avatar
chak committed
10
11
12
#
# This file is subject to the same free software license as GHC.

13
%define name    ghc
14
%define version @ProjectVersion@
15
%define release @release@
16
17
18
19
20
21
22

Name:           %{name}
Version:        %{version}
Release:        %{release}
License:        BSD-like
Group:          Development/Languages/Haskell
URL:            http://haskell.org/ghc/
23
24
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
25
Packager:       Sven Panne <sven.panne@aedion.de>
26
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
27
PreReq:         update-alternatives
28
Requires:       gmp, readline
29
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
30
Provides:       haskell
31
Summary:        The Glasgow Haskell Compiler
chak's avatar
chak committed
32
33

%description
34
35
36
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.
chak's avatar
chak committed
37

38
GHC is a state-of-the-art programming suite for Haskell. Included is
chak's avatar
chak committed
39
40
an optimising compiler generating good code for a variety of
platforms, together with an interactive system for convenient, quick
41
development. The distribution includes space and time profiling
chak's avatar
chak committed
42
43
44
45
46
47
48
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
49
Haskell home page at http://haskell.org/.
chak's avatar
chak committed
50

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Authors:
--------
    Krasimir Angelov <ka2_mail@yahoo.com>
    Manuel Chakravarty <chak@cse.unsw.edu.au>
    Koen Claessen <koen@cs.chalmers.se>
    Robert Ennals <Robert.Ennals@cl.cam.ac.uk>
    Sigbjorn Finne <sof@galconn.com>
    Gabrielle Keller <keller@cvs.haskell.org>
    Marcin Kowalczyk <qrczak@knm.org.pl>
    Jeff Lewis <jeff@galconn.com>
    Ian Lynagh <igloo@earth.li>
    Simon Marlow <simonmar@microsoft.com>
    Sven Panne <sven.panne@aedion.de>
    Ross Paterson <ross@soi.city.ac.uk>
    Simon Peyton Jones <simonpj@microsoft.com>
    Don Stewart <dons@cse.unsw.edu.au>
    Volker Stolz <stolz@i2.informatik.rwth-aachen.de>
    Wolfgang Thaller <wolfgang.thaller@gmx.net>
    Andrew Tolmach <apt@cs.pdx.edu>
    Keith Wansbrough <Keith.Wansbrough@cl.cam.ac.uk>
    Michael Weber <michael.weber@post.rwth-aachen.de>
    plus a dozen helping hands...

chak's avatar
chak committed
74
%package prof
75
76
77
Requires:       ghc = %{version}-%{release}
Summary:        Profiling libraries for GHC
Group:          Development/Libraries
chak's avatar
chak committed
78
79

%description prof
80
81
82
Profiling libraries for Glorious Glasgow Haskell Compilation System
(GHC).  They should be installed when GHC's profiling subsystem is
needed.
chak's avatar
chak committed
83
84

%prep
85
%setup -b1
chak's avatar
chak committed
86
87

%build
88
test -f configure || perl boot
89
./configure --prefix=%{_prefix} --mandir=%{_mandir}
90
91
92
93
94
95

# 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

96
make %{?jobs:-j%jobs}
97
make html
98
99
# Alas, we don't pass make options/arguments down to "libraries", so let's redo make here...
make -C libraries HADDOCK_DOCS=YES
100
( cd libraries/Cabal && docbook2html doc/Cabal.xml --output doc/Cabal )
101
102
make -C docs/ext-core ps
make -C docs/storage-mgt ps
103

chak's avatar
chak committed
104
%install
105
106
107
108
109
110
111
112
113
# 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.
114
mv ${RPM_BUILD_ROOT}%{_prefix}/bin/hsc2hs ${RPM_BUILD_ROOT}%{_prefix}/bin/hsc2hs-ghc
115

chak's avatar
chak committed
116
117
118
# generate the file list for lib/ _excluding_ all files needed for profiling
# only
#
chak's avatar
chak committed
119
120
121
# * 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
122
#   sure that any leading / is removed from %{_prefix}/lib, as find has to
chak's avatar
chak committed
123
124
125
126
127
#   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`
128
cd ${RPM_BUILD_ROOT}
129
libdir=`echo %{_prefix}/lib | sed 's|^/||'`
130
131
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
chak's avatar
chak committed
132
cd $dir
chak's avatar
chak committed
133

chak's avatar
chak committed
134
%clean
135
rm -rf ${RPM_BUILD_ROOT}
chak's avatar
chak committed
136

137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
%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

chak's avatar
chak committed
158
%files -f rpm-noprof-lib-files
159
%defattr(-,root,root)
160
%doc docs/docbook-cheat-sheet/docbook-cheat-sheet
161
162
163
%doc ANNOUNCE
%doc LICENSE
%doc README
164
%doc docs/comm
165
166
167
168
169
%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
170
%doc libraries/Cabal/doc/Cabal
171
%doc html-docs/*
172
%{_mandir}/man1/ghc.1*
173
174
175
176
177
178
179
180
181
%{_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
182
%{_prefix}/bin/hpc
183
%{_prefix}/bin/hsc2hs-ghc
184
%{_prefix}/bin/hsc2hs-%{version}
185
%{_prefix}/bin/runghc
chak's avatar
chak committed
186

187
%files prof -f rpm-prof-lib-files
188
%defattr(-,root,root)