LMPX.COM |
Home | Linux | Mysql | PHP | XML | ||
|
|
|||
From: John W. Krahn Date: Tue May 13 06:57:15 2008 Subject: Re: Log error
Irfan.Sayed@t-systems.com wrote: > Hi All, Hello, > #! /usr/tools/deployment/bin/perl use warnings; use strict; > use lib "/home/m.belgaonkar/"; > use lib "/home/p.gupta/"; > $i=0; > $p=0; > $l=0; my $i = 0; my $p = 0; my $l = 0; > $dt=qx(date); > @dt1=split(' ',$dt); > @dt2[0]=@dt1[2]; > @dt2[1]=@dt1[1]; > @dt2[2]=@dt1[3]; > @dt2[3]=@dt1[5]; > chomp($dt_fin=join(":",@dt2)); use POSIX 'strftime'; my $dt_fin = strftime '%d:%b:%H:%M:%S:%Y', localtime; > system ("clear"); 0 == system 'clear' or warn "system 'clear' failed: $?"; > print "$dt_fin\n"; > print "****************************************************\n"; > print "******************Merge Tool************************\n"; > > $ap_nm=`pwd`; use Cwd; my $ap_nm = cwd; > if ($ap_nm =~ /view/){print "You are in the view:$ap_nm\n";}else{print "You are not in any clearcase view \n"; exit 1;} > if ($ap_nm =~ /oms/) > { > $ap_nm=oms; $ap_nm = 'oms'; > print "Application name:oms\n"; > } > elsif ($ap_nm =~ /akb/) > { > $ap_nm=akb; $ap_nm = 'akb'; > print "Application name:akb\n"; > } [ SNIP more of the same ($DIETY knows why this is repeated!) ] > else > { > print "You does not seems to be in any application\n"; > print "Exiting\n"; > exit 1; > } > > config_spec_chk(); > env(); > sub config_spec_chk() sub config_spec_chk > { > %hash = ( > oms => 'oms.rel.02.23.000', > akb => 'akb.rel.01.00.000', > cia => 'ci1.rel.02.00.000', > crm => 'crm.rel.03.00.000', > dps => 'dps.rel.01.00.000', > hmy => 'hmy.rel.00.00.000', > vss => 'vss.int.00.00.000', > prs => 'prs.rel.01.09.000', > ccb => 'ccb.rel.01.02.000', > wsp => 'wsp.rel.00.00.000', > ); > > %hash_const = ( > "element /vob/support/tools/deployment/repository" => '/main/LATEST', > "element /vob/lib/repository/..." => '/main/LATEST', > "element /vob/lib/rep_v1/..." => '/main/LATEST', > "element /vob/support/tools/deployment/packages/..." => '/main/LATEST', > "element /vob/lib/packages/..." => '/main/LATEST', > "element /vob/support/tools/deployment/specs/..." => 'CHECKEDOUT', > "element /vob/support/tools/deployment/specs/..." => '/main/LATEST', > "element /vob/support/tools/deployment/initfiles/..." => 'CHECKEDOUT', > "element /vob/support/tools/deployment/initfiles/..." => '/main/LATEST', > "element /vob/support/tools/deployment/relnotespecs/..." => 'CHECKEDOUT', > "element /vob/support/tools/deployment/relnotespecs/..." => '/main/LATEST', > "element /vob/support/tools/deployment/mergespecs/..." => 'CHECKEDOUT', > "element /vob/support/tools/deployment/mergespecs/..." => '/main/LATEST', > "element /vob/support/tools/deployment/scripts/..." => '/main/LATEST', > "element /vob/support/tools/deployment/global_env_files/..." => '/main/LATEST', > "element -directory /vob/support/tools/deployment" => '/main/LATEST', > "element -directory /vob/support/tools" => '/main/LATEST', > "element -directory /vob/support" => '/main/LATEST', > "element -directory /vob/lib" => '/main/LATEST', > ); > > #qx(ct catcs | tee /home/m.belgaonkar/curr_conf_spec_$dt_fin); > open(fh, ">/tmp/config") || die "Can't open file:\n"; You should include the $! variable in the error message so you know *why* it failed to open. > while (($key,$value)=each(%hash)) > { > > if (($key eq oms) && ($ap_nm =~ /oms/)) if ( $key eq 'oms' && $ap_nm =~ /oms/ ) > { > $rel_br=$value; > print fh "element /vob/support/tools/deployment/specs/... CHECKEDOUT\n"; > print fh "element /vob/support/tools/deployment/initfiles/... CHECKEDOUT\n"; > print fh "element /vob/support/tools/deployment/relnotespecs/... CHECKEDOUT\n"; > print fh "element /vob/support/tools/deployment/mergespecs/... CHECKEDOUT\n"; > > print fh "\n"; > > foreach (keys %hash_const) > { > print fh "$_ $hash_const{$_}\n"; > } > > print fh "\n"; > print fh "element * CHECKEDOUT\n"; > print fh "element * .../$value/LATEST\n"; > print fh "element * /main/0 -mkbranch $value\n"; > } Why are you repeating this *exact* *same* code block *ten* times? [ SNIP more of the exact same code ] > else{} > } > if ($?=0){print "Config spec generation failed\n";exit 1;} > else{print "Config spec of the destination view is being created\n"; print "Config spec :Done\n";} > close (fh); > > print "Setting the destination config spec to the current view\n"; > `/usr/atria/bin/cleartool setcs /tmp/config`; perldoc -q "What.s wrong with using backticks in a void context" > if ($?){print "Config spec not set correctly\n check the same and try once again\n"; exit 1;} > else{print "Config spec set correctly\n";} > # print "Reexecuting the config spec \n"; > # `usr/atria/bin/cleartool setcs -current`; > # if ($?){print "Execution of config spec failed\n check the same and try once again\n"; exit 1;} > # else{print "Done\n";} > > } > > sub env() sub env > { > print "Enter the baseline:"; > chomp($bl = <STDIN>); > chomp($rel_lbl_fin=$bl); > print "Enter the update:"; > chomp($up_bl = <STDIN>); > > print "Enter the no. of packages needs to be merged:"; > chomp($ct_pkg = <STDIN>); > > for ($i=1;$i<=$ct_pkg;$i++) for my $i ( 1 .. $ct_pkg ) > { > print "Enter the release note for package $i :"; > chomp($pk = <STDIN>); > print "Enter the update:"; > chomp($up = <STDIN>); > print "Enter the development branch name for package $i :"; > chomp($br_name_fin = <STDIN>); > $dev_lbl=$pk; > # $br_name=$dev_lbl; > # $br_name_fin=lc $br_name; > if ($up != 0){ > chomp($depl_lbl="D." . "$pk" . ".$up"); Why are you chomp()ing $up a second time? > }else{chomp($depl_lbl="D." . $pk);} Why are you chomp()ing $pk a second time? > `/usr/atria/bin/cleartool lstype lbtype:$depl_lbl 2>/dev/null`; perldoc -q "What.s wrong with using backticks in a void context" > if ($?) > { > print"Depl. Label $depl_lbl is not exist\n"; > print "Creating the deployment label and applying it to all files which has development label\n"; > `/usr/atria/bin/cleartool mklbtype -nc $depl_lbl`; perldoc -q "What.s wrong with using backticks in a void context" > if ($?){print "Deployment label creation failed. Please check and try once again\n"; exit 1;} > else{ > print "Deployment label created successfully\n"; > } > } > else{ > print "Deployment label for this package would be : $depl_lbl\n";} > #if ($pk =~ /(.*)\./) { > # print "$1\n"; > # $dev_lbl=$1; > #} > `/usr/atria/bin/cleartool lstype lbtype:$dev_lbl 2>/dev/null`; perldoc -q "What.s wrong with using backticks in a void context" > if ($?) > { > print"Dev. Label $dev_lbl is not exist\n"; > print "Create the devlopment label,apply it to all files and directories and then start merge\n"; > exit 1;} > else{ > print "Devlopment label for this package would be : $dev_lbl\n";} > > `/usr/atria/bin/cleartool lstype brtype:$br_name_fin 2>/dev/null`; perldoc -q "What.s wrong with using backticks in a void context" > if ($?){ print "Dev. branch $br_name_fin is not exist\n"; exit 1;} > else{print "Dev. branch is $br_name_fin\n";} > compare(); > > push (@pkg_lst,$pk); > } > rel_label(); > } > > sub compare() sub compare > { > print "Compairing files with development label and deployment label\n"; > > chomp($ct_fil_depl=`/usr/atria/bin/cleartool find -all -version "lbtype($depl_lbl) && brtype($br_name_fin)" -print | wc -l`); > chomp($ct_fil_dev=`/usr/atria/bin/cleartool find -all -version "lbtype($dev_lbl) && brtype($br_name_fin)" -print | wc -l`); > > chomp(@no_depl_lbl=`/usr/atria/bin/cleartool find -all -version "lbtype($dev_lbl) && brtype($br_name_fin) &&! lbtype($depl_lbl)" -print`); > > print " No. of files which has deployment label : $ct_fil_depl\n"; > print " No. of files which has development label : $ct_fil_dev\n"; > print "@no_depl_lbl\n"; > > if (@no_depl_lbl eq "" || @no_depl_lbl eq "NULL" || !defined @no_depl_lbl) @no_depl_lbl will *NEVER* be equal to "" or "NULL", *NEVER*! defined() should not be used on arrays or hashes. perldoc -q "Why does defined.. return true on empty arrays and hashes" > { > print "All the files have both deployment label $depl_lbl and development label $dev_lbl\n"; > merge(); > } > > else > { > print "Files with deployment $depl_lbl and development label $dev_lbl are mismatch\n"; > print "Applying the deployment label to all versions which has developer label\n"; > print "Checking the lock status of deployment label\n"; > $st_chk= `/usr/atria/bin/cleartool lslock lbtype:$depl_lbl`; > if($st_chk eq "") > { > print " Label is not locked\n"; > } > else > { > print "Label is locked\n Unlocking the label\n"; > `/usr/atria/bin/cleartool unlock lbtype:$depl_lbl`; > if($?){print "Label unlocking failed\n Check the same and try once again\n";exit 1;} > else{print "Label unlocked successfully\n";}} > $a=0; > foreach(@no_depl_lbl) > { > `/usr/atria/bin/cleartool mklabel -replace $depl_lbl $_`; perldoc -q "What.s wrong with using backticks in a void context" > if ($?){print"Unable to apply the label $depl_lbl to file $_.Please chk the same and try again\n";exit 1;} > else{$a++;} > } > } > if($a!=0){print "Deployment label has been applied to all files now\n"; > print "Locking the deployment label\n"; > `/usr/atria/bin/cleartool lock lbtype:$depl_lbl`; perldoc -q "What.s wrong with using backticks in a void context" > if($?){print "Locking of deployment label failed\n Please check the same and try again\n";} > else{print "Label locked successfully\n";} > merge(); > } > } > sub merge() sub merge > { > print "Merge operation from developer branch $br_name_fin to the release branch $rel_br\n"; > > @merg_prev=`/usr/atria/bin/cleartool findmerge -all -element "brtype($br_name_fin)" -fversion $depl_lbl -print -short`; > chomp($size = @merg_prev); > if ($size==0){ print "All the files on the development branch and release branch are identical.\n No need to merge anything\n";} > else > { > print "Following files will be merged \n"; > print "@merg_prev\n\n"; > print "Confirm [y/n]:"; > chomp($conf = <STDIN>); > > if (($conf eq "y") || ($conf eq "Y")) if ( uc $conf eq 'Y' ) > { > @merg_act=`/usr/atria/bin/cleartool findmerge -all -element "brtype($br_name_fin)" -fversion $depl_lbl -merge -log /tmp/merge_log_$dt_fin`; > if($?){print "Merge operation failed....\n Check the same and try once again\n"; exit 1;} > else { > print "Merged all the files to the release branch\n"; > print "Checking in all files and directoris\n"; > `/usr/atria/bin/cleartool lsco -r -cview -s . | xargs ct ci -nc`; perldoc -q "What.s wrong with using backticks in a void context" > if($?){ print "Check in operation failed.....\n please check the same and try again\n"; exit 1;}else{} > @lsco=`/usr/atria/bin/cleartool lsco -r -cview -s .`; > if(@lsco eq "" || !defined @lsco) @lsco will *NEVER* be equal to "", *NEVER*! defined() should not be used on arrays or hashes. perldoc -q "Why does defined.. return true on empty arrays and hashes" > { > print "All the files checked in properly\n"; > print "Merge operation completed for package $pk with update $up\n"; > log(); > }else{ print "Some files are still in checked out condition\n check the same and try again\n"; exit 1;} > mail();} > } > elsif(($conf eq "n") || ($conf eq "N")) elsif ( uc $conf eq 'N' ) > { > print "OK!!!!!\n"; > exit 1; > } > else > { > print "Bad choice\n"; > exit 1; > } > } > } > > sub rel_label() sub rel_label > { > print "Checking the REL label \n"; > `/usr/atria/bin/cleartool lstype lbtype:$rel_lbl_fin 2>/dev/null`; perldoc -q "What.s wrong with using backticks in a void context" > if($?){ print "REL label does not exist\n Creating the REL label ....\n"; > `/usr/atria/bin/cleartool mklbtype -nc $rel_lbl_fin`; perldoc -q "What.s wrong with using backticks in a void context" > if($?){ print "REL label creation failed\n Please check the same and try again\n "; exit 1;} > else{ print "REL label created successfully\n";} > } > else > { > print "Checking the lock status of REL label \n"; > $st=`/usr/atria/bin/cleartool lslock lbtype:$rel_lbl_fin`; > if ($st eq "") > { > print "Label is not locked\n"; > } > else > { > print "Label is locked\n Unlocking the label\n"; > `/usr/atria/bin/cleartool unlock lbtype:$rel_lbl_fin`; perldoc -q "What.s wrong with using backticks in a void context" > if($?){print "Label unlocking failed\n Check the same and try once again\n";exit 1;} > else{print "Label unlocked successfully\n";} > }} > print "Applying the REL label to all files and directory\n"; > `/usr/atria/bin/cleartool mklabel -rec -replace $rel_lbl_fin .`; perldoc -q "What.s wrong with using backticks in a void context" > if($?){ print "REL label application to all files has been failed\n Please check the same and try again\n"; exit 1;} > else{print "REL label has been applied properly to all files\n"; > print "Locking the REL label\n"; > `/usr/atria/bin/cleartool lock lbtype:$rel_lbl_fin`; perldoc -q "What.s wrong with using backticks in a void context" > if($?){ print "Locking of REL label failed\n Please check the same and try again\n";} > else{ print " REL label locked successfully\n";} > } > } > > sub log() This will clash with Perl's built-in log() function. perldoc -f log > { > # this function will create the detail log file for each package merged to the release branch. > > open(fh1, ">/tmp/Log_Merge_$pk_$up") || die "Cant open file $!\n"; > print fh1 "**************************************************************\n"; > print fh1 "Merge log file for package $pk update $up\n"; > print fh1 "REL baseline : $bl update : $up_bl\n"; > print fh1 "Package release note : $pk update : $up\n"; > print fh1 "No. of files with development label : $ct_fil_dev\n"; > print fh1 "Pathname of each file is \n"; > print fh1 "No. of files with deployment label : $ct_fil_depl\n"; > print fh1 "Pathname of each file is \n"; > print fh1 "No. of files which needs to be merged : \n"; > print fh1 "Following files got merged\n"; > print fh1 "@merg_prev\n\n"; > > > > } > > sub mail() sub mail [ SNIP ] John -- Perl isn't a toolbox, but a small machine shop where you can special-order certain sorts of tools at low cost and in short order. -- Larry Wall
| Navigate in group perl.beginners at sever nntp.perl.org | |
| Previous | Next |
| © No Copyright You are free to use Anything |
Site Maintained by PHP Developer
Powered By PHP Consultants |