summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/patches
diff options
context:
space:
mode:
authorJoachim Breitner <mail@joachim-breitner.de>2019-03-16 10:38:12 +0100
committerJoachim Breitner <mail@joachim-breitner.de>2019-03-16 11:32:39 +0100
commitc1eeb8f3abe92e41e5d3bc0a584dcb1c924c4a57 (patch)
treead99a840aa797986a50a1d3649feaea25e27c11a /pkgs/development/haskell-modules/patches
parent3aecf21239d105aadad229595348a0da4bcdbcd8 (diff)
downloadnixpkgs-c1eeb8f3abe92e41e5d3bc0a584dcb1c924c4a57.tar
nixpkgs-c1eeb8f3abe92e41e5d3bc0a584dcb1c924c4a57.tar.gz
nixpkgs-c1eeb8f3abe92e41e5d3bc0a584dcb1c924c4a57.tar.bz2
nixpkgs-c1eeb8f3abe92e41e5d3bc0a584dcb1c924c4a57.tar.lz
nixpkgs-c1eeb8f3abe92e41e5d3bc0a584dcb1c924c4a57.tar.xz
nixpkgs-c1eeb8f3abe92e41e5d3bc0a584dcb1c924c4a57.tar.zst
nixpkgs-c1eeb8f3abe92e41e5d3bc0a584dcb1c924c4a57.zip
Import cross-compilation patch for clock
taken form https://github.com/input-output-hk/iohk-nix/blob/master/patches/clock-0.7.2.patch
Diffstat (limited to 'pkgs/development/haskell-modules/patches')
-rw-r--r--pkgs/development/haskell-modules/patches/clock-0.7.2.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/pkgs/development/haskell-modules/patches/clock-0.7.2.patch b/pkgs/development/haskell-modules/patches/clock-0.7.2.patch
new file mode 100644
index 00000000000..8354c7fa589
--- /dev/null
+++ b/pkgs/development/haskell-modules/patches/clock-0.7.2.patch
@@ -0,0 +1,59 @@
+diff --git a/System/Clock.hsc b/System/Clock.hsc
+index 297607b..c21196b 100644
+--- a/System/Clock.hsc
++++ b/System/Clock.hsc
+@@ -41,7 +41,9 @@ import GHC.Generics (Generic)
+ #  endif
+ #endif
+
+-#let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)
++#if __GLASGOW_HASKELL__ < 800
++#  let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)
++#endif
+
+ -- | Clock types. A clock may be system-wide (that is, visible to all processes)
+ --   or per-process (measuring time that is meaningful only within a process).
+diff --git a/cbits/hs_clock_win32.c b/cbits/hs_clock_win32.c
+index 5dcc2a9..ebdb7fe 100644
+--- a/cbits/hs_clock_win32.c
++++ b/cbits/hs_clock_win32.c
+@@ -28,12 +28,22 @@ static void to_timespec_from_100ns(ULONGLONG t_100ns, long long *t)
+     t[1] = 100*(long)(t_100ns % 10000000UL);
+ }
+
++/* See https://ghc.haskell.org/trac/ghc/ticket/15094 */
++#if defined(_WIN32) && !defined(_WIN64)
++__attribute__((optimize("-fno-expensive-optimizations")))
++#endif
+ void hs_clock_win32_gettime_monotonic(long long* t)
+ {
+    LARGE_INTEGER time;
+-   LARGE_INTEGER frequency;
++   static LARGE_INTEGER frequency;
++   static int hasFreq = 0;
++
+    QueryPerformanceCounter(&time);
+-   QueryPerformanceFrequency(&frequency);
++   if (!hasFreq)
++   {
++      hasFreq = 1;
++      QueryPerformanceFrequency(&frequency);
++   }
+    // seconds
+    t[0] = time.QuadPart / frequency.QuadPart;
+    // nanos =
+diff --git a/clock.cabal b/clock.cabal
+index 0f2d18a..67d232e 100644
+--- a/clock.cabal
++++ b/clock.cabal
+@@ -41,8 +41,8 @@ description:   A package for convenient access to high-resolution clock and
+ copyright:     Copyright © Cetin Sert 2009-2016, Eugene Kirpichov 2010, Finn Espen Gundersen 2013, Gerolf Seitz 2013, Mathieu Boespflug 2014 2015, Chris Done 2015, Dimitri Sabadie 2015, Christian Burger 2015, Mario Longobardi 2016
+ license:       BSD3
+ license-file:  LICENSE
+-author:        Cetin Sert <cetin@corsis.eu>, Corsis Research
+-maintainer:    Cetin Sert <cetin@corsis.eu>, Corsis Research
++author:        Cetin Sert <cetin@corsis.tech>, Corsis Research
++maintainer:    Cetin Sert <cetin@corsis.tech>, Corsis Research
+ homepage:      https://github.com/corsis/clock
+ bug-reports:   https://github.com/corsis/clock/issues
+ category:      System