aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--community/ghc/0001-testsuite-Add-Alpine-Linux-x64-stat-too-good-allocat.patch76
-rw-r--r--community/ghc/0001-testsuite-Ensure-T5423-flushes-C-output-buffer.patch72
-rw-r--r--community/ghc/0001-testsuite-Ensure-that-ffi005-output-order-is-predict.patch95
-rw-r--r--community/ghc/0001-testsuite-Fix-T8602-on-musl.patch23
-rw-r--r--community/ghc/0001-testsuite-Skip-broken-tests-on-Alpine.patch57
-rw-r--r--community/ghc/0001-testsuite-T12600-avoid-broken-pipe-on-Alpine.patch27
-rw-r--r--community/ghc/0001-testsuite-unset-MAKEFLAGS-when-calling-python.patch26
-rw-r--r--community/ghc/0002-testsuite-Increase-tolerance-for-failed-stat-tests-o.patch47
-rw-r--r--community/ghc/APKBUILD22
9 files changed, 442 insertions, 3 deletions
diff --git a/community/ghc/0001-testsuite-Add-Alpine-Linux-x64-stat-too-good-allocat.patch b/community/ghc/0001-testsuite-Add-Alpine-Linux-x64-stat-too-good-allocat.patch
new file mode 100644
index 0000000000..3ec3dd9c6b
--- /dev/null
+++ b/community/ghc/0001-testsuite-Add-Alpine-Linux-x64-stat-too-good-allocat.patch
@@ -0,0 +1,76 @@
+From 507ceb34bce4bd5cb171987e7447c470195e210b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Lef=C3=A8vre?= <rlefevre@dmy.fr>
+Date: Tue, 10 Dec 2019 00:35:29 +0100
+Subject: testsuite: Add Alpine Linux x64 'stat too good' allocation results
+
+---
+ testsuite/tests/perf/compiler/all.T | 4 ++++
+ testsuite/tests/perf/haddock/all.T | 8 +++++++-
+ testsuite/tests/perf/should_run/all.T | 3 +++
+ 3 files changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/testsuite/tests/perf/compiler/all.T b/testsuite/tests/perf/compiler/all.T
+index dfb8613d98..1b5e065a55 100644
+--- a/testsuite/tests/perf/compiler/all.T
++++ b/testsuite/tests/perf/compiler/all.T
+@@ -449,6 +449,8 @@ test('T5631',
+ # 2014-04-04: 346389856 (x86 Windows, 64 bit machine)
+ # 2014-12-01: 390199244 (Windows laptop)
+ # 2016-04-06: 570137436 (amd64/Linux) many reasons
++ (platform('x86_64-alpine-linux'), 1096228616, 5),
++ # 2019-12-98: 1096228616
+ (wordsize(64), 1161885448, 5)]),
+ # expected value: 774595008 (amd64/Linux):
+ # expected value: 735486328 (amd64/Linux) 2012/12/12:
+@@ -477,6 +479,8 @@ test('parsing001',
+ [(wordsize(32), 232777056, 10),
+ # Initial: 274000576
+ # 2017-03-24: 232777056
++ (platform('x86_64-alpine-linux'), 426826936, 5),
++ # 2019-12-09: 426826936
+ (wordsize(64), 519401296, 5)]),
+ # expected value: 587079016 (amd64/Linux)
+ # 2016-09-01: 581551384 (amd64/Linux) Restore w/w limit (#11565)
+diff --git a/testsuite/tests/perf/haddock/all.T b/testsuite/tests/perf/haddock/all.T
+index 1ad98c72ca..237f581d2f 100644
+--- a/testsuite/tests/perf/haddock/all.T
++++ b/testsuite/tests/perf/haddock/all.T
+@@ -10,6 +10,9 @@ test('haddock.base',
+ # 2017-02-19 24286343184 (x64/Windows) - Generalize kind of (->)
+ # 2017-12-24 18733710728 (x64/Windows) - Unknown
+
++ ,(platform('x86_64-alpine-linux'), 23238935336, 5)
++ # 2019-12-09 23238935336
++
+ ,(wordsize(64), 26201242752, 5)
+ # 2012-08-14: 5920822352 (amd64/Linux)
+ # 2012-09-20: 5829972376 (amd64/Linux)
+@@ -79,7 +82,10 @@ test('haddock.Cabal',
+ [extra_files(['../../../../libraries/Cabal/Cabal/dist-install/haddock.t']),
+ unless(in_tree_compiler(), skip), req_haddock
+ ,stats_num_field('bytes allocated',
+- [(wordsize(64), 27520214496, 5)
++ [(platform('x86_64-alpine-linux'), 25761205904, 5)
++ # 2019-12-09 25761205904
++
++ ,(wordsize(64), 27520214496, 5)
+ # 2012-08-14: 3255435248 (amd64/Linux)
+ # 2012-08-29: 3324606664 (amd64/Linux, new codegen)
+ # 2012-10-08: 3373401360 (amd64/Linux)
+diff --git a/testsuite/tests/perf/should_run/all.T b/testsuite/tests/perf/should_run/all.T
+index fb8137647c..b09e907730 100644
+--- a/testsuite/tests/perf/should_run/all.T
++++ b/testsuite/tests/perf/should_run/all.T
+@@ -465,6 +465,9 @@ test('T9203',
+ # 2016-04-06 84345136 (i386/Debian) not sure
+ # 2017-03-24 77969268 (x86/Linux, 64-bit machine) probably join points
+
++ , (platform('x86_64-alpine-linux'), 46371880, 5)
++ # 2019-12-08 46371880
++
+ , (wordsize(64), 98360576, 5) ]),
+ # was 95747304
+ # 2019-09-10 94547280 post-AMP cleanup
+--
+2.17.1
+
diff --git a/community/ghc/0001-testsuite-Ensure-T5423-flushes-C-output-buffer.patch b/community/ghc/0001-testsuite-Ensure-T5423-flushes-C-output-buffer.patch
new file mode 100644
index 0000000000..f2568318ca
--- /dev/null
+++ b/community/ghc/0001-testsuite-Ensure-T5423-flushes-C-output-buffer.patch
@@ -0,0 +1,72 @@
+From a0f683795a72f7b82962d24098b1dc7c2b04ab29 Mon Sep 17 00:00:00 2001
+From: Ben Gamari <ben@smart-cactus.org>
+Date: Tue, 11 Jun 2019 12:48:32 -0400
+Subject: testsuite: Ensure T5423 flushes C output buffer
+
+Previously T5423 would fail to flush the printf output buffer.
+Consequently it was platform-dependent whether the C or Haskell print
+output would be emitted first.
+---
+ testsuite/tests/rts/Makefile | 3 ++-
+ testsuite/tests/rts/T5423.hs | 7 ++++++-
+ testsuite/tests/rts/T5423.stdout | 2 +-
+ testsuite/tests/rts/T5423_c.c | 6 ++++++
+ 4 files changed, 15 insertions(+), 3 deletions(-)
+ create mode 100644 testsuite/tests/rts/T5423_c.c
+
+diff --git a/testsuite/tests/rts/Makefile b/testsuite/tests/rts/Makefile
+index 32c2b17e27..51f2746c1f 100644
+--- a/testsuite/tests/rts/Makefile
++++ b/testsuite/tests/rts/Makefile
+@@ -37,7 +37,8 @@ T5423:
+ $(RM) T5423_cmm.o T5423.o T5423.hi T5423$(exeext)
+ "$(TEST_HC)" $(TEST_HC_OPTS) -v0 -c T5423_cmm.cmm
+ "$(TEST_HC)" $(TEST_HC_OPTS) -v0 -c T5423.hs
+- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 T5423.o T5423_cmm.o -o T5423$(exeext)
++ "$(TEST_HC)" $(TEST_HC_OPTS) -v0 -c T5423_c.c
++ "$(TEST_HC)" $(TEST_HC_OPTS) -v0 T5423.o T5423_cmm.o T5423_c.o -o T5423$(exeext)
+ ./T5423
+
+ .PHONY: T9405
+diff --git a/testsuite/tests/rts/T5423.hs b/testsuite/tests/rts/T5423.hs
+index 2565c3f002..cda87048d7 100644
+--- a/testsuite/tests/rts/T5423.hs
++++ b/testsuite/tests/rts/T5423.hs
+@@ -7,8 +7,13 @@ foreign import prim "test" test :: Int# -> Int# -> Int# -> Int# -> Int#
+ -> Int# -> Int# -> Int# -> Int# -> Int#
+ -> Int#
+
++foreign import ccall "flush_stdout" flush_stdout :: IO ()
++
+ v :: Int
+ v = I# (test 111# 112# 113# 114# 115# 116# 117# 118# 119# 120#)
+
+ main :: IO ()
+-main = print v
++main = do
++ n <- return $! v
++ flush_stdout -- Ensure that libc output buffer is flushed
++ print n
+diff --git a/testsuite/tests/rts/T5423.stdout b/testsuite/tests/rts/T5423.stdout
+index 478bb27b19..fc92992860 100644
+--- a/testsuite/tests/rts/T5423.stdout
++++ b/testsuite/tests/rts/T5423.stdout
+@@ -1,2 +1,2 @@
+-120
+ 111 112 113 114 115 116 117 118 119 120
++120
+diff --git a/testsuite/tests/rts/T5423_c.c b/testsuite/tests/rts/T5423_c.c
+new file mode 100644
+index 0000000000..efc9c845f5
+--- /dev/null
++++ b/testsuite/tests/rts/T5423_c.c
+@@ -0,0 +1,6 @@
++#include <stdio.h>
++
++void flush_stdout(void)
++{
++ fflush(stdout);
++}
+--
+2.17.1
+
diff --git a/community/ghc/0001-testsuite-Ensure-that-ffi005-output-order-is-predict.patch b/community/ghc/0001-testsuite-Ensure-that-ffi005-output-order-is-predict.patch
new file mode 100644
index 0000000000..ba72fbaf51
--- /dev/null
+++ b/community/ghc/0001-testsuite-Ensure-that-ffi005-output-order-is-predict.patch
@@ -0,0 +1,95 @@
+From e647752e7b99c2fb198b652bc00c531cf31878cf Mon Sep 17 00:00:00 2001
+From: Ben Gamari <ben@smart-cactus.org>
+Date: Tue, 11 Jun 2019 13:09:55 -0400
+Subject: testsuite: Ensure that ffi005 output order is predictable
+
+The libc output buffer wasn't being flushed, making the order
+system-depedent.
+---
+ testsuite/tests/ffi/should_run/all.T | 4 ++--
+ testsuite/tests/ffi/should_run/ffi005.hs | 7 +++++--
+ testsuite/tests/ffi/should_run/ffi005.stdout | 4 ++--
+ testsuite/tests/ffi/should_run/ffi005_c.c | 5 +++++
+ 4 files changed, 14 insertions(+), 6 deletions(-)
+ create mode 100644 testsuite/tests/ffi/should_run/ffi005_c.c
+
+diff --git a/testsuite/tests/ffi/should_run/all.T b/testsuite/tests/ffi/should_run/all.T
+index fa78c56b80..1a85e8ac66 100644
+--- a/testsuite/tests/ffi/should_run/all.T
++++ b/testsuite/tests/ffi/should_run/all.T
+@@ -28,11 +28,11 @@ test('ffi004', skip, compile_and_run, [''])
+ # On x86, the test suffers from floating-point differences due to the
+ # use of 80-bit internal precision when using the native code generator.
+ #
+-test('ffi005', [ omit_ways(prof_ways),
++test('ffi005', [ omit_ways(prof_ways + ['ghci']),
+ when(arch('i386'), skip),
+ when(platform('i386-apple-darwin'), expect_broken(4105)),
+ exit_code(3) ],
+- compile_and_run, [''])
++ compile_and_run, ['ffi005_c.c'])
+
+ test('ffi006', normal, compile_and_run, [''])
+
+diff --git a/testsuite/tests/ffi/should_run/ffi005.hs b/testsuite/tests/ffi/should_run/ffi005.hs
+index 9c17441954..85437a422f 100644
+--- a/testsuite/tests/ffi/should_run/ffi005.hs
++++ b/testsuite/tests/ffi/should_run/ffi005.hs
+@@ -20,10 +20,12 @@ main = do
+ -- putStrLn $ "errno == " ++ show err
+
+ putStrLn "\nTesting puts (and withString)"
+- withCString "Test successful" puts
++ hFlush stdout
++ withCString "Test puts successful" puts
++ flushStdout -- Flush the libc output buffer
+
+ putStrLn "\nTesting peekArray0"
+- s <- withCString "Test successful" (peekArray0 (castCharToCChar '\0'))
++ s <- withCString "Test peekArray0 successful" (peekArray0 (castCharToCChar '\0'))
+ putStr (map castCCharToChar s)
+
+ -- disabled due to use of non-portable constants in arguments to open:
+@@ -71,6 +73,7 @@ withBuffer sz m = do
+ return s
+
+ foreign import ccall puts :: CString -> IO CInt
++foreign import ccall "flush_stdout" flushStdout :: IO ()
+
+ -- foreign import ccall "open" open' :: CString -> CInt -> IO CInt
+ -- foreign import ccall "open" open2' :: CString -> CInt -> CInt -> IO CInt
+diff --git a/testsuite/tests/ffi/should_run/ffi005.stdout b/testsuite/tests/ffi/should_run/ffi005.stdout
+index bc0a137514..bc29221ccf 100644
+--- a/testsuite/tests/ffi/should_run/ffi005.stdout
++++ b/testsuite/tests/ffi/should_run/ffi005.stdout
+@@ -3,9 +3,10 @@ Testing sin==mysin (should return lots of Trues)
+ [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
+
+ Testing puts (and withString)
++Test puts successful
+
+ Testing peekArray0
+-Test successful
++Test peekArray0 successful
+ Testing sin==dynamic_sin (should return lots of Trues)
+ [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
+
+@@ -16,4 +17,3 @@ Testing sin==Id wrapped_sin (should return lots of Trues)
+ [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
+
+ Testing exit
+-Test successful
+diff --git a/testsuite/tests/ffi/should_run/ffi005_c.c b/testsuite/tests/ffi/should_run/ffi005_c.c
+new file mode 100644
+index 0000000000..e5a88e1b4e
+--- /dev/null
++++ b/testsuite/tests/ffi/should_run/ffi005_c.c
+@@ -0,0 +1,5 @@
++#include <stdio.h>
++void flush_stdout(void)
++{
++ fflush(stdout);
++}
+--
+2.17.1
+
diff --git a/community/ghc/0001-testsuite-Fix-T8602-on-musl.patch b/community/ghc/0001-testsuite-Fix-T8602-on-musl.patch
new file mode 100644
index 0000000000..3c0e617b3a
--- /dev/null
+++ b/community/ghc/0001-testsuite-Fix-T8602-on-musl.patch
@@ -0,0 +1,23 @@
+From 81608e82dfed7e78c1bba189f26c8c760f7c196a Mon Sep 17 00:00:00 2001
+From: Ben Gamari <ben@smart-cactus.org>
+Date: Tue, 11 Jun 2019 12:45:24 -0400
+Subject: testsuite: Fix T8602 on musl
+
+Musl wants hash-bangs on all executables.
+---
+ testsuite/tests/driver/T8602/T8602.script | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/testsuite/tests/driver/T8602/T8602.script b/testsuite/tests/driver/T8602/T8602.script
+index 746fb096bf..4729bd4e1e 100644
+--- a/testsuite/tests/driver/T8602/T8602.script
++++ b/testsuite/tests/driver/T8602/T8602.script
+@@ -1,3 +1,4 @@
+-:! echo 'echo $4 $5 $6; exit 1' > t8602.sh
++:! echo '#!/bin/sh' > t8602.sh
++:! echo 'echo $4 $5 $6; exit 1' >> t8602.sh
+ :! chmod +x t8602.sh
+ :load A
+--
+2.17.1
+
diff --git a/community/ghc/0001-testsuite-Skip-broken-tests-on-Alpine.patch b/community/ghc/0001-testsuite-Skip-broken-tests-on-Alpine.patch
new file mode 100644
index 0000000000..143d212d02
--- /dev/null
+++ b/community/ghc/0001-testsuite-Skip-broken-tests-on-Alpine.patch
@@ -0,0 +1,57 @@
+From cdfc30e8583960c76ae5abb53ae14625988437fa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Lef=C3=A8vre?= <rlefevre@dmy.fr>
+Date: Tue, 10 Dec 2019 14:52:35 +0100
+Subject: testsuite: Skip broken tests on Alpine
+
+- encoding004 because Alpine does not have locales
+- T2615 (the linker script does not not seem to be correctly interpreted)
+- T10458
+---
+ libraries/base/tests/IO/all.T | 4 +++-
+ testsuite/tests/ghci/linking/dyn/all.T | 1 +
+ testsuite/tests/rts/all.T | 2 ++
+ 3 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/libraries/base/tests/IO/all.T b/libraries/base/tests/IO/all.T
+index dba0e5e3d7..b220fd8b8f 100644
+--- a/libraries/base/tests/IO/all.T
++++ b/libraries/base/tests/IO/all.T
+@@ -115,7 +115,9 @@ test('encoding001', [], compile_and_run, [''])
+
+ test('encoding002', normal, compile_and_run, [''])
+ test('encoding003', normal, compile_and_run, [''])
+-test('encoding004', extra_files(['encoded-data/']), compile_and_run, [''])
++test('encoding004',
++ [when(platform('x86_64-alpine-linux'), skip),
++ extra_files(['encoded-data/'])], compile_and_run, [''])
+ test('encoding005', normal, compile_and_run, [''])
+
+ test('environment001', [], run_command,
+diff --git a/testsuite/tests/ghci/linking/dyn/all.T b/testsuite/tests/ghci/linking/dyn/all.T
+index f8679bcbfe..7b453a7086 100644
+--- a/testsuite/tests/ghci/linking/dyn/all.T
++++ b/testsuite/tests/ghci/linking/dyn/all.T
+@@ -27,6 +27,7 @@ test('T10955dyn', [extra_files(['A.c', 'B.c'])], run_command,
+ test('T10458',
+ [extra_files(['A.c']),
+ unless(doing_ghci, skip),
++ when(platform('x86_64-alpine-linux'), skip),
+ pre_cmd('$MAKE -s --no-print-directory compile_libT10458'),
+ extra_hc_opts('-L"$PWD/T10458dir" -lAS')],
+ ghci_script, ['T10458.script'])
+diff --git a/testsuite/tests/rts/all.T b/testsuite/tests/rts/all.T
+index a180491f77..8b623e592b 100644
+--- a/testsuite/tests/rts/all.T
++++ b/testsuite/tests/rts/all.T
+@@ -127,6 +127,8 @@ test('T2615',
+ # Solaris' linker does not support GNUish linker scripts
+ when(opsys('solaris2'), skip),
+ pre_cmd('$MAKE -s --no-print-directory T2615-prep'),
++ # Alpine linker does not recognize exec format
++ when(platform('x86_64-alpine-linux'), skip),
+ # Add current directory to dlopen search path
+ cmd_prefix('LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. '),
+ extra_clean(['libfoo_T2615.so', 'libfoo_T2615.o'])],
+--
+2.17.1
+
diff --git a/community/ghc/0001-testsuite-T12600-avoid-broken-pipe-on-Alpine.patch b/community/ghc/0001-testsuite-T12600-avoid-broken-pipe-on-Alpine.patch
new file mode 100644
index 0000000000..390f28e6d0
--- /dev/null
+++ b/community/ghc/0001-testsuite-T12600-avoid-broken-pipe-on-Alpine.patch
@@ -0,0 +1,27 @@
+From e5ebe63368c8b36310da609c625235647eae4340 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Lef=C3=A8vre?= <rlefevre@dmy.fr>
+Date: Tue, 10 Dec 2019 16:51:24 +0100
+Subject: testsuite: T12600 avoid broken pipe on Alpine
+
+Use grep -m 1 instead of | head -n 1 to avoid broken pipe.
+This should be investigated.
+---
+ testsuite/tests/simplCore/should_compile/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/testsuite/tests/simplCore/should_compile/Makefile b/testsuite/tests/simplCore/should_compile/Makefile
+index 5f077b2ebf..b38868bdaf 100644
+--- a/testsuite/tests/simplCore/should_compile/Makefile
++++ b/testsuite/tests/simplCore/should_compile/Makefile
+@@ -238,7 +238,7 @@ T11272:
+ # We expect to see a $wfoo worker that doesn't take any dictionaries.
+ .PHONY: T12600
+ T12600:
+- '$(TEST_HC)' $(TEST_HC_OPTS) -c -O -ddump-prep -dsuppress-all -dsuppress-uniques -dno-suppress-type-signatures -dppr-cols=200 T12600.hs | grep "wfoo" | head -n 1
++ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O -ddump-prep -dsuppress-all -dsuppress-uniques -dno-suppress-type-signatures -dppr-cols=200 T12600.hs | grep -m 1 "wfoo"
+
+ # We don't expect to case match on any literal numbers other than
+ # 0 or 1. See T14140.hs for an explanation.
+--
+2.17.1
+
diff --git a/community/ghc/0001-testsuite-unset-MAKEFLAGS-when-calling-python.patch b/community/ghc/0001-testsuite-unset-MAKEFLAGS-when-calling-python.patch
new file mode 100644
index 0000000000..f49f252125
--- /dev/null
+++ b/community/ghc/0001-testsuite-unset-MAKEFLAGS-when-calling-python.patch
@@ -0,0 +1,26 @@
+From ee0f12d6b0f58865353fbef51b212390bcd2be91 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Lef=C3=A8vre?= <rlefevre@dmy.fr>
+Date: Tue, 10 Dec 2019 00:54:38 +0100
+Subject: testsuite: unset MAKEFLAGS when calling python
+
+This is not recommended but +PYTHON does not seem to work on Alpine.
+---
+ testsuite/mk/test.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/testsuite/mk/test.mk b/testsuite/mk/test.mk
+index 87d22b330b..5fe9adb70d 100644
+--- a/testsuite/mk/test.mk
++++ b/testsuite/mk/test.mk
+@@ -326,7 +326,7 @@ $(TIMEOUT_PROGRAM) :
+ # communicate with the topmake.
+ # See Note [Communicating options and variables to a submake]
+ test: $(TIMEOUT_PROGRAM)
+- +PYTHON="$(PYTHON)" "$(PYTHON)" $(RUNTESTS) $(RUNTEST_OPTS) \
++ MAKEFLAGS= PYTHON="$(PYTHON)" "$(PYTHON)" $(RUNTESTS) $(RUNTEST_OPTS) \
+ $(patsubst %, --only=%, $(TEST)) \
+ $(patsubst %, --only=%, $(TESTS)) \
+ $(patsubst %, --way=%, $(WAY)) \
+--
+2.17.1
+
diff --git a/community/ghc/0002-testsuite-Increase-tolerance-for-failed-stat-tests-o.patch b/community/ghc/0002-testsuite-Increase-tolerance-for-failed-stat-tests-o.patch
new file mode 100644
index 0000000000..7238b3bc39
--- /dev/null
+++ b/community/ghc/0002-testsuite-Increase-tolerance-for-failed-stat-tests-o.patch
@@ -0,0 +1,47 @@
+From 296269a1c33b13bba462440b6e10f8b48ec117d2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Lef=C3=A8vre?= <rlefevre@dmy.fr>
+Date: Tue, 10 Dec 2019 15:48:53 +0100
+Subject: testsuite: Increase tolerance for failed stat tests on Alpine
+
+---
+ testsuite/tests/perf/compiler/all.T | 2 ++
+ testsuite/tests/perf/space_leaks/all.T | 3 ++-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/testsuite/tests/perf/compiler/all.T b/testsuite/tests/perf/compiler/all.T
+index dfb8613d98..f281abe950 100644
+--- a/testsuite/tests/perf/compiler/all.T
++++ b/testsuite/tests/perf/compiler/all.T
+@@ -1281,6 +1281,8 @@ test ('T9630',
+ [ compiler_stats_num_field('max_bytes_used', # Note [residency]
+ [(platform('x86_64-unknown-mingw32'), 39867088, 15),
+ # 2017-12-24: 34171816 (x64/Windows)
++ (platform('x86_64-alpine-linux'), 35324712, 25),
++ # 2019-12-10 43119024 on Alpine at +22%, should likely be investigated
+ (wordsize(64), 35324712, 15)
+ # initial: 56955240
+ # 2017-06-07: 41568168 Stop the specialiser generating loopy code
+diff --git a/testsuite/tests/perf/space_leaks/all.T b/testsuite/tests/perf/space_leaks/all.T
+index a23796d532..4e4bae337b 100644
+--- a/testsuite/tests/perf/space_leaks/all.T
++++ b/testsuite/tests/perf/space_leaks/all.T
+@@ -72,7 +72,7 @@ test('T4029',
+ # 2017-03-03: 65 (amd64/Linux) Share Typeable KindReps or more
+ # lazy interface file reading
+ stats_num_field('max_bytes_used',
+- [(wordsize(64), 18208944, 15)]),
++ [(wordsize(64), 18208944, 20)]),
+ # 2016-02-26: 24071720 (amd64/Linux) INITIAL
+ # 2016-04-21: 25542832 (amd64/Linux)
+ # 2016-05-23: 25247216 (amd64/Linux) Use -G1
+@@ -90,6 +90,7 @@ test('T4029',
+ # 2017-03-07: 20476360 (amd64/Linux) It's not entirely clear
+ # 2017-03-14: 18208944 (amd64/Darwin) Again, not clear
+ # 2017-03-15: bumped margin to 15% due to instability
++ # 2019-12-10: bumped margin to 20% due to instability on Alpine
+ extra_hc_opts('+RTS -G1 -RTS' ),
+ ],
+ ghci_script,
+--
+2.17.1
+
diff --git a/community/ghc/APKBUILD b/community/ghc/APKBUILD
index fcb67d0e3d..e7beb07679 100644
--- a/community/ghc/APKBUILD
+++ b/community/ghc/APKBUILD
@@ -2,7 +2,7 @@
pkgname=ghc
pkgver=8.6.5
_llvmver=9
-pkgrel=2
+pkgrel=3
# Normal non rc candidate
_urlprefix="$pkgver"
_pkgprefix="$pkgname-$pkgver"
@@ -27,7 +27,7 @@ depends="gmp-dev perl gcc>=6.2.1 llvm$_llvmver libffi-dev"
# ghc is self-hosted, so we need ghc to build ghc. ghc-bootstrap is provided by
# this aport (see below).
makedepends_build="$pkgname-bootstrap
- autoconf cpio binutils binutils-gold paxmark libffi-dev ncurses-dev xz coreutils"
+ autoconf cpio binutils binutils-gold paxmark libffi-dev ncurses-dev xz coreutils grep"
makedepends_host="linux-headers musl-dev zlib-dev gmp-dev binutils-dev libffi-dev ncurses-dev cpio" # need GNU cpio
makedepends="$makedepends_build $makedepends_host"
checkdepends="python3"
@@ -42,6 +42,14 @@ source="https://downloads.haskell.org/~ghc/$_urlprefix/$_pkgprefix-src.tar.xz
https://downloads.haskell.org/~ghc/$_urlprefix/$_pkgprefix-testsuite.tar.xz
0005-buildpath-abi-stability.patch
fix-testsuite.patch
+ 0001-testsuite-unset-MAKEFLAGS-when-calling-python.patch
+ 0001-testsuite-Fix-T8602-on-musl.patch
+ 0001-testsuite-Add-Alpine-Linux-x64-stat-too-good-allocat.patch
+ 0001-testsuite-Ensure-that-ffi005-output-order-is-predict.patch
+ 0001-testsuite-Ensure-T5423-flushes-C-output-buffer.patch
+ 0001-testsuite-Skip-broken-tests-on-Alpine.patch
+ 0002-testsuite-Increase-tolerance-for-failed-stat-tests-o.patch
+ 0001-testsuite-T12600-avoid-broken-pipe-on-Alpine.patch
"
# We only need the bootstrap patch when bootstrapping a new arches ghc.
@@ -188,4 +196,12 @@ dev() {
sha512sums="c08a7480200cb99e1ffbe4ce7669f552b1054054966f7e7efcbc5f98af8032e1249fa391c4fc4c7d62cc8e0be5d17fa05845177f3cea3dbcf86e6c92d40fc0f9 ghc-8.6.5-src.tar.xz
980f3934bb18876cc80b80a0eb64a9ca1dfaa7f4d8b0761f5d733a6583053e38b231445388b992b26ec1ad5f569b6385dbe60f96381794f5577964979c253e16 ghc-8.6.5-testsuite.tar.xz
e1c2cef06d307eda4b35521204e95eb54ace5dbcd22de659e95356f884b4424d6304365e4ab45c5116192cba4c095e2e91114bc7cb73d7c7173a7035287d0854 0005-buildpath-abi-stability.patch
-6be1706f430883ff71bcbf18c2d17add6f54b6c4eaf902f519bb7c553acc8922f7eb718eda0a5ec8a108c91eb66da1471b45c4a03b71f2019b6dc16b27c3b8bb fix-testsuite.patch"
+6be1706f430883ff71bcbf18c2d17add6f54b6c4eaf902f519bb7c553acc8922f7eb718eda0a5ec8a108c91eb66da1471b45c4a03b71f2019b6dc16b27c3b8bb fix-testsuite.patch
+ac2ad793b4d33ea890e236820af4cd10996b47d0f4249c825b31450145cb8195c2be62f2d7942cc3bf564f768dca187379196b251f4b37ed326ed2a0a5f59e8a 0001-testsuite-unset-MAKEFLAGS-when-calling-python.patch
+3e955b3e025e7dc6521c8545107c747506cdf40aef55210cbc0b0a7adc8a1ac1b5206f2766dd13dbb114c7fb943e439864774422928f7a4ad10484a5e80ac09c 0001-testsuite-Fix-T8602-on-musl.patch
+226b15077c5fb44af8e9076236982c494e18bdc9425c6dd3d9b16d4d72062ce567144479ee8c4b052b9b931af6ae304f6918705e1b66ac9bf699df61ffce4ada 0001-testsuite-Add-Alpine-Linux-x64-stat-too-good-allocat.patch
+cc552b3d01b8d1a31d7a609dc5c82dc7d602a14f427a2594abfdd5c1d6e92d6cf47aafd9cc46e84e2c678e040039b98c673f3dc88efa809f221e75110850f60a 0001-testsuite-Ensure-that-ffi005-output-order-is-predict.patch
+6be53550fee8e59b63355a1f4ce6ef0a5fdc545008a7808a50cb1d0c1b5219e4b2c215f21ae0e2f953486e88dc7c5f1d193b01190553405e620fa3ac9dd31a61 0001-testsuite-Ensure-T5423-flushes-C-output-buffer.patch
+328433df26351acfe67c61c14a365d6b942c7d9d51bfbe099e9f6e26f147a78f3ce5be350df2e896bd179c27b80e0b2a98e0fb8a7590920edca866ed7dc22a39 0001-testsuite-Skip-broken-tests-on-Alpine.patch
+23934d13e5d9daf33338105e525d8daee0b0c1a5614f2042690c26efd46a0ab672041d80658bf06e7fcdb97255c471950af708d5bf8c96dbe9571eed0bef60c5 0002-testsuite-Increase-tolerance-for-failed-stat-tests-o.patch
+b71bb7945c6cae3ea324ff1de9576b883f0e63169fbe50d781acc0f4fb694387c43bf7aa1bd1cca236613ff202dd503c4577dc06368614752affdc54a5c62101 0001-testsuite-T12600-avoid-broken-pipe-on-Alpine.patch"