Merge pull request #57748 from nomeata/haskell-clock-patch
Import cross-compilation patch for clock
This commit is contained in:
commit
a61b989900
|
@ -48,7 +48,6 @@ self: super: {
|
|||
|
||||
# Break infinite recursions.
|
||||
attoparsec-varword = super.attoparsec-varword.override { bytestring-builder-varword = dontCheck self.bytestring-builder-varword; };
|
||||
clock = dontCheck super.clock;
|
||||
Dust-crypto = dontCheck super.Dust-crypto;
|
||||
hasql-postgres = dontCheck super.hasql-postgres;
|
||||
hspec-core = super.hspec-core.override { silently = dontCheck self.silently; temporary = dontCheck self.temporary; };
|
||||
|
@ -1044,6 +1043,8 @@ 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;
|
||||
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue