Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ghc-clock for openSUSE:Factory checked in at 2021-02-16 22:37:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc-clock (Old) and /work/SRC/openSUSE:Factory/.ghc-clock.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-clock" Tue Feb 16 22:37:11 2021 rev:15 rq:870450 version:0.8.2 Changes: -------- --- /work/SRC/openSUSE:Factory/ghc-clock/ghc-clock.changes 2020-12-22 11:37:29.173380951 +0100 +++ /work/SRC/openSUSE:Factory/.ghc-clock.new.28504/ghc-clock.changes 2021-02-16 22:45:24.962340149 +0100 @@ -1,0 +2,6 @@ +Sun Jan 24 16:08:21 UTC 2021 - [email protected] + +- Update clock to version 0.8.2. + Upstream does not provide a change log file. + +------------------------------------------------------------------- Old: ---- clock-0.8.tar.gz New: ---- clock-0.8.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc-clock.spec ++++++ --- /var/tmp/diff_new_pack.RAGhNn/_old 2021-02-16 22:45:25.670341080 +0100 +++ /var/tmp/diff_new_pack.RAGhNn/_new 2021-02-16 22:45:25.674341085 +0100 @@ -1,7 +1,7 @@ # # spec file for package ghc-clock # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %global pkg_name clock %bcond_with tests Name: ghc-%{pkg_name} -Version: 0.8 +Version: 0.8.2 Release: 0 Summary: High-resolution clock functions: monotonic, realtime, cputime License: BSD-3-Clause @@ -73,6 +73,9 @@ Refreshment release in 2019-04 after numerous contributions. +Refactoring for Windows, Mac implementation consistence by Alexander Vershilov +on 2021-01-16. + [Version Scheme] Major-'/R/'-ewrite . New-'/F/'-unctionality . '/I/'-mprovementAndBugFixes . '/P/'-ackagingOnly ++++++ clock-0.8.tar.gz -> clock-0.8.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clock-0.8/System/Clock.hsc new/clock-0.8.2/System/Clock.hsc --- old/clock-0.8/System/Clock.hsc 2019-04-26 15:37:49.000000000 +0200 +++ new/clock-0.8.2/System/Clock.hsc 2001-09-09 03:46:40.000000000 +0200 @@ -23,6 +23,7 @@ import Data.Int import Data.Word import Data.Typeable (Typeable) +import Foreign.C import Foreign.Ptr import Foreign.Storable import Foreign.Marshal.Alloc @@ -30,12 +31,8 @@ #if defined(_WIN32) # include "hs_clock_win32.c" -#elif defined(__MACH__) && defined(__APPLE__) -# include "hs_clock_darwin.c" #else # include <time.h> --- Due to missing define in FreeBSD 9.0 and 9.1 --- (http://lists.freebsd.org/pipermail/freebsd-stable/2013-September/075095.html). # ifndef CLOCK_PROCESS_CPUTIME_ID # define CLOCK_PROCESS_CPUTIME_ID 15 # endif @@ -47,8 +44,7 @@ -- | 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). --- All implementations shall support CLOCK_REALTIME. (The only suspend-aware --- monotonic is CLOCK_BOOTTIME on Linux.) +-- All implementations shall support 'Realtime'. data Clock -- | The identifier for the system-wide monotonic clock, which is defined as @@ -62,11 +58,14 @@ -- monotonic clock is meaningless (because its origin is arbitrary), and -- thus there is no need to set it. Furthermore, realtime applications can -- rely on the fact that the value of this clock is never set. + -- (Identical to 'Boottime' since Linux 4.17, see https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d6ed449afdb38f89a7b38ec50e367559e1b8f71f) + -- @CLOCK_MONOTONIC@ (macOS - @SYSTEM_CLOCK@) = Monotonic -- | The identifier of the system-wide clock measuring real time. For this -- clock, the value returned by 'getTime' represents the amount of time (in -- seconds and nanoseconds) since the Epoch. + -- @CLOCK_REALTIME@ (macOS - @CALENDAR_CLOCK@, Windows - @GetSystemTimeAsFileTime@) | Realtime -- | The identifier of the CPU-time clock associated with the calling @@ -80,72 +79,66 @@ | ThreadCPUTime #if defined (CLOCK_MONOTONIC_RAW) - -- | (since Linux 2.6.28; Linux-specific) - -- Similar to CLOCK_MONOTONIC, but provides access to a + -- | (since Linux 2.6.28, macOS 10.12) + -- Similar to 'Monotonic', but provides access to a -- raw hardware-based time that is not subject to NTP -- adjustments or the incremental adjustments performed by -- adjtime(3). + -- @CLOCK_MONOTONIC_RAW@ (Windows - @QueryPerformanceCounter@, @QueryPerformanceFrequency@) | MonotonicRaw #endif #if defined (CLOCK_BOOTTIME) -- | (since Linux 2.6.39; Linux-specific) - -- Identical to CLOCK_MONOTONIC, except it also includes - -- any time that the system is suspended. This allows + -- Identical to `Monotonic`, except it also includes + -- any time that the system is suspended. This allows -- applications to get a suspend-aware monotonic clock - -- without having to deal with the complications of - -- CLOCK_REALTIME, which may have discontinuities if the - -- time is changed using settimeofday(2). + -- without having to deal with the complications of 'Realtime', + -- which may have discontinuities if the time is changed + -- using settimeofday(2). + -- (since Linux 4.17; identical to 'Monotonic') + -- @CLOCK_BOOTTIME@ | Boottime #endif #if defined (CLOCK_MONOTONIC_COARSE) -- | (since Linux 2.6.32; Linux-specific) - -- A faster but less precise version of CLOCK_MONOTONIC. + -- A faster but less precise version of 'Monotonic'. -- Use when you need very fast, but not fine-grained timestamps. + -- @CLOCK_MONOTONIC_COARSE@ | MonotonicCoarse #endif #if defined (CLOCK_REALTIME_COARSE) -- | (since Linux 2.6.32; Linux-specific) - -- A faster but less precise version of CLOCK_REALTIME. + -- A faster but less precise version of 'Realtime'. -- Use when you need very fast, but not fine-grained timestamps. + -- @CLOCK_REALTIME_COARSE@ | RealtimeCoarse #endif deriving (Eq, Enum, Generic, Read, Show, Typeable) #if defined(_WIN32) -foreign import ccall hs_clock_win32_gettime_monotonic :: Ptr TimeSpec -> IO () -foreign import ccall hs_clock_win32_gettime_realtime :: Ptr TimeSpec -> IO () -foreign import ccall hs_clock_win32_gettime_processtime :: Ptr TimeSpec -> IO () -foreign import ccall hs_clock_win32_gettime_threadtime :: Ptr TimeSpec -> IO () -foreign import ccall hs_clock_win32_getres_monotonic :: Ptr TimeSpec -> IO () -foreign import ccall hs_clock_win32_getres_realtime :: Ptr TimeSpec -> IO () -foreign import ccall hs_clock_win32_getres_processtime :: Ptr TimeSpec -> IO () -foreign import ccall hs_clock_win32_getres_threadtime :: Ptr TimeSpec -> IO () -#elif defined(__MACH__) && defined(__APPLE__) -foreign import ccall hs_clock_darwin_gettime :: #{type clock_id_t} -> Ptr TimeSpec -> IO () -foreign import ccall hs_clock_darwin_getres :: #{type clock_id_t} -> Ptr TimeSpec -> IO () +foreign import ccall unsafe hs_clock_win32_gettime_monotonic :: Ptr TimeSpec -> IO () +foreign import ccall unsafe hs_clock_win32_gettime_realtime :: Ptr TimeSpec -> IO () +foreign import ccall unsafe hs_clock_win32_gettime_processtime :: Ptr TimeSpec -> IO () +foreign import ccall unsafe hs_clock_win32_gettime_threadtime :: Ptr TimeSpec -> IO () +foreign import ccall unsafe hs_clock_win32_getres_monotonic :: Ptr TimeSpec -> IO () +foreign import ccall unsafe hs_clock_win32_getres_realtime :: Ptr TimeSpec -> IO () +foreign import ccall unsafe hs_clock_win32_getres_processtime :: Ptr TimeSpec -> IO () +foreign import ccall unsafe hs_clock_win32_getres_threadtime :: Ptr TimeSpec -> IO () #else -foreign import ccall unsafe clock_gettime :: #{type clockid_t} -> Ptr TimeSpec -> IO () -foreign import ccall unsafe clock_getres :: #{type clockid_t} -> Ptr TimeSpec -> IO () +foreign import ccall unsafe clock_gettime :: #{type clockid_t} -> Ptr TimeSpec -> IO CInt +foreign import ccall unsafe clock_getres :: #{type clockid_t} -> Ptr TimeSpec -> IO CInt #endif #if !defined(_WIN32) -#if defined(__MACH__) && defined(__APPLE__) -clockToConst :: Clock -> #{type clock_id_t} -clockToConst Monotonic = #const SYSTEM_CLOCK -clockToConst Realtime = #const CALENDAR_CLOCK -clockToConst ProcessCPUTime = #const SYSTEM_CLOCK -clockToConst ThreadCPUTime = #const SYSTEM_CLOCK -#else clockToConst :: Clock -> #{type clockid_t} clockToConst Monotonic = #const CLOCK_MONOTONIC clockToConst Realtime = #const CLOCK_REALTIME clockToConst ProcessCPUTime = #const CLOCK_PROCESS_CPUTIME_ID clockToConst ThreadCPUTime = #const CLOCK_THREAD_CPUTIME_ID -#endif #if defined (CLOCK_MONOTONIC_RAW) clockToConst MonotonicRaw = #const CLOCK_MONOTONIC_RAW @@ -178,10 +171,8 @@ getTime Realtime = allocaAndPeek hs_clock_win32_gettime_realtime getTime ProcessCPUTime = allocaAndPeek hs_clock_win32_gettime_processtime getTime ThreadCPUTime = allocaAndPeek hs_clock_win32_gettime_threadtime -#elif defined(__MACH__) && defined(__APPLE__) -getTime clk = allocaAndPeek $! hs_clock_darwin_gettime $! clockToConst clk #else -getTime clk = allocaAndPeek $! clock_gettime $! clockToConst clk +getTime clk = allocaAndPeek $! throwErrnoIfMinus1_ "clock_gettime" . clock_gettime (clockToConst clk) #endif #if defined(_WIN32) @@ -189,10 +180,8 @@ getRes Realtime = allocaAndPeek hs_clock_win32_getres_realtime getRes ProcessCPUTime = allocaAndPeek hs_clock_win32_getres_processtime getRes ThreadCPUTime = allocaAndPeek hs_clock_win32_getres_threadtime -#elif defined(__MACH__) && defined(__APPLE__) -getRes clk = allocaAndPeek $! hs_clock_darwin_getres $! clockToConst clk #else -getRes clk = allocaAndPeek $! clock_getres $! clockToConst clk +getRes clk = allocaAndPeek $! throwErrnoIfMinus1_ "clock_getres" . clock_getres (clockToConst clk) #endif -- | TimeSpec structure @@ -245,11 +234,6 @@ ysi = toInteger ys xni = toInteger xn yni = toInteger yn --- let xsi = toInteger xs -- convert to arbitraty Integer type to avoid int overflow --- xni = toInteger xn --- ysi = toInteger ys --- yni = toInteger yn -- seconds -- nanoseconds --- in normalize $! TimeSpec (fromInteger $! xsi * ysi) (fromInteger $! (xni * yni + (xni * ysi + xsi * yni) * s2ns) `div` s2ns) negate (TimeSpec xs xn) = normalize $! TimeSpec (negate xs) (negate xn) abs (normalize -> TimeSpec xs xn) | xs == 0 = normalize $! TimeSpec 0 xn diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clock-0.8/cbits/hs_clock_darwin.c new/clock-0.8.2/cbits/hs_clock_darwin.c --- old/clock-0.8/cbits/hs_clock_darwin.c 2019-04-26 15:37:49.000000000 +0200 +++ new/clock-0.8.2/cbits/hs_clock_darwin.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,29 +0,0 @@ -#ifdef __MACH__ -#include <time.h> -#include <mach/clock.h> -#include <mach/mach.h> - -void hs_clock_darwin_gettime(clock_id_t clock, struct timespec *ts) -{ - // OS X does not have clock_gettime, use clock_get_time - // see http://stackoverflow.com/questions/11680461/monotonic-clock-on-osx - clock_serv_t cclock; - mach_timespec_t mts; - host_get_clock_service(mach_host_self(), clock, &cclock); - clock_get_time(cclock, &mts); - mach_port_deallocate(mach_task_self(), cclock); - ts->tv_sec = mts.tv_sec; - ts->tv_nsec = mts.tv_nsec; -} - -void hs_clock_darwin_getres(clock_id_t clock, struct timespec *ts) -{ - clock_serv_t cclock; - int nsecs; - mach_msg_type_number_t count; - host_get_clock_service(mach_host_self(), clock, &cclock); - clock_get_attributes(cclock, CLOCK_GET_TIME_RES, (clock_attr_t)&nsecs, &count); - mach_port_deallocate(mach_task_self(), cclock); -} - -#endif /* __MACH__ */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clock-0.8/clock.cabal new/clock-0.8.2/clock.cabal --- old/clock-0.8/clock.cabal 2019-04-26 15:37:49.000000000 +0200 +++ new/clock-0.8.2/clock.cabal 2001-09-09 03:46:40.000000000 +0200 @@ -1,5 +1,6 @@ +cabal-version: >= 1.10 name: clock -version: 0.8 +version: 0.8.2 stability: stable synopsis: High-resolution clock functions: monotonic, realtime, cputime. description: A package for convenient access to high-resolution clock and @@ -35,21 +36,23 @@ . Refreshment release in 2019-04 after numerous contributions. . + Refactoring for Windows, Mac implementation consistence by Alexander Vershilov on 2021-01-16. + . [Version Scheme] Major-@/R/@-ewrite . New-@/F/@-unctionality . @/I/@-mprovementAndBugFixes . @/P/@-ackagingOnly . * @PackagingOnly@ changes are made for quality assurance reasons. -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 +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, Alexander Vershilov 2021. license: BSD3 license-file: LICENSE -author: Cetin Sert <[email protected]>, Corsis Research -maintainer: Cetin Sert <[email protected]>, Corsis Research +author: Cetin Sert <[email protected]>, Corsis Research +maintainer: Cetin Sert <[email protected]>, Corsis Research homepage: https://github.com/corsis/clock bug-reports: https://github.com/corsis/clock/issues category: System build-type: Simple -cabal-version: >= 1.8 +tested-with: GHC==8.10.3, GHC==8.8.4, GHC==8.6.5 source-repository head @@ -63,17 +66,16 @@ library + default-language: Haskell2010 if impl (ghc < 7.6) build-depends: base >= 4.4 && <= 5, ghc-prim build-depends: base >= 2 && <= 5 exposed-modules: System.Clock - extensions: DeriveGeneric + default-extensions: DeriveGeneric DeriveDataTypeable ForeignFunctionInterface ScopedTypeVariables ViewPatterns - if os(darwin) - c-sources: cbits/hs_clock_darwin.c if os(windows) c-sources: cbits/hs_clock_win32.c include-dirs: cbits @@ -84,8 +86,7 @@ test-suite test --- default-language: --- Haskell2010 + default-language: Haskell2010 type: exitcode-stdio-1.0 hs-source-dirs: @@ -99,6 +100,7 @@ , clock benchmark benchmarks + default-language: Haskell2010 type: exitcode-stdio-1.0 hs-source-dirs:
