#! /tools/bin/perl use Getopt::Long; # Command line parm parser my $java_home; my $scriptname; ($scriptname = $0) =~ s#.*/##; process_args(); # to parse the input arguments print_msg(); make_dir(); links(); sub process_args { GetOptions( "help" => \$help, "cache=s" => \$cache_dir, "jdk=s" => \$java_home, "phome=s" => \$prod_home ); if ($help) { usage(); exit 0 ; } if ($java_home eq "") { print "Must specify jdk path\n"; usage(); exit; } if ( $cache_dir eq "" ) { if ($prod_home eq "" ) { print "Must specify product path or cache path\n"; usage(); exit; } else { $cache_dir="$prod_home/cache"; } } if(!-d $java_home) { print "$java_home is not a valid path to jdk\n"; usage(); exit; } } sub print_msg { print "cache_dir : $cache_dir\n"; print "java_home : $java_home\n"; } sub usage { print "Usage: $scriptname -j -c \n"; print " or $scriptname -j -p \n\n"; } sub make_dir { $cache_lib = "$cache_dir/$java_home/lib"; $cache_threadsdir ="$cache_dir/$java_home/jre/lib/sparc/native_threads"; foreach $dir ( "$cache_dir", "$cache_lib", "$cache_threadsdir") { $dir =~ s#//#/#g; if (! -e "$dir") { print "creating directory '$dir'\n"; `mkdir -p "$dir"`; die ("Cannot create directory $dir") if ( ! -e "$dir"); } } } sub links { my $jdk_file = "$java_home/jre/lib/sparc/native_threads/libhpi.so"; my $cache_file; @files1 = `/bin/ls -a $java_home/lib/*`; @files2 = `/bin/ls -a $java_home/jre/lib/*`; @files3 = `/bin/ls -a $java_home/jre/lib/sparc/* `; foreach $file ($jdk_file, @files1, @files2, @files3) { chomp($file); next if ($file eq '.' || $file eq '..'); $cache_file="$cache_dir/$file"; $cache_file =~ s#//#/#g; if (-f $file) { if(-e "$cache_file") { print " recreating link for file '$cache_file'\n"; unlink "$cache_file" || die ("Cannot remove existing file '$cache_file'"); } symlink ($file, $cache_file) || die ("Cannot create symlink '$cache_file'"); } } }