This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Time-HiRes to CPAN version 1.9750
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Tue, 26 Dec 2017 13:44:59 +0000 (13:44 +0000)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Tue, 26 Dec 2017 13:44:59 +0000 (13:44 +0000)
  [DELTA]

1.9750 [2017-12-22]
 - update META.yml and META.json for XSLoader instead of DynaLoader
   [rt.cpan.org #123933]

1.9749 [2017-12-21]
 - CPAN release
 - Quieten Time-HiRes test noise: blead 0f009486
 - Switch some core modules to XSLoader: blead b9a5a78f [rt.cpan.org #129789]
 - disable a flapping test for CI: blead cd2a978d
 - Avoid newGVgen in blead-upstream modules: blead 732d3893
 - Declaration after statement in typemap: blead d269f586
 - semicolon-friendly diagnostic control: blead 7347ee54
 - in macOS (OS X) check properly in runtime whether futimens()
   and utimensat() are available

1.9748 [2017-12-16]
 - bleadperl only
 - semicolon-friendly diagnostic control: blead 7347ee54

1.9747 [2017-09-13]
 - bleadperl only
 - Switch some core modules to XSLoader: blead b9a5a78f [rt.cpan.org #129789]

Porting/Maintainers.pl
dist/Time-HiRes/Changes
dist/Time-HiRes/HiRes.pm
dist/Time-HiRes/HiRes.xs
dist/Time-HiRes/Makefile.PL

index 3d748c8..a1ba2ea 100755 (executable)
@@ -1199,7 +1199,7 @@ use File::Glob qw(:case);
     },
 
     'Time::HiRes' => {
-        'DISTRIBUTION' => 'JHI/Time-HiRes-1.9746.tar.gz',
+        'DISTRIBUTION' => 'JHI/Time-HiRes-1.9750.tar.gz',
         'FILES'        => q[dist/Time-HiRes],
     },
 
index 2954d8b..5328dc0 100644 (file)
@@ -1,7 +1,27 @@
 Revision history for the Perl extension Time::HiRes.
 
-1.9747 [???]
- - Switch to XSLoader from Dynaloader
+1.9750 [2017-12-22]
+ - update META.yml and META.json for XSLoader instead of DynaLoader
+   [rt.cpan.org #123933]
+
+1.9749 [2017-12-21]
+ - CPAN release
+ - Quieten Time-HiRes test noise: blead 0f009486
+ - Switch some core modules to XSLoader: blead b9a5a78f [rt.cpan.org #129789]
+ - disable a flapping test for CI: blead cd2a978d
+ - Avoid newGVgen in blead-upstream modules: blead 732d3893
+ - Declaration after statement in typemap: blead d269f586
+ - semicolon-friendly diagnostic control: blead 7347ee54
+ - in macOS (OS X) check properly in runtime whether futimens()
+   and utimensat() are available
+
+1.9748 [2017-12-16]
+ - bleadperl only
+ - semicolon-friendly diagnostic control: blead 7347ee54
+
+1.9747 [2017-09-13]
+ - bleadperl only
+ - Switch some core modules to XSLoader: blead b9a5a78f [rt.cpan.org #129789]
 
 1.9746 [2017-08-17]
  - Unreliable t/usleep.t and t/utime.t tests [rt.cpan.org #122819]
index 8a2dab5..8f01b5e 100644 (file)
@@ -49,7 +49,7 @@ our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval
                 stat lstat utime
                );
 
-our $VERSION = '1.9748';
+our $VERSION = '1.9750';
 our $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
index 46a2254..34c9db5 100644 (file)
@@ -922,6 +922,40 @@ static int th_clock_nanosleep(clockid_t clock_id, int flags,
 
 #endif /* PERL_DARWIN */
 
+/* The macOS headers warn about using certain interfaces in
+ * OS-release-ignorant manner, for example:
+ *
+ * warning: 'futimens' is only available on macOS 10.13 or newer
+ *       [-Wunguarded-availability-new]
+ *
+ * (ditto for utimensat)
+ *
+ * There is clang __builtin_available() *runtime* check for this.
+ * The gotchas are that neither __builtin_available() nor __has_builtin()
+ * are always available.
+ */
+#ifndef __has_builtin
+# define __has_builtin(x) 0 /* non-clang */
+#endif
+#ifdef HAS_FUTIMENS
+# if defined(PERL_DARWIN) && __has_builtin(__builtin_available)
+#  define FUTIMENS_AVAILABLE __builtin_available(macOS 10.13, *)
+# else
+#  define FUTIMENS_AVAILABLE 1
+# endif
+#else
+# define FUTIMENS_AVAILABLE 0
+#endif
+#ifdef HAS_UTIMENSAT
+# ifdef PERL_DARWIN
+#  define UTIMENSAT_AVAILABLE __builtin_available(macOS 10.13, *)
+# else
+#  define UTIMENSAT_AVAILABLE 1
+# endif
+#else
+# define UTIMENSAT_AVAILABLE 0
+#endif
+
 #include "const-c.inc"
 
 #if (defined(TIME_HIRES_NANOSLEEP)) || \
@@ -1419,25 +1453,36 @@ PROTOTYPE: $$@
 
                if (SvROK(file) && GvIO(SvRV(file)) && IoIFP(sv_2io(SvRV(file)))) {
                        int fd =  PerlIO_fileno(IoIFP(sv_2io(file)));
-                       if (fd < 0)
+                       if (fd < 0) {
                                SETERRNO(EBADF,RMS_IFI);
-                       else 
+                       } else {
 #ifdef HAS_FUTIMENS
-                       if (futimens(fd, utbufp) == 0)
-                               tot++;
-#else  /* HAS_FUTIMES */
-                               croak("futimens unimplemented in this platform");
-#endif /* HAS_FUTIMES */
+                          if (FUTIMENS_AVAILABLE) {
+                            if (futimens(fd, utbufp) == 0) {
+                              tot++;
+                            }
+                          } else {
+                            croak("futimens unimplemented in this platform");
+                          }
+#else  /* HAS_FUTIMENS */
+                         croak("futimens unimplemented in this platform");
+#endif /* HAS_FUTIMENS */
+                        }
                }
                else {
 #ifdef HAS_UTIMENSAT
-                       STRLEN len;
-                       char * name = SvPV(file, len);
-                       if (IS_SAFE_PATHNAME(name, len, "utime") &&
-                           utimensat(AT_FDCWD, name, utbufp, 0) == 0)
-                               tot++;
+                 if (UTIMENSAT_AVAILABLE) {
+                    STRLEN len;
+                    char * name = SvPV(file, len);
+                    if (IS_SAFE_PATHNAME(name, len, "utime") &&
+                        utimensat(AT_FDCWD, name, utbufp, 0) == 0) {
+                      tot++;
+                    }
+                  } else {
+                    croak("futimens unimplemented in this platform");
+                  }
 #else  /* HAS_UTIMENSAT */
-                       croak("utimensat unimplemented in this platform");
+                 croak("utimensat unimplemented in this platform");
 #endif /* HAS_UTIMENSAT */
                }
        } /* while items */
index e7ce924..02c193e 100644 (file)
@@ -913,10 +913,10 @@ sub doMakefile {
        'PREREQ_PM' => {
            'Carp' => 0,
            'Config' => 0,
-           'DynaLoader' => 0,
            'Exporter' => 0,
            'ExtUtils::MakeMaker' => 0,
            'Test::More' => 0,
+           'XSLoader' => 0,
            'strict' => 0,
        },
        'dist'      => {