v++
рефакторинг. Исправлен баг. если прервать локальную задачу, не удалялся файл interrupt.
This commit is contained in:
@@ -10,36 +10,41 @@ public class RemoteCompilationSupervisor extends RemoteTaskSupervisor<Compilatio
|
||||
@Override
|
||||
protected void PrepareWorkspace() throws Exception {
|
||||
//0. если нет папки с его именем создаем.
|
||||
pass.tryMKDir(getRemoteProject());
|
||||
pass.SynchronizeProjectSubDirsR(project, project.Home, getRemoteProject(), false);
|
||||
pass.tryRM(getBinary());
|
||||
pass.user.connection.MKDIR(getRemoteProject());
|
||||
pass.user.connection.SynchronizeProjectSubDirsR(project, project.Home, getRemoteProject(), false);
|
||||
pass.user.connection.tryRM(getBinary());
|
||||
if (!task.binary_name.isEmpty()) {
|
||||
RemoteFile old_binary = new RemoteFile(getRemoteProject().full_name, task.binary_name);
|
||||
pass.tryRM(old_binary);
|
||||
pass.user.connection.tryRM(old_binary);
|
||||
}
|
||||
//отправить мейкфайл.
|
||||
Makefile makefile = task.getMakefile();
|
||||
File makefile_text = Utils.CreateTempFile("makefile", makefile.Generate(project));
|
||||
pass.putSingleFile(makefile_text, new RemoteFile(getRemoteProject().full_name, "Makefile"));
|
||||
pass.user.connection.putSingleFile(makefile_text, new RemoteFile(getRemoteProject().full_name, "Makefile"));
|
||||
//очистить все что связано с gcov
|
||||
//файлы gcda, gcno, gcov
|
||||
pass.deleteFilesByExtensions(getRemoteProject(), "gcda", "gcno", "gcov");
|
||||
pass.user.connection.deleteFilesByExtensions(getRemoteProject(), "gcda", "gcno", "gcov");
|
||||
//очистить служебные файлы.
|
||||
super.PrepareWorkspace();
|
||||
}
|
||||
@Override
|
||||
protected void StartTask() throws Exception {
|
||||
//UI.Info("starting task");
|
||||
task.PID = pass.ShellCommand(
|
||||
"cd " + Utils.DQuotes(getRemoteProject().full_name),
|
||||
getStartCommand());
|
||||
pass.user.connection.performScript(getRemoteProject(), getStartCommand()+" 1>PID");
|
||||
RemoteFile PID = getPID();
|
||||
while (!pass.user.connection.Exists(PID)){
|
||||
System.out.println("PID NOT FOUND");
|
||||
Utils.sleep(1000);
|
||||
}
|
||||
task.PID = pass.user.connection.readFromFile(PID).replace("\n","").replace("\r","");
|
||||
System.out.println("PID="+Utils.Brackets(task.PID));
|
||||
task.state = TaskState.Running;
|
||||
}
|
||||
@Override
|
||||
protected void ValidateTaskResults() throws Exception {
|
||||
if (pass.Exists(getBinary())) {
|
||||
if (pass.user.connection.Exists(getBinary())) {
|
||||
RemoteFile renamed_binary = new RemoteFile(getRemoteProject().full_name, Utils.getDateName("spf_" + getBinary().name));
|
||||
pass.sftpChannel.rename(getBinary().full_name, renamed_binary.full_name);
|
||||
pass.user.connection.sftpChannel.rename(getBinary().full_name, renamed_binary.full_name);
|
||||
task.binary_name = renamed_binary.name;
|
||||
task.state = TaskState.Done;
|
||||
} else task.state = TaskState.DoneWithErrors;
|
||||
|
||||
Reference in New Issue
Block a user