PerlBuildSystem
view release on metacpan or search on metacpan
PBS/Depend.pm view on Meta::CPAN
my $sub_pbs_name_stem ;
if(file_name_is_absolute($sub_pbs_name))
{
PrintWarning "Using absolute subpbs: '$sub_pbs_name' $info.\n" ;
}
else
{
my ($basename, $path, $ext) = File::Basename::fileparse($Pbsfile, ('\..*')) ;
my $found_pbsfile ;
for my $source_directory (@$source_directories, $path)
{
my $searched_pbsfile = PBS::PBSConfig::CollapsePath("$source_directory/$sub_pbs_name") ;
if(-e $searched_pbsfile)
{
if($found_pbsfile)
{
if($pbs_config->{DISPLAY_SUBPBS_SEARCH_INFO})
{
PrintInfo "Ignoring pbsfile '$sub_pbs_name' in '$source_directory' $info.\n" ;
}
}
else
{
if($pbs_config->{DISPLAY_SUBPBS_SEARCH_INFO})
{
PrintInfo "Located pbsfile '$sub_pbs_name' in '$source_directory' $info.\n" ;
}
$found_pbsfile = $searched_pbsfile ;
last unless $pbs_config->{DISPLAY_ALL_SUBPBS_ALTERNATIVES} ;
}
}
else
{
if($pbs_config->{DISPLAY_SUBPBS_SEARCH_INFO})
{
PrintInfo "Couldn't find pbsfile '$sub_pbs_name' in '$source_directory' $info.\n" ;
}
}
}
my $sub_pbs_name_stem ;
$found_pbsfile ||= "$path$sub_pbs_name" ;
#check if we can find it somewhere else in the source directories
for my $source_directory (@$source_directories)
{
my $flag = '' ;
$flag = '(?i)' if $^O eq 'MSWin32' ;
if($found_pbsfile =~ /$flag^$source_directory(.*)/)
{
$sub_pbs_name_stem = $1
}
}
my $relocated_subpbs ;
if(defined $sub_pbs_name_stem)
{
if($pbs_config->{DISPLAY_SUBPBS_SEARCH_INFO})
{
PrintInfo "Found stem '$sub_pbs_name_stem'.\n" ;
}
for my $source_directory (@$source_directories)
{
my $relocated_from_stem = PBS::PBSConfig::CollapsePath("$source_directory/$sub_pbs_name_stem") ;
if(-e $relocated_from_stem)
{
unless($relocated_subpbs)
{
$relocated_subpbs = $relocated_from_stem ;
if($relocated_from_stem ne $found_pbsfile)
{
PrintWarning2("Relocated '$sub_pbs_name_stem' in '$source_directory' $info.\n") ;
}
else
{
if($pbs_config->{DISPLAY_SUBPBS_SEARCH_INFO})
{
PrintInfo "Keeping '$sub_pbs_name_stem' from '$source_directory' $info.\n" ;
}
}
last unless $pbs_config->{DISPLAY_ALL_SUBPBS_ALTERNATIVES} ;
}
else
{
if($pbs_config->{DISPLAY_SUBPBS_SEARCH_INFO})
{
PrintInfo "Ignoring relocation of '$sub_pbs_name_stem' in '$source_directory' $info.\n" ;
}
}
}
else
{
if($pbs_config->{DISPLAY_SUBPBS_SEARCH_INFO})
{
PrintInfo "Couldn't relocate '$sub_pbs_name_stem' in '$source_directory' $info.\n" ;
}
}
}
}
$sub_pbs_name = $relocated_subpbs || $found_pbsfile || $sub_pbs_name;
}
return($sub_pbs_name) ;
}
#-------------------------------------------------------------------------------------------------------
1 ;
__END__
=head1 NAME
PBS::Depend -
=head1 SYNOPSIS
use PBS::Depend ;
my $tree = {...} ;
CreateDependencyTree(...) ;
=head1 DESCRIPTION
Given a node and a set of rules, B<CreateDependencyTree> will recursively build the entire dependency tree, inserting
any pertinent information it gathers in the node.
=head2 EXPORT
None by default.
=head1 AUTHOR
Khemir Nadim ibn Hamouda. nadim@khemir.net
=cut
( run in 2.052 seconds using v1.01-cache-2.11-cpan-71847e10f99 )