Hello community, here is the log from the commit of package perl-IO-Pager for openSUSE:Factory checked in at 2019-09-09 12:36:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-IO-Pager (Old) and /work/SRC/openSUSE:Factory/.perl-IO-Pager.new.7948 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-IO-Pager" Mon Sep 9 12:36:25 2019 rev:24 rq:729256 version:0.42 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-IO-Pager/perl-IO-Pager.changes 2018-11-12 09:41:12.337207847 +0100 +++ /work/SRC/openSUSE:Factory/.perl-IO-Pager.new.7948/perl-IO-Pager.changes 2019-09-09 12:36:29.933461385 +0200 @@ -1,0 +2,17 @@ +Fri Sep 6 08:10:18 UTC 2019 - <[email protected]> + +- updated to 0.42 + see /usr/share/doc/packages/perl-IO-Pager/CHANGES + + 0.42 Thu Sep 05 2019 + Disambiguate tee open. RT#127551 + + Stringify version. RT#127342 + + Add bignum dependency RT#130319 + + Add support for eventual Term::Pager v1.5 + + Update META files. + +------------------------------------------------------------------- Old: ---- IO-Pager-0.40.tgz New: ---- IO-Pager-0.42.tgz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-IO-Pager.spec ++++++ --- /var/tmp/diff_new_pack.yzz1cA/_old 2019-09-09 12:36:30.469461297 +0200 +++ /var/tmp/diff_new_pack.yzz1cA/_new 2019-09-09 12:36:30.473461297 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-IO-Pager # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,11 +17,11 @@ Name: perl-IO-Pager -Version: 0.40 +Version: 0.42 Release: 0 %define cpan_name IO-Pager Summary: Select a pager and pipe text to it if destination is a TTY -License: GPL-1.0-or-later OR Artistic-1.0 +License: Artistic-1.0 OR GPL-1.0-or-later Group: Development/Libraries/Perl Url: https://metacpan.org/release/%{cpan_name} Source0: https://cpan.metacpan.org/authors/id/J/JP/JPIERCE/%{cpan_name}-%{version}.tgz @@ -47,7 +47,7 @@ appropriate subclass for implementation specific details. %prep -%setup -q -n %{cpan_name}-0.4 +%setup -q -n %{cpan_name}-%{version} %build perl Makefile.PL INSTALLDIRS=vendor ++++++ IO-Pager-0.40.tgz -> IO-Pager-0.42.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/.travis.yml new/IO-Pager-0.42/.travis.yml --- old/IO-Pager-0.4/.travis.yml 2015-12-27 19:59:24.000000000 +0100 +++ new/IO-Pager-0.42/.travis.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,11 +0,0 @@ -sudo: false -language: perl -perl: -- "5.22" -- "5.20" -- "5.18" -- "5.16" -- "5.14" -- "5.12" -- "5.10" -- "5.8" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/CHANGES new/IO-Pager-0.42/CHANGES --- old/IO-Pager-0.4/CHANGES 2018-10-11 04:49:52.000000000 +0200 +++ new/IO-Pager-0.42/CHANGES 2019-09-06 02:20:52.000000000 +0200 @@ -1,5 +1,16 @@ Revision history for Perl extension IO::Pager. +0.42 Thu Sep 05 2019 + Disambiguate tee open. RT#127551 + + Stringify version. RT#127342 + + Add bignum dependency RT#130319 + + Add support for eventual Term::Pager v1.5 + + Update META files. + 0.40 Mon Oct 08 2018 And a tee(1)-like feature via binmode(). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/MANIFEST new/IO-Pager-0.42/MANIFEST --- old/IO-Pager-0.4/MANIFEST 2018-10-08 21:49:45.000000000 +0200 +++ new/IO-Pager-0.42/MANIFEST 2019-09-06 02:21:26.000000000 +0200 @@ -4,12 +4,12 @@ lib/IO/Pager.pm lib/IO/Pager/Buffered.pm lib/IO/Pager/Page.pm +lib/IO/Pager/Perl.pm lib/IO/Pager/Unbuffered.pm README TODO .proverc -.travis.yml -t.pl +test.pl t/01-load.t t/02-which.t t/02-which_interactive.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/META.json new/IO-Pager-0.42/META.json --- old/IO-Pager-0.4/META.json 2018-10-11 04:49:57.000000000 +0200 +++ new/IO-Pager-0.42/META.json 2019-09-06 02:22:00.000000000 +0200 @@ -26,7 +26,8 @@ "Env" : "0", "Exporter" : "0", "File::Temp" : "0", - "Test::More" : "0.88" + "Test::More" : "0.88", + "bignum" : "0" } }, "configure" : { @@ -49,6 +50,12 @@ } }, "release_status" : "stable", - "version" : 0.4, + "version" : "0.42", + "x_runtime" : { + "recommends" : { + "Term::Pager" : 1.5, + "Term::ReadKey" : 0 + } + }, "x_serialization_backend" : "JSON::PP version 2.97001" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/META.yml new/IO-Pager-0.42/META.yml --- old/IO-Pager-0.4/META.yml 2018-10-11 04:49:56.000000000 +0200 +++ new/IO-Pager-0.42/META.yml 2019-09-06 02:22:00.000000000 +0200 @@ -8,6 +8,7 @@ Exporter: '0' File::Temp: '0' Test::More: '0.88' + bignum: '0' configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 1 @@ -31,5 +32,9 @@ Symbol: '0' Tie::Handle: '0' base: '0' -version: 0.4 +version: '0.42' +x_runtime: + recommends: + Term::Pager: 1.5 + Term::ReadKey: 0 x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/Makefile.PL new/IO-Pager-0.42/Makefile.PL --- old/IO-Pager-0.4/Makefile.PL 2016-03-01 04:23:21.000000000 +0100 +++ new/IO-Pager-0.42/Makefile.PL 2019-09-06 02:18:47.000000000 +0200 @@ -10,6 +10,7 @@ 'Env' => 0, 'Exporter' => 0, 'File::Temp' => 0, + 'bignum' => 0, }, 'PREREQ_PM' => { 'base' => 0, @@ -22,6 +23,15 @@ 'Symbol' => 0, 'Tie::Handle' => 0, }, + META_MERGE => { + "meta-spec" => { version => 2 }, + runtime => { + recommends => { + 'Term::Pager' => 1.5, + 'Term::ReadKey' => 0, + }, + }, + }, ($] >= 5.005 ? # Add these new keywords supported since 5.005 ( ABSTRACT_FROM => 'lib/IO/Pager.pm', # retrieve abstract from module diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/TODO new/IO-Pager-0.42/TODO --- old/IO-Pager-0.4/TODO 2018-10-10 05:35:13.000000000 +0200 +++ new/IO-Pager-0.42/TODO 2018-10-17 02:21:58.000000000 +0200 @@ -1,11 +1,22 @@ Important things here and in code flagged with XXX 0.40 - Verify all sample code works, esp. STDOUT + Push previous versions to github - Fix STDOUT?! Need tied_fh (store as dumped field for later eval?) - Dupiness? + Functional fork for Term::Pager + working interface + continue after quit + extensibility (add_func) + Test functionality w/|w/o Term::ReadKey + As expicit and implicit PAGER + + make pipes + make pager object + parent + event loop/interfact + child + worker 0.35 Odd failure of test 11 under tcsh and win-bash because diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/lib/IO/Pager/Buffered.pm new/IO-Pager-0.42/lib/IO/Pager/Buffered.pm --- old/IO-Pager-0.4/lib/IO/Pager/Buffered.pm 2018-10-11 04:44:45.000000000 +0200 +++ new/IO-Pager-0.42/lib/IO/Pager/Buffered.pm 2018-10-13 18:31:49.000000000 +0200 @@ -1,5 +1,5 @@ package IO::Pager::Buffered; -our $VERSION = 0.40; +our $VERSION = 0.42; use strict; use base qw( IO::Pager ); @@ -91,14 +91,14 @@ { # You can also use scalar filehandles... my $token = IO::Pager::Buffered::open($FH) or warn($!); - print $FH "No globs or barewords for us thanks!\n"; + print $FH "No globs or barewords for us thanks!\n" while 1; } { # ...or an object interface my $token = new IO::Pager::Buffered; - $token->print("OO shiny...\n"); + $token->print("OO shiny...\n") while 1; } =head1 DESCRIPTION @@ -162,6 +162,19 @@ I<$,> is used see L<perlvar>. +You probably want to do something with SIGPIPE eg; + + eval { + local $SIG{PIPE} = sub { die }; + local $STDOUT = IO::Pager::open(*STDOUT); + + while (1) { + # Do something + } + } + + # Do something else + =head1 SEE ALSO L<IO::Pager>, L<IO::Pager::Unbuffered>, L<IO::Pager::Page>, @@ -176,7 +189,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (C) 2003-2012 Jerrad Pierce +Copyright (C) 2003-2018 Jerrad Pierce =over diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/lib/IO/Pager/Perl.pm new/IO-Pager-0.42/lib/IO/Pager/Perl.pm --- old/IO-Pager-0.4/lib/IO/Pager/Perl.pm 1970-01-01 01:00:00.000000000 +0100 +++ new/IO-Pager-0.42/lib/IO/Pager/Perl.pm 2018-10-18 06:02:56.000000000 +0200 @@ -0,0 +1,207 @@ +package IO::Pager::Perl; +our $VERSION = 0.42; + +use strict; +use base qw( IO::Pager ); +use SelectSaver; +use Term::Pager 1.5; + +our %CFG; + +sub new(;$) { # [FH], procedural + my($class, $tied_fh); + + eval { ($class, $tied_fh) = &IO::Pager::_init }; + #We're not on a TTY so... + if( defined($class) && $class eq '0' or $@ =~ '!TTY' ){ + #...leave filehandle alone if procedural + return $_[1] if defined($_[2]) && $_[2] eq 'procedural'; + + #...fall back to IO::Handle for transparent OO programming + eval "require IO::Handle" or die $@; + return IO::Handle->new_from_fd(fileno($_[1]), 'w'); + } + $!=$@, return 0 if $@ =~ 'pipe'; + + my $self = tie *$tied_fh, $class, $tied_fh or return 0; + use Data::Dumper; print Dumper 'TIED: ', $$, $self; + CORE::print {$self->{real_fh}} "BOO!"; + { # Truly unbuffered + my $saver = SelectSaver->new($self->{real_fh}); + $|=1; + } + return $self; +} + +#Punt to base, preserving FH ($_[0]) for pass by reference to gensym +sub open(;$) { # [FH] + &new('IO::Pager::procedural', $_[0], 'procedural'); +} + +sub PRINT { + my ($self, @args) = @_; + CORE::print {$self->{LOG}} @args if exists($self->{LOG}); + CORE::syswrite({$self->{real_fh}}, + join('', @args) ) or die "Could not print to PAGER: $!\n"; +} + +sub _pipe_to_fork ($) { + pipe(my $READ, my $WRITE=shift) or die; + { # Unbuffer! + my $saver = SelectSaver->new($WRITE); + $|=1; + } + warn "$READ $WRITE"; #XXX + my $pid = fork(); + die "fork() failed: $!" unless defined $pid; + + #Parent is reader to maintain STDIN/STDOUT + if( $pid ){ + warn "Parent: $$, Child: $pid"; + close $WRITE; + my $tmp; + sysread($READ, $tmp, 1024); + warn 'WTF? ', $tmp; + open(STDIN, "<&=" . fileno($READ)) or die $!; } + else{ + syswrite($WRITE, "MUAHAHAHA\n"); #XXX + close $READ; } + $pid; +} + +sub TIEHANDLE { + my ($class, $tied_fh) = @_; + my($real_fh, $child); + + #Parent is interface, child does work + if( $child = _pipe_to_fork( $real_fh=Symbol::gensym() ) ){ + my $t = Term::Pager->new(); + + #Customize interfaces + foreach my $key ( keys(%CFG) ){ + $t->add_func($key, $CFG{$key}) if $key; + } + + while( eval{ $t->more(RT=>.05) } ){ + my $tmp; + $t->add_text($tmp) if sysread($real_fh, $tmp, 1024); + } + #XXX exit or die?! SIGPIPE?! + } + else{ + my $X = bless { + 'real_fh' => $real_fh, + 'tied_fh' => "$tied_fh", #Avoid self-reference leak + 'child' => $child, #XXX Actually, we want the parent?! + 'pager' => 'Term::Pager', + }, $class; + use Data::Dumper; warn Dumper ['BLESSED: ', $$, $X]; + return $X; + } +} + +1; + +__END__ + +=pod + +=head1 NAME + +IO::Pager::Perl - Pipe output to PAGER if destination is a TTY with Perl + +=head1 SYNOPSIS + + #Required if you want unbuffered output + use Term::ReadKey; + + { + #Configure extra shortcuts, add an embedded shell + %IO::Pager::Perl::CFG = ( '!' => sub{ "REPL implementation" } ); + + #Can be instantiated functionally or OO, same as other sub-classes. + my $token = new IO::Pager::Perl; + + $token->print("Pure perl goodness...\n") while 1; + } + +=head1 DESCRIPTION + +IO::Pager::Perl is a simple, extensible, perl-based pager. + +If you want behavior similar to IO::Pager::Buffer do not load Term::ReadKey, +and output will be buffered between keypresses. + +See L<IO::Pager> for method details. + +=head1 CONFIGURATION + +I<%IO::Pager::Perl::CFG> elements are passed to Term::Pager's add_func method. +The hash keys are single key shortcut definitions, and values a callback to be +invoked when said key is pressed e.g; + + #Forego default left-right scrolling for more less-like seeking + %IO::Pager::Perl::CFG = ( + '<' => \&Term::Pager::to_top, #not move_left + '>' => \&Term::Pager::to_bottom #not move_right + ); + +Because IO::Pager::Perl forks, the callback functions must exist prior to +instantiation of the IO::Pager object to work properly. + +=head1 METHODS + +All methods are inherited from IO::Pager; except for instantiation and print. + +=head1 CAVEATS + +You probably want to do something with SIGPIPE eg; + + eval { + local $SIG{PIPE} = sub { die }; + local $STDOUT = IO::Pager::open(*STDOUT); + + while (1) { + # Do something + } + } + + # Do something else + +=head1 SEE ALSO + +L<IO::Pager>, L<Term::Pager>, L<IO::Pager::Buffered>, L<IO::Pager::Page>, + +=head1 AUTHOR + +Jerrad Pierce <[email protected]> + +Florent Angly <[email protected]> + +This module was inspired by Monte Mitzelfelt's IO::Page 0.02 + +Significant proddage provided by Tye McQueen. + +=head1 COPYRIGHT AND LICENSE + +Copyright (C) 2003-2018 Jerrad Pierce + +=over + +=item * Thou shalt not claim ownership of unmodified materials. + +=item * Thou shalt not claim whole ownership of modified materials. + +=item * Thou shalt grant the indemnity of the provider of materials. + +=item * Thou shalt use and dispense freely without other restrictions. + +=back + +Or, if you prefer: + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself, either Perl version 5.0 or, +at your option, any later version of Perl 5 you may have available. + +=cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/lib/IO/Pager/Unbuffered.pm new/IO-Pager-0.42/lib/IO/Pager/Unbuffered.pm --- old/IO-Pager-0.4/lib/IO/Pager/Unbuffered.pm 2018-10-11 04:44:36.000000000 +0200 +++ new/IO-Pager-0.42/lib/IO/Pager/Unbuffered.pm 2018-10-13 19:29:53.000000000 +0200 @@ -1,5 +1,5 @@ package IO::Pager::Unbuffered; -our $VERSION = 0.31; +our $VERSION = 0.42; use strict; use base qw( IO::Pager ); @@ -60,14 +60,14 @@ { # You can also use scalar filehandles... my $token = IO::Pager::Unbuffered::open($FH) or warn($!); - print $FH "No globs or barewords for us thanks!\n"; + print $FH "No globs or barewords for us thanks!\n" while 1; } { # ...or an object interface my $token = new IO::Pager::Unbuffered; - $token->print("OO shiny...\n"); + $token->print("OO shiny...\n") while 1; } =head1 DESCRIPTION @@ -87,7 +87,7 @@ You probably want to do something with SIGPIPE eg; eval { - $SIG{PIPE} = sub { die }; + local $SIG{PIPE} = sub { die }; local $STDOUT = IO::Pager::open(*STDOUT); while (1) { @@ -113,7 +113,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (C) 2003-2012 Jerrad Pierce +Copyright (C) 2003-2018 Jerrad Pierce =over diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/lib/IO/Pager.pm new/IO-Pager-0.42/lib/IO/Pager.pm --- old/IO-Pager-0.4/lib/IO/Pager.pm 2018-10-11 04:44:11.000000000 +0200 +++ new/IO-Pager-0.42/lib/IO/Pager.pm 2018-11-03 03:20:48.000000000 +0100 @@ -1,5 +1,5 @@ package IO::Pager; -our $VERSION = 0.40; #Untouched since 0.40 +our $VERSION = "0.42"; #Untouched since 0.42 use 5.008; #At least, for decent perlio, and other modernisms use strict; @@ -17,6 +17,9 @@ # Return the name (or path) of a pager that IO::Pager can use my $io_pager; + #Permit explicit use of pure perl pager + return $_[0] if $_[0] eq 'Term::Pager'; + # Use File::Which if available (strongly recommended) my $which = eval { require File::Which }; @@ -73,6 +76,12 @@ #Should have this as first block for clarity, but not with its use of a sub :-/ BEGIN { # Set the $ENV{PAGER} to something reasonable $PAGER = find_pager(); + + #Do we have modern Term::Pager? If so, use it instead of hopeful more + if( $PAGER eq 'more' ){ + eval "use Term::Pager"; + $PAGER = 'Term::Pager' unless $@; + } } @@ -177,7 +186,7 @@ sub BINMODE { my ($self, $layer) = @_; if( $layer =~ /^:LOG\((>{0,2})(.*)\)$/ ){ - open($self->{LOG}, $1||'>', $2||"$$.log") or die $!; + CORE::open($self->{LOG}, $1||'>', $2||"$$.log") or die $!; } else{ CORE::binmode($self->{real_fh}, $layer||':raw'); @@ -291,7 +300,7 @@ my $object = new IO::Pager::Unbuffered *STDOUT; - $object->print("OO shiny...\n"); + $object->print("OO shiny...\n") while 1; print "Some other text sent to STODUT, perhaps from a foreign routine." # $object passes out of scope and filehandle is automagically closed @@ -320,7 +329,7 @@ { # You can also use scalar filehandles... my $token = IO::Pager::open(my $FH) or warn($!); XXX - print $FH "No globs or barewords for us thanks!\n"; + print $FH "No globs or barewords for us thanks!\n" while 1; } @@ -527,19 +536,39 @@ If File::Which is available, use the first pager possible amongst C<less>, C<most>, C<w3m>, C<lv>, C<pg> and L<more>. -=item 4. more +=item 4. Term::Pager + +If instantiating an IO::Pager object and Term::Pager version 1.5 or greater is +available, L<IO::Pager::Perl> will be used. You may also set $ENV{PAGER} to +Term::Pager to select this extensible, pure perl pager for display. + +=item 5. more Set I<PAGER> to C<more>, and cross our fingers. =back -Steps 1, 3 and 4 rely upon the I<PATH> environment variable. +Steps 1, 3 and 5 rely upon the I<PATH> environment variable. -=head1 SEE ALSO +=head1 CAVEATS + +You probably want to do something with SIGPIPE eg; -L<IO::Pager::Buffered>, L<IO::Pager::Unbuffered>, L<IO::Pager::Page>, + eval { + local $SIG{PIPE} = sub { die }; + local $STDOUT = IO::Pager::open(*STDOUT); + + while (1) { + # Do something + } + } + + # Do something else + +=head1 SEE ALSO -L<IO::Page>, L<Meta::Tool::Less> +L<IO::Pager::Buffered>, L<IO::Pager::Unbuffered>, L<I::Pager::Perl>, +L<IO::Pager::Page>, L<IO::Page>, L<Meta::Tool::Less> =head1 AUTHOR @@ -551,7 +580,7 @@ =head1 COPYRIGHT AND LICENSE -Copyright (C) 2003-2015 Jerrad Pierce +Copyright (C) 2003-2018 Jerrad Pierce =over diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IO-Pager-0.4/test.pl new/IO-Pager-0.42/test.pl --- old/IO-Pager-0.4/test.pl 1970-01-01 01:00:00.000000000 +0100 +++ new/IO-Pager-0.42/test.pl 2017-05-13 18:41:19.000000000 +0200 @@ -0,0 +1,13 @@ +use strict; +use warnings; + +exit 0 unless scalar(@ARGV) && ($ARGV[0] eq 'interactive'); + +undef($ENV{LESS}); + +my @fail; +for (sort glob "t/*interactive.t") { + print "Running $_...\n"; + push @fail, $_ if system($^X, '-Mblib', $_); +} +print scalar @fail ? "\nSome tests failed: @fail\n" : "\nSuccess!\n";
