Changeset 1647 in ProjectBuilder for devel/pb-modules/lib/ProjectBuilder/Base.pm


Ignore:
Timestamp:
Sep 27, 2012, 2:28:28 PM (12 years ago)
Author:
Bruno Cornec
Message:
  • Render File::Temp and Pod::Usage optional, in order to support partly old perl versions (5.00.5 at least) such as on RH6.2, so that the Base.pm module can be used in such a VE/VM
File:
1 edited

Legend:

Unmodified
Added
Removed
  • devel/pb-modules/lib/ProjectBuilder/Base.pm

    r1604 r1647  
    1818use Cwd;
    1919use File::Path;
    20 use File::Temp qw(tempdir);
    2120use Data::Dumper;
    2221use Time::localtime qw(localtime);
    23 use Pod::Usage;
    2422use English;
    2523use POSIX qw(locale_h);
     
    386384$filehandle = \*STDOUT if ($exit_status == 0);
    387385
    388 pod2usage(  -message => $pbsynmsg,
     386eval {
     387    require Pod::Usage;
     388    Pod::Usage->import();
     389};
     390if ($@) {
     391    # No Pod::Usage found not printing usage. Ole perl only
     392} else {
     393    pod2usage(  -message => $pbsynmsg,
    389394            -exitval => $exit_status,
    390395            -verbose => $verbose_level,
    391396            -output  => $filehandle );
    392397}
     398}
    393399
    394400=item B<pb_temp_init>
     
    403409    $ENV{'TMPDIR'}="/tmp";
    404410}
    405 $ENV{'PBTMP'} = tempdir( "pb.XXXXXXXXXX", DIR => $ENV{'TMPDIR'}, CLEANUP => 1 );
     411
     412# Makes this function compatible with perl 5.005x
     413eval {
     414    require File::Temp;
     415    File::Temp->import("tempdir");
     416};
     417if ($@) {
     418    # File::Temp not found, harcoding stuff
     419    # Inspired by http://cpansearch.perl.org/src/TGUMMELS/File-MkTemp-1.0.6/File/MkTemp.pm
     420    # Copyright 1999|2000 Travis Gummels.  All rights reserved. 
     421    # This may be used and modified however you want.
     422    my $template = "pb.XXXXXXXXXX";
     423    my @template = split //, $template;
     424    my @letters = split(//,"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
     425    for (my $i = $#template; $i >= 0 && ($template[$i] eq 'X'); $i--){
     426        $template[$i] = $letters[int(rand 52)];
     427    }
     428    undef $template;
     429    $template = pack "a" x @template, @template;
     430    pb_mkdir_p("$ENV{'TMPDIR'}/$template");
     431} else {
     432    $ENV{'PBTMP'} = tempdir( "pb.XXXXXXXXXX", DIR => $ENV{'TMPDIR'}, CLEANUP => 1 );
     433}
    406434}
    407435
Note: See TracChangeset for help on using the changeset viewer.