@ -67,83 +67,23 @@ ProcessJob::prettyStatusMessage() const
JobResult
ProcessJob : : exec ( )
{
int ec = 0 ;
QString output ;
using CalamaresUtils : : System ;
if ( m_runInChroot )
ec = CalamaresUtils : : System : : instance ( ) - >
targetEnvOutput ( m_command ,
output ,
return CalamaresUtils : : System : : instance ( ) - >
targetEnvCommand ( { m_command } ,
m_workingPath ,
QString ( ) ,
m_timeoutSec ) ;
m_timeoutSec )
. explainProcess ( m_command , m_timeoutSec ) ;
else
ec = callOutput ( m_command ,
output ,
m_workingPath ,
QString ( ) ,
m_timeoutSec ) ;
return CalamaresUtils : : ProcessResult : : explainProcess ( ec , m_command , output , m_timeoutSec ) ;
}
int
ProcessJob : : callOutput ( const QString & command ,
QString & output ,
const QString & workingPath ,
const QString & stdInput ,
int timeoutSec )
{
output . clear ( ) ;
QProcess process ;
process . setProgram ( " /bin/sh " ) ;
process . setArguments ( { " -c " , command } ) ;
process . setProcessChannelMode ( QProcess : : MergedChannels ) ;
if ( ! workingPath . isEmpty ( ) )
{
if ( QDir ( workingPath ) . exists ( ) )
process . setWorkingDirectory ( QDir ( workingPath ) . absolutePath ( ) ) ;
else
{
cWarning ( ) < < " Invalid working directory: " < < workingPath ;
return - 3 ;
}
}
cDebug ( ) < < " Running " < < command ;
process . start ( ) ;
if ( ! process . waitForStarted ( ) )
{
cWarning ( ) < < " Process failed to start " < < process . error ( ) ;
return - 2 ;
}
if ( ! stdInput . isEmpty ( ) )
{
process . write ( stdInput . toLocal8Bit ( ) ) ;
process . closeWriteChannel ( ) ;
}
if ( ! process . waitForFinished ( timeoutSec ? ( timeoutSec * 1000 ) : - 1 ) )
{
cWarning ( ) < < " Timed out. output so far: " ;
output . append ( QString : : fromLocal8Bit ( process . readAllStandardOutput ( ) ) . trimmed ( ) ) ;
cWarning ( ) < < output ;
return - 4 ;
}
output . append ( QString : : fromLocal8Bit ( process . readAllStandardOutput ( ) ) . trimmed ( ) ) ;
if ( process . exitStatus ( ) = = QProcess : : CrashExit )
{
cWarning ( ) < < " Process crashed " ;
return - 1 ;
}
cDebug ( ) < < " Finished. Exit code: " < < process . exitCode ( ) ;
return process . exitCode ( ) ;
return
System : : runCommand ( System : : RunLocation : : RunInHost ,
{ " /bin/sh " , " -c " , m_command } ,
m_workingPath ,
QString ( ) ,
m_timeoutSec )
. explainProcess ( m_command , m_timeoutSec ) ;
}
} // namespace Calamares