Skip to content

Commits on Source 37

ghc (8.4.3+dfsg1-2) unstable; urgency=medium
* Upload to unstable
-- Ilias Tsitsimpis <iliastsi@debian.org> Wed, 26 Sep 2018 12:10:37 +0300
ghc (8.4.3+dfsg1-1) experimental; urgency=medium
* Backport upstream commit 18cb44dfae3f.
This fixes upstream bug #15213 (32 bit Haddock runs out of memory
compiling 32 bit GHC).
* Remove DFSG incompatible file (Closes: #870683).
-- Ilias Tsitsimpis <iliastsi@debian.org> Fri, 21 Sep 2018 23:05:59 +0300
ghc (8.4.3-7) experimental; urgency=medium
* Backport upstream commit ec9aacf3eb2 (add -latomic to ghc-prim)
* Use system's default ld (ld.bfd) on sparc64, instead of ld.gold
(Closes: #908998)
-- Ilias Tsitsimpis <iliastsi@debian.org> Tue, 18 Sep 2018 14:30:06 +0300
ghc (8.4.3-6) experimental; urgency=medium
[ Gianfranco Costamagna ]
* Try to fix armel build
[ John Paul Adrian Glaubitz ]
* ghc: disable ld override on powerpcspe too
[ Ilias Tsitsimpis ]
* Allow unregisterised ghc-8.2 to build newer GHC
* Bump to Standards-Version 4.2.1
-- Ilias Tsitsimpis <iliastsi@debian.org> Fri, 14 Sep 2018 14:32:12 +0300
ghc (8.4.3-5) experimental; urgency=medium
* Switch to dh_auto_configure, making the correct triplet
being passed to the build system, with also --target flag
(this should hopefully make the configure more robust, and
stop failing now that armhf runs on arm64 systems)
- thanks waldi, jcristay for the help
-- Gianfranco Costamagna <locutusofborg@debian.org> Fri, 20 Jul 2018 13:52:19 +0200
ghc (8.4.3-4) experimental; urgency=medium
* merge with unstable 8.2.2-6
-- Gianfranco Costamagna <locutusofborg@debian.org> Fri, 20 Jul 2018 00:24:43 +0200
ghc (8.4.3-3) experimental; urgency=medium
* Switch configure.ac to search for llvm 6.0
-- Gianfranco Costamagna <locutusofborg@debian.org> Thu, 19 Jul 2018 12:16:02 +0200
ghc (8.4.3-2) experimental; urgency=medium
[ Gianfranco Costamagna ]
* Remove old and non-applied anymore powerpcspe-disable-FPU-code.patch.
(Closes: #900817)
* Switch to llvm 6.0 (Closes: #850915)
[ Clint Adams ]
* Merge in 8.2.2-5.
-- Clint Adams <clint@debian.org> Wed, 18 Jul 2018 19:12:59 -0400
ghc (8.4.3-1) experimental; urgency=medium
* New upstream version.
* Apply upstream patch to build on armhf.
-- Clint Adams <clint@debian.org> Wed, 30 May 2018 18:34:37 -0400
ghc (8.4.2-1) experimental; urgency=medium
* New upstream release
-- Gianfranco Costamagna <locutusofborg@debian.org> Mon, 23 Apr 2018 10:28:43 +0200
ghc (8.4.1-2) experimental; urgency=medium
* Refresh armel patch, but do not apply it, to see
if upstream changes are enough to make it build again
-- Gianfranco Costamagna <locutusofborg@debian.org> Tue, 10 Apr 2018 08:58:07 +0200
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> Mon, 09 Apr 2018 15:54:00 +0200
ghc (8.2.2-6) unstable; urgency=medium
* debian/patches/{risc-support,e175aaf6918bb2b497b83618dc4c270a0d231a1c}.patch
......
......@@ -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.4
Standards-Version: 4.2.1
Rules-Requires-Root: no
Build-Depends:
debhelper (>= 10),
......@@ -13,26 +13,23 @@ Build-Depends:
pkg-config,
ghc:native (>= 7.8),
libgmp-dev,
llvm-3.9 [arm64 armel armhf],
llvm-6.0 [arm64 armel armhf],
libffi-dev,
binutils [arm64 armel armhf],
libncurses5-dev,
python-sphinx <!cross>,
dpkg-dev (>= 1.16.1.1)
Build-Depends-Indep:
hscolour,
fop
Build-Conflicts:
ccache,
ghc (= 8.0.0.20160111-3),
Homepage: http://haskell.org/ghc/
Build-Conflicts: ccache
Homepage: https://haskell.org/ghc/
Vcs-Git: https://salsa.debian.org/haskell-team/DHG_packages.git [p/ghc]
Vcs-Browser: https://salsa.debian.org/haskell-team/DHG_packages/tree/master/p/ghc
Package: ghc
Architecture: any
Depends:
llvm-3.9 [arm64 armel armhf],
llvm-6.0 [arm64 armel armhf],
gcc,
libgmp-dev,
libffi-dev,
......@@ -54,7 +51,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-6.0
Description: The Glasgow Haskell Compilation system
The Glorious Glasgow Haskell Compilation system (GHC) is a compiler for
Haskell.
......
......@@ -2,6 +2,7 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: ghc
Upstream-Contact: Simon Marlow <marlowsd@gmail.com>
Source: https://downloads.haskell.org/~ghc/
Files-Excluded: libraries/bytestring/tests/data
Files: *
License: BSD-3-clause
......
......@@ -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
Index: b/aclocal.m4
===================================================================
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -417,7 +417,7 @@ AC_DEFUN([GET_ARM_ISA],
@@ -423,7 +423,7 @@ AC_DEFUN([GET_ARM_ISA],
)],
[changequote(, )dnl
ARM_ISA=ARMv7
......
commit ec9aacf3eb2975fd302609163aaef429962ecd87
Author: Moritz Angermann <moritz.angermann@gmail.com>
Date: Thu Feb 8 16:07:07 2018 +0800
adds -latomic to. ghc-prim
Reviewers: bgamari, hvr
Reviewed By: bgamari
Subscribers: erikd, hvr, rwbarton, thomie, carter
Differential Revision: https://phabricator.haskell.org/D4378
iliastsi: The original patch fails to correctly detect and use C11
atomics, so I modified it based on https://phabricator.haskell.org/D5154.
Index: b/aclocal.m4
===================================================================
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1284,24 +1284,6 @@ AC_SUBST(GccIsClang)
rm -f conftest.txt
])
-# FP_GCC_SUPPORTS__ATOMICS
-# ------------------------
-# Does gcc support the __atomic_* family of builtins?
-AC_DEFUN([FP_GCC_SUPPORTS__ATOMICS],
-[
- AC_REQUIRE([AC_PROG_CC])
- AC_MSG_CHECKING([whether GCC supports __atomic_ builtins])
- echo 'int test(int *x) { int y; __atomic_load(&x, &y, __ATOMIC_SEQ_CST); return x; }' > conftest.c
- if $CC -c conftest.c > /dev/null 2>&1; then
- CONF_GCC_SUPPORTS__ATOMICS=YES
- AC_MSG_RESULT([yes])
- else
- CONF_GCC_SUPPORTS__ATOMICS=NO
- AC_MSG_RESULT([no])
- fi
- rm -f conftest.c conftest.o
-])
-
# FP_GCC_SUPPORTS_NO_PIE
# ----------------------
# Does gcc support the -no-pie option? If so we should pass it to gcc when
Index: b/configure.ac
===================================================================
--- a/configure.ac
+++ b/configure.ac
@@ -714,11 +714,6 @@ FP_GCC_VERSION
dnl ** See whether gcc supports -no-pie
FP_GCC_SUPPORTS_NO_PIE
-dnl ** Used to determine how to compile ghc-prim's atomics.c, used by
-dnl unregisterised, Sparc, and PPC backends.
-FP_GCC_SUPPORTS__ATOMICS
-AC_DEFINE([HAVE_C11_ATOMICS], [$CONF_GCC_SUPPORTS__ATOMICS], [Does GCC support __atomic primitives?])
-
FP_GCC_EXTRA_FLAGS
dnl ** look to see if we have a C compiler using an llvm back end.
Index: b/libraries/ghc-prim/Setup.hs
===================================================================
--- a/libraries/ghc-prim/Setup.hs
+++ b/libraries/ghc-prim/Setup.hs
@@ -18,7 +18,7 @@ import System.Exit
import System.Directory
main :: IO ()
-main = do let hooks = simpleUserHooks {
+main = do let hooks = autoconfUserHooks {
regHook = addPrimModule
$ regHook simpleUserHooks,
buildHook = build_primitive_sources
Index: b/libraries/ghc-prim/aclocal.m4
===================================================================
--- /dev/null
+++ b/libraries/ghc-prim/aclocal.m4
@@ -0,0 +1,17 @@
+# FP_GCC_SUPPORTS__ATOMICS
+# ------------------------
+# Does gcc support the __atomic_* family of builtins?
+AC_DEFUN([FP_GCC_SUPPORTS__ATOMICS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_MSG_CHECKING([whether GCC supports __atomic_ builtins])
+ echo 'int test(int *x) { int y; __atomic_load(x, &y, __ATOMIC_SEQ_CST); return y; }' > conftest.c
+ if $CC -c conftest.c > /dev/null 2>&1; then
+ CONF_GCC_SUPPORTS__ATOMICS=YES
+ AC_MSG_RESULT([yes])
+ else
+ CONF_GCC_SUPPORTS__ATOMICS=NO
+ AC_MSG_RESULT([no])
+ fi
+ rm -f conftest.c conftest.o
+])
Index: b/libraries/ghc-prim/configure.ac
===================================================================
--- /dev/null
+++ b/libraries/ghc-prim/configure.ac
@@ -0,0 +1,18 @@
+AC_INIT([ghc-prim package], [2.1], [glasgow-haskell-bugs@haskell.org], [ghc-prim])
+
+AC_CONFIG_SRCDIR([ghc-prim.cabal])
+
+# -------------------------------------------------------------------------
+dnl ** Used to determine how to compile ghc-prim's atomics.c, used by
+dnl unregisterised, Sparc, and PPC backends.
+FP_GCC_SUPPORTS__ATOMICS
+AC_DEFINE([HAVE_C11_ATOMICS], [$CONF_GCC_SUPPORTS__ATOMICS], [Does GCC support __atomic primitives?])
+
+if test "$CONF_GCC_SUPPORTS__ATOMICS" = "YES"
+then PRIM_CFLAGS=-DHAVE_C11_ATOMICS
+ PRIM_EXTRA_LIBRARIES=atomic
+fi
+AC_SUBST([PRIM_CFLAGS])
+AC_SUBST([PRIM_EXTRA_LIBRARIES])
+AC_CONFIG_FILES([ghc-prim.buildinfo])
+AC_OUTPUT
Index: b/libraries/ghc-prim/ghc-prim.buildinfo.in
===================================================================
--- /dev/null
+++ b/libraries/ghc-prim/ghc-prim.buildinfo.in
@@ -0,0 +1,2 @@
+cc-options: @PRIM_CFLAGS@
+extra-libraries: @PRIM_EXTRA_LIBRARIES@
\ No newline at end of file
Description: Revert ghci ARM improvements (ticket #10375) on armel
This patch reverts a change which improved ghci on ARM (see
ghc ticket #10375). While the change fixed ghci on armhf, it
actually resulted in the ghc package FTBFS on armel since the
changes introduced made ghc incompatible with this architecture
(ticket #11058). As a temporary workaround, we revert this particular
change when ghc is built on armel. For this reason, this patch
is not applied using the series file but only selectively on
armel with the help of debian/rules.
.
--- ghc-8.2.1.orig/aclocal.m4 2017-09-17 10:46:45.000000000 +0200
+++ ghc-8.2.1/aclocal.m4 2017-09-17 11:57:40.681870101 +0200
@@ -621,16 +621,8 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
$3="$$3 -D_HPUX_SOURCE"
$5="$$5 -D_HPUX_SOURCE"
;;
- arm*linux*)
- # On arm/linux and arm/android, tell gcc to generate Arm
- # instructions (ie not Thumb) and to link using the gold linker.
- # Forcing LD to be ld.gold is done in FIND_LD m4 macro.
- $2="$$2 -marm"
- $3="$$3 -Wl,-z,noexecstack"
- $4="$$4 -z noexecstack"
- ;;
-
- aarch64*linux*)
+ arm*linux* | \
+ aarch64*linux* )
$3="$$3 -Wl,-z,noexecstack"
$4="$$4 -z noexecstack"
;;
--- ghc-7.10.3.orig/libraries/ghci/GHCi/InfoTable.hsc
+++ ghc-7.10.3/libraries/ghci/GHCi/InfoTable.hsc
@@ -245,17 +245,17 @@ mkJumpToAddr dflags a = case platformArc
, fromIntegral ((w64 `shiftR` 32) .&. 0x0000FFFF) ]
ArchARM { } ->
- -- Generates Arm sequence,
+ -- Generates Thumb sequence,
-- ldr r1, [pc, #0]
-- bx r1
--
-- which looks like:
-- 00000000 <.addr-0x8>:
- -- 0: 00109fe5 ldr r1, [pc] ; 8 <.addr>
- -- 4: 11ff2fe1 bx r1
+ -- 0: 4900 ldr r1, [pc] ; 8 <.addr>
+ -- 4: 4708 bx r1
let w32 = fromIntegral (funPtrToInt a) :: Word32
- in Left [ 0x00, 0x10, 0x9f, 0xe5
- , 0x11, 0xff, 0x2f, 0xe1
+ in Left [ 0x49, 0x00
+ , 0x47, 0x08
, byte0 w32, byte1 w32, byte2 w32, byte3 w32]
ArchARM64 { } ->
--- ghc-7.10.3.orig/compiler/llvmGen/LlvmCodeGen/Ppr.hs
+++ ghc-7.10.3/compiler/llvmGen/LlvmCodeGen/Ppr.hs
@@ -52,7 +52,7 @@ moduleLayout = sdocWithPlatform $ \platform ->
$+$ text "target triple = \"x86_64-linux-gnu\""
Platform { platformArch = ArchARM {}, platformOS = OSLinux } ->
text "target datalayout = \"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32\""
- $+$ text "target triple = \"armv6-unknown-linux-gnueabihf\""
+ $+$ text "target triple = \"arm-unknown-linux-gnueabi\""
Platform { platformArch = ArchARM {}, platformOS = OSAndroid } ->
text "target datalayout = \"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32\""
$+$ text "target triple = \"arm-unknown-linux-androideabi\""
Description: with new ghc 8.4.3, the armel situation seems to have improved,
apply this patch unconditionally.
#Description: Revert ghci ARM improvements (ticket #10375) on armel
# This patch reverts a change which improved ghci on ARM (see
# ghc ticket #10375). While the change fixed ghci on armhf, it
# actually resulted in the ghc package FTBFS on armel since the
# changes introduced made ghc incompatible with this architecture
# (ticket #11058). As a temporary workaround, we revert this particular
# change when ghc is built on armel. For this reason, this patch
# is not applied using the series file but only selectively on
# armel with the help of debian/rules.
# .
#
#Index: ghc-8.4.1/aclocal.m4
#===================================================================
#--- ghc-8.4.1.orig/aclocal.m4
#+++ ghc-8.4.1/aclocal.m4
#@@ -651,15 +651,8 @@
# $3="$$3 -D_HPUX_SOURCE"
# $5="$$5 -D_HPUX_SOURCE"
# ;;
#- arm*linux*)
#- # On arm/linux and arm/android, tell gcc to generate Arm
#- # instructions (ie not Thumb).
#- $2="$$2 -marm"
#- $3="$$3 -Wl,-z,noexecstack"
#- $4="$$4 -z noexecstack"
#- ;;
#-
#- aarch64*linux*)
#+ arm*linux* | \
#+ aarch64*linux* )
# $3="$$3 -Wl,-z,noexecstack"
# $4="$$4 -z noexecstack"
# ;;
#Index: ghc-8.4.1/libraries/ghci/GHCi/InfoTable.hsc
#===================================================================
#--- ghc-8.4.1.orig/libraries/ghci/GHCi/InfoTable.hsc
#+++ ghc-8.4.1/libraries/ghci/GHCi/InfoTable.hsc
#@@ -245,17 +245,17 @@
# , fromIntegral ((w64 `shiftR` 32) .&. 0x0000FFFF) ]
#
# ArchARM { } ->
#- -- Generates Arm sequence,
#+ -- Generates Thumb sequence,
# -- ldr r1, [pc, #0]
# -- bx r1
# --
# -- which looks like:
# -- 00000000 <.addr-0x8>:
#- -- 0: 00109fe5 ldr r1, [pc] ; 8 <.addr>
#- -- 4: 11ff2fe1 bx r1
#+ -- 0: 4900 ldr r1, [pc] ; 8 <.addr>
#+ -- 4: 4708 bx r1
# let w32 = fromIntegral (funPtrToInt a) :: Word32
#- in Left [ 0x00, 0x10, 0x9f, 0xe5
#- , 0x11, 0xff, 0x2f, 0xe1
#+ in Left [ 0x49, 0x00
#+ , 0x47, 0x08
# , byte0 w32, byte1 w32, byte2 w32, byte3 w32]
#
# ArchARM64 { } ->
Index: b/llvm-targets
===================================================================
--- a/llvm-targets
+++ b/llvm-targets
@@ -3,6 +3,7 @@
,("x86_64-unknown-windows", ("e-m:w-i64:64-f80:128-n8:16:32:64-S128", "x86-64", ""))
,("arm-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1176jzf-s", "+strict-align"))
,("armv6-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1136jf-s", "+strict-align"))
+,("arm-unknown-linux-gnueabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1136jf-s", "+strict-align"))
,("armv6l-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1176jzf-s", "+strict-align"))
,("armv7-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", ""))
,("armv7a-unknown-linux-gnueabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", ""))
......@@ -24,9 +24,11 @@ Description: driver: skip -Bsymbolic on unregisterised targets
.
This change disables '-Bsymbolic' for unregisterised targets.
Index: b/compiler/main/SysTools.hs
===================================================================
--- a/compiler/main/SysTools.hs
+++ b/compiler/main/SysTools.hs
@@ -1741,9 +1741,12 @@
@@ -534,9 +534,12 @@ linkDynLib dflags0 o_files dep_packages
-------------------------------------------------------------------
let output_fn = case o_file of { Just s -> s; Nothing -> "a.out"; }
......@@ -41,7 +43,7 @@ Description: driver: skip -Bsymbolic on unregisterised targets
runLink dflags (
map Option verbFlags
@@ -1800,3 +1803,27 @@
@@ -593,3 +596,27 @@ getFrameworkOpts dflags platform
-- reverse because they're added in reverse order from the cmd line:
framework_opts = concat [ ["-framework", fw]
| fw <- reverse frameworks ]
......
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
Index: b/compiler/iface/MkIface.hs
===================================================================
--- a/compiler/iface/MkIface.hs
+++ b/compiler/iface/MkIface.hs
@@ -681,7 +681,7 @@ addFingerprints hsc_env mb_old_fingerpri
@@ -689,7 +689,7 @@ addFingerprints hsc_env mb_old_fingerpri
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 @@ addFingerprints hsc_env mb_old_fingerpri
(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) $@
......@@ -39,11 +39,11 @@ Subscribers: rwbarton, thomie, carter
Differential Revision: https://phabricator.haskell.org/D4982
---
Index: ghc-8.2.2/rts/posix/OSMem.c
Index: b/rts/posix/OSMem.c
===================================================================
--- ghc-8.2.2.orig/rts/posix/OSMem.c
+++ ghc-8.2.2/rts/posix/OSMem.c
@@ -422,6 +422,8 @@
--- a/rts/posix/OSMem.c
+++ b/rts/posix/OSMem.c
@@ -435,6 +435,8 @@ osTryReserveHeapMemory (W_ len, void *hi
void *base, *top;
void *start, *end;
......@@ -52,7 +52,7 @@ Index: ghc-8.2.2/rts/posix/OSMem.c
/* We try to allocate len + MBLOCK_SIZE,
because we need memory which is MBLOCK_SIZE aligned,
and then we discard what we don't need */
@@ -489,6 +491,8 @@
@@ -502,6 +504,8 @@ void *osReserveHeapMemory(void *startAdd
attempt = 0;
while (1) {
......
Description: Allow unregisterised ghc-8.2 to build newer GHC
Commit b68697e579d38ca29c2b84377dc2affa04659a28 introduced a regression
stopping existing unregisteristed compilers from being used to compile a newer
version of GHC. The problem is that the bootstrap compiler uses the newer Stg.h
where EB_, IB_, etc, definitions have changed resulting in the following error:
.
error: conflicting types for 'ghc_GhcPrelude_zdtrModule4_bytes'
note: in definition of macro 'EB_'
#define EB_(X) extern const char X[]
note: previous definition of 'ghc_GhcPrelude_zdtrModule4_bytes' was here
char ghc_GhcPrelude_zdtrModule4_bytes[] = "ghc";
.
For more information about the problem, see https://phabricator.haskell.org/D4114.
.
This patch is a rework of https://phabricator.haskell.org/D3741.
It modifies Stg.h to include the old definitions, if a compiler older than
8.4 is being used.
.
This patch can be removed, once ghc-8.2 is no longer the bootstrap compiler.
Author: Ilias Tsitsimpis <iliastsi@debian.org>
Bug: https://ghc.haskell.org/trac/ghc/ticket/15201
Index: b/includes/Stg.h
===================================================================
--- a/includes/Stg.h
+++ b/includes/Stg.h
@@ -232,6 +232,16 @@ typedef StgInt I_;
typedef StgWord StgWordArray[];
typedef StgFunPtr F_;
+#if __GLASGOW_HASKELL__ < 804
+#define EB_(X) extern char X[]
+#define IB_(X) static char X[]
+#define EI_(X) extern StgWordArray (X) GNU_ATTRIBUTE(aligned (8))
+#define II_(X) static StgWordArray (X) GNU_ATTRIBUTE(aligned (8))
+#define IF_(f) static StgFunPtr GNUC3_ATTRIBUTE(used) f(void)
+#define FN_(f) StgFunPtr f(void)
+#define EF_(f) StgFunPtr f(void) /* External Cmm functions */
+#define EFF_(f) void f() /* See Note [External function prototypes] */
+#else
/* byte arrays (and strings): */
#define EB_(X) extern const char X[]
#define IB_(X) static const char X[]
@@ -250,6 +260,7 @@ typedef StgFunPtr F_;
#define EF_(f) StgFunPtr f(void) /* External Cmm functions */
/* foreign functions: */
#define EFF_(f) void f() /* See Note [External function prototypes] */
+#endif /* __GLASGOW_HASKELL__ < 804 */
/* Note [External function prototypes] See Trac #8965, #11395
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
commit 18cb44dfae3f0847447da33c9d7a25d2709d838f
Author: Alec Theriault <alec.theriault@gmail.com>
Date: Tue Aug 21 16:03:40 2018 -0400
Explicitly tell 'getNameToInstances' mods to load
Calculating which modules to load based on the InteractiveContext means
maintaining a potentially very large GblRdrEnv.
In Haddock's case, it is much cheaper (from a memory perspective) to
just keep track of which modules interfaces we want loaded then hand
these off explicitly to 'getNameToInstancesIndex'.
Bumps haddock submodule (commit 40eb5aabed0ae)
Reviewers: alexbiehl, bgamari
Reviewed By: alexbiehl
Subscribers: rwbarton, thomie, carter
Differential Revision: https://phabricator.haskell.org/D5003
(cherry picked from commit c971e1193fa44bb507d1806d5bb61768670dc912)
Index: b/compiler/main/GHC.hs
===================================================================
--- a/compiler/main/GHC.hs
+++ b/compiler/main/GHC.hs
@@ -117,6 +117,7 @@ module GHC (
showModule,
moduleIsBootOrNotObjectLinkable,
getNameToInstancesIndex,
+ getNameToInstancesIndex2,
-- ** Inspecting types and kinds
exprType, TcRnExprMode(..),
@@ -297,7 +298,8 @@ import HscMain
import GhcMake
import DriverPipeline ( compileOne' )
import GhcMonad
-import TcRnMonad ( finalSafeMode, fixSafeInstances )
+import TcRnMonad ( finalSafeMode, fixSafeInstances, initIfaceTcRn )
+import LoadIface ( loadSysInterface )
import TcRnTypes
import Packages
import NameSet
@@ -1247,10 +1249,27 @@ getNameToInstancesIndex :: GhcMonad m
=> [Module] -- ^ visible modules. An orphan instance will be returned if and
-- only it is visible from at least one module in the list.
-> m (Messages, Maybe (NameEnv ([ClsInst], [FamInst])))
-getNameToInstancesIndex visible_mods = do
+getNameToInstancesIndex visible_mods =
+ getNameToInstancesIndex2 visible_mods Nothing
+
+-- | Retrieve all type and family instances in the environment, indexed
+-- by 'Name'. Each name's lists will contain every instance in which that name
+-- is mentioned in the instance head.
+getNameToInstancesIndex2 :: GhcMonad m
+ => [Module] -- ^ visible modules. An orphan instance will be returned
+ -- if it is visible from at least one module in the list.
+ -> Maybe [Module] -- ^ modules to load. If this is not specified, we load
+ -- modules for everything that is in scope unqualified.
+ -> m (Messages, Maybe (NameEnv ([ClsInst], [FamInst])))
+getNameToInstancesIndex2 visible_mods mods_to_load = do
hsc_env <- getSession
liftIO $ runTcInteractive hsc_env $
- do { loadUnqualIfaces hsc_env (hsc_IC hsc_env)
+ do { case mods_to_load of
+ Nothing -> loadUnqualIfaces hsc_env (hsc_IC hsc_env)
+ Just mods ->
+ let doc = text "Need interface for reporting instances in scope"
+ in initIfaceTcRn $ mapM_ (loadSysInterface doc) mods
+
; InstEnvs {ie_global, ie_local} <- tcGetInstEnvs
; let visible_mods' = mkModuleSet visible_mods
; (pkg_fie, home_fie) <- tcGetFamInstEnvs
Index: b/utils/haddock/haddock-api/src/Haddock/Interface.hs
===================================================================
--- a/utils/haddock/haddock-api/src/Haddock/Interface.hs
+++ b/utils/haddock/haddock-api/src/Haddock/Interface.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP, OverloadedStrings #-}
+{-# LANGUAGE CPP, OverloadedStrings, BangPatterns #-}
-----------------------------------------------------------------------------
-- |
-- Module : Haddock.Interface
@@ -51,6 +51,7 @@ import System.Directory
import System.FilePath
import Text.Printf
+import Module (mkModuleSet, emptyModuleSet, unionModuleSet, ModuleSet)
import Digraph
import DynFlags hiding (verbosity)
import Exception
@@ -59,7 +60,9 @@ import HscTypes
import FastString (unpackFS)
import MonadUtils (liftIO)
import TcRnTypes (tcg_rdr_env)
-import RdrName (plusGlobalRdrEnv)
+import Name (nameIsFromExternalPackage, nameOccName)
+import OccName (isTcOcc)
+import RdrName (unQualOK, gre_name, globalRdrEnvElts)
import ErrUtils (withTiming)
#if defined(mingw32_HOST_OS)
@@ -87,7 +90,7 @@ processModules verbosity modules flags e
out verbosity verbose "Creating interfaces..."
let instIfaceMap = Map.fromList [ (instMod iface, iface) | ext <- extIfaces
, iface <- ifInstalledIfaces ext ]
- interfaces <- createIfaces0 verbosity modules flags instIfaceMap
+ (interfaces, ms) <- createIfaces0 verbosity modules flags instIfaceMap
let exportedNames =
Set.unions $ map (Set.fromList . ifaceExports) $
@@ -96,7 +99,7 @@ processModules verbosity modules flags e
out verbosity verbose "Attaching instances..."
interfaces' <- {-# SCC attachInstances #-}
withTiming getDynFlags "attachInstances" (const ()) $ do
- attachInstances (exportedNames, mods) interfaces instIfaceMap
+ attachInstances (exportedNames, mods) interfaces instIfaceMap ms
out verbosity verbose "Building cross-linking environment..."
-- Combine the link envs of the external packages into one
@@ -120,7 +123,7 @@ processModules verbosity modules flags e
--------------------------------------------------------------------------------
-createIfaces0 :: Verbosity -> [String] -> [Flag] -> InstIfaceMap -> Ghc [Interface]
+createIfaces0 :: Verbosity -> [String] -> [Flag] -> InstIfaceMap -> Ghc ([Interface], ModuleSet)
createIfaces0 verbosity modules flags instIfaceMap =
-- Output dir needs to be set before calling depanal since depanal uses it to
-- compute output file names that are stored in the DynFlags of the
@@ -150,43 +153,52 @@ createIfaces0 verbosity modules flags in
depanal [] False
-createIfaces :: Verbosity -> [Flag] -> InstIfaceMap -> ModuleGraph -> Ghc [Interface]
+createIfaces :: Verbosity -> [Flag] -> InstIfaceMap -> ModuleGraph -> Ghc ([Interface], ModuleSet)
createIfaces verbosity flags instIfaceMap mods = do
let sortedMods = flattenSCCs $ topSortModuleGraph False mods Nothing
out verbosity normal "Haddock coverage:"
- (ifaces, _) <- foldM f ([], Map.empty) sortedMods
- return (reverse ifaces)
+ (ifaces, _, !ms) <- foldM f ([], Map.empty, emptyModuleSet) sortedMods
+ return (reverse ifaces, ms)
where
- f (ifaces, ifaceMap) modSummary = do
+ f (ifaces, ifaceMap, !ms) modSummary = do
x <- {-# SCC processModule #-}
withTiming getDynFlags "processModule" (const ()) $ do
processModule verbosity modSummary flags ifaceMap instIfaceMap
return $ case x of
- Just iface -> (iface:ifaces, Map.insert (ifaceMod iface) iface ifaceMap)
- Nothing -> (ifaces, ifaceMap) -- Boot modules don't generate ifaces.
+ Just (iface, ms') -> ( iface:ifaces
+ , Map.insert (ifaceMod iface) iface ifaceMap
+ , unionModuleSet ms ms' )
+ Nothing -> ( ifaces
+ , ifaceMap
+ , ms ) -- Boot modules don't generate ifaces.
-processModule :: Verbosity -> ModSummary -> [Flag] -> IfaceMap -> InstIfaceMap -> Ghc (Maybe Interface)
+processModule :: Verbosity -> ModSummary -> [Flag] -> IfaceMap -> InstIfaceMap -> Ghc (Maybe (Interface, ModuleSet))
processModule verbosity modsum flags modMap instIfaceMap = do
out verbosity verbose $ "Checking module " ++ moduleString (ms_mod modsum) ++ "..."
tm <- {-# SCC "parse/typecheck/load" #-} loadModule =<< typecheckModule =<< parseModule modsum
- -- We need to modify the interactive context's environment so that when
- -- Haddock later looks for instances, it also looks in the modules it
- -- encountered while typechecking.
- --
- -- See https://github.com/haskell/haddock/issues/469.
- hsc_env@HscEnv{ hsc_IC = old_IC } <- getSession
- let new_rdr_env = tcg_rdr_env . fst . GHC.tm_internals_ $ tm
- setSession hsc_env{ hsc_IC = old_IC {
- ic_rn_gbl_env = ic_rn_gbl_env old_IC `plusGlobalRdrEnv` new_rdr_env
- } }
-
if not $ isBootSummary modsum then do
out verbosity verbose "Creating interface..."
(interface, msg) <- {-# SCC createIterface #-}
withTiming getDynFlags "createInterface" (const ()) $ do
runWriterGhc $ createInterface tm flags modMap instIfaceMap
+
+ -- We need to modify the interactive context's environment so that when
+ -- Haddock later looks for instances, it also looks in the modules it
+ -- encountered while typechecking.
+ --
+ -- See https://github.com/haskell/haddock/issues/469.
+ hsc_env <- getSession
+ let new_rdr_env = tcg_rdr_env . fst . GHC.tm_internals_ $ tm
+ this_pkg = thisPackage (hsc_dflags hsc_env)
+ !mods = mkModuleSet [ nameModule name
+ | gre <- globalRdrEnvElts new_rdr_env
+ , let name = gre_name gre
+ , nameIsFromExternalPackage this_pkg name
+ , isTcOcc (nameOccName name) -- Types and classes only
+ , unQualOK gre ] -- In scope unqualified
+
liftIO $ mapM_ putStrLn msg
dflags <- getDynFlags
let (haddockable, haddocked) = ifaceHaddockCoverage interface
@@ -220,7 +232,7 @@ processModule verbosity modsum flags mod
unless header $ out verbosity normal " Module header"
mapM_ (out verbosity normal . (" " ++)) undocumentedExports
interface' <- liftIO $ evaluate interface
- return (Just interface')
+ return (Just (interface', mods))
else
return Nothing
Index: b/utils/haddock/haddock-api/src/Haddock/Interface/AttachInstances.hs
===================================================================
--- a/utils/haddock/haddock-api/src/Haddock/Interface/AttachInstances.hs
+++ b/utils/haddock/haddock-api/src/Haddock/Interface/AttachInstances.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP, MagicHash #-}
+{-# LANGUAGE CPP, MagicHash, BangPatterns #-}
{-# LANGUAGE TypeFamilies #-}
-----------------------------------------------------------------------------
-- |
@@ -34,6 +34,7 @@ import FamInstEnv
import FastString
import GHC
import InstEnv
+import Module ( ModuleSet, moduleSetElts )
import MonadUtils (liftIO)
import Name
import NameEnv
@@ -51,11 +52,13 @@ type Modules = Set.Set Module
type ExportInfo = (ExportedNames, Modules)
-- Also attaches fixities
-attachInstances :: ExportInfo -> [Interface] -> InstIfaceMap -> Ghc [Interface]
-attachInstances expInfo ifaces instIfaceMap = do
- (_msgs, mb_index) <- getNameToInstancesIndex (map ifaceMod ifaces)
+attachInstances :: ExportInfo -> [Interface] -> InstIfaceMap -> ModuleSet -> Ghc [Interface]
+attachInstances expInfo ifaces instIfaceMap mods = do
+ (_msgs, mb_index) <- getNameToInstancesIndex2 (map ifaceMod ifaces) mods'
mapM (attach $ fromMaybe emptyNameEnv mb_index) ifaces
where
+ mods' = Just (moduleSetElts mods)
+
-- TODO: take an IfaceMap as input
ifaceMap = Map.fromList [ (ifaceMod i, i) | i <- ifaces ]
Provided by “Pino” via Samuel Thibault. Not yet pushed upstream.
Index: b/aclocal.m4
===================================================================
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -274,7 +274,7 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_V
@@ -272,12 +272,15 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_V
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
Index: b/compiler/utils/Platform.hs
===================================================================
--- a/compiler/utils/Platform.hs
+++ b/compiler/utils/Platform.hs
@@ -88,6 +88,7 @@ data OS
@@ -87,6 +87,7 @@ data OS
| 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 OSKFreeBSD = True
osElfTarget OSHaiku = True
osElfTarget OSQNXNTO = False
osElfTarget OSAndroid = True
osElfTarget OSAIX = False
+osElfTarget OSHurd = True
osElfTarget OSUnknown = False
......
From e4003b6dc6a84d870116de9f47057c15b1576f36 Mon Sep 17 00:00:00 2001
From: Guillaume GARDET <guillaume.gardet@opensuse.org>
Date: Fri, 18 May 2018 08:56:28 +0200
Subject: [PATCH] llvm-targets: Add versioned ARM targets
Namely armv6l-unknown-linux-gnueabihf and
armv7l-unknown-linux-gnueabihf.
---
llvm-targets | 4 +++-
utils/llvm-targets/gen-data-layout.sh | 4 ++--
2 files changed, 5 insertions(+), 3 deletions(-)
Index: b/llvm-targets
===================================================================
--- a/llvm-targets
+++ b/llvm-targets
@@ -3,10 +3,12 @@
,("x86_64-unknown-windows", ("e-m:w-i64:64-f80:128-n8:16:32:64-S128", "x86-64", ""))
,("arm-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1176jzf-s", "+strict-align"))
,("armv6-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1136jf-s", "+strict-align"))
+,("armv6l-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1176jzf-s", "+strict-align"))
,("armv7-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", ""))
+,("armv7a-unknown-linux-gnueabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", ""))
+,("armv7l-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", ""))
,("aarch64-unknown-linux-gnu", ("e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128", "generic", "+neon"))
,("aarch64-unknown-linux", ("e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128", "generic", "+neon"))
-,("armv7a-unknown-linux-gnueabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", ""))
,("i386-unknown-linux-gnu", ("e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128", "pentium4", ""))
,("i386-unknown-linux", ("e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128", "pentium4", ""))
,("x86_64-unknown-linux-gnu", ("e-m:e-i64:64-f80:128-n8:16:32:64-S128", "x86-64", ""))
Index: b/utils/llvm-targets/gen-data-layout.sh
===================================================================
--- a/utils/llvm-targets/gen-data-layout.sh
+++ b/utils/llvm-targets/gen-data-layout.sh
@@ -18,7 +18,7 @@
# Target sets
WINDOWS_x86="i386-unknown-windows i686-unknown-windows x86_64-unknown-windows"
-LINUX_ARM="arm-unknown-linux-gnueabihf armv6-unknown-linux-gnueabihf armv7-unknown-linux-gnueabihf aarch64-unknown-linux-gnu aarch64-unknown-linux armv7a-unknown-linux-gnueabi"
+LINUX_ARM="arm-unknown-linux-gnueabihf armv6-unknown-linux-gnueabihf armv7-unknown-linux-gnueabihf aarch64-unknown-linux-gnu aarch64-unknown-linux armv7a-unknown-linux-gnueabi armv7l-unknown-linux-gnueabihf"
LINUX_x86="i386-unknown-linux-gnu i386-unknown-linux x86_64-unknown-linux-gnu x86_64-unknown-linux"
ANDROID="armv7-unknown-linux-androideabi aarch64-unknown-linux-android"
QNX="arm-unknown-nto-qnx-eabi"
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>
Index: b/utils/ghc-pkg/Main.hs
===================================================================
--- a/utils/ghc-pkg/Main.hs
+++ b/utils/ghc-pkg/Main.hs
@@ -1773,8 +1773,10 @@ checkPackageConfig pkg verbosity db_stac
@@ -1824,8 +1824,10 @@ checkPackageConfig pkg verbosity db_stac
mapM_ (checkDir True "dynamic-library-dirs") (libraryDynDirs pkg)
mapM_ (checkDir True "include-dirs") (includeDirs pkg)
mapM_ (checkDir True "framework-dirs") (frameworkDirs pkg)
......
Description: Disable FPU code on powerpspe
powerpcspe CPUs don't have an FPU, so the FPU PPC assembly
code has to be disabled on this architecture.
See: https://ghc.haskell.org/trac/ghc/ticket/12075
.
--- ghc-8.0.1.orig/aclocal.m4
+++ ghc-8.0.1/aclocal.m4
@@ -185,6 +185,7 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_V
test -z "[$]2" || eval "[$]2=ArchX86_64"
;;
powerpc)
+ FP_CHECK_FOR_SOFT_FLOAT_POWERPC()
test -z "[$]2" || eval "[$]2=ArchPPC"
;;
powerpc64)
@@ -458,6 +459,25 @@ AC_DEFUN([GET_ARM_ISA],
AC_SUBST(ARM_ISA)
])
+# CHECK_FOR_SOFT_FLOAT_POWERPC
+# ----------------------------------
+# Check whether we have hardware floating point support. See #12075
+AC_DEFUN([FP_CHECK_FOR_SOFT_FLOAT_POWERPC],
+[
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [],
+ [#if defined(__NO_FPRS__)
+ softfloat
+ #else
+ return 0;
+ #endif
+ ])],
+ [value=NO],
+ [value=YES])
+
+ AC_DEFINE(powerpc_HOST_ARCH_SOFT_FLOAT, $value, [soft-float PowerPC])
+])
# FP_SETTINGS
# ----------------------------------
--- ghc-8.0.1.orig/mk/project.mk.in
+++ ghc-8.0.1/mk/project.mk.in
@@ -162,3 +162,6 @@ GHC_LLVM_AFFECTED_BY_9439 = @GHC_LLVM_AF
ifeq "$(TargetArch_CPP)" "arm"
ARM_ISA=@ARM_ISA@
endif
+ifeq "$(TargetArch_CPP)" "powerpc"
+POWERPC_SOFT_FLOAT=@powerpc_HOST_ARCH_SOFT_FLOAT@
+endif
--- ghc-8.0.1.orig/rts/ghc.mk
+++ ghc-8.0.1/rts/ghc.mk
@@ -55,9 +55,12 @@ rts_S_SRCS += rts/AdjustorAsm.S
endif
# this matches substrings of powerpc64le, including "powerpc" and "powerpc64"
ifneq "$(findstring $(TargetArch_CPP), powerpc64le)" ""
+# and this matches soft-float PPC (#12075)
+ifneq "$(POWERPC_NO_FPRS)" "YES"
rts_S_SRCS += rts/StgCRunAsm.S
endif
endif
+endif
ifeq "$(GhcUnregisterised)" "YES"
GENAPPLY_OPTS = -u
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]