diff --git a/Make.config b/Make.config index 188f42bacf..714074b2ea 100644 --- a/Make.config +++ b/Make.config @@ -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 diff --git a/tests/dotnet/Makefile b/tests/dotnet/Makefile index 07f46bb4e1..74ec0d9788 100644 --- a/tests/dotnet/Makefile +++ b/tests/dotnet/Makefile @@ -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 $@ diff --git a/tests/test-libraries/Makefile b/tests/test-libraries/Makefile index 34adc5835c..9a74356d7c 100644 --- a/tests/test-libraries/Makefile +++ b/tests/test-libraries/Makefile @@ -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. diff --git a/tests/test-libraries/nugets/FrameworksInRuntimesNativeDirectory/FrameworksInRuntimesNativeDirectory.csproj b/tests/test-libraries/nugets/FrameworksInRuntimesNativeDirectory/FrameworksInRuntimesNativeDirectory.csproj new file mode 100644 index 0000000000..23761d8615 --- /dev/null +++ b/tests/test-libraries/nugets/FrameworksInRuntimesNativeDirectory/FrameworksInRuntimesNativeDirectory.csproj @@ -0,0 +1,108 @@ + + + netstandard2.0 + Xamarin.Tests.FrameworksInRuntimesNativeDirectory + 1.0.0 + https://github.com/xamarin/xamarin-macios + main + Microsoft + © Microsoft Corporation. All rights reserved. + https://github.com/xamarin/xamarin-macios + ../../.. + $(RootTestDirectory)/test-libraries/frameworks + + + + + + + + + + + + + + + + + Dependency + true + + + + + + <_FrameworkListFile>$(IntermediateOutputPath)data/RuntimeList.xml + <_PackNativePath>runtimes/$(_RuntimeIdentifier)/native + + + + + <_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/" /> + + + <_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/" /> + + + <_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/" /> + + + <_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/" /> + + + + <_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/" /> + + + <_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/" /> + + + <_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/" /> + + + <_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/" /> + + + <_PackageFiles TargetPath="%(PackagePath)" /> + + + + + <_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" /> + + + + + + + + + + + _GenerateFrameworkListFile; + $(BeforePack); + + + + diff --git a/tests/test-libraries/nugets/FrameworksInRuntimesNativeDirectory/Library.cs b/tests/test-libraries/nugets/FrameworksInRuntimesNativeDirectory/Library.cs new file mode 100644 index 0000000000..b35af8435f --- /dev/null +++ b/tests/test-libraries/nugets/FrameworksInRuntimesNativeDirectory/Library.cs @@ -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 ()); + } + } +} diff --git a/tests/test-libraries/nugets/FrameworksInRuntimesNativeDirectory/Makefile b/tests/test-libraries/nugets/FrameworksInRuntimesNativeDirectory/Makefile new file mode 100644 index 0000000000..4b3198f8b7 --- /dev/null +++ b/tests/test-libraries/nugets/FrameworksInRuntimesNativeDirectory/Makefile @@ -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_.*\(.*\).*_\1_') +PACKAGE_VERSION=$(shell grep '' FrameworksInRuntimesNativeDirectory.csproj | sed 's_.*\(.*\).*_\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) diff --git a/tests/test-libraries/nugets/Makefile b/tests/test-libraries/nugets/Makefile new file mode 100644 index 0000000000..6d296c2019 --- /dev/null +++ b/tests/test-libraries/nugets/Makefile @@ -0,0 +1,4 @@ +TOP=../../.. +SUBDIRS=FrameworksInRuntimesNativeDirectory + +include $(TOP)/Make.config