Skip to content

[PATCH] Clean up Time::HiRes #17096

Description

@p5pRT

Migrated from rt.perl.org#134288 (status was 'pending release')

Searchable as RT134288$

Activity

  1. p5pRT commented on Jul 16, 2019

    @p5pRT
    Author

    From @xenu

    I have prepared a series of patches that clean up Time​::HiRes​:

    1. Normalize indentation
    2. Remove code for perls older than 5.6
    3. Remove the remains of MacOS classic support
    4. Remove workaround for an ancient Devel​::PPPort bug

    (there are more details in the commit messages)

    I have tested them without issues as far back as 5.6.1.

    The patches will be attached to the first reply to this ticket.

    perl # circumvent perlbug's spam filter

  2. p5pRT commented on Jul 16, 2019

    @p5pRT
    Author

    From @xenu

    On Tue, 16 Jul 2019, at 03​:06, Tomasz Konojacki (via RT) wrote​:

    # New Ticket Created by Tomasz Konojacki
    # Please include the string​: [perl #134288]
    # in the subject line of all future correspondence about this issue.
    # <URL​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134288 >

    I have prepared a series of patches that clean up Time​::HiRes​:

    1. Normalize indentation
    2. Remove code for perls older than 5.6
    3. Remove the remains of MacOS classic support
    4. Remove workaround for an ancient Devel​::PPPort bug

    (there are more details in the commit messages)

    I have tested them without issues as far back as 5.6.1.

    The patches will be attached to the first reply to this ticket.

    perl # circumvent perlbug's spam filter

    The patches are attached.

  3. p5pRT commented on Jul 16, 2019

    @p5pRT
    Author
  4. p5pRT commented on Jul 16, 2019

    @p5pRT
    Author

    From @xenu

    0002-Time-HiRes-remove-code-for-perls-older-than-5.6.patch
    From e532261d64915883129a9319aaf34011548d9c17 Mon Sep 17 00:00:00 2001
    From: Tomasz Konojacki <me@xenu.pl>
    Date: Mon, 15 Jul 2019 23:36:40 +0200
    Subject: [PATCH 2/4] Time::HiRes: remove code for perls older than 5.6
    
    Both Makefile.PL and HiRes.pm contain "use 5.006", so it was dead
    code anyway.
    
    [perl #134288]
    ---
     dist/Time-HiRes/HiRes.xs    | 13 +-------
     dist/Time-HiRes/Makefile.PL | 61 +++----------------------------------
     2 files changed, 6 insertions(+), 68 deletions(-)
    
    diff --git a/dist/Time-HiRes/HiRes.xs b/dist/Time-HiRes/HiRes.xs
    index de2061aae1..3cc70533e9 100644
    --- a/dist/Time-HiRes/HiRes.xs
    +++ b/dist/Time-HiRes/HiRes.xs
    @@ -229,15 +229,6 @@ _gettimeofday(pTHX_ struct timeval *tp, void *not_used)
     }
     #endif /* #if defined(WIN32) || defined(CYGWIN_WITH_W32API) */
     
    -#if defined(WIN32) && !defined(ATLEASTFIVEOHOHFIVE)
    -static unsigned int
    -sleep(unsigned int t)
    -{
    -    Sleep(t*1000);
    -    return 0;
    -}
    -#endif
    -
     #if !defined(HAS_GETTIMEOFDAY) && defined(VMS)
     #  define HAS_GETTIMEOFDAY
     
    @@ -1023,15 +1014,13 @@ BOOT:
     #ifdef MY_CXT_KEY
             MY_CXT_INIT;
     #endif
    -#ifdef ATLEASTFIVEOHOHFIVE
    -#  ifdef HAS_GETTIMEOFDAY
    +#ifdef HAS_GETTIMEOFDAY
             {
                 (void) hv_store(PL_modglobal, "Time::NVtime", 12,
                                 newSViv(PTR2IV(myNVtime)), 0);
                 (void) hv_store(PL_modglobal, "Time::U2time", 12,
                                 newSViv(PTR2IV(myU2time)), 0);
             }
    -#  endif
     #endif
     #if defined(PERL_DARWIN)
     #  if defined(USE_ITHREADS) && defined(PERL_DARWIN_MUTEX)
    diff --git a/dist/Time-HiRes/Makefile.PL b/dist/Time-HiRes/Makefile.PL
    index 0245eaa8d9..da5c1b53f5 100644
    --- a/dist/Time-HiRes/Makefile.PL
    +++ b/dist/Time-HiRes/Makefile.PL
    @@ -11,6 +11,8 @@ use Config;
     use ExtUtils::MakeMaker;
     use strict;
     
    +use File::Spec;
    +
     my $VERBOSE = $ENV{VERBOSE};
     my $DEFINE;
     my $LIBS = [];
    @@ -29,55 +31,6 @@ unless($ENV{PERL_CORE}) {
         $ENV{PERL_CORE} = 1 if grep { $_ eq 'PERL_CORE=1' } @ARGV;
     }
     
    -# Perls 5.002 and 5.003 did not have File::Spec, fake what we need.
    -
    -sub my_dirsep {
    -    $^O eq 'VMS' ? '.' :
    -        $^O =~ /mswin32|netware|djgpp/i ? '\\' :
    -            $^O eq 'MacOS' ? ':'
    -                : '/';
    -}
    -
    -sub my_catdir {
    -    shift;
    -    my $catdir = join(my_dirsep, @_);
    -    $^O eq 'VMS' ? "[$catdir]" : $catdir;
    -}
    -
    -sub my_catfile {
    -    shift;
    -    return join(my_dirsep, @_) unless $^O eq 'VMS';
    -    my $file = pop;
    -    return my_catdir (undef, @_) . $file;
    -}
    -
    -sub my_updir {
    -    shift;
    -    $^O eq 'VMS' ? "-" : "..";
    -}
    -
    -BEGIN {
    -    eval { require File::Spec };
    -    if ($@) {
    -        *File::Spec::catdir  = \&my_catdir;
    -        *File::Spec::updir   = \&my_updir;
    -        *File::Spec::catfile = \&my_catfile;
    -    }
    -}
    -
    -# Avoid 'used only once' warnings.
    -my $nop1 = *File::Spec::catdir;
    -my $nop2 = *File::Spec::updir;
    -my $nop3 = *File::Spec::catfile;
    -
    -# if you have 5.004_03 (and some slightly older versions?), xsubpp
    -# tries to generate line numbers in the C code generated from the .xs.
    -# unfortunately, it is a little buggy around #ifdef'd code.
    -# my choice is leave it in and have people with old perls complain
    -# about the "Usage" bug, or leave it out and be unable to compile myself
    -# without changing it, and then I'd always forget to change it before a
    -# release. Sorry, Edward :)
    -
     sub try_compile_and_link {
         my ($c, %args) = @_;
     
    @@ -889,17 +842,12 @@ EOM
     sub doMakefile {
         my @makefileopts = ();
     
    -    if ($] >= 5.005) {
    -        push (@makefileopts,
    -            'AUTHOR'    => 'Jarkko Hietaniemi <jhi@iki.fi>',
    -            'ABSTRACT_FROM' => 'HiRes.pm',
    -        );
    -        DEFINE('ATLEASTFIVEOHOHFIVE');
    -    }
         DEFINE('USE_PPPORT_H') unless $ENV{PERL_CORE};
     
         push (@makefileopts,
             'NAME'  => 'Time::HiRes',
    +        'AUTHOR'    => 'Jarkko Hietaniemi <jhi@iki.fi>',
    +        'ABSTRACT_FROM' => 'HiRes.pm',
             'VERSION_FROM' => 'HiRes.pm', # finds $VERSION
             'LIBS'  => $LIBS,   # e.g., '-lm'
             'DEFINE'        => $DEFINE,     # e.g., '-DHAS_SOMETHING'
    @@ -916,6 +864,7 @@ sub doMakefile {
                 'Test::More' => 0,
                 'XSLoader' => 0,
                 'strict' => 0,
    +            'File::Spec' => 0,
             },
             'dist'      => {
                 'CI'       => 'ci -l',
    -- 
    2.21.0.windows.1
    
    
  5. p5pRT commented on Jul 16, 2019

    @p5pRT
    Author

    From @xenu

    0003-Time-HiRes-remove-the-remains-of-MacOS-classic-suppo.patch
    From c48c881b42d48a297b92519326bbf408b984c18d Mon Sep 17 00:00:00 2001
    From: Tomasz Konojacki <me@xenu.pl>
    Date: Mon, 15 Jul 2019 23:44:08 +0200
    Subject: [PATCH 3/4] Time::HiRes: remove the remains of MacOS classic support
    
    Perl dropped MacOS classic support ages ago.
    
    [perl #134288]
    ---
     dist/Time-HiRes/HiRes.xs | 41 ----------------------------------------
     1 file changed, 41 deletions(-)
    
    diff --git a/dist/Time-HiRes/HiRes.xs b/dist/Time-HiRes/HiRes.xs
    index 3cc70533e9..beafd8ed33 100644
    --- a/dist/Time-HiRes/HiRes.xs
    +++ b/dist/Time-HiRes/HiRes.xs
    @@ -1277,47 +1277,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:
    -        struct timeval Tp;
    -        struct timezone Tz;
    -    PPCODE:
    -        int status;
    -        status = gettimeofday (&Tp, &Tz);
    -
    -        if (status == 0) {
    -            Tp.tv_sec += Tz.tz_minuteswest * 60;       /* adjust for TZ */
    -            if (GIMME == G_ARRAY) {
    -                EXTEND(sp, 2);
    -                /* 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);
    -                PUSHs(sv_2mortal(newSVnv(Tp.tv_sec + (Tp.tv_usec / NV_1E6))));
    -            }
    -        }
    -
    -NV
    -time()
    -    PREINIT:
    -        struct timeval Tp;
    -        struct timezone Tz;
    -    CODE:
    -        int status;
    -        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;
    -        }
    -    OUTPUT:
    -        RETVAL
     
    -#  else       /* MACOS_TRADITIONAL */
     void
     gettimeofday()
         PREINIT:
    @@ -1351,7 +1311,6 @@ time()
         OUTPUT:
             RETVAL
     
    -#  endif      /* MACOS_TRADITIONAL */
     #endif /* #ifdef HAS_GETTIMEOFDAY */
     
     #if defined(HAS_GETITIMER) && defined(HAS_SETITIMER)
    -- 
    2.21.0.windows.1
    
    
  6. p5pRT commented on Jul 16, 2019

    @p5pRT
    Author

    From @xenu

    0004-Time-HiRes-remove-workaround-for-an-ancient-Devel-PP.patch
    From ab8e58a720b959a47316b44a04911064815f0013 Mon Sep 17 00:00:00 2001
    From: Tomasz Konojacki <me@xenu.pl>
    Date: Tue, 16 Jul 2019 01:42:07 +0200
    Subject: [PATCH 4/4] Time::HiRes: remove workaround for an ancient
     Devel::PPPort bug
    
    It was fixed in Devel::PPPort 3.13_02.
    
    [perl #134288]
    ---
     dist/Time-HiRes/HiRes.xs | 7 -------
     1 file changed, 7 deletions(-)
    
    diff --git a/dist/Time-HiRes/HiRes.xs b/dist/Time-HiRes/HiRes.xs
    index beafd8ed33..836e0c598a 100644
    --- a/dist/Time-HiRes/HiRes.xs
    +++ b/dist/Time-HiRes/HiRes.xs
    @@ -57,13 +57,6 @@ extern "C" {
     #  define GCC_DIAG_RESTORE_STMT GCC_DIAG_RESTORE NOOP
     #endif
     
    -/* At least ppport.h 3.13 gets this wrong: one really cannot
    - * have NVgf as anything else than "g" under Perl 5.6.x. */
    -#if PERL_REVISION == 5 && PERL_VERSION == 6
    -#  undef NVgf
    -#  define NVgf "g"
    -#endif
    -
     #if PERL_VERSION_GE(5,7,3) && !PERL_VERSION_GE(5,10,1)
     #  undef SAVEOP
     #  define SAVEOP() SAVEVPTR(PL_op)
    -- 
    2.21.0.windows.1
    
    
  7. p5pRT commented on Aug 15, 2019

    @p5pRT
    Author

    From @tonycoz

    On Mon, 15 Jul 2019 18​:17​:01 -0700, me@​xenu.pl wrote​:

    On Tue, 16 Jul 2019, at 03​:06, Tomasz Konojacki (via RT) wrote​:

    # New Ticket Created by Tomasz Konojacki
    # Please include the string​: [perl #134288]
    # in the subject line of all future correspondence about this issue.
    # <URL​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=134288 >

    I have prepared a series of patches that clean up Time​::HiRes​:

    1. Normalize indentation
    2. Remove code for perls older than 5.6
    3. Remove the remains of MacOS classic support
    4. Remove workaround for an ancient Devel​::PPPort bug

    (there are more details in the commit messages)

    I have tested them without issues as far back as 5.6.1.

    The patches will be attached to the first reply to this ticket.

    perl # circumvent perlbug's spam filter

    The patches are attached.

    Thanks, applied as merge commit 1715411.

    Tony

  8. p5pRT commented on Aug 15, 2019

    @p5pRT
    Author

    The RT System itself - Status changed from 'new' to 'open'

  9. p5pRT commented on Aug 15, 2019

    @p5pRT
    Author

    @tonycoz - Status changed from 'open' to 'pending release'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions