subpackage all the libraries with ghc-rpm-macros-0.11.1

- put rts, integer-gmp and ghc-prim in base, and ghc-binary in bin-package-db
- drop the libs mega-subpackage
- prof now a meta-package for backward compatibility
- add devel meta-subpackage to easily install all ghc libraries
- store doc cronjob package cache file under /var (#664850)
- drop old extralibs bcond
- no longer need to define or clean buildroot
- ghc base package now requires ghc-base-devel
- drop ghc-time obsoletes
This commit is contained in:
Jens Petersen 2011-01-05 21:34:43 +09:00
parent 04dec3dc5e
commit 46cf23cbed

164
ghc.spec
View File

@ -1,5 +1,5 @@
## default enabled options ##
# experimental shared libraries support available in ghc-6.12 for x86
# haskell shared library support available in 6.12 and later for x86
%ifarch %{ix86} x86_64
%bcond_without shared
%endif
@ -17,8 +17,6 @@
%bcond_without libffi
## default disabled options ##
# include extralibs
%bcond_with extralibs
# quick build profile
%bcond_with quick
@ -28,6 +26,7 @@
Name: ghc
# haskell-platform-2011.1.0.0
Version: 7.0.1
# can't be reset - used by versioned library subpackages
Release: 3%{?dist}
Summary: Glasgow Haskell Compilation system
# fedora ghc has only been bootstrapped on the following archs:
@ -35,33 +34,26 @@ ExclusiveArch: %{ix86} x86_64 ppc alpha
License: BSD
Group: Development/Languages
Source0: http://www.haskell.org/ghc/dist/%{version}/ghc-%{version}-src.tar.bz2
%if %{with extralibs}
Source1: http://www.haskell.org/ghc/dist/%{version}/ghc-%{version}-src-extralibs.tar.bz2
%endif
%if %{with testsuite}
Source2: http://www.haskell.org/ghc/dist/%{version}/testsuite-%{version}.tar.bz2
%endif
Source3: ghc-doc-index.cron
URL: http://haskell.org/ghc/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# introduced for f14
Obsoletes: ghc-doc < 6.12.3-4
Provides: ghc-doc = %{version}-%{release}
# introduced for f11
Obsoletes: haddock < 2.4.2-3, ghc-haddock-devel < 2.4.2-3
Obsoletes: ghc-haddock-doc < 2.4.2-3
# introduced for f14
Obsoletes: ghc-time-devel < 1.1.2.4-5
Obsoletes: ghc-time-doc < 1.1.2.4-5
BuildRequires: ghc, ghc-rpm-macros >= 0.8.2
# introduced for f15
Obsoletes: ghc-libs < 7.0.1-3
BuildRequires: ghc, ghc-rpm-macros >= 0.11.1
BuildRequires: gmp-devel, libffi-devel
# for internal terminfo
BuildRequires: ncurses-devel
Requires: gcc, gmp-devel, libffi-devel
Requires: gcc
Requires: ghc-base-devel
# llvm is an optional dependency
%if %{with shared}
Requires: %{name}-libs = %{version}-%{release}
%endif
%if %{with manual}
BuildRequires: libxslt, docbook-style-xsl
%endif
@ -78,7 +70,7 @@ Patch4: ghc-use-system-libffi.patch
%description
GHC is a state-of-the-art programming suite for Haskell, a purely
functional programming language. It includes an optimising compiler
functional programming language. It includes an optimizing 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
@ -86,35 +78,54 @@ collection of libraries, and support for various language
extensions, including concurrency, exceptions, and a foreign language
interface.
%if %{with shared}
%package libs
Summary: Shared libraries for GHC
Group: Development/Libraries
Obsoletes: ghc-time < 1.1.2.4-5
%global ghc_version_override %{version}
%description libs
Shared libraries for Glorious Glasgow Haskell Compilation System (GHC).
%endif
%ghc_binlib_package Cabal 1.10.0.0
%ghc_binlib_package array 0.3.0.2
%ghc_binlib_package -c gmp-devel,libffi-devel base 4.3.0.0
%ghc_binlib_package bin-package-db 0.0.0.0
%ghc_binlib_package bytestring 0.9.1.8
%ghc_binlib_package containers 0.4.0.0
%ghc_binlib_package directory 1.1.0.0
%ghc_binlib_package extensible-exceptions 0.1.1.2
%ghc_binlib_package filepath 1.2.0.0
%ghc_binlib_package ghc %{ghc_version_override}
%ghc_binlib_package haskell2010 1.0.0.0
%ghc_binlib_package haskell98 1.1.0.0
%ghc_binlib_package hpc 0.5.0.6
%ghc_binlib_package old-locale 1.0.0.2
%ghc_binlib_package old-time 1.0.0.6
%ghc_binlib_package pretty 1.0.1.2
%ghc_binlib_package process 1.0.1.4
%ghc_binlib_package random 1.0.0.3
%ghc_binlib_package template-haskell 2.5.0.0
%ghc_binlib_package time 1.2.0.3
%ghc_binlib_package unix 2.4.1.0
%global version %{ghc_version_override}
%package devel
Summary: GHC development libraries meta package
Group: Development/Libraries
Requires: %(echo %{ghc_packages_list} | sed -e "s/\([^ ]*\)-\([^ ]*\)/ghc-\1-devel = \2,/g")
%description devel
This is a meta-package for all the development library packages in GHC.
%if %{with prof}
%package prof
Summary: Profiling libraries for GHC
Summary: GHC profiling libraries meta-package
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: %(echo %{ghc_packages_list} | sed -e "s/\([^ ]*\)-\([^ ]*\)/ghc-\1-prof = \2,/g")
Obsoletes: ghc-haddock-prof < 2.4.2-3
Obsoletes: ghc-time-prof < 1.1.2.4-5
%description prof
Profiling libraries for Glorious Glasgow Haskell Compilation System (GHC).
This is a meta-package for all the profiling library packages in GHC.
They should be installed when GHC's profiling subsystem is needed.
%endif
%global ghc_version_override %{version}
%ghc_binlib_package -n ghc
%prep
%setup -q -n %{name}-%{version} %{?with_extralibs:-b1} %{?with_testsuite:-b2}
%setup -q -n %{name}-%{version} %{?with_testsuite:-b2}
# absolute haddock path (was for html/libraries -> libraries)
%patch1 -p1 -b .orig
# type-level too big so skip it in gen_contents_index
@ -170,32 +181,30 @@ export CFLAGS="${CFLAGS:-%optflags}"
make -j$RPM_BUILD_NCPUS
%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=${RPM_BUILD_ROOT} install
SRC_TOP=$PWD
( cd $RPM_BUILD_ROOT
# library directories
find .%{_libdir}/%{name}-%{version} -maxdepth 1 -type d ! -name 'include' ! -name 'package.conf.d' -fprintf $SRC_TOP/rpm-lib-dir.files "%%%%dir %%p\n"
# library devel subdirs
find .%{_libdir}/%{name}-%{version} -mindepth 1 -type d \( -fprintf $SRC_TOP/rpm-dev-dir.files "%%%%dir %%p\n" \)
# split dyn, devel, conf and prof files
find .%{_libdir}/%{name}-%{version} -mindepth 1 \( -name 'libHS*-ghc%{version}.so' -fprintf $SRC_TOP/rpm-lib.files "%%%%attr(755,root,root) %%p\n" \) -o \( \( -name '*.p_hi' -o -name '*_p.a' \) -fprint $SRC_TOP/ghc-prof.files \) -o \( \( -name '*.hi' -o -name '*.dyn_hi' -o -name 'libHS*.a' -o -name 'HS*.o' -o -name '*.h' -o -name '*.conf' -o -type f -not -name 'package.cache' \) -fprint $SRC_TOP/rpm-base.files \)
# manuals (src dir are subdirs so dont duplicate them)
find .%{_docdir}/%{name}/html/* -type d ! -name libraries ! -name src > $SRC_TOP/rpm-doc-dir.files
)
for i in %{ghc_packages_list}; do
name=$(echo $i | sed -e "s/\(.*\)-.*/\1/")
ver=$(echo $i | sed -e "s/.*-\(.*\)/\1/")
%ghc_gen_filelists $name $ver
done
# make paths absolute (filter "./usr" to "/usr")
sed -i -e "s|\.%{_prefix}|%{_prefix}|" *.files
%ghc_gen_filelists ghc-binary 0.5.0.2
%ghc_gen_filelists ghc-prim 0.2.0.0
%ghc_gen_filelists integer-gmp 0.2.0.2
cat rpm-lib-dir.files rpm-lib.files > ghc-libs.files
cat rpm-dev-dir.files rpm-base.files rpm-doc-dir.files > ghc.files
%define merge_filelist()\
cat ghc-%1.files >> ghc-%2.files\
cat ghc-%1-devel.files >> ghc-%2-devel.files\
cat ghc-%1-prof.files >> ghc-%2-prof.files
# subpackage ghc libraries
sed -i -e "/ghc-%{version}\/ghc-%{version}/d" ghc.files ghc-libs.files ghc-prof.files
sed -i -e "/ghc-%{version}\/package.conf.d\/ghc-%{version}-.*.conf\$/d" ghc.files
sed -i -e "/html\/libraries\/ghc-%{version}\$/d" ghc.files
%ghc_gen_filelists ghc
%merge_filelist integer-gmp base
%merge_filelist ghc-prim base
%merge_filelist ghc-binary bin-package-db
ls $RPM_BUILD_ROOT%{ghclibdir}/libHSrts*.so >> ghc-base.files
ls -d $RPM_BUILD_ROOT%{ghclibdir}/libHSrts*.a $RPM_BUILD_ROOT%{ghclibdir}/package.conf.d/builtin_rts.conf $RPM_BUILD_ROOT%{ghclibdir}/include >> ghc-base-devel.files
sed -i -e "s|^$RPM_BUILD_ROOT||g" ghc-base{,-devel}.files
# these are handled as alternatives
for i in hsc2hs runhaskell; do
@ -237,9 +246,6 @@ rm testghc/*
make -C testsuite/tests/ghc-regress fast
%endif
%clean
rm -rf $RPM_BUILD_ROOT
%post
# Alas, GHC, Hugs, and nhc all come with different set of tools in
# addition to a runFOO:
@ -269,15 +275,36 @@ fi
%ghc_pkg_recache
%ghc_reindex_haddock
%files -f ghc.files
%files
%defattr(-,root,root,-)
%doc ANNOUNCE HACKING LICENSE README
%{_bindir}/*
%dir %{_libdir}/%{name}-%{version}
%ghost %{_libdir}/%{name}-%{version}/package.conf.d/package.cache
%if %{with manual}
%dir %{ghclibdir}
%{ghclibdir}/extra-gcc-opts
%{ghclibdir}/ghc
%{ghclibdir}/ghc-asm
%{ghclibdir}/ghc-pkg
%{ghclibdir}/ghc-split
%{ghclibdir}/ghc-usage.txt
%{ghclibdir}/ghci-usage.txt
%{ghclibdir}/haddock
%{ghclibdir}/hsc2hs
%{ghclibdir}/html
%{ghclibdir}/latex
%dir %{ghclibdir}/package.conf.d
%ghost %{ghclibdir}/package.conf.d/package.cache
%{ghclibdir}/runghc
%{ghclibdir}/template-hsc.h
%{ghclibdir}/unlit
%{_mandir}/man1/ghc.*
%if %{with manual}
%{ghcdocbasedir}/Cabal
%{ghcdocbasedir}/haddock
%{ghcdocbasedir}/users_guide
%endif
%dir %{_docdir}/ghc
%dir %{ghcdocbasedir}
%{ghcdocbasedir}/html
%if %{with doc}
%dir %{ghcdocbasedir}/libraries
%{ghcdocbasedir}/libraries/frames.html
@ -295,19 +322,26 @@ fi
%{_localstatedir}/lib/ghc
%endif
%if %{with shared}
%files libs -f ghc-libs.files
%files devel
%defattr(-,root,root,-)
%endif
%if %{with prof}
%files prof -f ghc-prof.files
%files prof
%defattr(-,root,root,-)
%endif
%changelog
* Thu Dec 30 2010 Jens Petersen <petersen@redhat.com> - 7.0.1-3
- subpackage all the libraries with ghc-rpm-macros-0.11.1
- put rts, integer-gmp and ghc-prim in base, and ghc-binary in bin-package-db
- drop the libs mega-subpackage
- prof is now a meta-package for backward compatibility
- add devel meta-subpackage to install easily all ghc libraries
- store doc cronjob package cache file under /var (#664850)
- drop old extralibs bcond
- no longer need to define or clean buildroot
- ghc base package requires ghc-base-devel
- drop ghc-time obsoletes
* Wed Nov 24 2010 Jens Petersen <petersen@redhat.com> - 7.0.1-2
- require libffi-devel