public static BeeDriver Make(RunnableProgram buildProgram, string dagName, string dagDirectory, bool useScriptUpdater, string projectDirectory, ProgressAPI progressAPI = null, RunnableProgram beeBackendProgram = null) { var sourceFileUpdaters = useScriptUpdater ? new[] { new UnityScriptUpdater(projectDirectory) } : Array.Empty <SourceFileUpdaterBase>(); var processSourceFileUpdatersResult = new UnitySourceFileUpdatersResultHandler(); NPath dagDir = dagDirectory ?? "Library/Bee"; RecreateDagDirectoryIfNeeded(dagDir); NPath profilerOutputFile = UnityBeeDriverProfilerSession.GetTraceEventsOutputForNewBeeDriver() ?? $"{dagDir}/fullprofile.json"; var result = new BeeDriver(buildProgram, beeBackendProgram ?? UnityBeeBackendProgram(), projectDirectory, dagName, dagDir.ToString(), sourceFileUpdaters, processSourceFileUpdatersResult, progressAPI ?? new UnityProgressAPI("Script Compilation"), profilerOutputFile: profilerOutputFile.ToString()); result.DataForBuildProgram.Add(new ConfigurationData { Il2CppDir = IL2CPPUtils.GetIl2CppFolder(), Il2CppPath = IL2CPPUtils.GetExePath("il2cpp"), UnityLinkerPath = IL2CPPUtils.GetExePath("UnityLinker"), NetCoreRunPath = NetCoreRunProgram.NetCoreRunPath, EditorContentsPath = EditorApplication.applicationContentsPath, Packages = GetPackageInfos(NPath.CurrentDirectory.ToString()), UnityVersion = Application.unityVersion, UnityVersionNumeric = new BeeBuildProgramCommon.Data.Version(Application.unityVersionVer, Application.unityVersionMaj, Application.unityVersionMin), UnitySourceCodePath = Unsupported.IsSourceBuild(false) ? Unsupported.GetBaseUnityDeveloperFolder() : null, AdvancedLicense = PlayerSettings.advancedLicense, Batchmode = InternalEditorUtility.inBatchMode, EmitDataForBeeWhy = (Debug.GetDiagnosticSwitch("EmitDataForBeeWhy").value as bool?) ?? false, }); return(result); }
private int ExecuteCore(IHost host, ExecuteParameters parameters) { int exitCode = -1; var process = Process.GetCurrentProcess(); var oldPriority = process.PriorityClass; var oldAffinity = process.TryGetAffinity(); var thread = Thread.CurrentThread; var oldThreadPriority = thread.Priority; var affinity = parameters.BenchmarkCase.Job.ResolveValueAsNullable(EnvironmentMode.AffinityCharacteristic); try { process.TrySetPriority(ProcessPriorityClass.High, parameters.Logger); thread.TrySetPriority(ThreadPriority.Highest, parameters.Logger); if (affinity != null) { process.TrySetAffinity(affinity.Value, parameters.Logger); } var generatedAssembly = ((InProcessEmitArtifactsPath)parameters.BuildResult.ArtifactsPaths) .GeneratedAssembly; exitCode = RunnableProgram.Run( parameters.BenchmarkId, generatedAssembly, parameters.BenchmarkCase, host); } catch (Exception ex) { parameters.Logger.WriteLineError($"// ! {GetType().Name}, exception: {ex}"); } finally { process.TrySetPriority(oldPriority, parameters.Logger); thread.TrySetPriority(oldThreadPriority, parameters.Logger); if (affinity != null && oldAffinity != null) { process.TrySetAffinity(oldAffinity.Value, parameters.Logger); } } return(exitCode); }
public static BuildRequest BuildRequestFor(RunnableProgram buildProgram, string dagName, string dagDirectory, bool useScriptUpdater, string projectDirectory, ILPostProcessingProgram ilpp, StdOutMode stdoutMode, RunnableProgram beeBackendProgram = null) { NPath dagDir = dagDirectory ?? "Library/Bee"; RecreateDagDirectoryIfNeeded(dagDir); var performingPlayerBuild = UnityBeeDriverProfilerSession.PerformingPlayerBuild; NPath profilerOutputFile = performingPlayerBuild ? UnityBeeDriverProfilerSession.GetTraceEventsOutputForPlayerBuild() : $"{dagDir}/fullprofile.json"; return(new BuildRequest() { BuildProgram = buildProgram, BackendProgram = beeBackendProgram ?? UnityBeeBackendProgram(stdoutMode), ProjectRoot = projectDirectory, DagName = dagName, BuildStateDirectory = dagDir.EnsureDirectoryExists().ToString(), ProfilerOutputFile = profilerOutputFile.ToString(), // Use a null process name during a player build to avoid writing process metadata. The player profiler will take care of writing the process metadata ProfilerProcessName = performingPlayerBuild ? null : "BeeDriver", SourceFileUpdaters = useScriptUpdater ? new[] { new UnityScriptUpdater(projectDirectory) } : Array.Empty <SourceFileUpdaterBase>(), ProcessSourceFileUpdatersResult = new UnitySourceFileUpdatersResultHandler(), DataForBuildProgram = { () => new ConfigurationData { Il2CppDir = IL2CPPUtils.GetIl2CppFolder(), Il2CppPath = IL2CPPUtils.GetExePath("il2cpp"), UnityLinkerPath = IL2CPPUtils.GetExePath("UnityLinker"), NetCoreRunPath = NetCoreRunProgram.NetCoreRunPath, EditorContentsPath = EditorApplication.applicationContentsPath, Packages = GetPackageInfos(NPath.CurrentDirectory.ToString()), UnityVersion = Application.unityVersion, UnityVersionNumeric = new BeeBuildProgramCommon.Data.Version(Application.unityVersionVer, Application.unityVersionMaj, Application.unityVersionMin), UnitySourceCodePath = Unsupported.IsSourceBuild(false) ? Unsupported.GetBaseUnityDeveloperFolder() : null, AdvancedLicense = PlayerSettings.advancedLicense, Batchmode = InternalEditorUtility.inBatchMode, EmitDataForBeeWhy = (Debug.GetDiagnosticSwitch("EmitDataForBeeWhy").value as bool?) ?? false, NamedPipeOrUnixSocket = ilpp.NamedPipeOrUnixSocket, } } }); }
public UnityScriptUpdaterTask(NPath scriptUpdaterRsp, NPath projectRoot, RunnableProgram unityScriptUpdaterProgram, NodeResult nodeResult, bool produceErrorIfNoUpdatesAreProduced) : base(nodeResult, produceErrorIfNoUpdatesAreProduced) { var tempOutputDirectory = new NPath($"Temp/ScriptUpdater/{Math.Abs(nodeResult.outputfile.GetHashCode())}").EnsureDirectoryExists(); _updateTxtFile = tempOutputDirectory.MakeAbsolute().Combine("updates.txt").DeleteIfExists(); var args = new[] { "cs", $"\"{EditorApplication.applicationContentsPath}\"", $"\"{tempOutputDirectory}\"", $"\"{APIUpdaterManager.ConfigurationSourcesFilter}\"", scriptUpdaterRsp.InQuotes() }; RunningProgram = unityScriptUpdaterProgram.Start(projectRoot.ToString(), args); }
public static BeeDriver Make(RunnableProgram buildProgram, EditorCompilation editorCompilation, string dagName, string dagDirectory = null, bool useScriptUpdater = true) { return(Make(buildProgram, dagName, dagDirectory, useScriptUpdater, editorCompilation.projectDirectory)); }
public static BuildRequest BuildRequestFor(RunnableProgram buildProgram, EditorCompilation editorCompilation, string dagName, string dagDirectory = null, bool useScriptUpdater = true) { return(BuildRequestFor(buildProgram, dagName, dagDirectory, useScriptUpdater, editorCompilation.projectDirectory, new ILPostProcessingProgram(), StdOutModeForScriptCompilation)); }
public UnityScriptUpdater(NPath projectRoot) { ProjectRoot = projectRoot; _scriptUpdaterProgram = DefaultScriptUpdaterProgram(); _configurationSourcesFilter = APIUpdaterManager.ConfigurationSourcesFilter; }
public UnityScriptUpdater(NPath projectRoot, RunnableProgram customScriptUpdaterProgram = null) { ProjectRoot = projectRoot; _scriptUpdaterProgram = customScriptUpdaterProgram ?? DefaultScriptUpdaterProgram(); }
public static BeeDriver Make(RunnableProgram buildProgram, EditorCompilation editorCompilation, string dagName, ILPostProcessingProgram ilpp, string dagDirectory = null, bool useScriptUpdater = true) { return(Make(buildProgram, dagName, dagDirectory, useScriptUpdater, editorCompilation.projectDirectory, ilpp, StdOutModeForScriptCompilation)); }