AFS

 view release on metacpan or  search on metacpan

src/Makefile.PL  view on Meta::CPAN

$AFSPath =~ s\/$\\;
if ($AFSPath eq 'unknown') {
    warn "Most probabley you have not installed the AFS system libraries \n";
    if ($ENV{AUTOMATED_TESTING}) { exit 0; }
    die "Script terminated ...\n";
}

# determine the alpha_sys value
my $alpha_sys = 'unknown';
if ($ENV{AFS_SYSNAME}) {
    $alpha_sys = $ENV{AFS_SYSNAME};
}
elsif (-e "$AFSPath/bin/fs") {
    my $fs_sysname = `$AFSPath/bin/fs sysname 2>&1`;
    if ($fs_sysname =~ s/Current sysname is:? //) {
        $fs_sysname =~ s/list? //;
        $fs_sysname =~ /(\w+)/;
        $alpha_sys  = $1;
    }
    else {
        warn "Unknown value for your AFS sysname value: $fs_sysname \n";
        if ($ENV{AUTOMATED_TESTING}) { exit 0; }
        die "Script terminated ...\n";
    }
}
else {
    warn "Could not find the AFS binary 'fs' at $AFSPath/bin \n";
    if ($ENV{AUTOMATED_TESTING}) { exit 0; }
    die "Script terminated ...\n";
}

if ($alpha_sys eq 'unknown') {
    warn "Could not determine the AFS sysname value for your system \n" .
         "But you should never reach this place \n";
    if ($ENV{AUTOMATED_TESTING}) { exit 0; }
    die "Script terminated ...\n";
}

# find out the AFS version of the AFS system libraries
open FILE, ">fotav.c";
print FILE <<'EOF';
#include <stdio.h>

int main(void)
{
  extern char *AFSVersion;
  printf(">%s<\n",AFSVersion);
}
EOF
close FILE;

system("$Config::Config{cc} fotav.c -L$AFSPath/lib -lubik");
if ($CHILD_ERROR) {
    unlink 'fotav.c';
    die "\nCould not compile test code to retrieve the version of AFS system libraries...\n";
}
my $version = `./a.out` || die "\nCould not run test code to retrieve the version of AFS system libraries...\n";
unlink 'a.out', 'fotav.c';

my ($v_string, $v_numb) = ('', '');
if ($version =~ />(\S+?)\s+(\S+)</) {
    $v_string = $1;
    $v_numb   = version->new($2);
}
elsif ($version =~ />(\S+?)</) {
    $v_string = 'Transarc/IBM AFS';
    $v_numb   = version->new($1);
}

if ($v_numb =~ /3.[4,5]/) {
    warn "This release does not support AFS 3.4/3.5 system libraries ...\n";
    if ($ENV{AUTOMATED_TESTING}) { exit 0; }
    die "Script terminated ...\n";
}
#elsif ($alpha_sys =~ /amd64_linux2/) {
#    warn "\nAFS modules on AMD Opteron platforms are currently not supported ...\n";
#    if ($ENV{AUTOMATED_TESTING}) { exit 0; }
#    die "Script terminated ...\n";
#}
elsif ($Config{usethreads} and $v_string !~ /openafs/) {
    warn "\nAFS modules (Threaded Perl) in conjunction with Transarc/IBM AFS is not supported ...\n";
    if ($ENV{AUTOMATED_TESTING}) { exit 0; }
    die "Script terminated ...\n";
}
elsif ($Config{usethreads} and $alpha_sys =~ /amd64_linux2/) {
    if (! -e "$AFSPath/lib/libafsauthent_pic.a" or ! -e "$AFSPath/lib/libafsrpc_pic.a") {
        warn "\nAFS system libraries libafsrpc and/or libafsauthent (PIC) not found ...\n";
        if ($ENV{AUTOMATED_TESTING}) { exit 0; }
        die "Script terminated ...\n";
    }
}
elsif ($Config{usethreads} and $alpha_sys =~ /rs_aix4/) {
    warn "\nAFS modules (Threaded Perl) on AIX platforms are currently not supported ...\n";
    if ($ENV{AUTOMATED_TESTING}) { exit 0; }
    die "Script terminated ...\n";
}

my $m_version = '';
if    ($v_numb =~ /3.4/)   { $m_version = 'AFS 3.4'; }
elsif ($v_numb =~ /3.5/)   { $m_version = 'AFS 3.5'; }
elsif ($v_numb =~ /3.6/)   { $m_version = 'AFS 3.6'; }
elsif ($v_numb =~ /1.0/)   { $m_version = 'OpenAFS 1.0'; }
elsif ($v_numb =~ /1.1/)   { $m_version = 'OpenAFS 1.1'; }
elsif ($v_numb =~ /1.2/)   { $m_version = 'OpenAFS 1.2'; }
elsif ($v_numb =~ /1.3/)   { $m_version = 'OpenAFS 1.3'; }
elsif ($v_numb =~ /1.4/)   { $m_version = 'OpenAFS 1.4'; }
elsif ($v_numb =~ /1.5/)   { $m_version = 'OpenAFS 1.5'; }
elsif ($v_numb =~ /devel/) { $m_version = 'OpenAFS devel'; }

if ($m_version eq '') {
    warn "Could not determine OpenAFS version: $version \n";
    if ($ENV{AUTOMATED_TESTING}) { exit 0; }
    die "Script terminated ...\n";
}

# set the different compiler flags according to the AFS version
my ($d_flag, $a_flag, $e_flag, $i_flag) = ('', '', '', '');
if ($v_string =~ /openafs/)  { $a_flag = '-DOpenAFS'; }

$d_flag = $m_version;
$d_flag =~ tr/\. /__/;
$d_flag = '-D' . $d_flag;

if ($v_numb gt v1.4.4 and $v_string =~ /openafs/) {
    $e_flag = '-DAFS_OLD_COM_ERR';



( run in 0.826 second using v1.01-cache-2.11-cpan-e1769b4cff6 )