Compare commits

...

11 Commits
master ... el5

Author SHA1 Message Date
Jens Petersen 16bd29d4d9 build with gcc44 on intel archs to fix dynamic linking
- this build re-enables shared libraries
2014-01-13 15:44:19 +09:00
Jens Petersen 634c496912 no manpages either from docbook 2013-12-26 19:03:43 +09:00
Jens Petersen 9053635f54 set without_manual since docbook-dtd fails in configure 2013-12-26 18:08:35 +09:00
Jens Petersen ffa4970ed4 update comments on shared libs and bootstrapping for epel5 2013-12-26 17:20:02 +09:00
Jens Petersen bfb829e82e final build 2013-12-26 12:29:51 +09:00
Jens Petersen 5cc7cbb6d2 backport 7.0.4-46.el6
- bootstrap
- use ghc_lib_subpackage
2013-12-25 17:32:03 +09:00
Jens Petersen 08317bd05b rebase to 6.12.3-6.el6, but without hscolour and keep buildroot/cleaning 2012-06-02 16:33:11 +09:00
Jens Petersen 1731bbf65b update to 6.12.3-5 from el6 branch 2012-06-01 17:53:46 +09:00
Jens Petersen bd5c3be99c update to 6.10.4 2010-09-30 10:01:49 +10:00
Jens Petersen 494bb4045c backport 6.8.3 from F11; build without happy 2010-09-29 13:51:49 +10:00
Jens Petersen 6acbe2a1c3 import f10 ghc for i386, x86_64 and ppc 2010-09-29 10:03:13 +10:00
15 changed files with 836 additions and 216 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
ghc-6.12.3-src.tar.bz2
testsuite-6.12.3.tar.bz2
/ghc-7.0.4-src.tar.bz2
/testsuite-7.0.4.tar.bz2

View File

@ -0,0 +1,145 @@
diff -rN -u old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Configure.hs new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Configure.hs
--- old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Configure.hs 2011-01-22 14:49:22.000000000 +1000
+++ new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Configure.hs 2011-01-22 14:49:22.000000000 +1000
@@ -488,6 +488,7 @@
withVanillaLib = fromFlag $ configVanillaLib cfg,
withProfLib = fromFlag $ configProfLib cfg,
withSharedLib = fromFlag $ configSharedLib cfg,
+ withDynExe = fromFlag $ configDynExe cfg,
withProfExe = fromFlag $ configProfExe cfg,
withOptimization = fromFlag $ configOptimization cfg,
withGHCiLib = fromFlag $ configGHCiLib cfg,
diff -u ghc-7.0.1/libraries/Cabal/Distribution/Simple/GHC.hs.orig ghc-7.0.1/libraries/Cabal/Distribution/Simple/GHC.hs
--- ghc-7.0.1/libraries/Cabal/Distribution/Simple/GHC.hs.orig 2010-11-13 04:10:09.000000000 +1000
+++ ghc-7.0.1/libraries/Cabal/Distribution/Simple/GHC.hs 2011-01-22 14:52:52.000000000 +1000
@@ -537,6 +537,7 @@
info verbosity "Building C Sources..."
sequence_ [do let (odir,args) = constructCcCmdLine lbi libBi clbi pref
filename verbosity
+ False
(withProfLib lbi)
createDirectoryIfMissingVerbose verbosity True odir
runGhcProg args
@@ -671,7 +672,7 @@
info verbosity "Building C Sources."
sequence_ [do let (odir,args) = constructCcCmdLine lbi exeBi clbi
exeDir filename verbosity
- (withProfExe lbi)
+ (withDynExe lbi) (withProfExe lbi)
createDirectoryIfMissingVerbose verbosity True odir
runGhcProg args
| filename <- cSources exeBi]
@@ -679,7 +680,7 @@
srcMainFile <- findFile (exeDir : hsSourceDirs exeBi) modPath
let cObjs = map (`replaceExtension` objExtension) (cSources exeBi)
- let binArgs linkExe profExe =
+ let binArgs linkExe dynExe profExe =
"--make"
: (if linkExe
then ["-o", targetDir </> exeNameReal]
@@ -691,6 +692,9 @@
++ ["-l"++lib | lib <- extraLibs exeBi]
++ ["-L"++libDir | libDir <- extraLibDirs exeBi]
++ concat [["-framework", f] | f <- PD.frameworks exeBi]
+ ++ if dynExe
+ then ["-dynamic"]
+ else []
++ if profExe
then ["-prof",
"-hisuf", "p_hi",
@@ -704,9 +708,9 @@
-- run at compile time needs to be the vanilla ABI so it can
-- be loaded up and run by the compiler.
when (withProfExe lbi && TemplateHaskell `elem` allExtensions exeBi)
- (runGhcProg (binArgs False False))
+ (runGhcProg (binArgs (withDynExe lbi) False False))
- runGhcProg (binArgs True (withProfExe lbi))
+ runGhcProg (binArgs True (withDynExe lbi) (withProfExe lbi))
-- | Filter the "-threaded" flag when profiling as it does not
-- work with ghc-6.8 and older.
@@ -836,9 +840,9 @@
ierror = error ("internal error: unexpected package db stack: " ++ show dbstack)
constructCcCmdLine :: LocalBuildInfo -> BuildInfo -> ComponentLocalBuildInfo
- -> FilePath -> FilePath -> Verbosity -> Bool
+ -> FilePath -> FilePath -> Verbosity -> Bool -> Bool
->(FilePath,[String])
-constructCcCmdLine lbi bi clbi pref filename verbosity profiling
+constructCcCmdLine lbi bi clbi pref filename verbosity dynamic profiling
= let odir | compilerVersion (compiler lbi) >= Version [6,4,1] [] = pref
| otherwise = pref </> takeDirectory filename
-- ghc 6.4.1 fixed a bug in -odir handling
@@ -852,6 +856,7 @@
-- option to ghc here when compiling C code, so that the PROFILING
-- macro gets defined. The macro is used in ghc's Rts.h in the
-- definitions of closure layouts (Closures.h).
+ ++ ["-dynamic" | dynamic]
++ ["-prof" | profiling])
ghcCcOptions :: LocalBuildInfo -> BuildInfo -> ComponentLocalBuildInfo
diff -rN -u old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/LocalBuildInfo.hs new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/LocalBuildInfo.hs
--- old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/LocalBuildInfo.hs 2011-01-22 14:49:22.000000000 +1000
+++ new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/LocalBuildInfo.hs 2011-01-22 14:49:22.000000000 +1000
@@ -118,6 +118,7 @@
withVanillaLib:: Bool, -- ^Whether to build normal libs.
withProfLib :: Bool, -- ^Whether to build profiling versions of libs.
withSharedLib :: Bool, -- ^Whether to build shared versions of libs.
+ withDynExe :: Bool, -- ^Whether to link executables dynamically
withProfExe :: Bool, -- ^Whether to build executables for profiling.
withOptimization :: OptimisationLevel, -- ^Whether to build with optimization (if available).
withGHCiLib :: Bool, -- ^Whether to build libs suitable for use with GHCi.
diff -rN -u old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Setup.hs new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Setup.hs
--- old-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Setup.hs 2011-01-22 14:49:22.000000000 +1000
+++ new-ghc-7.0.1/libraries/Cabal/Distribution/Simple/Setup.hs 2011-01-22 14:49:22.000000000 +1000
@@ -270,6 +270,7 @@
configVanillaLib :: Flag Bool, -- ^Enable vanilla library
configProfLib :: Flag Bool, -- ^Enable profiling in the library
configSharedLib :: Flag Bool, -- ^Build shared library
+ configDynExe :: Flag Bool, -- ^Enable dynamic linking of the executables.
configProfExe :: Flag Bool, -- ^Enable profiling in the executables.
configConfigureArgs :: [String], -- ^Extra arguments to @configure@
configOptimization :: Flag OptimisationLevel, -- ^Enable optimization.
@@ -301,6 +302,7 @@
configVanillaLib = Flag True,
configProfLib = Flag False,
configSharedLib = Flag False,
+ configDynExe = Flag False,
configProfExe = Flag False,
configOptimization = Flag NormalOptimisation,
configProgPrefix = Flag (toPathTemplate ""),
@@ -388,10 +390,16 @@
configSharedLib (\v flags -> flags { configSharedLib = v })
(boolOpt [] [])
+ ,option "" ["executable-dynamic"]
+ "Executable dynamic linking (fedora patch)"
+ configDynExe (\v flags -> flags { configDynExe = v })
+ (boolOpt [] [])
+
,option "" ["executable-profiling"]
"Executable profiling"
configProfExe (\v flags -> flags { configProfExe = v })
(boolOpt [] [])
+
,multiOption "optimization"
configOptimization (\v flags -> flags { configOptimization = v })
[optArg' "n" (Flag . flagToOptimisationLevel)
@@ -553,6 +561,7 @@
configVanillaLib = mempty,
configProfLib = mempty,
configSharedLib = mempty,
+ configDynExe = mempty,
configProfExe = mempty,
configConfigureArgs = mempty,
configOptimization = mempty,
@@ -583,6 +592,7 @@
configVanillaLib = combine configVanillaLib,
configProfLib = combine configProfLib,
configSharedLib = combine configSharedLib,
+ configDynExe = combine configDynExe,
configProfExe = combine configProfExe,
configConfigureArgs = combine configConfigureArgs,
configOptimization = combine configOptimization,

View File

@ -0,0 +1,37 @@
From 3a49e5147822bdfea2c763c863a7ca6b6baee609 Mon Sep 17 00:00:00 2001
From: Joachim Breitner <mail@joachim-breitner.de>
Date: Mon, 5 Sep 2011 09:37:24 +0200
Subject: [PATCH] Add s390x to list of supported architectures
---
aclocal.m4 | 3 +++
configure.ac | 2 +-
2 files changed, 4 insertions(+), 1 deletions(-)
Index: ghc-7.0.4/aclocal.m4
===================================================================
--- ghc-7.0.4.orig/aclocal.m4 2011-08-31 08:44:42.000000000 +0200
+++ ghc-7.0.4/aclocal.m4 2011-09-05 14:08:59.000000000 +0200
@@ -1457,6 +1457,9 @@
rs6000)
$2="rs6000"
;;
+ s390x*)
+ $2="s390x"
+ ;;
s390*)
$2="s390"
;;
Index: ghc-7.0.4/configure.ac
===================================================================
--- ghc-7.0.4.orig/configure.ac 2011-06-13 19:10:04.000000000 +0200
+++ ghc-7.0.4/configure.ac 2011-09-05 14:08:59.000000000 +0200
@@ -244,7 +244,7 @@
checkArch() {
case $1 in
- alpha|arm|hppa|hppa1_1|i386|ia64|m68k|mips|mipseb|mipsel|powerpc|powerpc64|rs6000|s390|sparc|sparc64|vax|x86_64)
+ alpha|arm|hppa|hppa1_1|i386|ia64|m68k|mips|mipseb|mipsel|powerpc|powerpc64|rs6000|s390|s390x|sparc|sparc64|vax|x86_64)
;;
*)
echo "Unknown arch $1"

41
ghc-doc-index.cron Executable file
View File

@ -0,0 +1,41 @@
#! /bin/bash
if [ -e /etc/sysconfig/ghc-doc-index ]; then
. /etc/sysconfig/ghc-doc-index
fi
if [ "$CRON" = "no" ]; then
exit 0
fi
LOCKFILE=/var/lock/ghc-doc-index.lock
# the lockfile is not meant to be perfect, it's just in case the
# two cron scripts get run close to each other to keep
# them from stepping on each other's toes.
[ -f $LOCKFILE ] && exit 0
trap "{ rm -f $LOCKFILE ; exit 255; }" EXIT
touch $LOCKFILE
PKGDIRCACHE=/var/lib/ghc/pkg-dir.cache
LISTING="env LANG=C ls -dl"
# only re-index ghc docs when there are changes
cd /usr/share/doc/ghc/html/libraries
if [ -r "$PKGDIRCACHE" ]; then
$LISTING */ > $PKGDIRCACHE.new
DIR_DIFF=$(diff $PKGDIRCACHE $PKGDIRCACHE.new)
else
$LISTING */ > $PKGDIRCACHE
fi
if [ -x "gen_contents_index" -a ! -r "$PKGDIRCACHE.new" -o -n "$DIR_DIFF" ]; then
./gen_contents_index --batch
fi
if [ -f $PKGDIRCACHE.new ]; then
mv -f $PKGDIRCACHE{.new,}
fi
exit 0

View File

@ -0,0 +1,13 @@
diff -Nuard ghc-7.0.1.orig/compiler/main/DriverPipeline.hs ghc-7.0.1/compiler/main/DriverPipeline.hs
--- ghc-7.0.1.orig/compiler/main/DriverPipeline.hs 2010-11-12 19:10:03.000000000 +0100
+++ ghc-7.0.1/compiler/main/DriverPipeline.hs 2011-02-22 11:08:26.079686994 +0100
@@ -1211,6 +1211,9 @@
let ld_r args = SysTools.runLink dflags ([
SysTools.Option "-nostdlib",
SysTools.Option "-nodefaultlibs",
+#ifdef sparc_TARGET_ARCH
+ SysTools.Option "-Wl,--no-relax",
+#endif
SysTools.Option "-Wl,-r",
SysTools.Option ld_x_flag,
SysTools.Option "-o",

View File

@ -0,0 +1,20 @@
diff -u ghc-6.12.3/libraries/gen_contents_index gen_contents_index
--- ghc-6.12.3/libraries/gen_contents_index 2010-11-05 10:28:02.000000000 +1000
+++ gen_contents_index 2010-11-05 10:20:37.000000000 +1000
@@ -22,5 +22,5 @@
done
;;
-*)
+--batch)
HADDOCK=/usr/bin/haddock
# We don't want the GHC API to swamp the index
@@ -32,6 +32,9 @@
HADDOCK_ARGS="$HADDOCK_ARGS $HADDOCK_ARG"
done
;;
+*)
+ HADDOCK=/bin/true
+ tty -s && echo Run with '--batch' to index package haddock docs.
esac
# Now create the combined contents and index pages

View File

@ -0,0 +1,12 @@
diff -u ghc-6.12.3/libraries/gen_contents_index\~ ghc-6.12.3/libraries/gen_contents_index
--- ghc-6.12.3/libraries/gen_contents_index~ 2010-09-14 13:03:12.000000000 +1000
+++ ghc-6.12.3/libraries/gen_contents_index 2010-11-04 16:41:32.000000000 +1000
@@ -24,7 +24,7 @@
*)
HADDOCK=/usr/bin/haddock
# We don't want the GHC API to swamp the index
- HADDOCK_FILES=`ls -1 */*.haddock | grep -v '/ghc\.haddock' | sort`
+ HADDOCK_FILES=`ls -1 */*.haddock | grep -v '/ghc\.haddock' | grep -v '/type-level\.haddock' | sort`
for HADDOCK_FILE in $HADDOCK_FILES
do
NAME_VERSION=`echo "$HADDOCK_FILE" | sed 's#/.*##'`

View File

@ -0,0 +1,34 @@
diff -up ghc-7.0.2/rts/Linker.c.fix-powerpc ghc-7.0.2/rts/Linker.c
--- ghc-7.0.2/rts/Linker.c.fix-powerpc 2011-02-28 19:10:08.000000000 +0100
+++ ghc-7.0.2/rts/Linker.c 2011-04-25 22:20:10.781092305 +0200
@@ -70,11 +70,12 @@
#include <sys/wait.h>
#endif
-#if defined(linux_HOST_OS ) || defined(freebsd_HOST_OS) || \
- defined(dragonfly_HOST_OS) || defined(netbsd_HOST_OS ) || \
- defined(openbsd_HOST_OS ) || \
- ( defined(darwin_HOST_OS ) && !defined(powerpc_HOST_ARCH) )
-/* Don't use mmap on powerpc-apple-darwin as mmap doesn't support
+#if !defined(powerpc_HOST_ARCH) && \
+ ( defined(linux_HOST_OS ) || defined(freebsd_HOST_OS) || \
+ defined(dragonfly_HOST_OS) || defined(netbsd_HOST_OS ) || \
+ defined(openbsd_HOST_OS ) || defined(darwin_HOST_OS ) || \
+ defined(kfreebsdgnu_HOST_OS) )
+/* Don't use mmap on powerpc_HOST_ARCH as mmap doesn't support
* reallocating but we need to allocate jump islands just after each
* object images. Otherwise relative branches to jump islands can fail
* due to 24-bits displacement overflow.
@@ -2436,7 +2437,11 @@ static void ocFlushInstructionCacheFrom(
static void ocFlushInstructionCache( ObjectCode *oc )
{
/* The main object code */
- ocFlushInstructionCacheFrom(oc->image + oc->misalignment, oc->fileSize);
+ ocFlushInstructionCacheFrom(oc->image
+#ifdef darwin_HOST_OS
+ + oc->misalignment
+#endif
+ , oc->fileSize);
/* Jump Islands */
ocFlushInstructionCacheFrom(oc->symbol_extras, sizeof(SymbolExtra) * oc->n_symbol_extras);

18
ghc-powerpc-pthread.patch Normal file
View File

@ -0,0 +1,18 @@
diff -up ghc-7.0.2/aclocal.m4.pthread ghc-7.0.2/aclocal.m4
--- ghc-7.0.2/aclocal.m4.pthread 2011-02-28 13:10:03.000000000 -0500
+++ ghc-7.0.2/aclocal.m4 2011-04-20 07:12:36.489772545 -0400
@@ -1385,7 +1385,7 @@ AC_MSG_NOTICE(Building in-tree ghc-pwd)
dnl except we don't want to have to know what make is called. Sigh.
rm -rf utils/ghc-pwd/dist-boot
mkdir utils/ghc-pwd/dist-boot
- if ! "$WithGhc" -v0 -no-user-package-conf -hidir utils/ghc-pwd/dist-boot -odir utils/ghc-pwd/dist-boot -stubdir utils/ghc-pwd/dist-boot --make utils/ghc-pwd/Main.hs -o utils/ghc-pwd/dist-boot/ghc-pwd
+ if ! "$WithGhc" -optl-pthread -v0 -no-user-package-conf -hidir utils/ghc-pwd/dist-boot -odir utils/ghc-pwd/dist-boot -stubdir utils/ghc-pwd/dist-boot --make utils/ghc-pwd/Main.hs -o utils/ghc-pwd/dist-boot/ghc-pwd
then
AC_MSG_ERROR([Building ghc-pwd failed])
fi
diff -up ghc-7.0.4/ghc/ghc.wrapper.pthread ghc-7.0.4/ghc/ghc.wrapper
--- ghc-7.0.4/ghc/ghc.wrapper.pthread 2012-03-09 09:39:58.205330373 +0900
+++ ghc-7.0.4/ghc/ghc.wrapper 2012-03-09 09:41:01.791237737 +0900
@@ -1 +1 @@
-exec "$executablename" -B"$topdir" -pgmc "$pgmgcc" -pgma "$pgmgcc" -pgml "$pgmgcc" -pgmP "$pgmgcc -E -undef -traditional" -optc-I$(pkg-config --variable=includedir libffi) ${1+"$@"}
+exec "$executablename" -B"$topdir" -pgmc "$pgmgcc" -pgma "$pgmgcc" -pgml "$pgmgcc" -pgmP "$pgmgcc -E -undef -traditional" -optl-pthread -optc-I$(pkg-config --variable=includedir libffi) ${1+"$@"}

120
ghc-use-system-libffi.patch Normal file
View File

@ -0,0 +1,120 @@
diff -up ghc-7.0.1/compiler/ghc.cabal.in.libffi ghc-7.0.1/compiler/ghc.cabal.in
--- ghc-7.0.1/compiler/ghc.cabal.in.libffi 2010-11-13 04:10:03.000000000 +1000
+++ ghc-7.0.1/compiler/ghc.cabal.in 2010-11-16 19:04:28.000000000 +1000
@@ -83,7 +83,7 @@ Library
if flag(ghci)
Build-Depends: template-haskell
CPP-Options: -DGHCI
- Include-Dirs: ../libffi/build/include
+ pkgconfig-depends: libffi
if !flag(ncg)
CPP-Options: -DOMIT_NATIVE_CODEGEN
diff -up ghc-7.0.1/ghc.mk.libffi ghc-7.0.1/ghc.mk
--- ghc-7.0.1/ghc.mk.libffi 2010-11-13 04:10:05.000000000 +1000
+++ ghc-7.0.1/ghc.mk 2010-11-16 19:04:28.000000000 +1000
@@ -437,7 +437,6 @@ utils/runghc/dist/package-data.mk: compi
# add the final two package.conf dependencies: ghc-prim depends on RTS,
# and RTS depends on libffi.
libraries/ghc-prim/dist-install/package-data.mk : rts/package.conf.inplace
-rts/package.conf.inplace : libffi/package.conf.inplace
endif
# --------------------------------
@@ -452,11 +451,6 @@ ALL_STAGE1_LIBS += $(foreach lib,$(PACKA
endif
BOOT_LIBS = $(foreach lib,$(STAGE0_PACKAGES),$(libraries/$(lib)_dist-boot_v_LIB))
-OTHER_LIBS = libffi/dist-install/build/libHSffi$(v_libsuf) libffi/dist-install/build/HSffi.o
-ifeq "$(BuildSharedLibs)" "YES"
-OTHER_LIBS += libffi/dist-install/build/libHSffi$(dyn_libsuf)
-endif
-
# ----------------------------------------
# Special magic for the ghc-prim package
@@ -581,7 +575,6 @@ BUILD_DIRS += \
driver/ghci \
driver/ghc \
driver/haddock \
- libffi \
includes \
rts
@@ -937,11 +930,10 @@ INSTALL_DISTDIR_compiler = stage2
# Now we can do the installation
install_packages: install_libexecs
-install_packages: libffi/package.conf.install rts/package.conf.install
+install_packages: rts/package.conf.install
$(call INSTALL_DIR,"$(DESTDIR)$(topdir)")
"$(RM)" $(RM_OPTS_REC) "$(INSTALLED_PACKAGE_CONF)"
$(call INSTALL_DIR,"$(INSTALLED_PACKAGE_CONF)")
- "$(INSTALLED_GHC_PKG_REAL)" --force --global-conf "$(INSTALLED_PACKAGE_CONF)" update libffi/package.conf.install
"$(INSTALLED_GHC_PKG_REAL)" --force --global-conf "$(INSTALLED_PACKAGE_CONF)" update rts/package.conf.install
$(foreach p, $(INSTALLED_PKG_DIRS), \
$(call make-command, \
@@ -1024,7 +1016,7 @@ BIN_DIST_MK = $(BIN_DIST_PREP_DIR)/bindi
unix-binary-dist-prep:
"$(RM)" $(RM_OPTS_REC) bindistprep/
"$(MKDIRHIER)" $(BIN_DIST_PREP_DIR)
- set -e; for i in packages LICENSE compiler ghc rts libraries utils docs libffi includes driver mk rules Makefile aclocal.m4 config.sub config.guess install-sh extra-gcc-opts.in ghc.mk inplace distrib/configure.ac distrib/README distrib/INSTALL; do ln -s ../../$$i $(BIN_DIST_PREP_DIR)/; done
+ set -e; for i in packages LICENSE compiler ghc rts libraries utils docs includes driver mk rules Makefile aclocal.m4 config.sub config.guess install-sh extra-gcc-opts.in ghc.mk inplace distrib/configure.ac distrib/README distrib/INSTALL; do ln -s ../../$$i $(BIN_DIST_PREP_DIR)/; done
echo "HADDOCK_DOCS = $(HADDOCK_DOCS)" >> $(BIN_DIST_MK)
echo "LATEX_DOCS = $(LATEX_DOCS)" >> $(BIN_DIST_MK)
echo "BUILD_DOCBOOK_HTML = $(BUILD_DOCBOOK_HTML)" >> $(BIN_DIST_MK)
@@ -1102,7 +1094,7 @@ SRC_DIST_DIR=$(shell pwd)/$(SRC_DIST_NAM
#
# Files to include in source distributions
#
-SRC_DIST_DIRS = mk rules docs distrib bindisttest libffi includes utils docs rts compiler ghc driver libraries ghc-tarballs
+SRC_DIST_DIRS = mk rules docs distrib bindisttest includes utils docs rts compiler ghc driver libraries ghc-tarballs
SRC_DIST_FILES += \
configure.ac config.guess config.sub configure \
aclocal.m4 README ANNOUNCE HACKING LICENSE Makefile install-sh \
diff -up ghc-7.0.1/rts/ghc.mk.libffi ghc-7.0.1/rts/ghc.mk
--- ghc-7.0.1/rts/ghc.mk.libffi 2010-11-13 04:10:06.000000000 +1000
+++ ghc-7.0.1/rts/ghc.mk 2010-11-16 19:06:09.000000000 +1000
@@ -430,15 +430,15 @@ endif
$(eval $(call build-dependencies,rts,dist,1))
-$(rts_dist_depfile_c_asm) : libffi/dist-install/build/ffi.h $(DTRACEPROBES_H)
+$(rts_dist_depfile_c_asm) : $(DTRACEPROBES_H)
#-----------------------------------------------------------------------------
# libffi stuff
-rts_CC_OPTS += -Ilibffi/build/include
-rts_HC_OPTS += -Ilibffi/build/include
-rts_HSC2HS_OPTS += -Ilibffi/build/include
-rts_LD_OPTS += -Llibffi/build/include
+rts_CC_OPTS += $(shell pkg-config --cflags libffi)
+rts_HC_OPTS += $(shell pkg-config --cflags libffi)
+rts_HSC2HS_OPTS += $(shell pkg-config --cflags libffi)
+rts_LD_OPTS += $(shell pkg-config --libs libffi)
# -----------------------------------------------------------------------------
# compile dtrace probes if dtrace is supported
diff -up ghc-7.0.1/rts/package.conf.in.libffi ghc-7.0.1/rts/package.conf.in
--- ghc-7.0.1/rts/package.conf.in.libffi 2010-11-13 04:10:06.000000000 +1000
+++ ghc-7.0.1/rts/package.conf.in 2010-11-16 19:04:28.000000000 +1000
@@ -24,8 +24,9 @@ library-dirs: TOP"/rts/dist/build" PAPI
hs-libraries: "HSrts"
extra-libraries:
+ "ffi"
#ifdef HAVE_LIBM
- "m" /* for ldexp() */
+ , "m" /* for ldexp() */
#endif
#ifdef HAVE_LIBRT
, "rt"
@@ -55,7 +56,6 @@ include-dirs: TOP"/includes"
#endif
includes: Stg.h
-depends: builtin_ffi
hugs-options:
cc-options:

View File

@ -0,0 +1,8 @@
diff -u ghc-7.0.4/ghc/ghc.wrapper\~ ghc-7.0.4/ghc/ghc.wrapper
--- ghc-7.0.4/ghc/ghc.wrapper~ 2011-06-14 02:10:05.000000000 +0900
+++ ghc-7.0.4/ghc/ghc.wrapper 2012-03-08 18:00:02.713144402 +0900
@@ -1 +1 @@
-exec "$executablename" -B"$topdir" -pgmc "$pgmgcc" -pgma "$pgmgcc" -pgml "$pgmgcc" -pgmP "$pgmgcc -E -undef -traditional" ${1+"$@"}
+exec "$executablename" -B"$topdir" -pgmc "$pgmgcc" -pgma "$pgmgcc" -pgml "$pgmgcc" -pgmP "$pgmgcc -E -undef -traditional" -optc-I$(pkg-config --variable=includedir libffi) ${1+"$@"}
Diff finished. Thu Mar 8 18:01:14 2012

530
ghc.spec
View File

@ -1,44 +1,49 @@
## default enabled options ##
# experimental shared libraries support available in ghc-6.12 for x86
%ifarch %{ix86} x86_64
%bcond_without shared
%endif
%bcond_without doc
# test builds can made faster and smaller by disabling profiled libraries
# (currently libHSrts_thr_p.a breaks no prof build)
%bcond_without prof
# build xml manuals (users_guide, etc)
%bcond_without manual
# run testsuite
%bcond_without testsuite
# include colored html src
%bcond_without hscolour
# Shared haskell libraries disabled for epel5
## default disabled options ##
# include extralibs
%bcond_with extralibs
# quick build profile
%bcond_with quick
# To bootstrap a new version of ghc, uncomment the following:
#%%global ghc_bootstrapping 1
#%%{?ghc_bootstrap}
#%%global without_hscolour 1
#%%global without_testsuite 1
%global without_manual 1
# the debuginfo subpackage is currently empty anyway, so don't generate it
# unregisterized archs
%global unregisterised_archs ppc64 armv7hl armv5tel s390 s390x
# ghc does not output dwarf format so debuginfo is not useful
%global debug_package %{nil}
%global space %(echo -n ' ')
%global BSDHaskellReport BSD%{space}and%{space}HaskellReport
# gcc-4.1 is too old for ghc7 dyn:
# "/usr/bin/ld: rts/dist/build/RtsStartup.dyn_o: relocation R_X86_64_PC32 against `StgRun' can not be used when making a shared object; recompile with -fPIC"
%ifarch %{ix86} x86_64
%global gcc gcc44
%else
%global gcc gcc
%endif
Name: ghc
# part of haskell-platform-2010.2.0.0
Version: 6.12.3
Release: 5%{?dist}
Summary: Glasgow Haskell Compilation system
# fedora ghc has only been bootstrapped on the following archs:
ExclusiveArch: %{ix86} x86_64 ppc alpha
License: BSD
# part of haskell-platform
# NB make sure to rebuild ghc after a version bump to avoid ABI change problems
Version: 7.0.4
# Since library subpackages are versioned:
# - release can only be reset if all library versions get bumped simultaneously
# (eg for a major release)
# - minor release numbers should be incremented monotonically
Release: 45.3%{?dist}
Summary: Glasgow Haskell Compiler
# fedora ghc has been bootstrapped on the following archs:
#ExclusiveArch: %{ix86} x86_64 ppc alpha sparcv9 ppc64 armv7hl armv5tel
ExcludeArch: sparc64
License: %BSDHaskellReport
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}
%if %{undefined without_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
@ -50,156 +55,260 @@ 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
# until new cabalized gtk2hs packages in f14+
Obsoletes: ghc-cairo-devel < 0.11-1, ghc-cairo-doc < 0.11-1
Obsoletes: ghc-gconf-devel < 0.11-1, ghc-gconf-doc < 0.11-1
Obsoletes: ghc-gio-devel < 0.11-1, ghc-gio-doc < 0.11-1
Obsoletes: ghc-glade-devel < 0.11-1, ghc-glade-doc < 0.11-1
Obsoletes: ghc-glib-devel < 0.11-1, ghc-glib-doc < 0.11-1
Obsoletes: ghc-gstreamer-devel < 0.11-1, ghc-gstreamer-doc < 0.11-1
Obsoletes: ghc-gtk-devel < 0.11-1, ghc-gtk-doc < 0.11-1
Obsoletes: ghc-gtkglext-devel < 0.11-1, ghc-gtkglext-doc < 0.11-1
Obsoletes: ghc-gtksourceview2-devel < 0.11-1, ghc-gtksourceview2-doc < 0.11-1
Obsoletes: ghc-soegtk-devel < 0.11-1, ghc-soegtk-doc < 0.11-1
Obsoletes: ghc-svgcairo-devel < 0.11-1, ghc-svgcairo-doc < 0.11-1
Obsoletes: ghc-vte-devel < 0.11-1, ghc-vte-doc < 0.11-1
BuildRequires: ghc, happy, ghc-rpm-macros >= 0.8.0
BuildRequires: gmp-devel, ncurses-devel
Requires: gcc, gmp-devel
%if %{with shared}
# not sure if this is actually needed:
BuildRequires: libffi-devel
Requires: %{name}-libs = %{version}-%{release}
%if %{undefined ghc_bootstrapping}
BuildRequires: ghc-compiler = %{version}
%endif
%if %{with manual}
BuildRequires: ghc-rpm-macros >= 0.14
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-containers-devel
BuildRequires: ghc-directory-devel
BuildRequires: ghc-haskell98-devel
BuildRequires: ghc-pretty-devel
BuildRequires: ghc-process-devel
BuildRequires: gmp-devel
BuildRequires: libffi-devel
# for internal terminfo
BuildRequires: ncurses-devel
%if %{undefined without_manual}
BuildRequires: libxslt, docbook-style-xsl
%endif
%if %{with hscolour}
%if %{undefined without_haddock} && %{undefined without_hscolour}
BuildRequires: hscolour
%endif
%if %{with testsuite}
%if %{undefined without_testsuite}
BuildRequires: python
%endif
%ifarch ppc64 s390x
BuildRequires: autoconf
%endif
%ifarch %{ix86} x86_64
BuildRequires: %{gcc}
%endif
Requires: ghc-compiler = %{version}-%{release}
Requires: ghc-libraries = %{version}-%{release}
Requires: ghc-ghc-devel = %{version}-%{release}
Patch1: ghc-6.12.1-gen_contents_index-haddock-path.patch
Patch2: ghc-gen_contents_index-type-level.patch
Patch3: ghc-gen_contents_index-cron-batch.patch
Patch4: ghc-use-system-libffi.patch
# add cabal configure option --enable-executable-dynamic
# (see http://hackage.haskell.org/trac/hackage/ticket/600)
Patch5: Cabal-option-executable-dynamic.patch
Patch6: ghc-fix-linking-on-sparc.patch
Patch7: ghc-powerpc-pthread.patch
# http://hackage.haskell.org/trac/ghc/ticket/4999
Patch8: ghc-powerpc-linker-mmap.patch
# touches configure.ac
Patch9: ghc-7.0.4-configure-s390x.patch
# add libffi include dir to ghc wrapper for archs using gcc
Patch10: ghc-wrapper-libffi-include.patch
%description
GHC is a state-of-the-art programming suite for Haskell, a purely
functional programming language. It includes 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 a foreign language
interface.
GHC is a state-of-the-art, open source, compiler and interactive environment
for the functional language Haskell. Highlights:
%if %{with shared}
%package libs
Summary: Shared libraries for GHC
Group: Development/Libraries
Obsoletes: ghc-time < 1.1.2.4-5
- GHC supports the entire Haskell 2010 language plus various extensions.
- GHC has particularly good support for concurrency and parallelism,
including support for Software Transactional Memory (STM).
- GHC generates fast code, particularly for concurrent programs
(check the results on the "Computer Language Benchmarks Game").
- GHC works on several platforms including Windows, Mac, Linux,
most varieties of Unix, and several different processor architectures.
- GHC has extensive optimisation capabilities,
including inter-module optimisation.
- GHC compiles Haskell code either directly to native code or using LLVM
as a back-end. GHC can also generate C code as an intermediate target for
porting to new platforms. The interactive environment compiles Haskell to
bytecode, and supports execution of mixed bytecode/compiled programs.
- Profiling is supported, both by time/allocation and heap profiling.
- GHC comes with core libraries, and thousands more are available on Hackage.
%description libs
Shared libraries for Glorious Glasgow Haskell Compilation System (GHC).
%endif
%package compiler
Summary: GHC compiler and utilities
License: BSD
Group: Development/Languages
Requires: %{gcc}
Requires: ghc-base-devel
Requires(post): chkconfig
Requires(postun): chkconfig
# added in f14
Obsoletes: ghc-doc < 6.12.3-4
# llvm is an optional dependency
%if %{with prof}
%package prof
Summary: Profiling libraries for GHC
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Obsoletes: ghc-haddock-prof < 2.4.2-3
Obsoletes: ghc-time-prof < 1.1.2.4-5
# gtk2hs
Obsoletes: ghc-cairo-prof < 0.11-1
Obsoletes: ghc-gconf-prof < 0.11-1
Obsoletes: ghc-gio-prof < 0.11-1
Obsoletes: ghc-glade-prof < 0.11-1
Obsoletes: ghc-glib-prof < 0.11-1
Obsoletes: ghc-gstreamer-prof < 0.11-1
Obsoletes: ghc-gtk-prof < 0.11-1
Obsoletes: ghc-gtkglext-prof < 0.11-1
Obsoletes: ghc-gtksourceview2-prof < 0.11-1
Obsoletes: ghc-soegtk-prof < 0.11-1
Obsoletes: ghc-svgcairo-prof < 0.11-1
Obsoletes: ghc-vte-prof < 0.11-1
%description compiler
The package contains the GHC compiler, tools and utilities.
%description prof
Profiling libraries for Glorious Glasgow Haskell Compilation System (GHC).
They should be installed when GHC's profiling subsystem is needed.
%endif
The ghc libraries are provided by ghc-devel.
To install all of ghc, install the ghc base package.
%global ghc_version_override %{version}
%ghc_binlib_package -n ghc -o 6.12.3-4
# needs ghc_version_override for bootstrapping
%global _use_internal_dependency_generator 0
%global __find_provides %{_prefix}/lib/rpm/ghc-deps.sh --provides %{buildroot}%{ghclibdir}
%global __find_requires %{_prefix}/lib/rpm/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.10.2.0
%ghc_lib_subpackage -l %BSDHaskellReport array 0.3.0.2
%ghc_lib_subpackage -l %BSDHaskellReport -c gmp-devel,libffi-devel base 4.3.1.0
%ghc_lib_subpackage bytestring 0.9.1.10
%ghc_lib_subpackage -l %BSDHaskellReport containers 0.4.0.0
%ghc_lib_subpackage -l %BSDHaskellReport directory 1.1.0.0
%ghc_lib_subpackage -l %BSDHaskellReport extensible-exceptions 0.1.1.2
%ghc_lib_subpackage filepath 1.2.0.0
%define ghc_pkg_obsoletes ghc-bin-package-db-devel < 0.0.0.0-12
# in ghc not ghc-libraries:
%ghc_lib_subpackage -x ghc %{ghc_version_override}
%undefine ghc_pkg_obsoletes
%ghc_lib_subpackage -l HaskellReport haskell2010 1.0.0.0
%ghc_lib_subpackage -l HaskellReport haskell98 1.1.0.1
%ghc_lib_subpackage hpc 0.5.0.6
%ghc_lib_subpackage -l %BSDHaskellReport old-locale 1.0.0.2
%ghc_lib_subpackage -l %BSDHaskellReport old-time 1.0.0.6
%ghc_lib_subpackage pretty 1.0.1.2
%ghc_lib_subpackage -l %BSDHaskellReport process 1.0.1.5
%ghc_lib_subpackage -l %BSDHaskellReport random 1.0.0.3
%ghc_lib_subpackage template-haskell 2.5.0.0
%ghc_lib_subpackage time 1.2.0.3
%ghc_lib_subpackage unix 2.4.2.0
%endif
%global version %{ghc_version_override}
%package libraries
Summary: GHC development libraries meta package
License: %BSDHaskellReport
Group: Development/Libraries
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}
# since f15
Obsoletes: ghc-libs < 7.0.1-3
%{?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 -n %{name}-%{version} %{?with_extralibs:-b1} %{?with_testsuite:-b2}
%setup -q -n %{name}-%{version} %{!?without_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
%patch2 -p1
# disable gen_contents_index when not --batch for cron
%patch3 -p1
# make sure we don't use these
rm -r ghc-tarballs/{mingw,perl}
# use system libffi
%patch4 -p1 -b .libffi
rm -r ghc-tarballs/libffi
# needed for tier 2 archs
%ifnarch %{ix86} x86_64
ln -s $(pkg-config --variable=includedir libffi)/*.h libraries/base/include
%endif
%patch5 -p1 -b .orig
%patch6 -p1 -b .sparclinking
%ifnarch %{ix86} x86_64
%patch10 -p1 -b .10-ffi
%endif
%ifarch ppc ppc64
%patch7 -p1 -b .pthread
%patch8 -p1 -b .mmap
%endif
%ifarch s390x
%patch9 -p1 -b .s390x
%endif
%build
# 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
GhcLibWays = v %{?with_prof:p} %{?with_shared:dyn}
%if %{without doc}
HADDOCK_DOCS = NO
GhcLibWays = v %{!?ghc_without_shared:dyn} %{!?without_prof:p}
%if %{defined without_haddock}
HADDOCK_DOCS = NO
%endif
%if %{without manual}
%if %{defined without_manual}
BUILD_DOCBOOK_HTML = NO
%endif
%if %{with quick}
SRC_HC_OPTS = -H64m -O0 -fasm
GhcStage1HcOpts = -O -fasm
GhcStage2HcOpts = -O0 -fasm
GhcLibHcOpts = -O0 -fasm
SplitObjs = NO
%endif
%if %{without hscolour}
%if %{undefined without_hscolour}
HSCOLOUR_SRCS = NO
%endif
%ifarch %{unregisterised_archs}
GhcUnregisterised=YES
%endif
%ifarch ppc64
GhcNotThreaded=YES
SRC_HC_OPTS+=-optc-mminimal-toc -optl-pthread
SRC_CC_OPTS+=-mminimal-toc -pthread -Wa,--noexecstack
%endif
EOF
%ifarch ppc64 s390x
autoreconf
%endif
export CFLAGS="${CFLAGS:-%optflags}"
# specify gcc to avoid problems when bootstrapping with ccache
./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} \
%{?with_shared:--enable-shared}
--with-gcc=%{_bindir}/%{gcc}
# 8 cpus seems to break build
#make %{_smp_mflags}
make
# >4 cpus tends to break build
[ -z "$RPM_BUILD_NCPUS" ] && RPM_BUILD_NCPUS=$(%{_bindir}/getconf _NPROCESSORS_ONLN)
[ "$RPM_BUILD_NCPUS" -gt 4 ] && RPM_BUILD_NCPUS=4
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
echo "%doc libraries/$name/LICENSE" >> ghc-$name%{?ghc_without_shared:-devel}.files
done
# make paths absolute (filter "./usr" to "/usr")
sed -i -e "s|\.%{_prefix}|%{_prefix}|" *.files
%ghc_gen_filelists bin-package-db 0.0.0.0
%ghc_gen_filelists ghc %{ghc_version_override}
%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.3
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()\
%if %{undefined ghc_without_shared}\
cat ghc-%1.files >> ghc-%2.files\
%endif\
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
# 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 ghc
%merge_filelist bin-package-db ghc
%if %{undefined ghc_without_shared}
ls $RPM_BUILD_ROOT%{ghclibdir}/libHS*.so >> ghc-base.files
sed -i -e "s|^$RPM_BUILD_ROOT||g" ghc-base.files
%endif
ls -d $RPM_BUILD_ROOT%{ghclibdir}/libHS*.a $RPM_BUILD_ROOT%{ghclibdir}/package.conf.d/builtin_*.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
@ -208,10 +317,16 @@ for i in hsc2hs runhaskell; do
else
mv ${RPM_BUILD_ROOT}%{_bindir}/$i{,-ghc}
fi
touch ${RPM_BUILD_ROOT}%{_bindir}/$i
done
%ghc_strip_dynlinked
%if %{undefined without_haddock}
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.hourly
install -p --mode=755 %SOURCE3 ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.hourly/ghc-doc-index
mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/lib/ghc
%endif
%check
# stolen from ghc6/debian/rules:
@ -221,25 +336,27 @@ 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 %{with shared}
%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
%if %{with testsuite}
%if %{undefined without_testsuite}
make -C testsuite/tests/ghc-regress fast
%endif
%clean
rm -rf $RPM_BUILD_ROOT
%post
%post compiler
# Alas, GHC, Hugs, and nhc all come with different set of tools in
# addition to a runFOO:
#
@ -257,55 +374,144 @@ update-alternatives --install %{_bindir}/runhaskell runhaskell \
update-alternatives --install %{_bindir}/hsc2hs hsc2hs \
%{_bindir}/hsc2hs-ghc 500
%preun
%preun compiler
if [ "$1" = 0 ]; then
update-alternatives --remove runhaskell %{_bindir}/runghc
update-alternatives --remove hsc2hs %{_bindir}/hsc2hs-ghc
fi
%posttrans
# (posttrans to make sure any old libs and docs have been removed first)
%ghc_pkg_recache
%ghc_reindex_haddock
%files
%files -f ghc.files
%files compiler
%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}
%{_mandir}/man1/ghc.*
%{_bindir}/ghc
%{_bindir}/ghc-%{version}
%{_bindir}/ghc-pkg
%{_bindir}/ghc-pkg-%{version}
%{_bindir}/ghci
%{_bindir}/ghci-%{version}
%{_bindir}/hp2ps
%{_bindir}/hpc
%ghost %{_bindir}/hsc2hs
%{_bindir}/hsc2hs-ghc
%{_bindir}/runghc
%ghost %{_bindir}/runhaskell
%{_bindir}/runhaskell-ghc
%dir %{ghclibdir}
%{ghclibdir}/extra-gcc-opts
%{ghclibdir}/ghc
%{ghclibdir}/ghc-pkg
%ifnarch %{unregisterised_archs}
%{ghclibdir}/ghc-asm
%{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 %{_docdir}/ghc
%dir %{ghcdocbasedir}
%if %{undefined without_haddock}
%{_bindir}/haddock
%{_bindir}/haddock-ghc-%{version}
%{ghclibdir}/haddock
%{ghclibdir}/html
%{ghclibdir}/latex
%{ghcdocbasedir}/html
%if %{undefined without_manual}
%{_mandir}/man1/ghc.*
%{ghcdocbasedir}/Cabal
%{ghcdocbasedir}/haddock
%{ghcdocbasedir}/users_guide
%endif
%if %{with doc}
%dir %{ghcdocbasedir}/libraries
%{ghcdocbasedir}/libraries/frames.html
%{ghcdocbasedir}/libraries/gen_contents_index
%{ghcdocbasedir}/libraries/hscolour.css
%{ghcdocbasedir}/libraries/ocean.css
%{ghcdocbasedir}/libraries/prologue.txt
%{ghcdocbasedir}/index.html
%ghost %{ghcdocbasedir}/libraries/doc-index*.html
%ghost %{ghcdocbasedir}/libraries/haddock.css
%ghost %{ghcdocbasedir}/libraries/haddock-util.js
%ghost %{ghcdocbasedir}/libraries/haskell_icon.gif
%ghost %{ghcdocbasedir}/libraries/index*.html
%ghost %{ghcdocbasedir}/libraries/minus.gif
%ghost %{ghcdocbasedir}/libraries/plus.gif
%{_sysconfdir}/cron.hourly/ghc-doc-index
%{_localstatedir}/lib/ghc
%endif
%if %{with shared}
%files libs -f ghc-libs.files
%defattr(-,root,root,-)
%endif
%if %{with prof}
%files prof -f ghc-prof.files
%defattr(-,root,root,-)
%endif
%files libraries
%changelog
* Fri Jul 30 2010 Jens Petersen <petersen@redhat.com> - 6.12.3-5
- obsolete old gtk2hs packages for smooth upgrades
* Mon Jan 13 2014 Jens Petersen <petersen@redhat.com> - 7.0.4-45.3
- build with gcc44 on intel archs to fix dynamic linking
- this build re-enables shared libraries
* Wed Dec 25 2013 Jens Petersen <petersen@redhat.com> - 7.0.4-45.2
- final build
- without manuals and manpages because of docbook dtd issue in configure
* Wed Dec 25 2013 Jens Petersen <petersen@redhat.com> - 7.0.4-45.1
- rebase to 7.0.4 bootstrap
- use ghc_lib_subpackage
- reinstate ghc-powerpc-pthread.patch needed for linking on ppc
- patch ghc wrapper script to add libffi includedir on tier 2 archs
- fix build with system libffi on secondary archs by including libffi headers
in base/include
- do alternatives handling correctly (reported by Giam Teck Choon, #753661)
see https://fedoraproject.org/wiki/Packaging:Alternatives
- add HaskellReport license also to the base and libraries subpackages
- the post and postun scripts are now for the compiler subpackage
- rename ghc-devel metapackage to ghc-libraries
- require ghc-rpm-macros-0.14
- move compiler and tools to ghc-compiler
- the ghc base package is now a metapackage that installs all of ghc,
ie ghc-compiler and ghc-devel (#750317)
- drop ghc-doc provides
- add HaskellReport license tag to some of the library subpackages
which contain some code from the Haskell Reports
- setup ghc-deps.sh after ghc_version_override for bootstrapping
- setup dependency generation with ghc-deps.sh since it was moved to
ghc_lib_install in ghc-rpm-macros
- BR same ghc version unless ghc_bootstrapping defined
- put dyn before p in GhcLibWays
- update to 7.0.4 bugfix release
http://haskell.org/ghc/docs/7.0.4/html/users_guide/release-7-0-4.html
- strip static again (upstream #5004 fixed)
- finally change from ExclusiveArch to ExcludeArch to target more archs
- merge prof subpackages into the devel subpackages with ghc-rpm-macros-0.13
- configure with /usr/bin/gcc to help bootstrapping to new archs
(otherwise ccache tends to get hardcoded as gcc, which not in koji)
- make devel and prof meta packages require libs with release
- make ghc-*-devel subpackages require ghc with release
- without_shared renamed to ghc_without_shared
- include LICENSE files in the shared lib subpackages
- add BRs for various subpackaged ghc libraries needed to build ghc
- condition rts .so libraries for non-shared builds
- 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
- require libffi-devel
- turn on system libffi now
- add a cronjob for doc indexing
- disable gen_contents_index when not run with --batch for cron
- use system libffi with ghc-use-system-libffi.patch from debian
* Sat Jun 2 2012 Jens Petersen <petersen@redhat.com> - 6.12.3-5.1.el5
- provide ghc-devel for compatibility with cabal2spec-0.22.5
- use ghc_without_shared (ghc-rpm-macros-0.10.52)
- drop old extralibs bcond
- smp build with max 4 cpus
* Wed Sep 29 2010 Jens Petersen <petersen@redhat.com> - 6.12.3-5
- build without happy and hscolour
* Thu Jul 15 2010 Jens Petersen <petersen@redhat.com> - 6.12.3-4
- merge ghc-doc into base package
@ -398,7 +604,7 @@ fi
- add bcond for manual and extralibs
- reenable ppc secondary arch
- don't provide ghc-haddock-*
- remove obsoltete post requires policycoreutils
- remove obsolete post requires policycoreutils
- add vanilla v to GhcLibWays when building without prof
- handle without hscolour
- can't smp make currently

View File

@ -1,52 +0,0 @@
#!/bin/sh
# script to generate dependency graph for fedora haskell libraries
# requires ghc, ghc-*-devel and graphviz to be installed
set -e +x
mkdir -p .pkg-deps
cd .pkg-deps
# remove the closing line
ghc-pkg dot --global | sed '$d' > pkgs.dot
# check for binary deps too
# (exclude binlib for now since covered by libs): cpphs, darcs, hlint, hscolour, xmonad
for i in alex cabal-install ghc happy gtk2hs-buildtools haskell-platform xmobar; do
PKG_THERE=yes
PKG=`rpm -q --qf "%{name}-%{version}" $i` || { PKG_THERE=no ; echo "missing $i" ; }
if [ "$PKG_THERE" = "yes" ]; then
echo \"$PKG\" >> pkgs.dot
case $i in
haskell-platform)
rpm -q --requires $i | grep -v rpmlib | grep -v ghc | sed -e "s/^/\"$PKG\" -> \"/g" -e "s/ = \(.*\)/-\1\"/" >> pkgs.dot
;;
*)
rpm -q --requires $i | grep ghc6 | sed -e "s/libHS/\"$PKG\" -> \"/g" -e "s/-ghc6.*/\"/" >> pkgs.dot
;;
esac
fi
done
# make sure all libs there
rpm -qa --qf "\"%{name}-%{version}\"\n" ghc-\* | egrep -v -- "(ghc-libs|-prof|-devel|-doc|rpm-macros)-" | sed -e s/^\"ghc-/\"/g >> pkgs.dot
# and add it back
echo "}" >> pkgs.dot
cp -p pkgs.dot pkgs.dot.orig
# ignore library packages provided by ghc (except ghc-6.12)
GHC_PKGS="array base-4 base-3 bin-package-db bytestring Cabal containers directory dph extensible-exceptions filepath ffi ghc-binary ghc-prim haskell98 hpc integer-gmp old-locale old-time pretty process random rts syb template-haskell time unix Win32"
for i in $GHC_PKGS; do sed -i -e /$i/d pkgs.dot; done
which tred &>/dev/null || { echo Please install graphviz ; exit 1 ; }
cat pkgs.dot | tred | dot -Nfontsize=8 -Tsvg >pkgs.svg
if [ -n "$DISPLAY" ]; then
xdg-open pkgs.svg
else
echo open ".pkg-deps/pkgs.svg" to display pkg graph
fi

View File

@ -1,2 +1,2 @@
4c2663c2eff833d7b9f39ef770eefbd6 ghc-6.12.3-src.tar.bz2
5c6143040d043f10e6d014cd5fd8ca36 testsuite-6.12.3.tar.bz2
f167b0b4538d1a56788f43fcc662b568 ghc-7.0.4-src.tar.bz2
1680925a557821d7e3abab368f37fbdc testsuite-7.0.4.tar.bz2

16
update-package.sh Executable file
View File

@ -0,0 +1,16 @@
#!/bin/sh
[ $# -ne 1 ] && echo "Usage: $(basename $0) [package]" && exit 1
set -e -x
PKG=$1
cd ~/fedora/haskell/$PKG/master
git pull
cat ~/fedora/haskell/cabal2spec/master/cabal2spec-0.22.4.diff | sed -e "s/@PKG@/$PKG/" | patch -p1
rpmdev-bumpspec --comment="update to cabal2spec-0.22.4" $PKG.spec
fedpkg commit -p -m "update to cabal2spec-0.22.4"