Ship the WeChat hot-update catalogs and the camp, TideWhale T2, UI atlas, and animation-lab work.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using HybridCLR.Editor;
|
||||
using HybridCLR.Editor.Commands;
|
||||
using HybridCLR.Editor.Settings;
|
||||
using Newtonsoft.Json;
|
||||
using UnityEditor;
|
||||
using UnityEditor.Build.Reporting;
|
||||
using UnityEngine;
|
||||
|
||||
public static class VerifyHybridClrGeneration
|
||||
{
|
||||
public static async Task<string> VerifyCallbacks()
|
||||
{
|
||||
BuildReport report = BuildReport.GetLatestReport();
|
||||
if (report == null || report.summary.platform != BuildTarget.WebGL)
|
||||
throw new Exception("A WebGL build report is required");
|
||||
string bee = Environment.GetEnvironmentVariable("BEE_BUILD_THREADS");
|
||||
string binaryen = Environment.GetEnvironmentVariable("BINARYEN_CORES");
|
||||
var callbacks = new AOT.Editor.HybridCLR.WebGlBuildConcurrency();
|
||||
try
|
||||
{
|
||||
Environment.SetEnvironmentVariable("BEE_BUILD_THREADS", null);
|
||||
Environment.SetEnvironmentVariable("BINARYEN_CORES", null);
|
||||
callbacks.OnPreprocessBuild(report);
|
||||
RequireEnvironment("4", "4");
|
||||
callbacks.OnPostprocessBuild(report);
|
||||
RequireEnvironment(null, null);
|
||||
|
||||
Environment.SetEnvironmentVariable("BEE_BUILD_THREADS", "6");
|
||||
Environment.SetEnvironmentVariable("BINARYEN_CORES", "2");
|
||||
callbacks.OnPreprocessBuild(report);
|
||||
callbacks.OnPostprocessBuild(report);
|
||||
RequireEnvironment("6", "2");
|
||||
|
||||
Environment.SetEnvironmentVariable("BEE_BUILD_THREADS", null);
|
||||
Environment.SetEnvironmentVariable("BINARYEN_CORES", null);
|
||||
callbacks.OnPreprocessBuild(report);
|
||||
// Simulate an aborted build that never invokes its postprocess callback.
|
||||
await Task.Delay(250);
|
||||
RequireEnvironment(null, null);
|
||||
return "PASS: WebGL worker defaults, successful cleanup, explicit overrides, failed-build idle cleanup";
|
||||
}
|
||||
finally
|
||||
{
|
||||
callbacks.OnPostprocessBuild(report);
|
||||
Environment.SetEnvironmentVariable("BEE_BUILD_THREADS", bee);
|
||||
Environment.SetEnvironmentVariable("BINARYEN_CORES", binaryen);
|
||||
}
|
||||
}
|
||||
|
||||
static void RequireEnvironment(string bee, string binaryen)
|
||||
{
|
||||
if (Environment.GetEnvironmentVariable("BEE_BUILD_THREADS") != bee ||
|
||||
Environment.GetEnvironmentVariable("BINARYEN_CORES") != binaryen)
|
||||
throw new Exception("Unexpected build worker environment");
|
||||
}
|
||||
|
||||
public static string GenerateAll()
|
||||
{
|
||||
string previousBee = Environment.GetEnvironmentVariable("BEE_BUILD_THREADS");
|
||||
string previousBinaryen = Environment.GetEnvironmentVariable("BINARYEN_CORES");
|
||||
DateTime started = DateTime.UtcNow;
|
||||
try
|
||||
{
|
||||
Debug.Log("[VerifyHybridClrGeneration] Verify standard Generate All and project build callbacks");
|
||||
PrebuildCommand.GenerateAll();
|
||||
string directory = SettingsUtil.GetAssembliesPostIl2CppStripDir(EditorUserBuildSettings.activeBuildTarget);
|
||||
string[] dlls = Directory.GetFiles(directory, "*.dll");
|
||||
if (dlls.Length == 0) throw new Exception("No stripped AOT DLLs generated");
|
||||
string[] generated = {
|
||||
Path.Combine(SettingsUtil.GeneratedCppDir, "MethodBridge.cpp"),
|
||||
Path.Combine(SettingsUtil.GeneratedCppDir, "UnityVersion.h"),
|
||||
Path.Combine(Application.dataPath, HybridCLRSettings.Instance.outputLinkFile),
|
||||
Path.Combine(Application.dataPath, HybridCLRSettings.Instance.outputAOTGenericReferenceFile)
|
||||
};
|
||||
foreach (string file in generated)
|
||||
if (!File.Exists(file) || new FileInfo(file).Length == 0 || File.GetLastWriteTimeUtc(file) < started)
|
||||
throw new Exception("Missing or stale generated file: " + file);
|
||||
if (Environment.GetEnvironmentVariable("BEE_BUILD_THREADS") != previousBee ||
|
||||
Environment.GetEnvironmentVariable("BINARYEN_CORES") != previousBinaryen)
|
||||
throw new Exception("Build worker environment was not restored");
|
||||
string output = Path.GetFullPath(Path.Combine(Application.dataPath, "../../Tools/output/hybridclr_genall"));
|
||||
Directory.CreateDirectory(output);
|
||||
string result = JsonConvert.SerializeObject(new {
|
||||
passed = true,
|
||||
target = EditorUserBuildSettings.activeBuildTarget.ToString(),
|
||||
startedUtc = started,
|
||||
completedUtc = DateTime.UtcNow,
|
||||
beeBuildThreads = 4,
|
||||
binaryenCores = 4,
|
||||
environmentRestored = true,
|
||||
generatedFiles = generated.Select(Path.GetFullPath).ToArray(),
|
||||
aotDirectory = Path.GetFullPath(directory),
|
||||
aotDllCount = dlls.Length,
|
||||
aotDlls = dlls.Select(Path.GetFileName).ToArray()
|
||||
}, Formatting.Indented);
|
||||
File.WriteAllText(Path.Combine(output, "generate_all.json"), result);
|
||||
return result;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Environment.SetEnvironmentVariable("BEE_BUILD_THREADS", previousBee);
|
||||
Environment.SetEnvironmentVariable("BINARYEN_CORES", previousBinaryen);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user