Fix autoconf issues. Fix ppc64 build. OBS-URL: https://build.opensuse.org/request/show/201119 OBS-URL: https://build.opensuse.org/package/show/devel:languages:haskell/ghc?expand=0&rev=142
441 lines
15 KiB
RPMSpec
441 lines
15 KiB
RPMSpec
#
|
|
# spec file for package ghc
|
|
#
|
|
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%global unregisterised_archs ppc64 s390 s390s
|
|
|
|
%ifarch %{unregisterised_archs}
|
|
%global ghc_without_shared 1
|
|
%endif
|
|
|
|
Name: ghc
|
|
Version: 7.6.3
|
|
Release: 0
|
|
Url: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.tar.bz2
|
|
Summary: The Glorious Glasgow Haskell Compiler
|
|
License: BSD-3-Clause
|
|
Group: Development/Languages/Other
|
|
ExclusiveArch: %{ix86} x86_64 ppc ppc64
|
|
|
|
BuildRequires: ghc-bytestring-devel
|
|
BuildRequires: ghc-compiler >= 7.0
|
|
BuildRequires: ghc-containers-devel
|
|
BuildRequires: ghc-directory-devel
|
|
BuildRequires: ghc-haskell98-devel
|
|
BuildRequires: ghc-pretty-devel
|
|
BuildRequires: ghc-process-devel
|
|
# These are needed so OBS will keep those packages
|
|
# Alternatively a Keep: line could be added to prjconf
|
|
%if 0%{?opensuse_bs}
|
|
BuildRequires: ghc-array-devel
|
|
BuildRequires: ghc-base-devel
|
|
BuildRequires: ghc-binary-devel
|
|
BuildRequires: ghc-deepseq-devel
|
|
BuildRequires: ghc-filepath-devel
|
|
BuildRequires: ghc-old-locale-devel
|
|
BuildRequires: ghc-old-time-devel
|
|
BuildRequires: ghc-time-devel
|
|
BuildRequires: ghc-unix-devel
|
|
%if %{undefined without_hscolour}
|
|
BuildRequires: ghc-array
|
|
BuildRequires: ghc-base
|
|
BuildRequires: ghc-containers
|
|
BuildRequires: ghc-deepseq
|
|
BuildRequires: ghc-directory
|
|
BuildRequires: ghc-filepath
|
|
BuildRequires: ghc-haskell98
|
|
BuildRequires: ghc-old-locale
|
|
BuildRequires: ghc-old-time
|
|
BuildRequires: ghc-process
|
|
BuildRequires: ghc-time
|
|
BuildRequires: ghc-unix
|
|
%endif
|
|
%endif
|
|
BuildRequires: autoconf
|
|
BuildRequires: automake
|
|
BuildRequires: binutils-devel
|
|
BuildRequires: gcc
|
|
BuildRequires: ghc-rpm-macros-extra
|
|
BuildRequires: glibc-devel
|
|
BuildRequires: gmp-devel
|
|
BuildRequires: libelf-devel
|
|
BuildRequires: libffi-devel
|
|
BuildRequires: ncurses-devel
|
|
BuildRequires: pkg-config
|
|
%if %{undefined without_manual}
|
|
BuildRequires: docbook-utils
|
|
BuildRequires: docbook-xsl-stylesheets
|
|
BuildRequires: libxslt
|
|
%endif
|
|
PreReq: update-alternatives
|
|
Requires: ghc-compiler = %{version}-%{release}
|
|
Requires: ghc-ghc-devel = %{version}-%{release}
|
|
Requires: ghc-libraries = %{version}-%{release}
|
|
Source: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.tar.bz2
|
|
# PATCH-FIX-UPSTREAM ghc-use-system-libffi.patch peter.trommler@ohm-hochschule.de - See Haskell trac #4496 and #5743; backport of our patch accepted upstream for next major release.
|
|
Patch: ghc-use-system-libffi.patch
|
|
# PATCH-FIX-UPSTREAM ghc-suse-as-needed.patch peter.trommler@ohm-hochschule.de - temporary fix for Haskell trac #7062, ghc libraries do not work with as_needed and new-dtags both enabled
|
|
Patch1: ghc-suse-as-needed.patch
|
|
# PATCH-FIX-UPSTREAM Cabal-fix-dynamic-exec-for-TH.patch peter.trommler@ohm-hochschule.de - Fedora patch 10
|
|
Patch2: Cabal-fix-dynamic-exec-for-TH.patch
|
|
# PATCH-FIX-UPSTREAM ghc-7.6.3-LlvmCodeGen-no-3.3-warning.patch peter.trommler@ohm-hochschule.de - Fedora patch 14: Silence warning about llvm 3.3
|
|
Patch3: ghc-7.6.3-LlvmCodeGen-no-3.3-warning.patch
|
|
# PATCH-FIX-UPSTREAM ghc-avoid-empty-llvm-used-definitions.patch peter.trommler@ohm-hochschule.de - Backport of commit db9b63105a54, fixes Haskell trac #7996
|
|
Patch4: ghc-avoid-empty-llvm-used-definitions.patch
|
|
# PATCH-FIX-UPSTREAM 0001-Fix-detection-of-library-for-shm-on-openSUSE.patch peter.trommler@ohm-hochschule.de - Fix test for librt and shm_* detection. Backported patch sent upstream 2013-09-24, Haskell trac #8350.
|
|
Patch5: 0001-Fix-detection-of-library-for-shm-on-openSUSE.patch
|
|
# PATCH-FIX-UPSTREAM 0001-Delete-spurious-comma-in-configure.ac.patch peter.trommler@ohm-hochschule.de - Fix test for setitimer. Backported patch sent upstream 2013-09-24, Haskell trac #8352
|
|
Patch6: 0001-Delete-spurious-comma-in-configure.ac.patch
|
|
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
|
|
%description
|
|
Haskell is the standard purely functional programming language; the
|
|
current language version is Haskell 98, agreed in December 1998.
|
|
|
|
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++, etc).
|
|
|
|
A wide variety of Haskell related resources (tutorials, libraries,
|
|
specifications, documentation, compilers, interprbeters, references,
|
|
contact information, links to research groups) are available from the
|
|
Haskell home page at <http://www.haskell.org/>.
|
|
|
|
%package compiler
|
|
Summary: GHC compiler and utilities
|
|
Group: Development/Languages/Other
|
|
Requires: gcc
|
|
Requires: ghc-base-devel
|
|
# This Requires fixes an issue in ghc's runtime system (rts) when
|
|
# locale files are missing. RTS loops and a memory leak eventually
|
|
# exhausts all memory and the program crashes. See Haskell trac #7695.
|
|
Requires: glibc-locale
|
|
Requires(post): update-alternatives
|
|
Requires(postun): update-alternatives
|
|
|
|
%description compiler
|
|
This package contains the GHC compiler, tools and utilities.
|
|
|
|
The GHC libraries are provided by ghc-devel.
|
|
To install all of GHC install package ghc.
|
|
|
|
%global ghc_version_override %{version}
|
|
|
|
|
|
%global _use_internal_dependency_generator 0
|
|
%global __find_provides %{_rpmconfigdir}/ghc-deps.sh --provides %{buildroot}%{ghclibdir}
|
|
%global __find_requires %{_rpmconfigdir}/ghc-deps.sh --requires %{buildroot}%{ghclibdir}
|
|
|
|
%global ghc_pkg_c_deps ghc-compiler = %{ghc_version_override}-%{release}
|
|
|
|
%if %{defined ghclibdir}
|
|
%ghc_lib_subpackage Cabal 1.16.0
|
|
%ghc_lib_subpackage array 0.4.0.1
|
|
%ghc_lib_subpackage -c gmp-devel,libffi-devel base 4.6.0.1
|
|
%ghc_lib_subpackage binary 0.5.1.1
|
|
%ghc_lib_subpackage bytestring 0.10.0.2
|
|
%ghc_lib_subpackage containers 0.5.0.0
|
|
%ghc_lib_subpackage deepseq 1.3.0.1
|
|
%ghc_lib_subpackage directory 1.2.0.1
|
|
%ghc_lib_subpackage filepath 1.3.0.1
|
|
%define ghc_pkg_obsoletes ghc-bin-package-db-devel < 0.0.0.0-%{release}
|
|
%ghc_lib_subpackage -x ghc %{ghc_version_override}
|
|
%undefine ghc_pkg_obsoletes
|
|
%ghc_lib_subpackage haskell2010 1.1.1.0
|
|
%ghc_lib_subpackage haskell98 2.0.0.2
|
|
%ghc_lib_subpackage hoopl 3.9.0.0
|
|
%ghc_lib_subpackage hpc 0.6.0.0
|
|
%ghc_lib_subpackage old-locale 1.0.0.5
|
|
%ghc_lib_subpackage old-time 1.1.0.1
|
|
%ghc_lib_subpackage pretty 1.1.1.0
|
|
%ghc_lib_subpackage process 1.1.0.2
|
|
%ghc_lib_subpackage template-haskell 2.8.0.0
|
|
%ghc_lib_subpackage time 1.4.0.1
|
|
%ghc_lib_subpackage unix 2.6.0.1
|
|
%endif
|
|
|
|
%global version %{ghc_version_override}
|
|
|
|
%package libraries
|
|
Summary: GHC development libraries meta package
|
|
Group: Development/Libraries/Other
|
|
Requires: ghc-compiler = %{version}-%{release}
|
|
Obsoletes: ghc-devel < %{version}-%{release}
|
|
Provides: ghc-devel = %{version}-%{release}
|
|
Obsoletes: ghc-prof < %{version}-%{release}
|
|
Provides: ghc-prof = %{version}-%{release}
|
|
%{?ghc_packages_list:Requires: %(echo %{ghc_packages_list} | sed -e "s/\([^ ]*\)-\([^ ]*\)/ghc-\1-devel = \2-%{release},/g")}
|
|
|
|
%description libraries
|
|
This is a meta-package for all the development library packages in GHC
|
|
except the ghc library, which is installed by the toplevel ghc metapackage.
|
|
|
|
%prep
|
|
%setup -q
|
|
rm -r ghc-tarballs/{mingw,mingw64,perl}
|
|
%patch -p1 -b .libffi
|
|
rm -r ghc-tarballs/libffi
|
|
%patch1 -p1 -b .suse
|
|
%patch2 -p1 -b .TH
|
|
%patch3 -p1 -b .llvm-version
|
|
%patch4 -p1 -b .llvm-empty
|
|
%patch5 -p1 -b .shm
|
|
%patch6 -p1 -b .comma
|
|
|
|
%build
|
|
# required for patch and patch1
|
|
#autoreconf -fi
|
|
|
|
# required for patch5 and patch6 and will run autoreconf for patch and patch1
|
|
perl boot
|
|
|
|
# Check if bootstrap is required, i.e. version is different from ghc's version
|
|
# Note: Cannot use ghc_version macro here as we defined version override earlier
|
|
%if "%version" != "%(ghc --numeric-version)"
|
|
%define ghc_boot 1
|
|
cat > mk/build.mk <<EOF
|
|
GhcLibWays = v
|
|
%ifarch %{unregisterised_archs}
|
|
GhcUnregisterised=YES
|
|
%endif
|
|
%ifarch ppc64
|
|
GhcWithNativeCodeGen=NO
|
|
SplitObjs=NO
|
|
GhcRTSWays := debug
|
|
GhcNotThreaded=YES
|
|
GhcWithInterpreter=NO
|
|
%endif
|
|
HADDOCK_DOCS = NO
|
|
BUILD_DOCBOOK_HTML = NO
|
|
HSCOLOUR_SRCS = NO
|
|
EOF
|
|
./configure --prefix=%{_builddir}/ghc-boot --with-system-libffi \
|
|
--with-gcc=%{_bindir}/gcc
|
|
make %{?_smp_mflags}
|
|
make install
|
|
make clean
|
|
%endif
|
|
|
|
# http://hackage.haskell.org/trac/ghc/wiki/Platforms
|
|
# cf https://github.com/gentoo-haskell/gentoo-haskell/tree/master/dev-lang/ghc
|
|
cat > mk/build.mk << EOF
|
|
%ifnarch %{unregisterised_archs}
|
|
BuildFlavour = perf
|
|
%endif
|
|
GhcLibWays = v %{!?ghc_without_shared:dyn} %{!?without_prof:p}
|
|
%ifarch %{unregisterised_archs}
|
|
GhcUnregisterised=YES
|
|
%endif
|
|
%ifarch ppc64
|
|
GhcWithNativeCodeGen=NO
|
|
SplitObjs=NO
|
|
GhcRTSWays := debug
|
|
GhcNotThreaded=YES
|
|
GhcWithInterpreter=NO
|
|
%endif
|
|
%if %{defined without_haddock}
|
|
HADDOCK_DOCS = NO
|
|
%endif
|
|
%if %{defined without_manual}
|
|
BUILD_DOCBOOK_HTML = NO
|
|
%endif
|
|
%if %{defined without_hscolour}
|
|
HSCOLOUR_SRCS = NO
|
|
%endif
|
|
EOF
|
|
# BuildFlavours are defined in mk/build.mk.sample
|
|
cat mk/build.mk.sample >> mk/build.mk
|
|
|
|
export CFLAGS="${CFLAGS:-%optflags}"
|
|
./configure --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} \
|
|
--bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} \
|
|
--datadir=%{_datadir} --includedir=%{_includedir} --libdir=%{_libdir} \
|
|
--libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} \
|
|
--sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \
|
|
--docdir=%{ghcdocroot} \
|
|
%{?ghc_boot:--with-ghc=%{_builddir}/ghc-boot/bin/ghc} \
|
|
--with-system-libffi \
|
|
--with-gcc=%{_bindir}/gcc
|
|
|
|
make %{?_smp_mflags}
|
|
|
|
%install
|
|
%ghc_suse_disable_debug_packages
|
|
%makeinstall
|
|
|
|
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
|
|
echo "%doc libraries/$name/LICENSE" >> ghc-$name.files
|
|
done
|
|
|
|
# ghc-base should own ghclibdir
|
|
echo "%dir %{ghclibdir}" >> ghc-base.files
|
|
|
|
%ghc_gen_filelists bin-package-db 0.0.0.0
|
|
%ghc_gen_filelists ghc %{ghc_version_override}
|
|
%ghc_gen_filelists ghc-prim 0.3.0.0
|
|
%ghc_gen_filelists integer-gmp 0.5.0.0
|
|
|
|
%define merge_filelist()\
|
|
cat ghc-%1.files >> ghc-%2.files\
|
|
cat ghc-%1-devel.files >> ghc-%2-devel.files\
|
|
cp -p libraries/%1/LICENSE libraries/LICENSE.%1\
|
|
echo "%doc libraries/LICENSE.%1" >> ghc-%2.files
|
|
|
|
%merge_filelist integer-gmp base
|
|
%merge_filelist ghc-prim base
|
|
%merge_filelist bin-package-db ghc
|
|
|
|
%if %{undefined ghc_without_shared}
|
|
ls %{buildroot}%{ghclibdir}/libHS*.so >> ghc-base.files
|
|
sed -i -e "s|^%{buildroot}||g" ghc-base.files
|
|
%endif
|
|
ls -d %{buildroot}%{ghclibdir}/libHS*.a %{buildroot}%{ghclibdir}/package.conf.d/builtin_*.conf %{buildroot}%{ghclibdir}/include >> ghc-base-devel.files
|
|
sed -i -e "s|^%{buildroot}||g" ghc-base-devel.files
|
|
|
|
# these are handled as alternatives
|
|
for i in hsc2hs runhaskell; do
|
|
if [ -x %{buildroot}%{_bindir}/$i-ghc ]; then
|
|
rm %{buildroot}%{_bindir}/$i
|
|
else
|
|
mv %{buildroot}%{_bindir}/$i{,-ghc}
|
|
fi
|
|
touch %{buildroot}%{_bindir}/$i
|
|
done
|
|
|
|
%ghc_strip_dynlinked
|
|
|
|
%check
|
|
# Actually, I took this from Jens Petersen's Fedora package
|
|
# stolen from ghc6/debian/rules:
|
|
# Do some very simple tests that the compiler actually works
|
|
rm -rf testghc
|
|
mkdir testghc
|
|
echo 'main = putStrLn "Foo"' > testghc/foo.hs
|
|
inplace/bin/ghc-stage2 testghc/foo.hs -o testghc/foo
|
|
[ "$(testghc/foo)" = "Foo" ]
|
|
# doesn't seem to work inplace:
|
|
#[ "$(inplace/bin/runghc testghc/foo.hs)" = "Foo" ]
|
|
rm testghc/*
|
|
echo 'main = putStrLn "Foo"' > testghc/foo.hs
|
|
inplace/bin/ghc-stage2 testghc/foo.hs -o testghc/foo -O2
|
|
[ "$(testghc/foo)" = "Foo" ]
|
|
rm testghc/*
|
|
%if %{undefined ghc_without_shared}
|
|
echo 'main = putStrLn "Foo"' > testghc/foo.hs
|
|
inplace/bin/ghc-stage2 testghc/foo.hs -o testghc/foo -dynamic
|
|
[ "$(testghc/foo)" = "Foo" ]
|
|
rm testghc/*
|
|
%endif
|
|
|
|
%post compiler
|
|
# 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 compiler
|
|
if test "$1" = 0; then
|
|
update-alternatives --remove runhaskell %{_bindir}/runghc
|
|
update-alternatives --remove hsc2hs %{_bindir}/hsc2hs-ghc
|
|
fi
|
|
|
|
%files
|
|
%defattr(-,root,root,-)
|
|
%doc LICENSE
|
|
|
|
%files compiler
|
|
%defattr(-,root,root,-)
|
|
%doc ANNOUNCE HACKING LICENSE README
|
|
%{_bindir}/ghc
|
|
%{_bindir}/ghc-%{version}
|
|
%{_bindir}/ghc-pkg
|
|
%{_bindir}/ghc-pkg-%{version}
|
|
%{_bindir}/ghci
|
|
%{_bindir}/ghci-%{version}
|
|
%{_bindir}/hp2ps
|
|
%{_bindir}/hpc
|
|
%ghost %attr(755,root,root) %{_bindir}/hsc2hs
|
|
%{_bindir}/hsc2hs-ghc
|
|
%{_bindir}/runghc
|
|
%{_bindir}/runghc-%{version}
|
|
%ghost %attr(755,root,root) %{_bindir}/runhaskell
|
|
%{_bindir}/runhaskell-ghc
|
|
%{ghclibdir}/settings
|
|
%{ghclibdir}/ghc
|
|
%{ghclibdir}/ghc-pkg
|
|
%ifnarch %{unregisterised_archs}
|
|
%{ghclibdir}/ghc-split
|
|
%endif
|
|
%{ghclibdir}/ghc-usage.txt
|
|
%{ghclibdir}/ghci-usage.txt
|
|
%{ghclibdir}/hsc2hs
|
|
%dir %{ghclibdir}/package.conf.d
|
|
%ghost %{ghclibdir}/package.conf.d/package.cache
|
|
%{ghclibdir}/runghc
|
|
%{ghclibdir}/template-hsc.h
|
|
%{ghclibdir}/unlit
|
|
%dir %{ghcdocroot}
|
|
%dir %{ghcdocbasedir}
|
|
%dir %{ghcdocbasedir}/libraries
|
|
%{_mandir}/man1/ghc.*
|
|
%if %{undefined without_haddock}
|
|
%{_bindir}/haddock
|
|
%{_bindir}/haddock-ghc-%{version}
|
|
%{ghclibdir}/html
|
|
%{ghclibdir}/latex
|
|
%{ghclibdir}/haddock
|
|
%if %{undefined without_manual}
|
|
%{ghcdocbasedir}/haddock
|
|
%{ghcdocbasedir}/users_guide
|
|
%endif
|
|
%{ghcdocbasedir}/libraries/frames.html
|
|
%{ghcdocbasedir}/libraries/gen_contents_index
|
|
%{ghcdocbasedir}/libraries/hslogo-16.png
|
|
%{ghcdocbasedir}/libraries/ocean.css
|
|
%{ghcdocbasedir}/libraries/prologue.txt
|
|
%{ghcdocbasedir}/libraries/synopsis.png
|
|
%{ghcdocbasedir}/index.html
|
|
%ghost %{ghcdocbasedir}/libraries/doc-index*.html
|
|
%ghost %{ghcdocbasedir}/libraries/haddock-util.js
|
|
%ghost %{ghcdocbasedir}/libraries/index*.html
|
|
%ghost %{ghcdocbasedir}/libraries/minus.gif
|
|
%ghost %{ghcdocbasedir}/libraries/plus.gif
|
|
%endif
|
|
|
|
%files libraries
|
|
%defattr(-,root,root,-)
|
|
%doc LICENSE
|
|
|
|
%changelog
|