From 25bfbdee5efadfd9c095b18fa34352366e29a12c Mon Sep 17 00:00:00 2001 From: nott Date: Fri, 7 Jun 2013 13:15:59 +0000 Subject: [PATCH] remove xCAT dependencies git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.8@16569 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT-buildkit/lib/perl/xCAT/BuildKitUtils.pm | 223 +------------------ 1 file changed, 3 insertions(+), 220 deletions(-) diff --git a/xCAT-buildkit/lib/perl/xCAT/BuildKitUtils.pm b/xCAT-buildkit/lib/perl/xCAT/BuildKitUtils.pm index 3530e0e0f..d53239032 100644 --- a/xCAT-buildkit/lib/perl/xCAT/BuildKitUtils.pm +++ b/xCAT-buildkit/lib/perl/xCAT/BuildKitUtils.pm @@ -25,23 +25,11 @@ my $sha1support = eval { }; use IPC::Open3; use IO::Select; -use xCAT::GlobalDef; -eval { - require xCAT::RemoteShellExp; -}; use warnings "all"; -require xCAT::InstUtils; -#require xCAT::NetworkUtils; -require xCAT::Schema; -#require Data::Dumper; -require xCAT::NodeRange; -require xCAT::Version; -require DBI; our @ISA = qw(Exporter); -our @EXPORT_OK = qw(genpassword runcmd3); -#-------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- =head1 xCAT::BuildKitUtils @@ -290,205 +278,6 @@ sub close_delete_file } -#------------------------------------------------------------------------------- -=head3 runcmd3 - Run the specified command with optional input and return stderr, stdout, and exit code - - Arguments: - command=>[] - Array reference of command to run - input=>[] or string - Data to send to stdin of process like piping input - Returns: - { exitcode => number, output=> $string, errors => string } -=cut -sub runcmd3 { #a proper runcmd that indpendently returns stdout, stderr, pid and accepts a stdin - my %args = @_; - my @indata; - my $output; - my $errors; - if ($args{input}) { - if (ref $args{input}) { #array ref - @indata = @{$args{input}}; - } else { #just a string - @indata=($args{input}); - } - } - my @cmd; - if (ref $args{command}) { - @cmd = @{$args{command}}; - } else { - @cmd = ($args{command}); - } - my $cmdin; - my $cmdout; - my $cmderr = gensym; - my $cmdpid = open3($cmdin,$cmdout,$cmderr,@cmd); - my $cmdsel = IO::Select->new($cmdout,$cmderr); - foreach (@indata) { - print $cmdin $_; - } - close($cmdin); - my @handles; - while ($cmdsel->count()) { - @handles = $cmdsel->can_read(); - foreach (@handles) { - my $line; - my $done = sysread $_,$line,180; - if ($done) { - if ($_ eq $cmdout) { - $output .= $line; - } else { - $errors .= $line; - } - } else { - $cmdsel->remove($_); - close($_); - } - } - } - waitpid($cmdpid,0); - my $exitcode = $? >> 8; - return { 'exitcode' => $exitcode, 'output' => $output, 'errors' => $errors } -} - -#------------------------------------------------------------------------------- - -=head3 runcmd - Run the given cmd and return the output in an array (already chopped). - Alternately, if this function is used in a scalar context, the output - is joined into a single string with the newlines separating the lines. - - Arguments: - command, exitcode, reference to output, streaming mode - Returns: - see below - Globals: - $::RUNCMD_RC , $::CALLBACK - Error: - Normally, if there is an error running the cmd,it will display the - error and exit with the cmds exit code, unless exitcode - is given one of the following values: - 0: display error msg, DO NOT exit on error, but set - $::RUNCMD_RC to the exit code. - -1: DO NOT display error msg and DO NOT exit on error, but set - $::RUNCMD_RC to the exit code. - -2: DO the default behavior (display error msg and exit with cmds - exit code. - number > 0: Display error msg and exit with the given code - - Example: - my $outref = xCAT::BuildKitUtils->runcmd($cmd, -2, 1); - $::CALLBACK= your callback (required for streaming from plugins) - my $outref = xCAT::BuildKitUtils->runcmd($cmd,-2, 1, 1); streaming - - Comments: - If refoutput is true, then the output will be returned as a - reference to an array for efficiency. - - -=cut - -#------------------------------------------------------------------------------- -sub runcmd - -{ - - my ($class, $cmd, $exitcode, $refoutput, $stream) = @_; - $::RUNCMD_RC = 0; - # redirect stderr to stdout - if (!($cmd =~ /2>&1$/)) { $cmd .= ' 2>&1'; } - - my $outref = []; - if (!defined($stream) || (length($stream) == 0)) { # do not stream - @$outref = `$cmd`; - } else { # streaming mode - my @cmd; - push @cmd,$cmd; - my $rsp = {}; - my $output; - my $errout; - open (PIPE, "$cmd |"); - while () { - if ($::CALLBACK){ - $rsp->{data}->[0] = $_; - $::CALLBACK->($rsp); - } else { - xCAT::MsgUtils->message("D", "$_"); - } - $output .= $_; - } - # store the return string - push @$outref,$output; - } - - # now if not streaming process errors - if (($?) && (!defined($stream))) - { - $::RUNCMD_RC = $? >> 8; - my $displayerror = 1; - my $rc; - if (defined($exitcode) && length($exitcode) && $exitcode != -2) - { - if ($exitcode > 0) - { - $rc = $exitcode; - } # if not zero, exit with specified code - elsif ($exitcode <= 0) - { - $rc = ''; # if zero or negative, do not exit - if ($exitcode < 0) { $displayerror = 0; } - } - } - else - { - $rc = $::RUNCMD_RC; - } # if exitcode not specified, use cmd exit code - if ($displayerror) - { - my $rsp = {}; - my $errmsg = ''; - if (xCAT::BuildKitUtils->isLinux() && $::RUNCMD_RC == 139) - { - $errmsg = "Segmentation fault $errmsg"; - } - else - { - $errmsg = join('', @$outref); - chomp $errmsg; - - } - if ($::CALLBACK) - { - $rsp->{data}->[0] = - "Command failed: $cmd. Error message: $errmsg.\n"; - xCAT::MsgUtils->message("E", $rsp, $::CALLBACK); - - } - else - { - xCAT::MsgUtils->message("E", - "Command failed: $cmd. Error message: $errmsg.\n"); - } - $xCAT::BuildKitUtils::errno = 29; - } - } - if ($refoutput) - { - chomp(@$outref); - return $outref; - } - elsif (wantarray) - { - chomp(@$outref); - return @$outref; - } - else - { - my $line = join('', @$outref); - chomp $line; - return $line; - } - -} #------------------------------------------------------------------------------- @@ -589,12 +378,9 @@ sub osver $ver = $lines[0]; $ver =~ s/\.//; $ver =~ s/[^0-9]*([0-9]+).*/$1/; - - #print "ver: $ver\n"; } elsif (-f "/etc/UnitedLinux-release") { - $os = "ul"; open($relfile,"<","/etc/UnitedLinux-release"); $ver = <$relfile>; @@ -660,7 +446,7 @@ sub osver false on failure A reference for the lock being held. =cut - +#----------------------------------------------------------------------------- sub acquire_lock { my $lock_name = shift; use File::Path; @@ -682,7 +468,7 @@ sub acquire_lock { Returns: false on failure, true on success =cut - +#----------------------------------------------------------------------------- sub release_lock { my $tlock = shift; unlink($tlock->{path}); @@ -690,7 +476,6 @@ sub release_lock { close($tlock->{fd}); } - #------------------------------------------------------------------------------- =head3 get_unique_members @@ -761,6 +546,4 @@ sub full_path return $fullpath; } - - 1;