From 328d9747558c7f81246ffa5b0eb29370879e90af Mon Sep 17 00:00:00 2001 From: Jens Petersen Date: Wed, 6 Jun 2012 16:35:12 +0900 Subject: [PATCH] add fix-bang-pattern.diff patch from Debian to fix build on ppc --- alex-ghc74-fix-bang-pattern.patch | 53 +++++++++++++++++++++++++++++++ alex.spec | 9 +++++- 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 alex-ghc74-fix-bang-pattern.patch diff --git a/alex-ghc74-fix-bang-pattern.patch b/alex-ghc74-fix-bang-pattern.patch new file mode 100644 index 0000000..cbc5fe4 --- /dev/null +++ b/alex-ghc74-fix-bang-pattern.patch @@ -0,0 +1,53 @@ +# Author : Erik de Castro Lopo +# Description : Fix generated haskell code so it doesn't fail with -Werror. +# Debian Version : 2.3.5 +# Date : Sun, 17 Apr 2011 15:45:41 +1000 + +--- a/templates/GenericTemplate.hs ++++ b/templates/GenericTemplate.hs +@@ -9,7 +9,7 @@ + + #ifdef ALEX_GHC + #define ILIT(n) n# +-#define FAST_INT_BINDING(n) (n) ++#define FAST_INT_BINDING(n) (!(n)) + #define IBOX(n) (I# (n)) + #define FAST_INT Int# + #define LT(n,m) (n <# m) +@@ -57,10 +57,10 @@ + ALEX_IF_BIGENDIAN + narrow16Int# i + where +- i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low) +- high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#))) +- low = int2Word# (ord# (indexCharOffAddr# arr off')) +- off' = off *# 2# ++ !i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low) ++ !high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#))) ++ !low = int2Word# (ord# (indexCharOffAddr# arr off')) ++ !off' = off *# 2# + ALEX_ELSE + indexInt16OffAddr# arr off + ALEX_ENDIF +--- a/src/Scan.x ++++ b/src/Scan.x +@@ -11,7 +11,7 @@ + ------------------------------------------------------------------------------- + + { +-{-# OPTIONS_GHC -w #-} ++{-# OPTIONS_GHC -w -XBangPatterns #-} + + module Scan(lexer, AlexPosn(..), Token(..), Tkn(..), tokPosn) where + +--- a/src/Main.hs ++++ b/src/Main.hs +@@ -203,7 +203,7 @@ + hPutStrLn hdl code + + optsToInject :: Target -> [CLIFlags] -> String +-optsToInject GhcTarget _ = "{-# LANGUAGE CPP,MagicHash #-}\n" ++optsToInject GhcTarget _ = "{-# LANGUAGE CPP,MagicHash,BangPatterns #-}\n" + optsToInject _ _ = "{-# LANGUAGE CPP #-}\n" + + importsToInject :: Target -> [CLIFlags] -> String diff --git a/alex.spec b/alex.spec index 9607b7a..44bdc09 100644 --- a/alex.spec +++ b/alex.spec @@ -1,7 +1,7 @@ Name: alex # part of haskell-platform Version: 3.0.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A lexer generator for Haskell Group: Development/Tools @@ -13,6 +13,7 @@ BuildRequires: ghc-Cabal-devel BuildRequires: ghc-rpm-macros BuildRequires: autoconf docbook-style-xsl libxslt BuildRequires: ghc-QuickCheck-devel +Patch1: alex-ghc74-fix-bang-pattern.patch %description Alex is a tool for generating lexical analysers in Haskell, given a @@ -22,6 +23,9 @@ expressions. It is similar to the tool lex or flex for C/C++. %prep %setup -q +%ifarch ppc +%patch1 -p1 -b .orig +%endif %build @@ -45,6 +49,9 @@ cd .. %changelog +* Wed Jun 6 2012 Jens Petersen - 3.0.1-2 +- add fix-bang-pattern.diff patch from Debian to fix build on ppc + * Tue Mar 20 2012 Jens Petersen - 3.0.1-1 - update to 3.0.1 - depends on QuickCheck