[tests] Add build logic to build NuGets for testing purposes.

This commit is contained in:
Rolf Bjarne Kvinge 2021-08-12 12:30:57 +02:00
Родитель 40d4e6a49a
Коммит 0cc54bd76e
7 изменённых файлов: 170 добавлений и 1 удалений

Просмотреть файл

@ -673,5 +673,8 @@ DOTNET_tvOS_SDK_PLATFORMS=tvsimulator tvos
DOTNET_macOS_SDK_PLATFORMS=mac
DOTNET_MacCatalyst_SDK_PLATFORMS=maccatalyst
# A local feed to place test nugets.
NUGET_TEST_FEED=$(abspath $(TOP)/tests/.nuget/packages)
.SUFFIXES:
MAKEFLAGS += --no-builtin-rules

Просмотреть файл

@ -5,10 +5,12 @@ include $(TOP)/Make.config
# This tells NuGet to use the nupkgs we're building locally,
# and to put any extracted packages in the 'packages' directory (to not clutter up ~/.nuget/packages)
NuGet.config: $(TOP)/NuGet.config Makefile
$(Q) mkdir -p "$(abspath $(NUGET_TEST_FEED))"
$(Q) $(CP) $< $@.tmp
ifdef CUSTOM_DOTNET
$(Q) nuget sources add -Name dev-runtime-feed -Source $(abspath $(DOTNET_RUNTIME_PATH)/artifacts/packages/Release/Shipping) -ConfigFile $@.tmp
endif
$(Q) nuget sources add -Name local-tests-feed -Source $(abspath $(NUGET_TEST_FEED)) -ConfigFile $@.tmp
$(Q) nuget config -Set globalPackagesFolder=$(abspath $(CURDIR)/packages) -Config $@.tmp
$(Q) nuget config -Set repositorypath=$(abspath $(CURDIR)/packages) -Config $@.tmp
$(Q) mv $@.tmp $@

Просмотреть файл

@ -1,7 +1,7 @@
TOP=../..
include $(TOP)/Make.config
SUBDIRS += custom-type-assembly frameworks
SUBDIRS += custom-type-assembly frameworks nugets
# without this many compiler warnings about unused functions and variables
# in system headers show up.

Просмотреть файл

@ -0,0 +1,108 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<PackageId>Xamarin.Tests.FrameworksInRuntimesNativeDirectory</PackageId>
<PackageVersion>1.0.0</PackageVersion>
<RepositoryUrl>https://github.com/xamarin/xamarin-macios</RepositoryUrl>
<RepositoryBranch>main</RepositoryBranch>
<Authors>Microsoft</Authors>
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
<PackageProjectUrl>https://github.com/xamarin/xamarin-macios</PackageProjectUrl>
<RootTestDirectory>../../..</RootTestDirectory>
<TestFrameworksDirectory>$(RootTestDirectory)/test-libraries/frameworks</TestFrameworksDirectory>
</PropertyGroup>
<Import Project="..\..\..\..\eng\Versions.props" />
<!-- Code to automatically create FrameworkList.xml or RuntimeList.xml -->
<ItemGroup>
<PackageReference Include="Microsoft.DotNet.Build.Tasks.Feed" Version="$(MicrosoftDotNetBuildTasksFeedPackageVersion)" PrivateAssets="all" />
<PackageReference Include="Microsoft.DotNet.Build.Tasks.Packaging" Version="$(MicrosoftDotNetBuildTasksFeedPackageVersion)" PrivateAssets="all" />
<PackageReference Include="Microsoft.DotNet.Arcade.Sdk" Version="$(MicrosoftDotNetBuildTasksFeedPackageVersion)" PrivateAssets="all" GeneratePathProperty="true" />
</ItemGroup>
<Import Project="Sdk.props" Sdk="Microsoft.DotNet.SharedFramework.Sdk" Version="$(MicrosoftDotNetBuildTasksFeedPackageVersion)" />
<UsingTask TaskName="CreateFrameworkListFile" AssemblyFile="$(DotNetSharedFrameworkTaskFile)"/>
<UsingTask TaskName="GenerateBuildManifest" AssemblyFile="$(_MicrosoftDotNetBuildTasksFeedTaskDir)Microsoft.DotNet.Build.Tasks.Feed.dll" />
<PropertyGroup>
<PackageType>Dependency</PackageType>
<IncludeBuildOutput>true</IncludeBuildOutput>
</PropertyGroup>
<Target Name="_GenerateFrameworkListFile">
<!-- https://github.com/dotnet/runtime/blob/0647ec314948904319da5eb15e9931f7c85ed1e2/src/installer/pkg/projects/Directory.Build.targets#L281 -->
<PropertyGroup>
<_FrameworkListFile>$(IntermediateOutputPath)data/RuntimeList.xml</_FrameworkListFile>
<_PackNativePath>runtimes/$(_RuntimeIdentifier)/native</_PackNativePath>
</PropertyGroup>
<ItemGroup>
<!-- FrameworksInRuntimesNativeDirectory1.framework -->
<!-- iOS -->
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/ios-arm64/FrameworksInRuntimesNativeDirectory1.framework/*" IsNative="true" PackagePath="runtimes/ios-arm64/native/FrameworksInRuntimesNativeDirectory1.framework/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/ios-arm/FrameworksInRuntimesNativeDirectory1.framework/*" IsNative="true" PackagePath="runtimes/ios-arm/native/FrameworksInRuntimesNativeDirectory1.framework/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/iossimulator-x64/FrameworksInRuntimesNativeDirectory1.framework/*" IsNative="true" PackagePath="runtimes/iossimulator-x64/native/FrameworksInRuntimesNativeDirectory1.framework/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/iossimulator-x86/FrameworksInRuntimesNativeDirectory1.framework/*" IsNative="true" PackagePath="runtimes/iossimulator-x86/native/FrameworksInRuntimesNativeDirectory1.framework/" />
<!-- tvOS -->
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/tvos-arm64/FrameworksInRuntimesNativeDirectory1.framework/*" IsNative="true" PackagePath="runtimes/tvos-arm64/native/FrameworksInRuntimesNativeDirectory1.framework/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/tvossimulator-x64/FrameworksInRuntimesNativeDirectory1.framework/*" IsNative="true" PackagePath="runtimes/tvossimulator-x64/native/FrameworksInRuntimesNativeDirectory1.framework/" />
<!-- macOS -->
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/osx-x64/FrameworksInRuntimesNativeDirectory1.framework.zip" IsNative="true" PackagePath="runtimes/osx-x64/native/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/osx-arm64/FrameworksInRuntimesNativeDirectory1.framework.zip" IsNative="true" PackagePath="runtimes/osx-arm64/native/" />
<!-- Mac Catalyst -->
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/maccatalyst-x64/FrameworksInRuntimesNativeDirectory1.framework.zip" IsNative="true" PackagePath="runtimes/maccatalyst-x64/native/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/maccatalyst-arm64/FrameworksInRuntimesNativeDirectory1.framework.zip" IsNative="true" PackagePath="runtimes/maccatalyst-arm64/native/" />
<!-- FrameworksInRuntimesNativeDirectory2.framework -->
<!-- iOS -->
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/ios-arm64/FrameworksInRuntimesNativeDirectory2.framework/*" IsNative="true" PackagePath="runtimes/ios-arm64/native/FrameworksInRuntimesNativeDirectory2.framework/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/ios-arm/FrameworksInRuntimesNativeDirectory2.framework/*" IsNative="true" PackagePath="runtimes/ios-arm/native/FrameworksInRuntimesNativeDirectory2.framework/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/iossimulator-x64/FrameworksInRuntimesNativeDirectory2.framework/*" IsNative="true" PackagePath="runtimes/iossimulator-x64/native/FrameworksInRuntimesNativeDirectory2.framework/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/iossimulator-x86/FrameworksInRuntimesNativeDirectory2.framework/*" IsNative="true" PackagePath="runtimes/iossimulator-x86/native/FrameworksInRuntimesNativeDirectory2.framework/" />
<!-- tvOS -->
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/tvos-arm64/FrameworksInRuntimesNativeDirectory2.framework/*" IsNative="true" PackagePath="runtimes/tvos-arm64/native/FrameworksInRuntimesNativeDirectory2.framework/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/tvossimulator-x64/FrameworksInRuntimesNativeDirectory2.framework/*" IsNative="true" PackagePath="runtimes/tvossimulator-x64/native/FrameworksInRuntimesNativeDirectory2.framework/" />
<!-- macOS -->
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/osx-x64/FrameworksInRuntimesNativeDirectory2.framework.zip" IsNative="true" PackagePath="runtimes/osx-x64/native/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/osx-arm64/FrameworksInRuntimesNativeDirectory2.framework.zip" IsNative="true" PackagePath="runtimes/osx-arm64/native/" />
<!-- Mac Catalyst -->
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/maccatalyst-x64/FrameworksInRuntimesNativeDirectory2.framework.zip" IsNative="true" PackagePath="runtimes/maccatalyst-x64/native/" />
<_PackageFiles Include="$(TestFrameworksDirectory)/.libs/maccatalyst-arm64/FrameworksInRuntimesNativeDirectory2.framework.zip" IsNative="true" PackagePath="runtimes/maccatalyst-arm64/native/" />
<!-- Set TargetPath=PackagePath for all files -->
<_PackageFiles TargetPath="%(PackagePath)" />
</ItemGroup>
<ItemGroup>
<!-- Hardcode framework attributes -->
<_FrameworkListRootAttributes Include="Name" Value="Microsoft $(_PlatformName) - NET 6.0" />
<_FrameworkListRootAttributes Include="TargetFrameworkIdentifier" Value=".NETCoreApp" />
<_FrameworkListRootAttributes Include="TargetFrameworkVersion" Value="6.0" />
<_PackageFiles Include="$(_FrameworkListFile)" PackagePath="data" />
<!-- The CreateFrameworkListFile task will add _PackageFiles to the files to pack, so remove them if they're already there -->
<None Remove="@(_PackageFiles)" />
</ItemGroup>
<!-- https://github.com/dotnet/arcade/blob/5824baf1c9a900ee00c167f96201c750bba6a574/src/Microsoft.DotNet.SharedFramework.Sdk/src/CreateFrameworkListFile.cs -->
<CreateFrameworkListFile
Files="@(_PackageFiles)"
TargetFile="$(_FrameworkListFile)"
TargetFilePrefixes="ref;runtimes"
RootAttributes="@(_FrameworkListRootAttributes)"
/>
</Target>
<PropertyGroup>
<BeforePack>
_GenerateFrameworkListFile;
$(BeforePack);
</BeforePack>
</PropertyGroup>
</Project>

Просмотреть файл

@ -0,0 +1,22 @@
using System;
using System.Runtime.InteropServices;
namespace FrameworksInRuntimesNativeDirectory {
public static class PInvokes {
[DllImport ("@rpath/FrameworksInRuntimesNativeDirectory1.framework/FrameworksInRuntimesNativeDirectory1")]
static extern IntPtr getFrameworksInRuntimesNativeDirectory1 ();
public static string GetFrameworksInRuntimesNativeDirectory1 ()
{
return Marshal.PtrToStringAuto (getFrameworksInRuntimesNativeDirectory1 ());
}
[DllImport ("@rpath/FrameworksInRuntimesNativeDirectory2.framework/FrameworksInRuntimesNativeDirectory2")]
static extern IntPtr getFrameworksInRuntimesNativeDirectory2 ();
public static string GetFrameworksInRuntimesNativeDirectory2 ()
{
return Marshal.PtrToStringAuto (getFrameworksInRuntimesNativeDirectory2 ());
}
}
}

Просмотреть файл

@ -0,0 +1,30 @@
TOP=../../../..
include $(TOP)/Make.config
unexport MSBUILD_EXE_PATH
NuGet.config global.json:
$(Q) $(MAKE) -C $(TOP)/tests/dotnet $@
$(Q) $(CP) $(TOP)/tests/dotnet/$@ .
.libs:
$(Q) mkdir -p $@
PACKAGE_ID=$(shell grep PackageId FrameworksInRuntimesNativeDirectory.csproj | sed 's_.*<PackageId>\(.*\)</PackageId>.*_\1_')
PACKAGE_VERSION=$(shell grep '<PackageVersion>' FrameworksInRuntimesNativeDirectory.csproj | sed 's_.*<PackageVersion>\(.*\)</PackageVersion>.*_\1_')
# Test case for https://github.com/xamarin/xamarin-macios/issues/12440
.libs/FrameworksInRuntimesNativeDirectory.nupkg: FrameworksInRuntimesNativeDirectory.csproj NuGet.config global.json $(wildcard *.cs) | .libs
$(Q) mkdir -p $(abspath $(NUGET_TEST_FEED))
$(Q_GEN) $(DOTNET6) pack /bl $(DOTNET_PACK_VERBOSITY) $<
$(Q) $(CP) bin/Debug/Xamarin.Tests.FrameworksInRuntimesNativeDirectory.$(PACKAGE_VERSION).nupkg $@
INSTALLED_PACKAGE=$(NUGET_TEST_FEED)/xamarin.tests.frameworksinruntimesnativedirectory/$(PACKAGE_VERSION)/xamarin.tests.frameworksinruntimesnativedirectory.$(PACKAGE_VERSION).nupkg
$(INSTALLED_PACKAGE): .libs/FrameworksInRuntimesNativeDirectory.nupkg
if test -d $(NUGET_TEST_FEED)/$(PACKAGE_ID)/$(PACKAGE_VERSION); then nuget delete $(PACKAGE_ID) $(PACKAGE_VERSION) -source $(abspath $(NUGET_TEST_FEED)) -NonInteractive || true; fi
rm -Rf $(TOP)/tests/dotnet/packages/xamarin.tests.frameworksinruntimesnativedirectory
mkdir -p $(abspath $(NUGET_TEST_FEED))
nuget add "$<" -source $(abspath $(NUGET_TEST_FEED)) -NonInteractive
all-local:: $(INSTALLED_PACKAGE)

Просмотреть файл

@ -0,0 +1,4 @@
TOP=../../..
SUBDIRS=FrameworksInRuntimesNativeDirectory
include $(TOP)/Make.config