Skip to content

Commit 48ccc6e

Browse files
committed
Address feedback
1 parent dfa731d commit 48ccc6e

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

src/Xamarin.Android.Build.Tasks/Tasks/GenerateNativeMarshalMethodSources.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,26 +78,37 @@ void Generate (NativeCodeGenStateCollection? nativeCodeGenStates, string abi)
7878
_ => throw new NotSupportedException ($"Internal error: unsupported runtime type '{androidRuntime}'")
7979
};
8080

81+
bool fileFullyWritten;
8182
if (EnableNativeRuntimeLinking) {
8283
var pinvokePreserveGen = new PreservePinvokesNativeAssemblyGenerator (Log, EnsureCodeGenState (nativeCodeGenStates, targetArch), MonoComponents);
8384
LLVMIR.LlvmIrModule pinvokePreserveModule = pinvokePreserveGen.Construct ();
8485
using var pinvokePreserveWriter = MemoryStreamPool.Shared.CreateStreamWriter ();
86+
fileFullyWritten = false;
8587
try {
8688
pinvokePreserveGen.Generate (pinvokePreserveModule, targetArch, pinvokePreserveWriter, pinvokePreserveLlFilePath!);
87-
} finally {
8889
pinvokePreserveWriter.Flush ();
8990
Files.CopyIfStreamChanged (pinvokePreserveWriter.BaseStream, pinvokePreserveLlFilePath!);
91+
fileFullyWritten = true;
92+
} finally {
93+
if (!fileFullyWritten) {
94+
MonoAndroidHelper.LogTextStreamContents (Log, $"Partial contents of file '{pinvokePreserveLlFilePath}'", pinvokePreserveWriter.BaseStream);
95+
}
9096
}
9197
}
9298

9399
var marshalMethodsModule = marshalMethodsAsmGen.Construct ();
94100
using var marshalMethodsWriter = MemoryStreamPool.Shared.CreateStreamWriter ();
95101

102+
fileFullyWritten = false;
96103
try {
97104
marshalMethodsAsmGen.Generate (marshalMethodsModule, targetArch, marshalMethodsWriter, marshalMethodsLlFilePath);
98-
} finally {
99105
marshalMethodsWriter.Flush ();
100106
Files.CopyIfStreamChanged (marshalMethodsWriter.BaseStream, marshalMethodsLlFilePath);
107+
fileFullyWritten = true;
108+
} finally {
109+
if (!fileFullyWritten) {
110+
MonoAndroidHelper.LogTextStreamContents (Log, $"Partial contents of file '{marshalMethodsLlFilePath}'", marshalMethodsWriter.BaseStream);
111+
}
101112
}
102113

103114
MarshalMethodsNativeAssemblyGenerator MakeMonoGenerator ()

src/Xamarin.Android.Build.Tasks/Tasks/ProcessNativeLibraries.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ public override bool RunTask ()
107107

108108
if (!IgnoreLibraryWhenLinkingRuntime (library)) {
109109
output.Add (library);
110+
} else {
111+
Log.LogDebugMessage ($"Ignoring '{library.ItemSpec}'");
110112
}
111113
}
112114

src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,5 +804,16 @@ public static JavaPeerStyle ParseCodeGenerationTarget (string codeGenerationTarg
804804
}
805805

806806
public static object GetProjectBuildSpecificTaskObjectKey (object key, string workingDirectory, string intermediateOutputPath) => (key, workingDirectory, intermediateOutputPath);
807+
808+
public static void LogTextStreamContents (TaskLoggingHelper log, string message, Stream stream)
809+
{
810+
if (stream.CanSeek) {
811+
stream.Seek (0, SeekOrigin.Begin);
812+
}
813+
814+
using var reader = new StreamReader (stream, Encoding.UTF8, detectEncodingFromByteOrderMarks: false, bufferSize: -1, leaveOpen: true);
815+
log.LogDebugMessage (message);
816+
log.LogDebugMessage (reader.ReadToEnd ());
817+
}
807818
}
808819
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy