Ticket #94: #94-pod2man.patch

File #94-pod2man.patch, 3.5 KB (added by rurban, 5 years ago)
  • (a) /dev/null vs. (b) parrot-svn/config/auto/pod2man.pm

    https://trac.parrot.org/parrot/ticket/94
    
    make install-docs needs pod2man.
    Analog to perldoc we check for the path and the version of pod2man
    
    a b  
     1# Copyright (C) 2008, The Perl Foundation. 
     2# $Id: pod2man.pm 30367 2008-08-20 02:21:59Z rurban $ 
     3 
     4=head1 NAME 
     5 
     6config/auto/pod2man - Check whether pod2man works 
     7 
     8=head1 DESCRIPTION 
     9 
     10Determines whether F<pod2man> exists on the system and, if so, which 
     11version of F<pod2man> it is, analog to F<perldoc>. 
     12 
     13More specifically, we look for the F<pod2man> associated with the 
     14instance of F<perl> with which F<Configure.pl> was invoked. 
     15 
     16=cut 
     17 
     18package auto::pod2man; 
     19 
     20use strict; 
     21use warnings; 
     22 
     23use File::Temp qw (tempfile ); 
     24use base qw(Parrot::Configure::Step); 
     25use Parrot::Configure::Utils ':auto'; 
     26 
     27 
     28sub _init { 
     29    my $self = shift; 
     30    my %data; 
     31    $data{description} = q{Is pod2man installed}; 
     32    $data{result}      = q{}; 
     33    return \%data; 
     34} 
     35 
     36sub runstep { 
     37    my ( $self, $conf ) = @_; 
     38 
     39    my $cmd = $conf->data->get_p5('scriptdirexp') . q{/pod2man}; 
     40    my ( $fh, $filename ) = tempfile( UNLINK => 1 ); 
     41    my $content = capture_output("$cmd -ud $filename pod2man") || undef; 
     42 
     43    return 1 unless defined( $self->_initial_content_check($conf, $content) ); 
     44 
     45    my $version = $self->_analyze_pod2man($cmd, $filename, $content); 
     46 
     47    _handle_version($conf, $version, $cmd); 
     48 
     49    return 1; 
     50} 
     51 
     52sub _initial_content_check { 
     53    my $self = shift; 
     54    my ($conf, $content) = @_; 
     55    if (! defined $content) { 
     56        $conf->data->set( 
     57            has_pod2man => 0, 
     58            new_pod2man => 0, 
     59        ); 
     60        $self->set_result('no'); 
     61        return; 
     62    } 
     63    else { 
     64        return 1; 
     65    } 
     66} 
     67 
     68sub _analyze_pod2man { 
     69    my $self = shift; 
     70    my ($cmd, $tmpfile, $content) = @_; 
     71    my $version; 
     72    if ( $content =~ m/^Unknown option:/ ) { 
     73        $content = capture_output("$cmd pod2man") || ''; 
     74        if ($content =~ m/pod2man/) { 
     75            $version = $self->_handle_old_pod2man(); 
     76        } 
     77        else { 
     78            $version = $self->_handle_no_pod2man(); 
     79        } 
     80    } 
     81    elsif ( open my $FH, '<', $tmpfile ) { 
     82        local $/; 
     83        $content = <$FH>; 
     84        close $FH; 
     85        $version = 2; 
     86        $self->set_result('yes'); 
     87    } 
     88    else { 
     89        $version = $self->_handle_no_pod2man(); 
     90    } 
     91    unlink $tmpfile; 
     92    return $version; 
     93} 
     94 
     95sub _handle_old_pod2man { 
     96    my $self = shift; 
     97    $self->set_result('yes, old version'); 
     98    return 1; 
     99} 
     100 
     101sub _handle_no_pod2man { 
     102    my $self = shift; 
     103    $self->set_result('failed'); 
     104    return 0; 
     105} 
     106 
     107sub _handle_version { 
     108    my ($conf, $version, $cmd) = @_; 
     109    $conf->data->set( 
     110        has_pod2man => $version != 0 ? 1 : 0, 
     111        new_pod2man => $version == 2 ? 1 : 0 
     112    ); 
     113 
     114    $conf->data->set( pod2man => $cmd ) if $version; 
     115 
     116    return 1; 
     117} 
     118 
     1191; 
     120 
     121# Local Variables: 
     122#   mode: cperl 
     123#   cperl-indent-level: 4 
     124#   fill-column: 100 
     125# End: 
     126# vim: expandtab shiftwidth=4: 
  • lib/Parrot/Configure/Step/List.pm

    old new  
    6060    auto::gettext 
    6161    auto::snprintf 
    6262    auto::perldoc 
     63    auto::pod2man 
    6364    auto::ctags 
    6465    auto::revision 
    6566    auto::icu