From 2f12e673561a565378d9fee4faca648862b48f9a Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 19 Feb 2021 12:25:53 +0100 Subject: [PATCH] Fix handling errors when saving scripting API parsing cache --- .../Flax.Build/Bindings/BindingsGenerator.Cache.cs | 2 ++ Source/Tools/Flax.Build/Bindings/BindingsGenerator.cs | 10 +++++++++- .../Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cache.cs b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cache.cs index bd3cd2c2e..f561fb96e 100644 --- a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cache.cs +++ b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cache.cs @@ -164,6 +164,8 @@ namespace Flax.Build.Bindings private static void SaveCache(ModuleInfo moduleInfo, BuildOptions moduleOptions, List headerFiles) { + if (!Directory.Exists(moduleOptions.IntermediateFolder)) + return; var path = GetCachePath(moduleInfo.Module, moduleOptions); using (var stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read)) using (var writer = new BinaryWriter(stream, Encoding.UTF8)) diff --git a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.cs b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.cs index a7e1508eb..a9c11136e 100644 --- a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.cs +++ b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.cs @@ -153,7 +153,15 @@ namespace Flax.Build.Bindings // Save cache using (new ProfileEventScope("SaveCache")) { - SaveCache(moduleInfo, moduleOptions, headerFiles); + try + { + SaveCache(moduleInfo, moduleOptions, headerFiles); + } + catch (Exception ex) + { + Log.Error($"Failed to save API cache for module {moduleInfo.Module.Name}"); + Log.Exception(ex); + } } // Initialize API diff --git a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs index af50cfe1e..9b3d7b408 100644 --- a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs +++ b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs @@ -751,7 +751,9 @@ namespace Flax.Build using (new ProfileEventScope("BuildBindings")) { if (!buildData.Target.IsPreBuilt) + { BuildTargetBindings(rules, graph, buildData); + } } // Link modules into a target