diff --git a/.gitignore b/.gitignore index 01f987f..1bb8002 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ /Time-HiRes-1.9756.tar.gz /Time-HiRes-1.9757.tar.gz /Time-HiRes-1.9758.tar.gz +/Time-HiRes-1.9760.tar.gz diff --git a/Time-HiRes-1.9758-Upgrade-to-1.9759.patch b/Time-HiRes-1.9758-Upgrade-to-1.9759.patch deleted file mode 100644 index bf97213..0000000 --- a/Time-HiRes-1.9758-Upgrade-to-1.9759.patch +++ /dev/null @@ -1,700 +0,0 @@ -From 4b4e33fb557abed6a1a58d81ac7ceeecd94bacc8 Mon Sep 17 00:00:00 2001 -From: Jitka Plesnikova -Date: Thu, 24 May 2018 11:51:41 +0200 -Subject: [PATCH] Upgrade to 1.9759 - ---- - Changes | 49 ++-------------- - HiRes.pm | 14 +++-- - HiRes.xs | 154 ++++++++++++++------------------------------------- - Makefile.PL | 73 ++++++++++++------------ - fallback/const-c.inc | 99 ++++++++++++--------------------- - t/tv_interval.t | 69 +---------------------- - t/utime.t | 21 +------ - 7 files changed, 130 insertions(+), 349 deletions(-) - -diff --git a/Changes b/Changes -index cc15f37..bad6b56 100644 ---- a/Changes -+++ b/Changes -@@ -1,50 +1,9 @@ - Revision history for the Perl extension Time::HiRes. - --1.9758 [2018-03-21] -- - fix build in Win32 with Visual C by introducing a fake struct timezone -- [rt.cpan.org #124844] -- - in utime.t detect better being run in a noatime filesystem, -- and if so, skip the test (for the HAMMER filesystem of DragonflyBSD) -- - also for the HAMMER fs (if not in noatime), lower the expected subsecond -- timestamp granularity to microseconds -- - fix the version number typo in Changes: 1.9577 -> 1.9757 -- --1.9757 [2018-03-15] -- - fix win32 (and cygwin?) builds which have been broken since 1.9755: -- problem was that gettimeofday() is a macro and needs to stay such -- - regenerate ppport.h with Perl 5.26.1 (was previously generated with -- 5.25.6) and Devel::PPPort 3.35 (previously 3.36) -- this doesn't -- change the ppport.h, though -- --1.9756 [2018-03-14] -- - division by zero in new test tv_interval.t [rt.cpan.org #124775]: -- made the test pass even if the difference is zero, but also -- made it practically impossible to ever be zero by adding -- a sub-second sleep. -- - remove comments from inside qw [rt.cpan.org #124777], -- only seemed to be caught by Perl 5.18.4 -- --1.9755 [2018-03-14] -- - adjust the error messages of tv_interval() -- - the NV_1EX constants now cast to be NV so that -- tv_interval() with long double builds does not -- produce ugly results [rt.cpan.org #106456] -- - add tests for tv_interval() -- - centralize the mygettimeofday() logic -- - make the mygettimeofday() a function instead of macro -- - add the OS X 10.12+ clock_gettime() constants -- CLOCK_MONOTONIC_RAW_APPROX CLOCK_UPTIME_RAW_APPROX -- - regenerate the fallback files -- --1.9754 [2018-02-16] -- - unify the gettimeofday() and time() forked code -- that had near identical code paths for MacOS Classic -- (which has two unusual features: unsigned time_t, -- and a special tz struct member), and for non-MacOS Classic -- - tv_interval should be implemented in XS -- [rt.cpan.org #106456] -- thanks to Sergey Aleynikov (suggested implementation simplified -- by the above-mentioned MacOS Classic simplification) -+1.9759 [2018-03-23] -+ - This version reverts the changes on CPAN that were included in 1.9754 - 1.9758. -+ Several of these changes caused instability on some windows platforms. We can -+ revisit these fixes if necessary in Perl 5.29.0 - - 1.9753 [2018-01-11] - - in t/clock.t in a fast system we need to burn more CPU, -diff --git a/HiRes.pm b/HiRes.pm -index d9c30d6..59f0f3a 100644 ---- a/HiRes.pm -+++ b/HiRes.pm -@@ -9,8 +9,7 @@ use XSLoader (); - our @ISA = qw(Exporter); - - our @EXPORT = qw( ); --# TODO: this list is a superset of the @names in --# Makefile.PL:doConstants(), automate this somehow. -+# More or less this same list is in Makefile.PL. Should unify. - our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval - getitimer setitimer nanosleep clock_gettime clock_getres - clock clock_nanosleep -@@ -22,7 +21,6 @@ our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval - CLOCK_MONOTONIC_FAST - CLOCK_MONOTONIC_PRECISE - CLOCK_MONOTONIC_RAW -- CLOCK_MONOTONIC_RAW_APPROX - CLOCK_PROCESS_CPUTIME_ID - CLOCK_PROF - CLOCK_REALTIME -@@ -39,7 +37,6 @@ our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval - CLOCK_UPTIME_FAST - CLOCK_UPTIME_PRECISE - CLOCK_UPTIME_RAW -- CLOCK_UPTIME_RAW_APPROX - CLOCK_VIRTUAL - ITIMER_PROF - ITIMER_REAL -@@ -53,7 +50,7 @@ our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval - stat lstat utime - ); - --our $VERSION = '1.9758'; -+our $VERSION = '1.9759'; - our $XS_VERSION = $VERSION; - $VERSION = eval $VERSION; - -@@ -98,6 +95,13 @@ XSLoader::load( 'Time::HiRes', $XS_VERSION ); - - # Preloaded methods go here. - -+sub tv_interval { -+ # probably could have been done in C -+ my ($a, $b) = @_; -+ $b = [gettimeofday()] unless defined($b); -+ (${$b}[0] - ${$a}[0]) + ((${$b}[1] - ${$a}[1]) / 1_000_000); -+} -+ - # Autoload methods go after =cut, and are processed by the autosplit program. - - 1; -diff --git a/HiRes.xs b/HiRes.xs -index 39ac3fd..b9eaa17 100644 ---- a/HiRes.xs -+++ b/HiRes.xs -@@ -40,14 +40,6 @@ extern "C" { - } - #endif - --#ifdef _MSC_VER /* For Visual C */ --struct timezone --{ -- int tz_minuteswest; /* of Greenwich */ -- int tz_dsttime; /* type of dst correction to apply */ --}; --#endif -- - #define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s) - #define PERL_DECIMAL_VERSION \ - PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION) -@@ -79,9 +71,9 @@ struct timezone - #define IV_1E7 10000000 - #define IV_1E9 1000000000 - --#define NV_1E6 (NV)1000000.0 --#define NV_1E7 (NV)10000000.0 --#define NV_1E9 (NV)1000000000.0 -+#define NV_1E6 1000000.0 -+#define NV_1E7 10000000.0 -+#define NV_1E9 1000000000.0 - - #ifndef PerlProc_pause - # define PerlProc_pause() Pause() -@@ -1019,46 +1011,6 @@ nsec_without_unslept(struct timespec *sleepfor, - #define IS_SAFE_PATHNAME(pv, len, opname) (((len)>1)&&memchr((pv), 0, (len)-1)?(SETERRNO(ENOENT, LIB_INVARG),WARNEMU(opname),FALSE):(TRUE)) - #endif - --/* Mac OS (Classic) (MacOS 9) */ --#ifdef MACOS_TRADITIONAL --/* has tz values that matter */ --#define GETTIMEOFDAY_TZ --/* has tz.tz_minuteswest which needs to be added to tv_sec */ --#define ADJUST_BY_TZ_MINUTES --/* has unsigned time_t */ --#define UNSIGNED_TIME_T --#endif -- --#if defined(WIN32) || defined(CYGWIN_WITH_W32API) --# define mygettimeofday(tp, not_used) gettimeofday(tp, not_used) --#else --static int mygettimeofday(struct timeval *tv, struct timezone *tz) --{ -- int status; --# ifdef GETTIMEOFDAY_TZ -- status = gettimeofday(tv, tz); --# else -- (void) tz; -- status = gettimeofday(tv, NULL); --# endif /* ifdef GETTIMEOFDAY_TZ */ --# ifdef ADJUST_BY_TZ_MINUTES --# ifndef GETTIMEOFDAY_TZ --# error "ADJUST_BY_TZ_MINUTES requires GETTIMEOFDAY_TZ" --# endif /* ifndef GETTIMEOFDAY_TZ */ -- tv->tv_sec += tz->tz_minuteswest * 60; /* adjust for TZ */ --# endif /* ADJUST_BY_TZ_MINUTES */ -- return status; --} --#endif /* if defined(WIN32) || defined(CYGWIN_WITH_W32API) else */ -- --#ifdef UNSIGNED_TIME_T --#define SvTIME(sv) SvUV(sv) --#define newSVtimet) newSVuv(t) --#else --#define SvTIME(sv) SvIV(sv) --#define newSVtime(t) newSViv(t) --#endif -- - MODULE = Time::HiRes PACKAGE = Time::HiRes - - PROTOTYPES: ENABLE -@@ -1326,6 +1278,7 @@ alarm(seconds,interval=0) - #endif /* #ifdef HAS_UALARM */ - - #ifdef HAS_GETTIMEOFDAY -+# ifdef MACOS_TRADITIONAL /* fix epoch TZ and use unsigned time_t */ - void - gettimeofday() - PREINIT: -@@ -1333,11 +1286,14 @@ gettimeofday() - struct timezone Tz; - PPCODE: - int status; -- status = mygettimeofday (&Tp, &Tz); -+ status = gettimeofday (&Tp, &Tz); -+ - if (status == 0) { -+ Tp.tv_sec += Tz.tz_minuteswest * 60; /* adjust for TZ */ - if (GIMME == G_ARRAY) { - EXTEND(sp, 2); -- PUSHs(sv_2mortal(newSVtime(Tp.tv_sec))); -+ /* Mac OS (Classic) has unsigned time_t */ -+ PUSHs(sv_2mortal(newSVuv(Tp.tv_sec))); - PUSHs(sv_2mortal(newSViv(Tp.tv_usec))); - } else { - EXTEND(sp, 1); -@@ -1352,8 +1308,9 @@ time() - struct timezone Tz; - CODE: - int status; -- status = mygettimeofday (&Tp, &Tz); -+ status = gettimeofday (&Tp, &Tz); - if (status == 0) { -+ Tp.tv_sec += Tz.tz_minuteswest * 60; /* adjust for TZ */ - RETVAL = Tp.tv_sec + (Tp.tv_usec / NV_1E6); - } else { - RETVAL = -1.0; -@@ -1361,66 +1318,41 @@ time() - OUTPUT: - RETVAL - --NV --tv_interval(SV* start, ...) -- PREINIT: -- struct timeval Tp; -- struct timezone Tz; -- SV* end; -- time_t end_sec; -- IV end_usec; -- SV** avalue; -- -- CODE: -- -- end = NULL; -- if (items >= 2) { -- end = ST(1); -- } -- /* It would be tempting croak on items > 2 -- * but that would probably break some code. */ -- -- if (SvROK(start) && SvTYPE(SvRV(start)) == SVt_PVAV) { -- start = SvRV(start); -- } else { -- croak("tv_interval() 1st argument should be an array reference"); -- } -- -- if (end != NULL) { -- if (SvROK(end) && SvTYPE(SvRV(end)) == SVt_PVAV) { -- end = SvRV(end); -- /* Resist the temptation to expect exactly -- * an array of length two: that would -- * no doubt break some code. */ -- avalue = av_fetch((AV*)end, 0, FALSE); -- end_sec = avalue ? SvTIME(*avalue) : 0; -- avalue = av_fetch((AV*)end, 1, FALSE); -- end_usec = avalue ? SvIV(*avalue) : 0; -- } else { -- croak("tv_interval() 2nd argument should be an array reference"); -- } -- } else { -- int status; -- status = mygettimeofday (&Tp, &Tz); -- if (status == 0) { -- end_sec = Tp.tv_sec; -- end_usec = Tp.tv_usec; -- } else { -- end_sec = 0; -- end_usec = 0; -+# else /* MACOS_TRADITIONAL */ -+void -+gettimeofday() -+ PREINIT: -+ struct timeval Tp; -+ PPCODE: -+ int status; -+ status = gettimeofday (&Tp, NULL); -+ if (status == 0) { -+ if (GIMME == G_ARRAY) { -+ EXTEND(sp, 2); -+ PUSHs(sv_2mortal(newSViv(Tp.tv_sec))); -+ PUSHs(sv_2mortal(newSViv(Tp.tv_usec))); -+ } else { -+ EXTEND(sp, 1); -+ PUSHs(sv_2mortal(newSVnv(Tp.tv_sec + (Tp.tv_usec / NV_1E6)))); -+ } - } -- } - -- /* Resist temptation to expect exactly an array -- * of length two: that would no doubt break some code. */ -- avalue = av_fetch((AV*)start, 0, FALSE); -- RETVAL = end_sec - (avalue ? SvTIME(*avalue) : 0); -- avalue = av_fetch((AV*)start, 1, FALSE); -- RETVAL += ((end_usec - (avalue ? SvIV(*avalue) : 0)) / NV_1E6); -- -- OUTPUT: -- RETVAL -+NV -+time() -+ PREINIT: -+ struct timeval Tp; -+ CODE: -+ int status; -+ status = gettimeofday (&Tp, NULL); -+ if (status == 0) { -+ RETVAL = Tp.tv_sec + (Tp.tv_usec / NV_1E6); -+ } else { -+ RETVAL = -1.0; -+ } -+ OUTPUT: -+ RETVAL - -+# endif /* MACOS_TRADITIONAL */ - #endif /* #ifdef HAS_GETTIMEOFDAY */ - - #if defined(HAS_GETITIMER) && defined(HAS_SETITIMER) -diff --git a/Makefile.PL b/Makefile.PL -index 8036fbf..daca5b4 100644 ---- a/Makefile.PL -+++ b/Makefile.PL -@@ -731,7 +731,7 @@ EOD - print "NOT found.\n"; - } - -- my $has_hires_utime = ($has_futimens || $has_utimensat); -+ my $has_hires_utime = ($has_futimens && $has_utimensat); - if ($has_hires_utime) { - $DEFINE .= ' -DTIME_HIRES_UTIME'; - print "You seem to have subsecond timestamp setting.\n"; -@@ -966,42 +966,39 @@ sub doMakefile { - - sub doConstants { - if (eval {require ExtUtils::Constant; 1}) { -- # TODO: this list is a subset of the @EXPORT_OK in HiRes.pm, -- # automate this somehow. -- my @names = qw[ -- CLOCKS_PER_SEC -- CLOCK_BOOTTIME -- CLOCK_HIGHRES -- CLOCK_MONOTONIC -- CLOCK_MONOTONIC_COARSE -- CLOCK_MONOTONIC_FAST -- CLOCK_MONOTONIC_PRECISE -- CLOCK_MONOTONIC_RAW -- CLOCK_MONOTONIC_RAW_APPROX -- CLOCK_PROCESS_CPUTIME_ID -- CLOCK_PROF -- CLOCK_REALTIME -- CLOCK_REALTIME_COARSE -- CLOCK_REALTIME_FAST -- CLOCK_REALTIME_PRECISE -- CLOCK_REALTIME_RAW -- CLOCK_SECOND -- CLOCK_SOFTTIME -- CLOCK_THREAD_CPUTIME_ID -- CLOCK_TIMEOFDAY -- CLOCK_UPTIME -- CLOCK_UPTIME_COARSE -- CLOCK_UPTIME_FAST -- CLOCK_UPTIME_PRECISE -- CLOCK_UPTIME_RAW -- CLOCK_UPTIME_RAW_APPROX -- CLOCK_VIRTUAL -- ITIMER_PROF -- ITIMER_REAL -- ITIMER_REALPROF -- ITIMER_VIRTUAL -- TIMER_ABSTIME -- ]; -+ # More or less this same list is in HiRes.pm. Should unify. -+ my @names = qw( -+ CLOCKS_PER_SEC -+ CLOCK_BOOTTIME -+ CLOCK_HIGHRES -+ CLOCK_MONOTONIC -+ CLOCK_MONOTONIC_COARSE -+ CLOCK_MONOTONIC_FAST -+ CLOCK_MONOTONIC_PRECISE -+ CLOCK_MONOTONIC_RAW -+ CLOCK_PROF -+ CLOCK_PROCESS_CPUTIME_ID -+ CLOCK_REALTIME -+ CLOCK_REALTIME_COARSE -+ CLOCK_REALTIME_FAST -+ CLOCK_REALTIME_PRECISE -+ CLOCK_REALTIME_RAW -+ CLOCK_SECOND -+ CLOCK_SOFTTIME -+ CLOCK_THREAD_CPUTIME_ID -+ CLOCK_TIMEOFDAY -+ CLOCK_UPTIME -+ CLOCK_UPTIME_COARSE -+ CLOCK_UPTIME_FAST -+ CLOCK_UPTIME_PRECISE -+ CLOCK_UPTIME_RAW -+ CLOCK_VIRTUAL -+ ITIMER_PROF -+ ITIMER_REAL -+ ITIMER_REALPROF -+ ITIMER_VIRTUAL -+ TIMER_ABSTIME -+ ); - foreach (qw (d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer - d_nanosleep d_clock_gettime d_clock_getres - d_clock d_clock_nanosleep d_hires_stat -@@ -1040,8 +1037,6 @@ sub doConstants { - NAMES => \@names, - ); - } else { -- # E.g. perl 5.6 did not have ExtUtils::Constant, -- # use the pregenerated files instead. - my $file; - foreach $file ('const-c.inc', 'const-xs.inc') { - my $fallback = File::Spec->catfile('fallback', $file); -diff --git a/fallback/const-c.inc b/fallback/const-c.inc -index f59dc86..2c29a0b 100644 ---- a/fallback/const-c.inc -+++ b/fallback/const-c.inc -@@ -391,50 +391,6 @@ constant_19 (pTHX_ const char *name, IV *iv_return) { - return PERL_constant_NOTFOUND; - } - --static int --constant_23 (pTHX_ const char *name, IV *iv_return) { -- /* When generated this function returned values for the list of names given -- here. However, subsequent manual editing may have added or removed some. -- CLOCK_MONOTONIC_PRECISE CLOCK_THREAD_CPUTIME_ID CLOCK_UPTIME_RAW_APPROX */ -- /* Offset 8 gives the best switch position. */ -- switch (name[8]) { -- case 'N': -- if (memEQ(name, "CLOCK_MONOTONIC_PRECISE", 23)) { -- /* ^ */ --#ifdef CLOCK_MONOTONIC_PRECISE -- *iv_return = CLOCK_MONOTONIC_PRECISE; -- return PERL_constant_ISIV; --#else -- return PERL_constant_NOTDEF; --#endif -- } -- break; -- case 'R': -- if (memEQ(name, "CLOCK_THREAD_CPUTIME_ID", 23)) { -- /* ^ */ --#ifdef CLOCK_THREAD_CPUTIME_ID -- *iv_return = CLOCK_THREAD_CPUTIME_ID; -- return PERL_constant_ISIV; --#else -- return PERL_constant_NOTDEF; --#endif -- } -- break; -- case 'T': -- if (memEQ(name, "CLOCK_UPTIME_RAW_APPROX", 23)) { -- /* ^ */ --#ifdef CLOCK_UPTIME_RAW_APPROX -- *iv_return = CLOCK_UPTIME_RAW_APPROX; -- return PERL_constant_ISIV; --#else -- return PERL_constant_NOTDEF; --#endif -- } -- break; -- } -- return PERL_constant_NOTFOUND; --} -- - static int - constant (pTHX_ const char *name, STRLEN len, IV *iv_return) { - /* Initially switch on the length of the name. */ -@@ -448,21 +404,20 @@ constant (pTHX_ const char *name, STRLEN len, IV *iv_return) { - Regenerate these constant functions by feeding this entire source file to - perl -x - --#!/opt/local/perl-5.26.1/bin/perl -w -+#!/opt/local/perl-5.25.6/bin/perl -w - use ExtUtils::Constant qw (constant_types C_constant XS_constant); - - my $types = {map {($_, 1)} qw(IV)}; - my @names = (qw(CLOCKS_PER_SEC CLOCK_BOOTTIME CLOCK_HIGHRES CLOCK_MONOTONIC - CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST - CLOCK_MONOTONIC_PRECISE CLOCK_MONOTONIC_RAW -- CLOCK_MONOTONIC_RAW_APPROX CLOCK_PROCESS_CPUTIME_ID CLOCK_PROF -- CLOCK_REALTIME CLOCK_REALTIME_COARSE CLOCK_REALTIME_FAST -- CLOCK_REALTIME_PRECISE CLOCK_REALTIME_RAW CLOCK_SECOND -- CLOCK_SOFTTIME CLOCK_THREAD_CPUTIME_ID CLOCK_TIMEOFDAY -- CLOCK_UPTIME CLOCK_UPTIME_COARSE CLOCK_UPTIME_FAST -- CLOCK_UPTIME_PRECISE CLOCK_UPTIME_RAW CLOCK_UPTIME_RAW_APPROX -- CLOCK_VIRTUAL ITIMER_PROF ITIMER_REAL ITIMER_REALPROF -- ITIMER_VIRTUAL TIMER_ABSTIME), -+ CLOCK_PROCESS_CPUTIME_ID CLOCK_PROF CLOCK_REALTIME -+ CLOCK_REALTIME_COARSE CLOCK_REALTIME_FAST CLOCK_REALTIME_PRECISE -+ CLOCK_REALTIME_RAW CLOCK_SECOND CLOCK_SOFTTIME -+ CLOCK_THREAD_CPUTIME_ID CLOCK_TIMEOFDAY CLOCK_UPTIME -+ CLOCK_UPTIME_COARSE CLOCK_UPTIME_FAST CLOCK_UPTIME_PRECISE -+ CLOCK_UPTIME_RAW CLOCK_VIRTUAL ITIMER_PROF ITIMER_REAL -+ ITIMER_REALPROF ITIMER_VIRTUAL TIMER_ABSTIME), - {name=>"d_clock", type=>"IV", macro=>"TIME_HIRES_CLOCK", value=>"1", default=>["IV", "0"]}, - {name=>"d_clock_getres", type=>"IV", macro=>"TIME_HIRES_CLOCK_GETRES", value=>"1", default=>["IV", "0"]}, - {name=>"d_clock_gettime", type=>"IV", macro=>"TIME_HIRES_CLOCK_GETTIME", value=>"1", default=>["IV", "0"]}, -@@ -697,7 +652,33 @@ __END__ - } - break; - case 23: -- return constant_23 (aTHX_ name, iv_return); -+ /* Names all of length 23. */ -+ /* CLOCK_MONOTONIC_PRECISE CLOCK_THREAD_CPUTIME_ID */ -+ /* Offset 22 gives the best switch position. */ -+ switch (name[22]) { -+ case 'D': -+ if (memEQ(name, "CLOCK_THREAD_CPUTIME_I", 22)) { -+ /* D */ -+#ifdef CLOCK_THREAD_CPUTIME_ID -+ *iv_return = CLOCK_THREAD_CPUTIME_ID; -+ return PERL_constant_ISIV; -+#else -+ return PERL_constant_NOTDEF; -+#endif -+ } -+ break; -+ case 'E': -+ if (memEQ(name, "CLOCK_MONOTONIC_PRECIS", 22)) { -+ /* E */ -+#ifdef CLOCK_MONOTONIC_PRECISE -+ *iv_return = CLOCK_MONOTONIC_PRECISE; -+ return PERL_constant_ISIV; -+#else -+ return PERL_constant_NOTDEF; -+#endif -+ } -+ break; -+ } - break; - case 24: - if (memEQ(name, "CLOCK_PROCESS_CPUTIME_ID", 24)) { -@@ -706,16 +687,6 @@ __END__ - return PERL_constant_ISIV; - #else - return PERL_constant_NOTDEF; --#endif -- } -- break; -- case 26: -- if (memEQ(name, "CLOCK_MONOTONIC_RAW_APPROX", 26)) { --#ifdef CLOCK_MONOTONIC_RAW_APPROX -- *iv_return = CLOCK_MONOTONIC_RAW_APPROX; -- return PERL_constant_ISIV; --#else -- return PERL_constant_NOTDEF; - #endif - } - break; -diff --git a/t/tv_interval.t b/t/tv_interval.t -index 06b50e3..8ac876d 100644 ---- a/t/tv_interval.t -+++ b/t/tv_interval.t -@@ -1,73 +1,10 @@ - use strict; - --use Test::More tests => 13; -+use Test::More tests => 2; - - BEGIN { require_ok "Time::HiRes"; } - --my $d0 = Time::HiRes::tv_interval [5, 100_000], [10, 500_000]; --ok(abs($d0 - 5.4) < 0.001, "10.5 - 5.1 = $d0"); -- --my $d1 = Time::HiRes::tv_interval([], []); --is($d1, 0, "[] - [] = $d1"); -- --my $t0 = [Time::HiRes::gettimeofday()]; --Time::HiRes::sleep 0.1; --my $t1 = [Time::HiRes::gettimeofday()]; --my $d2 = Time::HiRes::tv_interval($t1); # NOTE: only one arg. -- --# This test will fail if between the $t1 and $d2 the time goes backwards: --# this will happen if the clock is adjusted for example by NTP. --ok($d2 >= 0, "now - [@$t0] = $d2 >= 0"); -- --my $d3 = Time::HiRes::tv_interval($t0, $t0); --is($d3, 0, "[@$t0] - [@$t0] = $d3"); -- --my $d4 = Time::HiRes::tv_interval($t0, $t1); -- --# Compute in Perl what tv_interval() used to do pre-1.9754. --# This test will fail if too much wallclock time passes between --# the $t0 and $t1: this can happen in a heavily loaded system. --my $d5 = ($t1->[0] - $t0->[0]) + ($t1->[1] - $t0->[1]) / 1e6; --if ($d4 > 0) { -- my $rd4d5 = $d5 / $d4; -- ok(abs($rd4d5 - 1) < 0.001, "[@$t1] - [@$t0] = $d4 ($d5, $rd4d5)"); --} else { -- is($d4, $d5, "$d4 == $d5"); --} -- --# Then test errorneous inputs. -- --eval 'Time::HiRes::tv_interval()'; --like($@, qr/Not enough arguments/, "at least one arg"); -- --eval 'Time::HiRes::tv_interval(1)'; --like($@, qr/1st argument should be an array reference/, "1st arg aref"); -- --eval 'Time::HiRes::tv_interval(undef)'; --like($@, qr/1st argument should be an array reference/, "1st arg aref"); -- --eval 'Time::HiRes::tv_interval({})'; --like($@, qr/1st argument should be an array reference/, "1st arg aref"); -- --eval 'Time::HiRes::tv_interval([], 1)'; --like($@, qr/2nd argument should be an array reference/, "2nd arg aref"); -- --eval 'Time::HiRes::tv_interval([], {})'; --like($@, qr/2nd argument should be an array reference/, "2nd arg aref"); -- --# Would be tempting but would probably break some code. --# eval 'Time::HiRes::tv_interval([], [], [])'; --# like($@, qr/expects two arguments/, "two args"); -- --my $t2 = [Time::HiRes::gettimeofday]; --Time::HiRes::sleep 0.1; --my $d6 = Time::HiRes::tv_interval($t2); --# This test originally for long double builds, --# has considerable flakness potential: --# (1) if the sleep takes exactly one second (or two, ...) --# (2) if the floating point operations in tv_interval() --# come up with a floating point result that does not --# format as a nicely "terminating" decimal number --like($d6, qr/\.\d{1,6}$/, "no extra decimals"); -+my $f = Time::HiRes::tv_interval [5, 100_000], [10, 500_000]; -+ok abs($f - 5.4) < 0.001 or print("# $f\n"); - - 1; -diff --git a/t/utime.t b/t/utime.t -index 5a91e7e..7fd4604 100644 ---- a/t/utime.t -+++ b/t/utime.t -@@ -84,20 +84,9 @@ sub get_mount_of_tempfile { - return get_mount_of_filesys(get_filesys_of_tempfile()); - } - --sub parse_mount_line { -- my ($dev, $dir, $opt) = ($_[0] =~ m{^(.+) on (.+) \((.+)\)$}); -- my @opt = split(/, /, $opt); -- return { dev => $dev, dir => $dir, opt => { map { $_ => 1 } @opt } }; --} -- - sub tempfile_has_noatime_mount { -- my ($mount) = parse_mount_line(get_mount_of_tempfile()); -- return $mount->{opt}->{noatime}; --} -- --sub tempfile_has_hammerfs { -- my ($mount) = parse_mount_line(get_mount_of_tempfile()); -- return $mount->{opt}->{hammer}; -+ my ($mount) = get_mount_of_tempfile(); -+ return $mount =~ /\bnoatime\b/; - } - - BEGIN { -@@ -147,12 +136,6 @@ print "# \$^O = $^O, atime = $atime, mtime = $mtime\n"; - - my $skip_atime = $^O eq 'netbsd' && tempfile_has_noatime_mount(); - --if ($^O eq 'dragonfly' && tempfile_is_hammerfs()) { -- # The HAMMER fs in DragonflyBSD has microsecond timestamps. -- $atime = 1.111111; -- $mtime = 2.222222; --} -- - if ($skip_atime) { - printf("# Skipping atime tests because tempfiles seem to be in a filesystem mounted with 'noatime' ($^O)\n'"); - } --- -2.14.3 - diff --git a/.rpmlint b/perl-Time-HiRes.rpmlintrc similarity index 100% rename from .rpmlint rename to perl-Time-HiRes.rpmlintrc diff --git a/perl-Time-HiRes.spec b/perl-Time-HiRes.spec index 5cf1404..15ce9a0 100644 --- a/perl-Time-HiRes.spec +++ b/perl-Time-HiRes.spec @@ -1,13 +1,10 @@ -%global base_version 1.9758 Name: perl-Time-HiRes -Version: 1.9759 -Release: 418%{?dist} +Version: 1.9760 +Release: 1%{?dist} Summary: High resolution alarm, sleep, gettimeofday, interval timers License: GPL+ or Artistic URL: https://metacpan.org/release/Time-HiRes -Source0: https://cpan.metacpan.org/authors/id/J/JH/JHI/Time-HiRes-%{base_version}.tar.gz -# Unbundled from perl 5.28.0-RC1 -Patch0: Time-HiRes-1.9758-Upgrade-to-1.9759.patch +Source0: https://cpan.metacpan.org/authors/id/A/AT/ATOOMIC/Time-HiRes-%{version}.tar.gz BuildRequires: findutils BuildRequires: gcc BuildRequires: make @@ -40,15 +37,15 @@ ualarm, gettimeofday, and setitimer/getitimer system calls, in other words, high resolution time and timers. %prep -%setup -q -n Time-HiRes-%{base_version} -%patch0 -p1 +%setup -q -n Time-HiRes-%{version} %build -perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 OPTIMIZE="$RPM_OPT_FLAGS" -make %{?_smp_mflags} +unset PERL_CORE +perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1 OPTIMIZE="$RPM_OPT_FLAGS" +%{make_build} %install -make pure_install DESTDIR=$RPM_BUILD_ROOT +%{make_install} find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -delete %{_fixperms} $RPM_BUILD_ROOT/* @@ -62,6 +59,9 @@ make test %{_mandir}/man3/* %changelog +* Tue Feb 19 2019 Petr Pisar - 1.9760-1 +- 1.9760 bump + * Sat Feb 02 2019 Fedora Release Engineering - 1.9759-418 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild diff --git a/sources b/sources index 5875c8a..6bf5f4d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (Time-HiRes-1.9758.tar.gz) = 1328025c816cff8b53bd310771ffd2bc63f8ef0204cf2d871ad600f10a8afc975f824e39e4d954b48f211ce08564f002524fbaf03450c4ed9d88a4d154c80369 +SHA512 (Time-HiRes-1.9760.tar.gz) = f355566740cb5d4dd533da2cb9209d955e5b7f6ed9e67c7fa37ca8336bacffe32d037700104915580c5a00534b5f2ff502542c4c4114e5f67e51e46856128b2a