Skip to content

Commit 25f2cd5

Browse files
committed
…and try again!
1 parent e041444 commit 25f2cd5

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CheckApiCompatibility.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ public sealed class CheckApiCompatibility : Task
6767
// In case API diffs vary between e.g. Classic MonoAndroid & .NET 6+
6868
public string TargetFramework { get; set; }
6969

70+
// What's missing from acceptableIssuesFile?
71+
public string LinesToAdd { get; set; }
72+
7073
// This Build tasks validates that changes are not breaking Api
7174
public override bool Execute ()
7275
{
@@ -260,6 +263,7 @@ void dataReceived (object sender, DataReceivedEventArgs args)
260263
}
261264

262265
LogError ($"CheckApiCompatibility found nonacceptable Api breakages for ApiLevel: {ApiLevel}.{Environment.NewLine}{string.Join (Environment.NewLine, lines)}");
266+
ReportMissingLines (acceptableIssuesFile.FullName, lines);
263267

264268
var missingItems = CodeGenDiff.GenerateMissingItems (CodeGenPath, contractAssembly.FullName, implementationAssembly.FullName);
265269
if (missingItems.Any ()) {
@@ -285,6 +289,21 @@ void dataReceived (object sender, DataReceivedEventArgs args)
285289
}
286290
}
287291

292+
void ReportMissingLines (string acceptableIssuesFile, List<string> lines)
293+
{
294+
if (string.IsNullOrWhiteSpace (LinesToAdd)) {
295+
return;
296+
}
297+
var known = new HashSet<string> (File.ReadAllLines (acceptableIssuesFile), StringComparer.Ordinal);
298+
using var writer = File.CreateText (LinesToAdd);
299+
foreach (var line in lines) {
300+
if (known.Contains (line)) {
301+
continue;
302+
}
303+
writer.WriteLine (line);
304+
}
305+
}
306+
288307
void LogError (string errorMessage)
289308
{
290309
if (!string.IsNullOrWhiteSpace (compatApiCommand)) {

src/Mono.Android/Mono.Android.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@
225225
TargetImplementationPath="$(OutputPath)"
226226
ApiCompatibilityPath="$(ApiCompatibilityDir)"
227227
TargetFramework="$(TargetFramework)"
228+
LinesToAdd="$(MSBuildThisFileDirectory)ApiCompatLinesToAdd.txt"
228229
/>
229230
<Touch
230231
Files="$(IntermediateOutputPath)CheckApiCompatibility.stamp"

0 commit comments

Comments
 (0)