diff options
Diffstat (limited to 'community/ghc/fix-testsuite.patch')
-rw-r--r-- | community/ghc/fix-testsuite.patch | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/community/ghc/fix-testsuite.patch b/community/ghc/fix-testsuite.patch new file mode 100644 index 0000000000..2d14d19d9d --- /dev/null +++ b/community/ghc/fix-testsuite.patch @@ -0,0 +1,129 @@ +From 43fd712b4f679fe00d6d75c8bc088357052a0365 Mon Sep 17 00:00:00 2001 +From: Ben Gamari <ben@smart-cactus.org> +Date: Tue, 11 Jun 2019 09:54:55 -0400 +Subject: [PATCH] testsuite: A more portable solution to #9399 + +Previously we used an awful hybrid batch script/Bourne shell script to +allow this test to run both on Windows and Linux (fixing #9399). +However, this breaks on some libc implementations (e.g. musl). Fix this. + +Fixes #16798. +--- + libraries/base/tests/all.T | 28 ++++++++++++++++++------- + libraries/base/tests/enum01.hs | 4 ---- + libraries/base/tests/enum02.hs | 4 ---- + libraries/base/tests/enum03.hs | 4 ---- + libraries/base/tests/enum_processor.bat | 6 ------ + libraries/base/tests/enum_processor.py | 2 ++ + 6 files changed, 23 insertions(+), 25 deletions(-) + mode change 100644 => 100755 libraries/base/tests/enum_processor.py + +diff --git a/libraries/base/tests/all.T b/libraries/base/tests/all.T +index e64ca40006..33e9e196a8 100644 +--- a/libraries/base/tests/all.T ++++ b/libraries/base/tests/all.T +@@ -94,13 +94,27 @@ test('dynamic004', omit_ways(['normal', 'threaded1', 'ghci']), compile_and_ + test('dynamic005', normal, compile_and_run, ['']) + + enum_setups = [when(fast(), skip)] +-test('enum01', [extra_files(['enum_processor.bat', 'enum_processor.py']), +- enum_setups], compile_and_run, ['']) +-test('enum02', [extra_files(['enum_processor.bat', 'enum_processor.py']), +- enum_setups], compile_and_run, ['']) +-test('enum03', [extra_files(['enum_processor.bat', 'enum_processor.py']), +- enum_setups], compile_and_run, ['']) +-test('enum04', normal, compile_and_run, ['']) ++def enum_test(name): ++ """ ++ These tests have a funky Python preprocessor which require some headstands ++ to run on Windows. ++ """ ++ if opsys('mingw32'): ++ test(name, ++ [when(opsys('mingw32'), extra_files(['enum_processor.bat'])), ++ extra_files(['enum_processor.py'])], ++ compile_and_run, ++ ['-F -pgmF ./enum_processor.bat']) ++ else: ++ test(name, ++ [extra_files(['enum_processor.py'])], ++ compile_and_run, ++ ['-F -pgmF ./enum_processor.py']) ++ ++enum_test('enum01') ++enum_test('enum02') ++enum_test('enum03') ++test('enum04', normal, compile_and_run, ['']) + + test('exceptionsrun001', normal, compile_and_run, ['']) + test('exceptionsrun002', normal, compile_and_run, ['']) +diff --git a/libraries/base/tests/enum01.hs b/libraries/base/tests/enum01.hs +index 5aea7dea4d..4dfc29978c 100644 +--- a/libraries/base/tests/enum01.hs ++++ b/libraries/base/tests/enum01.hs +@@ -1,8 +1,4 @@ + -- !!! Testing the Prelude's Enum instances. +-{-# OPTIONS_GHC -F -pgmF ./enum_processor.bat #-} +--- The processor is a non-CPP-based equivalent of +--- #define printTest(x) (do{ putStr ( " " ++ "x" ++ " = " ) ; print (x) }) +--- which is not portable to clang + + module Main(main) where + +diff --git a/libraries/base/tests/enum02.hs b/libraries/base/tests/enum02.hs +index 2d06f95f90..3741880f57 100644 +--- a/libraries/base/tests/enum02.hs ++++ b/libraries/base/tests/enum02.hs +@@ -1,8 +1,4 @@ + -- !!! Testing the Int Enum instances. +-{-# OPTIONS_GHC -F -pgmF ./enum_processor.bat #-} +--- The processor is a non-CPP-based equivalent of +--- #define printTest(x) (do{ putStr ( " " ++ "x" ++ " = " ) ; print (x) }) +--- which is not portable to clang + + module Main(main) where + +diff --git a/libraries/base/tests/enum03.hs b/libraries/base/tests/enum03.hs +index 28d02d1c13..a701df4501 100644 +--- a/libraries/base/tests/enum03.hs ++++ b/libraries/base/tests/enum03.hs +@@ -1,8 +1,4 @@ + -- !!! Testing the Word Enum instances. +-{-# OPTIONS_GHC -F -pgmF ./enum_processor.bat #-} +--- The processor is a non-CPP-based equivalent of +--- #define printTest(x) (do{ putStr ( " " ++ "x" ++ " = " ) ; print (x) }) +--- which is not portable to clang + + module Main(main) where + +diff --git a/libraries/base/tests/enum_processor.bat b/libraries/base/tests/enum_processor.bat +index 2b13a7db07..6f9eb0fd29 100755 +--- a/libraries/base/tests/enum_processor.bat ++++ b/libraries/base/tests/enum_processor.bat +@@ -1,11 +1,5 @@ + :;# Problem: GHC on Windows doesn't like '-pgmF ./enum_processor.py'. + :;# See ticket:365#comment:7 for details. + :;# +-:;# Workaround: this file, which functions both as a Windows .bat script and a +-:;# Unix shell script. Hacky, but it seems to work. + +-:;# Starts with a ':', to skip on Windows. +-:; "${PYTHON}" enum_processor.py $@; exit $? +- +-:;# Windows only: + %PYTHON% enum_processor.py %* +diff --git a/libraries/base/tests/enum_processor.py b/libraries/base/tests/enum_processor.py +old mode 100644 +new mode 100755 +index 15243f11ff..b4ca3e9797 +--- a/libraries/base/tests/enum_processor.py ++++ b/libraries/base/tests/enum_processor.py +@@ -1,3 +1,5 @@ ++#!/usr/bin/env python3 ++ + # The rough equivalent of the traditional CPP: + # #define printTest(x) (do{ putStr ( " " ++ "x" ++ " = " ) ; print (x) }) + # which is not portable to clang. +-- +2.22.0 + |