summaryrefslogtreecommitdiff
path: root/ACE/bin/PerlACE/ProcessVX_Win32.pm
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/bin/PerlACE/ProcessVX_Win32.pm')
-rw-r--r--ACE/bin/PerlACE/ProcessVX_Win32.pm44
1 files changed, 29 insertions, 15 deletions
diff --git a/ACE/bin/PerlACE/ProcessVX_Win32.pm b/ACE/bin/PerlACE/ProcessVX_Win32.pm
index 5f65ef8f0e6..6952f67d41c 100644
--- a/ACE/bin/PerlACE/ProcessVX_Win32.pm
+++ b/ACE/bin/PerlACE/ProcessVX_Win32.pm
@@ -29,10 +29,10 @@ sub new
$self->{RUNNING} = 0;
$self->{IGNOREEXESUBDIR} = 1;
+ $self->{IGNOREHOSTROOT} = 0;
$self->{PROCESS} = undef;
$self->{EXECUTABLE} = shift;
$self->{ARGUMENTS} = shift;
- $self->{TARGET} = shift;
if (!defined $PerlACE::ProcessVX::WAIT_DELAY_FACTOR) {
$PerlACE::ProcessVX::WAIT_DELAY_FACTOR = 3;
}
@@ -165,6 +165,15 @@ sub Spawn ()
if (defined $ENV{'ACE_RUN_ACE_LD_SEARCH_PATH'}) {
@cmds[$cmdnr++] = 'C putenv("ACE_LD_SEARCH_PATH=' . $ENV{"ACE_RUN_ACE_LD_SEARCH_PATH"} . '")';
}
+ if (defined $self->{TARGET}) {
+ my $x_env_ref = $self->{TARGET}->{EXTRA_ENV};
+ while ( my ($env_key, $env_value) = each(%$x_env_ref) ) {
+ if (defined $ENV{'ACE_TEST_VERBOSE'}) {
+ print "INFO: adding target environment $env_key=$env_value\n";
+ }
+ @cmds[$cmdnr++] = 'C putenv("' . $env_key. '=' . $env_value . '")';
+ }
+ }
if (defined $ENV{'ACE_RUN_VX_CHECK_RESOURCES'}) {
@cmds[$cmdnr++] = 'C memShow()';
@@ -192,7 +201,7 @@ sub Spawn ()
my(@unload_commands);
if (!$PerlACE::Static && !$PerlACE::VxWorks_RTP_Test) {
my $vxtest_file = $program . '.vxtest';
- if (handle_vxtest_file($vxtest_file, \@load_commands, \@unload_commands)) {
+ if (handle_vxtest_file($self, $vxtest_file, \@load_commands, \@unload_commands)) {
@cmds[$cmdnr++] = "cd \"$ENV{'ACE_RUN_VX_TGTSVR_ROOT'}/lib\"";
push @cmds, @load_commands;
$cmdnr += scalar @load_commands;
@@ -220,6 +229,15 @@ sub Spawn ()
if (defined $ENV{'ACE_RUN_ACE_LD_SEARCH_PATH'}) {
@cmds[$cmdnr++] = 'putenv("ACE_LD_SEARCH_PATH=' . $ENV{"ACE_RUN_ACE_LD_SEARCH_PATH"} . '")';
}
+ if (defined $self->{TARGET}) {
+ my $x_env_ref = $self->{TARGET}->{EXTRA_ENV};
+ while ( my ($env_key, $env_value) = each(%$x_env_ref) ) {
+ if (defined $ENV{'ACE_TEST_VERBOSE'}) {
+ print "INFO: adding target environment $env_key=$env_value\n";
+ }
+ @cmds[$cmdnr++] = 'putenv("' . $env_key. '=' . $env_value . '")';
+ }
+ }
@cmds[$cmdnr++] = 'ld <'. $program . $PerlACE::ProcessVX::ExeExt;
if (defined $self->{ARGUMENTS}) {
@@ -270,8 +288,6 @@ if (!$t->open()) {
my $target_login = $ENV{'ACE_RUN_VX_LOGIN'};
my $target_password = $ENV{'ACE_RUN_VX_PASSWORD'};
-$t->print("\n");
-
if (defined $target_login) {
$t->waitfor('/VxWorks login: $/');
$t->print("$target_login");
@@ -282,20 +298,19 @@ if (defined $target_password) {
$t->print("$target_password");
}
-$t->print("\n");
# wait for the prompt
-my $blk;
-my $buf;
+my $buf = '';
my $prompt1 = '-> $';
-while ($blk = $t->get) {
- printf $blk;
+while (1) {
+ my $blk = $t->get;
+ print $blk;
$buf .= $blk;
if ($buf =~ /$prompt1/) {
last;
}
}
if ($buf !~ /$prompt1/) {
- die "ERROR: Didn't got prompt but got <$buf> <$blk>";
+ die "ERROR: Didn't got prompt but got <$buf>";
}
my $i = 0;
my @lines;
@@ -304,10 +319,10 @@ while($i < $cmdnr) {
print @cmds[$i]."\n";
}
if ($t->print (@cmds[$i++])) {
- my $blk;
- my $buf;
- while ($blk = $t->get) {
- printf $blk;
+ my $buf = '';
+ while (1) {
+ my $blk = $t->get;
+ print $blk;
$buf .= $blk;
if ($buf =~ /$prompt/) {
last;
@@ -410,5 +425,4 @@ sub Kill ()
$self->{RUNNING} = 0;
}
-
1;