reformat log message generation
[scpubgit/Object-Remote.git] / lib / Object / Remote / Role / Connector / PerlInterpreter.pm
index 79f2660..3af5712 100644 (file)
@@ -4,7 +4,7 @@ use IPC::Open2;
 use IPC::Open3; 
 use IO::Handle;
 use Symbol; 
-use Object::Remote::Logging qw( :log :dlog get_router );
+use Object::Remote::Logging qw( :log :dlog router );
 use Object::Remote::ModuleSender;
 use Object::Remote::Handle;
 use Object::Remote::Future;
@@ -31,24 +31,31 @@ sub _build_module_sender {
 }
 
 sub _build_perl_command {
-    my ($self) = @_; 
+    my ($self) = @_;
     my $nice = $self->nice;
     my $ulimit = $self->ulimit;
-    my $shell_code = '';  
-    
+    my $perl_path = 'perl';
+    my $shell_code = '';
+
     if (defined($ulimit)) {
-        $shell_code .= "ulimit -v $ulimit; ";
+        $shell_code .= "ulimit $ulimit || exit 1; ";
     }
-    
+
     if (defined($nice)) {
         $shell_code .= "nice -n $nice ";
     }
-    
-    $shell_code .= 'perl -';
-        
-    return [ 'sh', '-c', $shell_code ];        
+
+    if (defined($ENV{OBJECT_REMOTE_PERL_BIN})) {
+        log_debug { "Using OBJECT_REMOTE_PERL_BIN environment variable as perl path" };
+        $perl_path = $ENV{OBJECT_REMOTE_PERL_BIN};
+    }
+
+    $shell_code .= $perl_path . ' -';
+
+    return [ 'bash', '-c', $shell_code ];
 }
 
+
 around connect => sub {
   my ($orig, $self) = (shift, shift);
   my $f = $self->$start::start($orig => @_);
@@ -57,7 +64,7 @@ around connect => sub {
       my ($conn) = $f->get;
       $self->_setup_watchdog_reset($conn); 
       my $sub = $conn->remote_sub('Object::Remote::Logging::init_logging_forwarding');
-      $sub->('Object::Remote::Logging', router => get_router, connection_id => $conn->_id);
+      $sub->('Object::Remote::Logging', router => router(), connection_id => $conn->_id);
       Object::Remote::Handle->new(
         connection => $conn,
         class => 'Object::Remote::ModuleLoader',
@@ -77,7 +84,9 @@ sub _start_perl {
   my $given_stderr = $self->stderr;
   my $foreign_stderr;
  
-  Dlog_debug { "invoking connection to perl interpreter using command line: $_" } @{$self->final_perl_command};
+  Dlog_verbose {
+    s/\n/ /g; "invoking connection to perl interpreter using command line: $_"
+  } @{$self->final_perl_command};
     
   if (defined($given_stderr)) {
     #if the stderr data goes to an existing file handle