Skip to content
Commits on Source (5)
ghc (8.4.1-1) experimental; urgency=medium
* New upstream release, patch refresh
* Bump std-version to 4.1.4, no changes required
* d/{rules,control}: switch to llvm 5.0 on arm*
* Drop patches included in new upstream release:
- reproducible-tmp-names
- do-not-use-SHELL
- build-unlit-and-hp2ps-twice.patch
- fix-hssplicety.patch
- lower-optimization-for-unreg.patch
-- Gianfranco Costamagna <locutusofborg@debian.org> Sun, 08 Apr 2018 13:17:56 +0200
ghc (8.2.2-3) unstable; urgency=medium
* Upload to unstable.
......
......@@ -3,7 +3,7 @@ Section: haskell
Priority: optional
Maintainer: Debian Haskell Group <pkg-haskell-maintainers@lists.alioth.debian.org>
Uploaders: Joachim Breitner <nomeata@debian.org>, Clint Adams <clint@debian.org>
Standards-Version: 4.1.1
Standards-Version: 4.1.4
Build-Depends:
debhelper (>= 10),
haskell-devscripts-minimal <!cross>,
......@@ -12,7 +12,7 @@ Build-Depends:
pkg-config,
ghc:native (>= 7.8),
libgmp-dev,
llvm-3.9 [arm64 armel armhf],
llvm-5.0 [arm64 armel armhf],
libffi-dev,
binutils [arm64 armel armhf],
libncurses5-dev,
......@@ -31,7 +31,7 @@ Vcs-Browser: https://salsa.debian.org/haskell-team/DHG_packages/tree/master/p/gh
Package: ghc
Architecture: any
Depends:
llvm-3.9 [arm64 armel armhf],
llvm-5.0 [arm64 armel armhf],
gcc,
libgmp-dev,
libffi-dev,
......@@ -53,7 +53,7 @@ Provides:
Replaces: ghc6 (<< 7), ghc-dynamic (<< 7.8), ghc-haddock (<< 7.10)
Conflicts: ghc6 (<< 7), ghc-dynamic (<< 7.8), libghc-cabal-dev (<< 1.24.2.1), ${conflicting-devs}
Breaks: cabal-install (<< 1.22), haskell-devscripts (<< 0.8.13), ghc-doc (<< 7.10), ghc-haddock (<< 7.10)
Suggests: perl, ghc-prof, ghc-doc, haskell-doc, llvm-3.9
Suggests: perl, ghc-prof, ghc-doc, haskell-doc, llvm-5.0
Description: The Glasgow Haskell Compilation system
The Glorious Glasgow Haskell Compilation system (GHC) is a compiler for
Haskell.
......
......@@ -6,9 +6,11 @@ Author: Jani Monoses <jani@ubuntu.com>
Upstream-Bug: https://ghc.haskell.org/trac/ghc/ticket/5914
Launchpad-Bug: https://ghc.haskell.org/trac/ghc/ticket/5914
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -417,7 +417,7 @@ AC_DEFUN([GET_ARM_ISA],
Index: ghc-8.4.1/aclocal.m4
===================================================================
--- ghc-8.4.1.orig/aclocal.m4
+++ ghc-8.4.1/aclocal.m4
@@ -423,7 +423,7 @@
)],
[changequote(, )dnl
ARM_ISA=ARMv7
......
Description: Build unlit and hp2ps twice
Author: Thomas Miedema <thomasmiedema@gmail.com>
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
--- a/utils/ghc-pkg/ghc.mk
+++ b/utils/ghc-pkg/ghc.mk
@@ -27,7 +27,7 @@ utils/ghc-pkg_PACKAGE = ghc-pkg
# Note [Why build certain utils twice?]
#
# We build certain utils twice: once with stage0, and once with stage1.
-# Examples are ghc-pkg and hsc2hs.
+# Examples are ghc-pkg, hsc2hs, hp2ps and unlit.
#
# These tools are needed during the bootstrapping process, so we have to use
# stage0 to build them at first (stage1 doesn't exist yet). (side note: they're
@@ -38,6 +38,11 @@ utils/ghc-pkg_PACKAGE = ghc-pkg
# dynamically linked. But the stage0 copies are either statically linked, or
# linked against libraries on the build machine.
#
+# Another reason why we can't install the stage0 copies is that they are
+# built to run on the build(=host) platform, but when installing a
+# "cross-compiled stage2 compiler" we need copies that run on the target
+# platform.
+#
# Therefore we build fresh copies, using the stage1 compiler, and install them
# when you run 'make install'. They are not used for any other purpose.
--- a/utils/hp2ps/ghc.mk
+++ b/utils/hp2ps/ghc.mk
@@ -17,7 +17,7 @@ utils/hp2ps_dist_C_SRCS = AreaB
Utilities.c
utils/hp2ps_dist_EXTRA_LIBRARIES = m
utils/hp2ps_dist_PROGNAME = hp2ps
-utils/hp2ps_dist_INSTALL = YES
+utils/hp2ps_dist_INSTALL = NO
utils/hp2ps_dist_INSTALL_INPLACE = YES
utils/hp2ps_dist_SHELL_WRAPPER = YES
utils/hp2ps_dist_INSTALL_SHELL_WRAPPER_NAME = hp2ps
@@ -25,3 +25,17 @@ utils/hp2ps_dist_INSTALL_SHELL_WRAPPER_N
utils/hp2ps_CC_OPTS += $(addprefix -I,$(GHC_INCLUDE_DIRS))
$(eval $(call build-prog,utils/hp2ps,dist,0))
+
+utils/hp2ps_dist-install_C_SRCS = AreaBelow.c Curves.c Error.c Main.c \
+ Reorder.c TopTwenty.c AuxFile.c Deviation.c \
+ HpFile.c Marks.c Scale.c TraceElement.c \
+ Axes.c Dimensions.c Key.c PsFile.c Shade.c \
+ Utilities.c
+utils/hp2ps_dist-install_EXTRA_LIBRARIES = m
+utils/hp2ps_dist-install_PROGNAME = hp2ps
+utils/hp2ps_dist-install_TOPDIR = YES
+utils/hp2ps_dist-install_INSTALL = YES
+utils/hp2ps_dist-install_INSTALL_INPLACE = NO
+
+# See Note [Why build certain utils twice?].
+$(eval $(call build-prog,utils/hp2ps,dist-install,1))
--- a/utils/unlit/ghc.mk
+++ b/utils/unlit/ghc.mk
@@ -13,8 +13,16 @@
utils/unlit_dist_C_SRCS = unlit.c
utils/unlit_dist_PROGNAME = unlit
utils/unlit_dist_TOPDIR = YES
-utils/unlit_dist_INSTALL = YES
+utils/unlit_dist_INSTALL = NO
utils/unlit_dist_INSTALL_INPLACE = YES
$(eval $(call build-prog,utils/unlit,dist,0))
+utils/unlit_dist-install_C_SRCS = unlit.c
+utils/unlit_dist-install_PROGNAME = unlit
+utils/unlit_dist-install_TOPDIR = YES
+utils/unlit_dist-install_INSTALL = YES
+utils/unlit_dist-install_INSTALL_INPLACE = NO
+
+# See Note [Why build certain utils twice?].
+$(eval $(call build-prog,utils/unlit,dist-install,1))
Forwarded to https://ghc.haskell.org/trac/ghc/ticket/10424
--- a/compiler/iface/MkIface.hs
+++ b/compiler/iface/MkIface.hs
@@ -681,7 +681,7 @@ addFingerprints hsc_env mb_old_fingerpri
Index: ghc-8.4.1/compiler/iface/MkIface.hs
===================================================================
--- ghc-8.4.1.orig/compiler/iface/MkIface.hs
+++ ghc-8.4.1/compiler/iface/MkIface.hs
@@ -689,7 +689,7 @@
iface_hash <- computeFingerprint putNameLiterally
(mod_hash,
ann_fn (mkVarOcc "module"), -- See mkIfaceAnnCache
......@@ -11,7 +13,7 @@ Forwarded to https://ghc.haskell.org/trac/ghc/ticket/10424
sorted_deps,
mi_hpc iface0)
@@ -714,6 +714,9 @@ addFingerprints hsc_env mb_old_fingerpri
@@ -724,6 +724,9 @@
(non_orph_fis, orph_fis) = mkOrphMap ifFamInstOrph (mi_fam_insts iface0)
fix_fn = mi_fix_fn iface0
ann_fn = mkIfaceAnnCache (mi_anns iface0)
......
Description: Do not use $SHELL
as $SHELL is the user's preferred interactive shell. We do not want this to
leak into the wrapper scripts.
Author: Joachim Breitner <nomeata@debian.org>
--- a/driver/ghci/ghc.mk
+++ b/driver/ghci/ghc.mk
@@ -21,7 +21,7 @@ install_driver_ghci:
$(INSTALL_DIR) "$(DESTDIR)$(bindir)"
$(call removeFiles, "$(WRAPPER)")
$(CREATE_SCRIPT) "$(WRAPPER)"
- echo '#!$(SHELL)' >> "$(WRAPPER)"
+ echo '#!/bin/sh' >> "$(WRAPPER)"
echo 'exec "$(bindir)/ghc-$(ProjectVersion)" --interactive "$$@"' >> "$(WRAPPER)"
$(EXECUTABLE_FILE) "$(WRAPPER)"
$(call removeFiles,"$(DESTDIR)$(bindir)/ghci")
@@ -56,7 +56,7 @@ install_driver_ghcii: GHCII_SCRIPT_VERSI
install_driver_ghcii:
$(INSTALL_DIR) "$(DESTDIR)$(bindir)"
$(call removeFiles,"$(GHCII_SCRIPT)")
- echo "#!$(SHELL)" >> $(GHCII_SCRIPT)
+ echo "#!/bin/sh" >> $(GHCII_SCRIPT)
echo 'exec "$$(dirname "$$0")"/ghc --interactive "$$@"' >> $(GHCII_SCRIPT)
$(EXECUTABLE_FILE) $(GHCII_SCRIPT)
cp $(GHCII_SCRIPT) $(GHCII_SCRIPT_VERSIONED)
--- a/rules/shell-wrapper.mk
+++ b/rules/shell-wrapper.mk
@@ -41,7 +41,7 @@ $$($1_$2_INPLACE_WRAPPER): $$($1_$2_SHEL
endif
$$($1_$2_INPLACE_WRAPPER): $$($1_$2_INPLACE)
$$(call removeFiles, $$@)
- echo '#!$$(SHELL)' >> $$@
+ echo '#!/bin/sh' >> $$@
echo 'executablename="$$(TOP)/$$<"' >> $$@
echo 'datadir="$$(TOP)/$$(INPLACE_LIB)"' >> $$@
echo 'bindir="$$(TOP)/$$(INPLACE_BIN)"' >> $$@
@@ -80,7 +80,7 @@ install_$1_$2_wrapper:
$$(INSTALL_DIR) "$$(DESTDIR)$$(bindir)"
$$(call removeFiles, "$$(WRAPPER)")
$$(CREATE_SCRIPT) "$$(WRAPPER)"
- echo '#!$$(SHELL)' >> "$$(WRAPPER)"
+ echo '#!/bin/sh' >> "$$(WRAPPER)"
echo 'exedir="$$(ghclibexecdir)/bin"' >> "$$(WRAPPER)"
echo 'exeprog="$$($1_$2_PROG)"' >> "$$(WRAPPER)"
echo 'executablename="$$$$exedir/$$$$exeprog"' >> "$$(WRAPPER)"
@@ -106,7 +106,7 @@ BINDIST_EXTRAS += $$($1_$2_BINDIST_WRAPP
$$($1_$2_BINDIST_WRAPPER): $1/$2/build/tmp/$$($1_$2_PROG)
$$(call removeFiles, $$@)
- echo '#!$$(SHELL)' >> $$@
+ echo '#!/bin/sh' >> $$@
ifeq "$$(DYNAMIC_GHC_PROGRAMS)" "YES"
echo '$$(call prependLibraryPath,$$($1_$2_DEP_LIB_REL_DIRS_SEARCHPATH))' >> $$@
endif
--- a/utils/mkdirhier/ghc.mk
+++ b/utils/mkdirhier/ghc.mk
@@ -14,7 +14,7 @@ $(MKDIRHIER) : utils/mkdirhier/mkdirhier
mkdir -p $(INPLACE_BIN)
mkdir -p $(INPLACE_LIB)
$(call removeFiles,$@)
- echo '#!$(SHELL)' >> $@
+ echo '#!/bin/sh' >> $@
cat utils/mkdirhier/mkdirhier.sh >> $@
$(EXECUTABLE_FILE) $@
From: Alec Theriault <alec.theriault@gmail.com>
Date: Mon, 5 Feb 2018 13:45:47 -0800
Subject: [PATCH] Don't barf on 'HsSpliceTy'
Applied-Upstream: https://github.com/haskell/haddock/commit/76d0f9b90a7b2f65ae12e1ce5dd0552909493252
This handles 'HsSpliceTy's by replacing them with what they expand to.
IIUC everything that is happening, 'renameHsSpliceTy' should not be
able to fail for the inputs we feed it from GHC.
This fixes #574.
---
utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
--- a/utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs
+++ b/utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs
@@ -264,10 +264,21 @@
HsCoreTy a -> pure (HsCoreTy a)
HsExplicitListTy i a b -> HsExplicitListTy i a <$> mapM renameLType b
HsExplicitTupleTy a b -> HsExplicitTupleTy a <$> mapM renameLType b
- HsSpliceTy _ _ -> error "renameType: HsSpliceTy"
+ HsSpliceTy s _ -> renameHsSpliceTy s
HsWildCardTy a -> HsWildCardTy <$> renameWildCardInfo a
HsAppsTy _ -> error "renameType: HsAppsTy"
+-- | Rename splices, but _only_ those that turn out to be for types.
+-- I think this is actually safe for our possible inputs:
+--
+-- * the input is from after GHC's renamer, so should have an 'HsSpliced'
+-- * the input is typechecked, and only 'HsSplicedTy' should get through that
+--
+renameHsSpliceTy :: HsSplice Name -> RnM (HsType DocName)
+renameHsSpliceTy (HsSpliced _ (HsSplicedTy t)) = renameType t
+renameHsSpliceTy (HsSpliced _ _) = error "renameHsSpliceTy: not an HsSplicedTy"
+renameHsSpliceTy _ = error "renameHsSpliceTy: not an HsSpliced"
+
renameLHsQTyVars :: LHsQTyVars Name -> RnM (LHsQTyVars DocName)
renameLHsQTyVars (HsQTvs { hsq_implicit = _, hsq_explicit = tvs })
= do { tvs' <- mapM renameLTyVarBndr tvs
Provided by “Pino” via Samuel Thibault. Not yet pushed upstream.
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -274,7 +274,7 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_V
Index: ghc-8.4.1/aclocal.m4
===================================================================
--- ghc-8.4.1.orig/aclocal.m4
+++ ghc-8.4.1/aclocal.m4
@@ -272,12 +272,15 @@
nto-qnx)
test -z "[$]2" || eval "[$]2=OSQNXNTO"
;;
......@@ -11,9 +13,7 @@ Provided by “Pino” via Samuel Thibault. Not yet pushed upstream.
test -z "[$]2" || eval "[$]2=OSUnknown"
;;
aix)
@@ -283,6 +283,9 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_V
linux-android)
test -z "[$]2" || eval "[$]2=OSAndroid"
test -z "[$]2" || eval "[$]2=OSAIX"
;;
+ gnu)
+ test -z "[$]2" || eval "[$]2=OSHurd"
......@@ -21,19 +21,21 @@ Provided by “Pino” via Samuel Thibault. Not yet pushed upstream.
*)
echo "Unknown OS '[$]1'"
exit 1
--- a/compiler/utils/Platform.hs
+++ b/compiler/utils/Platform.hs
@@ -88,6 +88,7 @@ data OS
Index: ghc-8.4.1/compiler/utils/Platform.hs
===================================================================
--- ghc-8.4.1.orig/compiler/utils/Platform.hs
+++ ghc-8.4.1/compiler/utils/Platform.hs
@@ -87,6 +87,7 @@
| OSHaiku
| OSQNXNTO
| OSAndroid
| OSAIX
+ | OSHurd
deriving (Read, Show, Eq)
-- | ARM Instruction Set Architecture, Extensions and ABI
@@ -139,6 +140,7 @@ osElfTarget OSHaiku = True
@@ -136,6 +137,7 @@
osElfTarget OSHaiku = True
osElfTarget OSQNXNTO = False
osElfTarget OSAndroid = True
osElfTarget OSAIX = False
+osElfTarget OSHurd = True
osElfTarget OSUnknown = False
......
Description: mk/config.mk.in: lower GhcLibHcOpts -O2 optimization down to -O1 on UNREG
Last-Update: 2018-04-07
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -70,16 +70,6 @@
GhcStage2HcOpts=-O2
GhcStage3HcOpts=-O2
-# Disable -O2 optimization. Otherwise amount of generated C code
-# makes things very slow to compile (~5 minutes on core-i7 for 'compiler/hsSyn/HsExpr.hs')
-# and sometimes not compile at all (powerpc64 overflows something
-# on 'compiler/hsSyn/HsExpr.hs').
-ifeq "$(GhcUnregisterised)" "YES"
-GhcStage1HcOpts=
-GhcStage2HcOpts=
-GhcStage3HcOpts=
-endif
-
# Note [Stage number in build variables].
#
# There are (unfortunately) two different naming schemes for build variables
@@ -326,6 +316,17 @@
GhcLibHcOpts=-O2
+# Disable -O2 optimization. Otherwise amount of generated C code
+# makes things very slow to compile (~5 minutes on core-i7 for 'compiler/hsSyn/HsExpr.hs')
+# and sometimes not compile at all (powerpc64 overflows something
+# on 'compiler/hsSyn/HsExpr.hs').
+ifeq "$(GhcUnregisterised)" "YES"
+GhcStage1HcOpts=
+GhcStage2HcOpts=
+GhcStage3HcOpts=
+GhcLibHcOpts=
+endif
+
# Strip local symbols from libraries? This can make the libraries smaller,
# but makes debugging somewhat more difficult. Doesn't work with all ld's.
#
......@@ -3,9 +3,11 @@ Description: Do not emit a warning if the .haddock file is missing
without the -doc package.
Author: Joachim Breitner <nomeata@debian.org>
--- a/utils/ghc-pkg/Main.hs
+++ b/utils/ghc-pkg/Main.hs
@@ -1773,8 +1773,10 @@ checkPackageConfig pkg verbosity db_stac
Index: ghc-8.4.1/utils/ghc-pkg/Main.hs
===================================================================
--- ghc-8.4.1.orig/utils/ghc-pkg/Main.hs
+++ ghc-8.4.1/utils/ghc-pkg/Main.hs
@@ -1774,8 +1774,10 @@
mapM_ (checkDir True "dynamic-library-dirs") (libraryDynDirs pkg)
mapM_ (checkDir True "include-dirs") (includeDirs pkg)
mapM_ (checkDir True "framework-dirs") (frameworkDirs pkg)
......
This is an attempt to make GHC build reproducible. The name of .c files may end
up in the resulting binary (in the debug section), but not the directory.
Instead of using the process id, create a hash from the command line arguments,
and assume that is going to be unique.
--- a/compiler/main/SysTools.hs
+++ b/compiler/main/SysTools.hs
@@ -68,6 +68,7 @@ import Platform
import Util
import DynFlags
import Exception
+import Fingerprint
import LlvmCodeGen.Base (llvmVersionStr, supportedLlvmVersion)
@@ -1121,8 +1122,8 @@ getTempDir dflags = do
mapping <- readIORef dir_ref
case Map.lookup tmp_dir mapping of
Nothing -> do
- pid <- getProcessID
- let prefix = tmp_dir </> "ghc" ++ show pid ++ "_"
+ pid <- getStableProcessID
+ let prefix = tmp_dir </> "ghc" ++ pid ++ "_"
mask_ $ mkTempDir prefix
Just dir -> return dir
where
@@ -1558,6 +1559,13 @@ getProcessID :: IO Int
getProcessID = System.Posix.Internals.c_getpid >>= return . fromIntegral
#endif
+-- Debian-specific hack to get reproducible output, by not using the "random"
+-- pid, but rather something determinisic
+getStableProcessID :: IO String
+getStableProcessID = do
+ args <- getArgs
+ return $ take 4 $ show $ fingerprintString $ unwords args
+
-- Divvy up text stream into lines, taking platform dependent
-- line termination into account.
linesPlatform :: String -> [String]
......@@ -3,10 +3,5 @@ ARM-VFPv3D16
no-missing-haddock-file-warning
hurd.diff
buildpath-abi-stability.patch
reproducible-tmp-names
do-not-use-SHELL
x32-use-native-x86_64-insn.patch
use-stage1-binaries-for-install.patch
build-unlit-and-hp2ps-twice.patch
fix-hssplicety.patch
lower-optimization-for-unreg.patch
--- a/ghc.mk
+++ b/ghc.mk
@@ -829,7 +829,6 @@ endif
Index: ghc-8.4.1/ghc.mk
===================================================================
--- ghc-8.4.1.orig/ghc.mk
+++ ghc-8.4.1/ghc.mk
@@ -820,7 +820,6 @@
# Build the Haddock contents and index
ifeq "$(HADDOCK_DOCS)" "YES"
libraries/dist-haddock/index.html: $(haddock_INPLACE) $(ALL_HADDOCK_FILES)
......@@ -8,7 +10,7 @@
ifeq "$(phase)" "final"
$(eval $(call all-target,library_doc_index,libraries/dist-haddock/index.html))
endif
@@ -950,12 +949,8 @@ endif
@@ -953,12 +952,8 @@
$(INSTALL_DIR) "$(DESTDIR)$(docdir)/html"
$(INSTALL_DOC) $(INSTALL_OPTS) docs/index.html "$(DESTDIR)$(docdir)/html"
ifneq "$(INSTALL_LIBRARY_DOCS)" ""
......@@ -22,7 +24,7 @@
endif
ifneq "$(INSTALL_HTML_DOC_DIRS)" ""
for i in $(INSTALL_HTML_DOC_DIRS); do \
@@ -1067,7 +1062,6 @@ $(eval $(call bindist-list,.,\
@@ -1078,7 +1073,6 @@
mk/project.mk \
mk/install.mk.in \
bindist.mk \
......
......@@ -7,9 +7,11 @@ Description: Use the stage1 binaries for install
Author: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Last-Update: 2017-01-29
--- a/ghc.mk
+++ b/ghc.mk
@@ -963,8 +963,12 @@ INSTALLED_PACKAGE_CONF=$(DESTDIR)$(topdi
Index: ghc-8.4.1/ghc.mk
===================================================================
--- ghc-8.4.1.orig/ghc.mk
+++ ghc-8.4.1/ghc.mk
@@ -972,8 +972,12 @@
# Install packages in the right order, so that ghc-pkg doesn't complain.
# Also, install ghc-pkg first.
ifeq "$(Windows_Host)" "NO"
......
......@@ -12,9 +12,11 @@ Description: Use native x86_64 instructions on x32
See: https://ghc.haskell.org/trac/ghc/ticket/11571
.
--- a/rts/RtsSymbols.c
+++ b/rts/RtsSymbols.c
@@ -917,7 +917,7 @@
Index: ghc-8.4.1/rts/RtsSymbols.c
===================================================================
--- ghc-8.4.1.orig/rts/RtsSymbols.c
+++ ghc-8.4.1/rts/RtsSymbols.c
@@ -919,7 +919,7 @@
// 64-bit support functions in libgcc.a
......
......@@ -118,8 +118,8 @@ endif
./configure $(confflags) --prefix=/usr \
$(EXTRA_CONFIGURE_FLAGS) \
--with-system-libffi \
--with-llc=llc-3.9 \
--with-opt=opt-3.9
--with-llc=llc-5.0 \
--with-opt=opt-5.0
override_dh_auto_build:
dh_auto_build
......