From 6efd03556a1fc5af751a282405139907cd9b6ffa3a387b42ea4f4fde789b742a Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Sun, 30 Sep 2018 19:16:27 +0000 Subject: [PATCH] Accepting request 639253 from home:ptrommler:branches:ghc-s390x - Add fix-build-using-unregisterized-v8.2.patch * Fix build on s390x OBS-URL: https://build.opensuse.org/request/show/639253 OBS-URL: https://build.opensuse.org/package/show/devel:languages:haskell/ghc?expand=0&rev=277 --- fix-build-using-unregisterized-v8.2.patch | 51 +++++++++++++++++++++++ ghc.changes | 6 +++ ghc.spec | 3 ++ 3 files changed, 60 insertions(+) create mode 100644 fix-build-using-unregisterized-v8.2.patch diff --git a/fix-build-using-unregisterized-v8.2.patch b/fix-build-using-unregisterized-v8.2.patch new file mode 100644 index 0000000..ec7602e --- /dev/null +++ b/fix-build-using-unregisterized-v8.2.patch @@ -0,0 +1,51 @@ +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 +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 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/ghc.changes b/ghc.changes index 81b67b6..490013f 100644 --- a/ghc.changes +++ b/ghc.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Sun Sep 30 11:21:59 UTC 2018 - ptrommler@icloud.com + +- Add fix-build-using-unregisterized-v8.2.patch + * Fix build on s390x + ------------------------------------------------------------------- Thu Sep 6 15:19:54 UTC 2018 - mmanu84@outlook.de diff --git a/ghc.spec b/ghc.spec index 74ff3f5..c1e5784 100644 --- a/ghc.spec +++ b/ghc.spec @@ -84,6 +84,8 @@ Source1: ghc-rpmlintrc Patch0: add_armv6l_and_armv7l_target.patch # PATCH-FIX-UPSTREAM fix-ppc64le-recognition.patch ptrommler@icloud.com -- Recognize powerpc64le as PPC64 in cabal files. Patch1: fix-ppc64le-recognition.patch +# PATCH-FIX-OPENSUSE fix-build-using-unregisterized-v8.2.patch ptrommler@icloud.com -- Fix bootstrap with GHC older than 8.4. Can be dropped once we bootstrap with 8.4.3. Debian patch. +Patch2: fix-build-using-unregisterized-v8.2.patch # PATCH-FIX-UPSTREAM ghc-pie.patch - set linux as default PIE platform Patch35: ghc-pie.patch # PATCH-FIX-OPENSUSE ghc-8.0.2-Cabal-dynlibdir.patch -- Fix shared library directory location. @@ -195,6 +197,7 @@ except the ghc library, which is installed by the toplevel ghc metapackage. %setup -q %patch0 -p1 %patch1 -p1 +%patch2 -p1 %patch35 -p1 %patch100 -p1 %patch110 -p1