diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix index 6ac2ccf45c18..2a7bb1a42ae2 100644 --- a/pkgs/development/haskell-modules/configuration-common.nix +++ b/pkgs/development/haskell-modules/configuration-common.nix @@ -1035,8 +1035,6 @@ self: super: { # https://github.com/dmwit/encoding/pull/3 encoding = appendPatch super.encoding ./patches/encoding-Cabal-2.0.patch; - clock = dontCheck (appendPatch super.clock ./patches/clock-0.7.2.patch); - # Work around overspecified constraint on github ==0.18. github-backup = doJailbreak super.github-backup; diff --git a/pkgs/development/haskell-modules/patches/clock-0.7.2.patch b/pkgs/development/haskell-modules/patches/clock-0.7.2.patch deleted file mode 100644 index 8354c7fa5890..000000000000 --- a/pkgs/development/haskell-modules/patches/clock-0.7.2.patch +++ /dev/null @@ -1,59 +0,0 @@ -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 , Corsis Research --maintainer: Cetin Sert , Corsis Research -+author: Cetin Sert , Corsis Research -+maintainer: Cetin Sert , Corsis Research - homepage: https://github.com/corsis/clock - bug-reports: https://github.com/corsis/clock/issues - category: System