Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@ src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props
external/monodroid/
external/mono/
tests/api-compatibility/reference/*.dll
tests/api-compatibility/reference/*.cs
Novell
1 change: 1 addition & 0 deletions Before.Xamarin.Android.sln.targets
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
<Import Project="$(MSBuildThisFileDirectory)build-tools\scripts\ImportExportDocs.targets" />
<Import Project="$(MSBuildThisFileDirectory)build-tools\scripts\PrepareWindows.targets" Condition=" '$(OS)' == 'Windows_NT' " />
<Import Project="$(MSBuildThisFileDirectory)build-tools\scripts\RunTests.targets" />
<Import Project="$(MSBuildThisFileDirectory)tests\api-compatibility\api-compatibility.targets" />
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,13 @@ public override bool Execute ()
if (prefix != null && entryDir.StartsWith (prefix, StringComparison.OrdinalIgnoreCase)) {
zipDir = entryDir.Substring (prefix.Length);
}
zip.AddFileToDirectory (entryPath, zipDir, useFileDirectory: false);
if (string.IsNullOrEmpty (zipDir)) {
// JonP can't figure out how to actually clear the archive directory name
// using AddFileToDirectory(). This works as desired.
zip.AddFile (entryPath, Path.GetFileName (entryPath));
} else {
zip.AddFileToDirectory (entryPath, zipDir, useFileDirectory: false);
}
}
}
return !Log.HasLoggedErrors;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ protected virtual bool LogTaskMessages {
get { return true; }
}

protected virtual bool PreserveOutput {
get { return true; }
}

protected override string ToolBaseName {
get { return "git"; }
}
Expand Down Expand Up @@ -68,7 +72,9 @@ protected override string GetWorkingDirectory ()
protected override void LogEventsFromTextOutput (string singleLine, MessageImportance messageImportance)
{
base.LogEventsFromTextOutput (singleLine, messageImportance);
Lines.Add (singleLine);
if (PreserveOutput) {
Lines.Add (singleLine);
}
}
}
}
Expand Down
27 changes: 23 additions & 4 deletions src/Mono.Android/Mono.Android.targets
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask AssemblyFile="$(PrepTasksAssembly)" TaskName="Xamarin.Android.BuildTools.PrepTasks.GitDiff" />
<UsingTask AssemblyFile="$(PrepTasksAssembly)" TaskName="Xamarin.Android.BuildTools.PrepTasks.ReplaceFileContents" />
<UsingTask AssemblyFile="$(BootstrapTasksAssembly)" TaskName="Xamarin.Android.Tools.BootstrapTasks.CheckApiCompatibility" />
<Import Project="..\..\build-tools\scripts\XAVersionInfo.targets" />
Expand Down Expand Up @@ -174,23 +175,41 @@
<ApiCompatibilityFiles Include="$(ApiCompatibilityDir)/reference/*.*" />
</ItemGroup>
<Target
Name="AfterBuild"
Name="_CheckApiCompatibility"
Condition=" '$(DisableApiCompatibilityCheck)' != 'True' "
AfterTargets="Build"
Inputs="$(TargetPath);@(ApiCompatibilityFiles)"
Outputs="$(IntermediateOutputPath)CheckApiCompatibility.stamp">
<CheckApiCompatibility
ContinueOnError="ErrorAndContinue"
ApiCompatPath="$(XAPackagesDir)\microsoft.dotnet.apicompat\5.0.0-beta.20078.1\tools\net472\"
ApiLevel="$(AndroidFrameworkVersion)"
LastStableApiLevel="$(AndroidLatestStableFrameworkVersion)"
TargetImplementationPath="$(OutputPath)"
ApiCompatibilityPath="$(ApiCompatibilityDir)"
/>
<Touch
Files="$(IntermediateOutputPath)CheckApiCompatibility.stamp"
AlwaysCreate="True"
<PropertyGroup>
<_RunApiDiff Condition=" '$(MSBuildLastTaskResult)' == 'False' ">True</_RunApiDiff>
<_GenAPI>"$(XAPackagesDir)\microsoft.dotnet.genapi\5.0.0-beta.20078.1\tools\net472\Microsoft.DotNet.GenAPI.exe"</_GenAPI>
<_ContractRefSrc>"$(ApiCompatibilityDir)\reference\Mono.Android.dll.cs"</_ContractRefSrc>
<_TargetRefSrc>"$(TargetPath).cs"</_TargetRefSrc>
</PropertyGroup>
<Exec
Condition=" '$(_RunApiDiff)' == 'True' "
Command="$(ManagedRuntime) $(ManagedRuntimeArgs) $(_GenAPI) &quot;$(TargetPath)&quot; > $(_TargetRefSrc)"
/>
<GitDiff
Condition=" '$(_RunApiDiff)' == 'True' "
ContinueOnError="ErrorAndContinue"
Arguments="--no-index $(_ContractRefSrc) $(_TargetRefSrc)"
WorkingDirectory="$(MSBuildThisFileDirectory)"
/>
<ItemGroup>
<FileWrites Include="$(IntermediateOutputPath)CheckApiCompatibility.stamp" />
</ItemGroup>
<Touch
Files="$(IntermediateOutputPath)CheckApiCompatibility.stamp"
AlwaysCreate="True"
/>
</Target>
</Project>
9 changes: 9 additions & 0 deletions tests/api-compatibility/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,15 @@ current version of an assembly. We could also called it the V2 assembly.
[mdac]: https://github.com/dotnet/arcade/tree/master/src/Microsoft.DotNet.ApiCompat


## Update Contract Assembly

To update the contract assembly, run the `UpdateMonoAndroidContract` target
and provide the `$(ContractAssembly)` MSBuild property. `$(ContractAssembly)`
should be the path to the new contract assembly to use:

msbuild Xamarin.Android.sln /t:UpdateMonoAndroidContract '/p:ContractAssembly=/Users/example/Downloads/\$ReferenceAssemblies/Microsoft/Framework/MonoAndroid/v10.0/Mono.Android.dll'


## Build Task

We have developed a build task that will wrap *Microsoft.DotNet.ApiCompat.exe*
Expand Down
43 changes: 43 additions & 0 deletions tests/api-compatibility/api-compatibility.targets
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\Configuration.props" />
<UsingTask AssemblyFile="$(BootstrapTasksAssembly)" TaskName="Xamarin.Android.Tools.BootstrapTasks.Zip" />
<Target Name="UpdateMonoAndroidContract">
<Error
Condition=" '$(ContractAssembly)' == '' "
Text="Please set the %24(ContractAssembly) property!"
/>
<PropertyGroup>
<_GenAPI>"$(XAPackagesDir)\microsoft.dotnet.genapi\5.0.0-beta.20078.1\tools\net472\Microsoft.DotNet.GenAPI.exe"</_GenAPI>
<_CilStrip>"$(XAInstallPrefix)\xbuild\Xamarin\Android\cil-strip.exe"</_CilStrip>
<_ContractRefDll>$(MSBuildThisFileDirectory)\reference\Mono.Android.dll</_ContractRefDll>
<_ContractRefSrc>$(MSBuildThisFileDirectory)\reference\Mono.Android.dll.cs</_ContractRefSrc>
</PropertyGroup>
<Copy
SourceFiles="$(ContractAssembly)"
DestinationFiles="$(_ContractRefDll)"
/>
<Exec
Command="$(ManagedRuntime) $(ManagedRuntimeArgs) $(_GenAPI) &quot;$(_ContractRefDll)&quot; > &quot;$(_ContractRefSrc)&quot;"
/>
<Exec
Command="$(ManagedRuntime) $(ManagedRuntimeArgs) $(_CilStrip) &quot;$(_ContractRefDll)&quot;"
/>
<ItemGroup>
<_ZipEntry Include="$(_ContractRefDll)" />
<_ZipEntry Include="$(_ContractRefSrc)" />
</ItemGroup>
<Zip
File="$(MSBuildThisFileDirectory)\reference\Mono.Android.zip"
Entries="@(_ZipEntry)"
Prefix="$(MSBuildThisFileDirectory)\reference\"
Overwrite="True"
/>
<!--
<Exec
Command="zip Mono.Android.zip Mono.Android.dll Mono.Android.dll.cs"
WorkingDirectory="$(MSBuildThisFileDirectory)\reference"
/>
-->
</Target>
</Project>
Binary file not shown.
Binary file not shown.