Make our local .NET the default .NET for the build. (#15086)

Make our local .NET the default .NET (in the root's global.json), and then if
a directory wants to use the system .NET, then that directory would have to
opt-in (using its own global.json).

This way we don't have to copy global.json/NuGet.config files around to run
tests with the correct .NET setup.
This commit is contained in:
Rolf Bjarne Kvinge 2022-06-07 10:11:02 +02:00 коммит произвёл GitHub
Родитель dcecc4dbf9
Коммит a1d0b6eba9
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
60 изменённых файлов: 87 добавлений и 366 удалений

2
.gitignore поставляемый
Просмотреть файл

@ -31,7 +31,7 @@ tests/bcl-test/Mac\ OS\ X\ BCL\ \tests*.csproj
tests/bcl-test/mscorlib*.csproj
tests/bcl-test/SystemCoreXunit*.csproj
tests/bcl-test/SystemXunit.csproj
global6.json
global.json
.idea
device-tests-provisioning.csx
build-provisioning.csx

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

@ -523,7 +523,7 @@ MAC_PACKAGE_DMG_DIRNAME="$(MAC_PACKAGE_TITLE)"
MAC_PACKAGE_UTI=com.$(MAC_PACKAGE_NAME_LOWER).pkg
MAC_PACKAGE_INSTALL_LOCATION=$(MAC_FRAMEWORK_VERSIONED_DIR)
TT = $(SYSTEM_DOTNET) t4
TT = $(DOTNET) t4
PRODUCT_KEY_PATH?=$(TOP)/product.snk
@ -578,22 +578,11 @@ endif
-include $(TOP)/dotnet.config
$(TOP)/dotnet.config: $(TOP)/eng/Versions.props
$(Q) grep -A1 \"sdk\": $(TOP)/global.json | sed -e '1d' -e 's/[ \t]*"version": /SYSTEM_DOTNET_VERSION=/' -e 's/"//g' > $@.tmp
$(Q) grep MicrosoftDotnetSdkInternalPackageVersion $(TOP)/eng/Versions.props | sed -e 's/<*\/*MicrosoftDotnetSdkInternalPackageVersion>//g' -e 's/[ \t]*/DOTNET_VERSION=/' >> $@.tmp
$(Q) grep MicrosoftNETCoreAppRefPackageVersion $(TOP)/eng/Versions.props | sed -e 's/<*\/*MicrosoftNETCoreAppRefPackageVersion>//g' -e 's/[ \t]*/BUNDLED_NETCORE_PLATFORMS_PACKAGE_VERSION=/' >> $@.tmp
$(Q) grep MicrosoftNETWorkloadEmscriptenManifest60100PackageVersion $(TOP)/eng/Versions.props | sed -e 's/<*\/*MicrosoftNETWorkloadEmscriptenManifest60100PackageVersion>//g' -e 's/[ \t]*/EMSCRIPTEN_MANIFEST_PACKAGE_VERSION=/' >> $@.tmp
$(Q) mv $@.tmp $@
ifneq ("$(wildcard /usr/local/share/dotnet/dotnet)","")
SYSTEM_DOTNET=/usr/local/share/dotnet/dotnet
else
ifneq ("$(wildcard /usr/local/share/dotnet/x64/dotnet)","")
SYSTEM_DOTNET=/usr/local/share/dotnet/x64/dotnet
else
SYSTEM_DOTNET=/must/install/dotnet
endif
endif
DOTNET_DESTDIR ?= $(TOP)/_build
DOTNET_NUPKG_DIR ?= $(DOTNET_DESTDIR)/nupkgs
DOTNET_PKG_DIR ?= $(DOTNET_DESTDIR)/pkgs
@ -619,12 +608,12 @@ DOTNET_TARBALL=https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$(DOTNET_VERSI
DOTNET_TARBALL_NAME=$(notdir $(DOTNET_TARBALL))
DOTNET_DIR=$(abspath $(TOP)/builds/downloads/$(basename $(basename $(DOTNET_TARBALL_NAME))))
DOTNET=$(DOTNET_DIR)/dotnet
DOTNET_BCL_DIR:=$(abspath $(TOP)/builds/downloads/microsoft.netcore.app.ref/$(DOTNET_BCL_VERSION)/ref/$(DOTNET_TFM))
DOTNET_BCL_DIR:=$(abspath $(TOP)/packages/microsoft.netcore.app.ref/$(DOTNET_BCL_VERSION)/ref/$(DOTNET_TFM))
# Use the System.Runtime.InteropServices.NFloat.Internal package to get the System.Runtime.InteropServices.dll reference assembly for
# .NET 6. This is no longer needed for .NET 7, when we can switch back to the usual BCL reference assemblies.
ifeq ($(DOTNET_TFM),net6.0)
DOTNET_SYSTEM_RUNTIME_INTEROPSERVICES_REF_ASSEMBLY_DIR:=$(abspath $(TOP)/builds/downloads/system.runtime.interopservices.nfloat.internal/6.0.1/ref/net6.0)
DOTNET_SYSTEM_RUNTIME_INTEROPSERVICES_REF_ASSEMBLY_DIR:=$(abspath $(TOP)/packages/system.runtime.interopservices.nfloat.internal/6.0.1/ref/net6.0)
else
DOTNET_SYSTEM_RUNTIME_INTEROPSERVICES_REF_ASSEMBLY_DIR:=$(DOTNET_BCL_DIR)
endif

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

@ -58,10 +58,10 @@ ifdef INCLUDE_IOS
@echo Validated file permissions for Xamarin.iOS.
endif
all-local:: global6.json
all-local:: global.json
# This tells NuGet to use the exact same dotnet version we've configured in Make.config
global6.json: $(TOP)/Make.config.inc Makefile $(TOP)/.git/HEAD $(TOP)/.git/index
global.json: $(TOP)/Make.config.inc Makefile $(TOP)/.git/HEAD $(TOP)/.git/index
$(Q_GEN) \
printf "{\n" > $@; \
printf "\t\"sdk\": { \"version\": \"$(DOTNET_VERSION)\" }\n" >> $@; \
@ -149,6 +149,14 @@ fix-xcode-select:
fix-xcode-first-run:
$(XCODE_DEVELOPER_ROOT)/usr/bin/xcodebuild -runFirstLaunch
install-dotnet:
@echo "Figuring out package link..."
@export PKG=$$(make -C builds print-dotnet-pkg-urls); \
echo "Downloading $$(basename $$PKG)..."; \
curl -LO "$$PKG"; \
echo "Installing $$(basename $$PKG)..."; \
time sudo installer -pkg "$$(basename $$PKG)" -target / -verbose -dumplog
git-clean-all:
@echo "$(COLOR_RED)Cleaning and resetting all dependencies. This is a destructive operation.$(COLOR_CLEAR)"
@echo "$(COLOR_RED)You have 5 seconds to cancel (Ctrl-C) if you wish.$(COLOR_CLEAR)"

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

@ -1,7 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<!-- use a local package folder because we produce nuget packages which may end up having to be cleaned,
and it's much easier to clean a local repository than the global nuget cache (in particular on bots) -->
<add key="repositorypath" value="packages" />
<add key="globalPackagesFolder" value="packages" />
</config>
<packageSources>
<clear />
@ -21,6 +24,7 @@
<add key="dotnet7" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json" />
<add key="macios-dependencies" value="https://pkgs.dev.azure.com/xamarin/public/_packaging/macios-dependencies/nuget/v3/index.json" />
<add key="xamarin-impl" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json" />
<add key="local-tests-feed" value="tests/.nuget/packages" />
</packageSources>
<disabledPackageSources>
<clear />

2
builds/.gitignore поставляемый
Просмотреть файл

@ -28,3 +28,5 @@ mono-ios-sdk-destdir
*.dylib
*.o
x86-64-slice*
*.pkg

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

@ -126,7 +126,7 @@ DOWNLOAD_DOTNET_VERSION=$(BUNDLED_NETCORE_PLATFORMS_PACKAGE_VERSION)
endif
endif
.stamp-download-dotnet-packages: $(TOP)/Make.config downloads/$(basename $(basename $(DOTNET_TARBALL_NAME))) package-download/global.json package-download/NuGet.config
.stamp-download-dotnet-packages: $(TOP)/Make.config downloads/$(basename $(basename $(DOTNET_TARBALL_NAME)))
$(Q_GEN) cd package-download && $(DOTNET) \
build \
download-packages.proj \
@ -139,29 +139,16 @@ endif
/p:ToolChainManifestVersionBand="$(TOOLCHAIN_MANIFEST_VERSION_BAND)" \
/bl \
$(DOTNET_BUILD_VERBOSITY)
$(Q) $(CP) ./downloads/microsoft.net.workload.mono.toolchain.manifest-$(TOOLCHAIN_MANIFEST_VERSION_BAND)/$(DOWNLOAD_DOTNET_VERSION)/data/WorkloadManifest.* ./downloads/dotnet-sdk-$(DOTNET_VERSION)-osx-x64/sdk-manifests/$(DOTNET_MANIFEST_VERSION_BAND)/microsoft.net.workload.mono.toolchain/
$(Q) $(CP) ./downloads/microsoft.net.workload.emscripten.manifest-$(TOOLCHAIN_MANIFEST_VERSION_BAND)/$(EMSCRIPTEN_MANIFEST_PACKAGE_VERSION)/data/WorkloadManifest.* ./downloads/dotnet-sdk-$(DOTNET_VERSION)-osx-x64/sdk-manifests/$(DOTNET_MANIFEST_VERSION_BAND)/microsoft.net.workload.emscripten/
$(Q) $(CP) $(TOP)/packages/microsoft.net.workload.mono.toolchain.manifest-$(TOOLCHAIN_MANIFEST_VERSION_BAND)/$(DOWNLOAD_DOTNET_VERSION)/data/WorkloadManifest.* ./downloads/dotnet-sdk-$(DOTNET_VERSION)-osx-x64/sdk-manifests/$(DOTNET_MANIFEST_VERSION_BAND)/microsoft.net.workload.mono.toolchain/
$(Q) $(CP) $(TOP)/packages/microsoft.net.workload.emscripten.manifest-$(TOOLCHAIN_MANIFEST_VERSION_BAND)/$(EMSCRIPTEN_MANIFEST_PACKAGE_VERSION)/data/WorkloadManifest.* ./downloads/dotnet-sdk-$(DOTNET_VERSION)-osx-x64/sdk-manifests/$(DOTNET_MANIFEST_VERSION_BAND)/microsoft.net.workload.emscripten/
$(Q) touch $@
.stamp-install-t4: $(TOP)/.config/dotnet-tools.json
$(SYSTEM_DOTNET) tool restore
.stamp-install-t4: $(TOP)/.config/dotnet-tools.json .stamp-download-dotnet-packages
$(DOTNET) tool restore
$(Q) touch $@
BundledNETCorePlatformsPackageVersion.txt: .stamp-download-dotnet-packages
package-download/global.json: $(TOP)/global6.json Makefile
$(Q) $(CP) $< $@
# put any downloaded packages in our own directory, not in ~
package-download/NuGet.config: $(TOP)/NuGet.config Makefile
$(Q) $(CP) $< $@
$(Q) $(CP) $< $@.tmp
$(Q) nuget config -Set globalPackagesFolder=$(abspath $(CURDIR)/downloads) -Config $@.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) mv $@.tmp $@
DOTNET_DOWNLOADS = \
downloads/$(basename $(basename $(DOTNET_TARBALL_NAME))) \
.stamp-download-dotnet-packages \

3
builds/package-download/.gitignore поставляемый
Просмотреть файл

@ -1,3 +0,0 @@
NuGet.config
global.json

1
dotnet/.gitignore поставляемый
Просмотреть файл

@ -1,4 +1,3 @@
global.json
tmpdir
Workloads/Microsoft.NET.Sdk.*/LICENSE
WorkloadManifest.json

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

@ -167,14 +167,14 @@ $(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call NupkgDefinition,$(platform)
# Create the nuget in a temporary directory (nupkgs/)
define CreateNuGetTemplate
nupkgs/$(1)$(4).$(2).nupkg: $(TEMPLATED_FILES) $(WORKLOAD_TARGETS) $(3) package/$(1)/package.csproj $(wildcard package/*.csproj) $(wildcard $(DOTNET_DESTDIR)/$(1)/* $(DOTNET_DESTDIR)/$(1)/*/* $(DOTNET_DESTDIR)/$(1)/*/*/* $(DOTNET_DESTDIR)/$(1)/*/*/*/*) global.json .stamp-workaround-for-maccore-issue-2427
nupkgs/$(1)$(4).$(2).nupkg: $(TEMPLATED_FILES) $(WORKLOAD_TARGETS) $(3) package/$(1)/package.csproj $(wildcard package/*.csproj) $(wildcard $(DOTNET_DESTDIR)/$(1)/* $(DOTNET_DESTDIR)/$(1)/*/* $(DOTNET_DESTDIR)/$(1)/*/*/* $(DOTNET_DESTDIR)/$(1)/*/*/*/*) .stamp-workaround-for-maccore-issue-2427
@# Delete any versions of the nuget we're building
$$(Q) rm -f nupkgs/$(1).*.nupkg
$$(Q_PACK) $(DOTNET) pack package/$(1)/package.csproj -p:VersionBand=$(5) --output "$$(dir $$@)" $(DOTNET_PACK_VERBOSITY) "/bl:$$@.binlog"
endef
define CreateWindowsNuGetTemplate
nupkgs/$(1).$(2).nupkg: $(3) $(WORKLOAD_TARGETS) package/$(1)/package.csproj $(wildcard package/*.csproj) $(wildcard $(DOTNET_DESTDIR)/$(1)/* $(DOTNET_DESTDIR)/$(1)/*/* $(DOTNET_DESTDIR)/$(1)/*/*/* $(DOTNET_DESTDIR)/$(1)/*/*/*/*) global.json .stamp-workaround-for-maccore-issue-2427
nupkgs/$(1).$(2).nupkg: $(3) $(WORKLOAD_TARGETS) package/$(1)/package.csproj $(wildcard package/*.csproj) $(wildcard $(DOTNET_DESTDIR)/$(1)/* $(DOTNET_DESTDIR)/$(1)/*/* $(DOTNET_DESTDIR)/$(1)/*/*/* $(DOTNET_DESTDIR)/$(1)/*/*/*/*) .stamp-workaround-for-maccore-issue-2427
@# Delete any versions of the nuget we're building
$$(Q) rm -f nupkgs/$(1).*.nupkg
$$(Q_PACK) $(DOTNET) pack package/$(1)/package.csproj --output "$$(dir $$@)" $(DOTNET_PACK_VERBOSITY) "/bl:$$@.binlog"
@ -394,18 +394,11 @@ ifdef ENABLE_DOTNET
all-local:: $(TARGETS)
endif
# This tells NuGet to use the exact same dotnet version we've configured in Make.config
global.json: $(TOP)/global6.json
$(CP) $< $@
$(TOP)/tests/dotnet/NuGet.config:
$(Q) $(MAKE) -C $(TOP)/tests/dotnet NuGet.config
clean-local::
$(Q) rm -Rf $(DOTNET_NUPKG_DIR)
$(Q) git clean -xfdq
.stamp-workaround-for-maccore-issue-2427: global.json $(TOP)/eng/Versions.props $(LOCAL_WORKLOAD_TARGETS)
.stamp-workaround-for-maccore-issue-2427: $(TOP)/eng/Versions.props $(LOCAL_WORKLOAD_TARGETS)
$(Q) $(DOTNET) restore package/workaround-for-maccore-issue-2427/restore.csproj /bl:package/workaround-for-maccore-issue-2427/restore.binlog $(MSBUILD_VERBOSITY)
$(Q) touch $@

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

@ -1,5 +0,0 @@
{
"sdk": {
"version": "6.0.201"
}
}

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

@ -1,4 +1 @@
*.zip
NuGet.config
global.json

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

@ -9,18 +9,10 @@ Xamarin.PreBuilt.iOS.app.zip: .build-stamp
$(Q) rm -rf $@
$(Q_GEN) cd $(APP_DIR) && zip -9r $(abspath $@) .
NuGet.config: $(TOP)/tests/dotnet/NuGet.config $(TOP)/NuGet.config
$(Q) $(MAKE) $@ -C $(dir $<)
$(Q) $(CP) $< $@
global.json: $(TOP)/tests/dotnet/global.json $(TOP)/global6.json
$(Q) $(MAKE) $@ -C $(dir $<)
$(Q) $(CP) $< $@
$(TOP)/tests/dotnet/%:
$(Q) $(MAKE) -C $(dir $@) $*
.build-stamp: $(wildcard Xamarin.PreBuilt.iOS/*) Makefile NuGet.config global.json
.build-stamp: $(wildcard Xamarin.PreBuilt.iOS/*) Makefile
$(Q_GEN) $(DOTNET) build Xamarin.PreBuilt.iOS/Xamarin.PreBuilt.iOS.csproj "/bl:$(abspath ./msbuild.binlog)" $(MSBUILD_VERBOSITY)
$(Q) touch $@

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

@ -664,7 +664,7 @@ $(foreach platform,$(DOTNET_PLATFORMS),$(foreach rid,$(DOTNET_$(platform)_RUNTIM
define DotNetLibXamarinTemplate
DOTNET$(6)_$(2)_LIBDIR ?= $$(TOP)/builds/downloads/microsoft.netcore.app.runtime$(7).$(2)/$(BUNDLED_NETCORE_PLATFORMS_PACKAGE_VERSION)/runtimes/$(2)/native
DOTNET$(6)_$(2)_LIBDIR ?= $$(TOP)/packages/microsoft.netcore.app.runtime$(7).$(2)/$(BUNDLED_NETCORE_PLATFORMS_PACKAGE_VERSION)/runtimes/$(2)/native
DOTNET$(6)_$(2)_DYLIB_FLAGS = $(DOTNET_$(1)_DYLIB_FLAGS) -Wl,-install_name,libxamarin$(5).dylib -framework Foundation -framework CFNetwork -lz -L$(abspath $(DOTNET$(6)_$(2)_LIBDIR))
DOTNET_$(2)_$(3)$(4)_OBJECTS = $$(patsubst %,.libs/$(1)/%$(5).$(3).o, $(MONOTOUCH_SOURCE_STEMS)) $$(patsubst %,.libs/$(1)/%$(5).$(3).o, $(MONOTOUCH_$(shell echo $(3) | tr a-z A-Z)_SOURCE_STEMS))

1
src/.gitignore поставляемый
Просмотреть файл

@ -1,4 +1,3 @@
global.json
build
MonoTouch.NUnitLite.csproj
MonoTouch.NUnitLite.tvos.csproj

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

@ -1545,7 +1545,7 @@ $(SHARED_PATH)/Delegates.generated.cs: $(SHARED_PATH)/Delegates.cs.t4 $(SHARED_P
$(Q) $(MAKE) -C $(SHARED_PATH) Delegates.generated.cs
$(BUILD_DIR)/common/NativeTypes/%.cs: $(TOP)/src/NativeTypes/%.tt | $(BUILD_DIR)/common/NativeTypes
$(Q_GEN) cd $(TOP) && $(TT) $(abspath $<) -o $(abspath $@) 1>/dev/null
$(Q_GEN) $(TT) $(abspath $<) -o $(abspath $@) 1>/dev/null
$(COMMON_TARGET_DIRS):
$(Q) mkdir -p $@
@ -1576,10 +1576,6 @@ $(DOTNET_BUILD_DIR)/Constants.%.generated.cs: Makefile $(DOTNET_GENERATE_FRAMEWO
$(Q) mono --debug $(DOTNET_GENERATE_FRAMEWORKS_CONSTANTS) "$*" "$@.tmp"
$(Q) mv "$@.tmp" "$@"
# This tells NuGet to use the exact same dotnet version we've configured in Make.config
global.json: $(TOP)/global6.json
$(Q) $(CP) $< $@
install-local:: $(INSTALL_TARGETS)
all-local:: $(ALL_TARGETS)

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

@ -13,7 +13,7 @@ $(BUILD_DIR)/generator.csproj: generator.csproj | $(BUILD_DIR)
$(BUILD_DIR)/common/bgen.exe: $(generator_dependencies) Makefile.generator $(BUILD_DIR)/generator-frameworks.g.cs
$(Q_GEN) $(SYSTEM_MSBUILD) "/bl:$@.binlog" $(XBUILD_VERBOSITY) /p:Configuration=Debug generator.csproj /p:IntermediateOutputPath=$(BUILD_DIR)/IDE/obj/common/ /p:OutputPath=$(BUILD_DIR)/common /restore
$(DOTNET_BUILD_DIR)/bgen/bgen: $(generator_dependencies) Makefile.generator $(BUILD_DIR)/generator-frameworks.g.cs global.json | $(DOTNET_BUILD_DIR)/bgen
$(DOTNET_BUILD_DIR)/bgen/bgen: $(generator_dependencies) Makefile.generator $(BUILD_DIR)/generator-frameworks.g.cs | $(DOTNET_BUILD_DIR)/bgen
$(Q_DOTNET_BUILD) $(DOTNET) publish bgen/bgen.csproj $(DOTNET_BUILD_VERBOSITY) /p:Configuration=Debug /p:IntermediateOutputPath=$(abspath $(DOTNET_BUILD_DIR)/IDE/obj/common/bgen)/ /p:OutputPath=$(abspath $(DOTNET_BUILD_DIR)/IDE/bin/common/bgen/)/
$(Q) $(CP) $(DOTNET_BUILD_DIR)/IDE/bin/common/bgen/publish/* $(dir $@)
$(Q) printf 'exec $(DOTNET) "$$(dirname "$$0")"/bgen.dll $$@\n' > $@

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

@ -933,55 +933,6 @@ function check_simulators ()
fi
}
function check_dotnet ()
{
if test -n "$IGNORE_DOTNET"; then return; fi
local DOTNET_VERSION
local DOTNET_FILENAME
local URL
local INSTALL_DIR
local CACHED_FILE
local DOWNLOADED_FILE
DOTNET_VERSION=$(grep "^SYSTEM_DOTNET_VERSION=" dotnet.config | sed 's/.*=//')
ARCH=$(arch)
if [[ "$ARCH" =~ "arm64" ]]; then
URL=https://dotnetcli.azureedge.net/dotnet/Sdk/"$DOTNET_VERSION"/dotnet-sdk-"$DOTNET_VERSION"-osx-arm64.pkg
else
URL=https://dotnetcli.azureedge.net/dotnet/Sdk/"$DOTNET_VERSION"/dotnet-sdk-"$DOTNET_VERSION"-osx-x64.pkg
fi
INSTALL_DIR=/usr/local/share/dotnet/sdk/"$DOTNET_VERSION"
if test -d "$INSTALL_DIR"; then
ok "Found dotnet $DOTNET_VERSION in $INSTALL_DIR (exactly $DOTNET_VERSION is required)."
return
fi
if test -z "$PROVISION_DOTNET"; then
fail "You must install dotnet $DOTNET_VERSION. You can download it from ${COLOR_BLUE}$URL${COLOR_RESET}."
fail "Alternatively you can ${COLOR_MAGENTA}export IGNORE_DOTNET=1${COLOR_RED} to skip this check."
return
fi
DOTNET_FILENAME=$(basename "$URL")
CACHED_FILE=$HOME/Library/Caches/xamarin-macios/$DOTNET_FILENAME
if test -f "$CACHED_FILE"; then
log "Found cached version in $CACHED_FILE, will install from cache."
DOWNLOADED_FILE="$HOME/Library/Caches/xamarin-macios/$DOTNET_FILENAME"
else
log "Downloading dotnet $DOTNET_VERSION from $URL..."
mkdir -p "$PROVISION_DOWNLOAD_DIR"
DOWNLOADED_FILE="$PROVISION_DOWNLOAD_DIR/$DOTNET_FILENAME"
curl -f -L "$URL" -o "$DOWNLOADED_FILE"
fi
log "Installing dotnet $DOTNET_VERSION into $INSTALL_DIR..."
$SUDO installer -pkg "$DOWNLOADED_FILE" -target /
ok "Installed dotnet $DOTNET_VERSION into $INSTALL_DIR."
}
echo "Checking system..."
check_osx_version
@ -995,7 +946,6 @@ check_cmake
check_7z
check_objective_sharpie
check_simulators
check_dotnet ""
if test -z "$IGNORE_DOTNET"; then
ok "Installed .NET SDKs:"
(IFS=$'\n'; for i in $(/usr/local/share/dotnet/dotnet --list-sdks); do log "$i"; done)

2
tests/.gitignore поставляемый
Просмотреть файл

@ -1,5 +1,3 @@
global.json
NuGet.config
generated-projects
*index.html
*.log

1
tests/.nuget/packages/.gitignore поставляемый Normal file
Просмотреть файл

@ -0,0 +1 @@
*

3
tests/EmbeddedResources/dotnet/.gitignore поставляемый
Просмотреть файл

@ -1,3 +0,0 @@
global.json
NuGet.config

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

@ -68,7 +68,6 @@ test.config: Makefile $(TOP)/Make.config $(TOP)/mk/mono.mk $(TOP)/eng/Version.De
@echo "MONO_IOS_SDK_DESTDIR=$(MONO_IOS_SDK_DESTDIR)" >> $@
@echo "MONO_MAC_SDK_DESTDIR=$(MONO_MAC_SDK_DESTDIR)" >> $@
@echo "ENABLE_XAMARIN=$(ENABLE_XAMARIN)" >> $@
@echo "SYSTEM_DOTNET=$(SYSTEM_DOTNET)" >> $@
@echo "DOTNET=$(DOTNET)" >> $@
@echo "IOS_SDK_VERSION=$(IOS_SDK_VERSION)" >> $@
@echo "TVOS_SDK_VERSION=$(TVOS_SDK_VERSION)" >> $@
@ -91,7 +90,6 @@ test-system.config: Makefile $(TOP)/Make.config $(TOP)/mk/mono.mk $(TOP)/eng/Ver
@echo "INCLUDE_DEVICE=$(INCLUDE_DEVICE)" >> $@
@echo "MONO_IOS_SDK_DESTDIR=$(MONO_IOS_SDK_DESTDIR)" >> $@
@echo "MONO_MAC_SDK_DESTDIR=$(MONO_MAC_SDK_DESTDIR)" >> $@
@echo "SYSTEM_DOTNET=$(SYSTEM_DOTNET)" >> $@
@echo "DOTNET=$(DOTNET)" >> $@
@echo "IOS_SDK_VERSION=$(IOS_SDK_VERSION)" >> $@
@echo "TVOS_SDK_VERSION=$(TVOS_SDK_VERSION)" >> $@

3
tests/bindings-test/dotnet/.gitignore поставляемый
Просмотреть файл

@ -1,3 +0,0 @@
global.json
NuGet.config

3
tests/bindings-test2/dotnet/.gitignore поставляемый
Просмотреть файл

@ -1,3 +0,0 @@
global.json
NuGet.config

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

@ -984,25 +984,6 @@ namespace Xamarin.Tests
}
}
public static string [] CopyDotNetSupportingFiles (params string[] targetDirectories)
{
var srcDirectory = Path.Combine (SourceRoot, "tests", "dotnet");
var files = new string [] { "global.json", "NuGet.config" };
var targets = new List<string> ();
for (var i = 0; i < files.Length; i++) {
var fn = files [i];
var src = Path.Combine (srcDirectory, fn);
if (!File.Exists (src))
ExecutionHelper.Execute ("make", new [] { "-C", srcDirectory, fn });
foreach (var targetDirectory in targetDirectories) {
var target = Path.Combine (targetDirectory, fn);
File.Copy (src, target, true);
targets.Add (target);
}
}
return targets.ToArray ();
}
public static Dictionary<string, string> GetBuildEnvironment (ApplePlatform platform)
{
Dictionary<string, string> environment = new Dictionary<string, string> ();

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

@ -2,11 +2,7 @@ TOP=../../../..
include $(TOP)/Make.config
NuGet%config global%json:
$(Q) $(MAKE) -C $(TOP)/tests/dotnet all
$(Q) $(CP) $(TOP)/tests/dotnet/global.json $(TOP)/tests/dotnet/NuGet.config .
.build-stamp.binlog: Makefile $(wildcard *.cs) $(wildcard *.csproj) $(wildcard *.resx) $(wildcard *.config) NuGet.config global.json
.build-stamp.binlog: Makefile $(wildcard *.cs) $(wildcard *.csproj) $(wildcard *.resx) $(wildcard *.config)
$(Q) $(DOTNET) build *.csproj $(MSBUILD_VERBOSITY) /bl:$@
all-local:: .build-stamp.binlog

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

@ -11,7 +11,7 @@ TESTNAME:=$(notdir $(shell dirname "$(shell dirname "$(CURDIR)")"))
endif
prepare:
$(Q) $(MAKE) -C $(TOP)/tests/dotnet copy-dotnet-config
@# nothing to do here right now
reload:
$(Q) $(MAKE) -C $(TOP) -j8 all

2
tests/dotnet/.gitignore поставляемый
Просмотреть файл

@ -1,3 +1 @@
global.json
NuGet.config
report.md

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

@ -2,34 +2,7 @@ TOP=../..
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 $@
# This tells NuGet to use the exact same dotnet version we've configured in Make.config
global.json: $(TOP)/global6.json
$(CP) $< $@
../bgen/global.json: global.json
$(Q) $(CP) $< $@
../bgen/NuGet.config: NuGet.config
$(Q) $(CP) $< $@
TARGETS += \
NuGet.config \
global.json \
../bgen/NuGet.config \
../bgen/global.json \
run-unit-tests:
$(MAKE) -C UnitTests $@
@ -58,12 +31,3 @@ run-dotnet: $(TARGETS)
run-dotnet-sim: $(TARGETS)
$(DOTNET) build -t:Run size-comparison/MySingleView/dotnet/MySingleView.csproj /p:Configuration=Release --runtime iossimulator-x64 /p:Platform=iPhoneSimulator /bl:$@.binlog
# this target will copy NuGet.config and global.json to the directories that need it for their .NET build to work correctly.
copy-dotnet-config: $(TARGETS)
$(Q) for dir in $(abspath $(TOP))/tests/*/dotnet $(abspath $(TOP))/tests/linker/*/*/dotnet; do \
rsync -a NuGet.config global.json "$$dir"; \
done
$(Q) rsync -a NuGet.config global.json $(TOP)/external/Touch.Unit/Touch.Client/dotnet
$(Q) rsync -a NuGet.config global.json $(TOP)/external/MonoTouch.Dialog/MonoTouch.Dialog/dotnet

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

@ -26,7 +26,6 @@ namespace Xamarin.Tests {
var project_path = GetProjectPath (project, platform: platform);
Clean (project_path);
Configuration.CopyDotNetSupportingFiles (Path.GetDirectoryName (project_path));
var tmpdir = Cache.CreateTemporaryDirectory ();
var outputPath = Path.Combine (tmpdir, "OutputPath");
@ -57,7 +56,6 @@ namespace Xamarin.Tests {
var project_path = Path.Combine (Configuration.RootPath, "tests", project, "dotnet", platform.AsString (), $"{project}.csproj");
Clean (project_path);
Configuration.CopyDotNetSupportingFiles (Path.GetDirectoryName (project_path));
var tmpdir = Cache.CreateTemporaryDirectory ();
var outputPath = Path.Combine (tmpdir, "OutputPath");
@ -115,7 +113,6 @@ namespace Xamarin.Tests {
var project_path = Path.Combine (Configuration.RootPath, "tests", project, "dotnet", platform.AsString (), $"{project}.csproj");
Clean (project_path);
Configuration.CopyDotNetSupportingFiles (Path.GetDirectoryName (project_path));
var tmpdir = Cache.CreateTemporaryDirectory ();
var outputPath = Path.Combine (tmpdir, "OutputPath");

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

@ -124,7 +124,6 @@ namespace Xamarin.Tests {
var project_dir = Path.Combine (dotnet_bindings_dir, platform);
var project_path = Path.Combine (project_dir, $"{assemblyName}.csproj");
Clean (project_path);
Configuration.CopyDotNetSupportingFiles (dotnet_bindings_dir);
var result = DotNet.AssertBuild (project_path, verbosity);
var lines = BinLog.PrintToLines (result.BinLogPath);
// Find the resulting binding assembly from the build log
@ -157,7 +156,6 @@ namespace Xamarin.Tests {
var project_dir = Path.Combine (dotnet_bindings_dir, platform);
var project_path = Path.Combine (project_dir, $"{assemblyName}.fsproj");
Clean (project_path);
Configuration.CopyDotNetSupportingFiles (dotnet_bindings_dir);
var result = DotNet.AssertBuild (project_path, verbosity);
var lines = BinLog.PrintToLines (result.BinLogPath);
// Find the resulting binding assembly from the build log
@ -185,7 +183,6 @@ namespace Xamarin.Tests {
var project_path = Path.Combine (project_dir, $"{assemblyName}.csproj");
Clean (project_path);
Configuration.CopyDotNetSupportingFiles (dotnet_bindings_dir);
var result = DotNet.AssertBuild (project_path, verbosity);
var lines = BinLog.PrintToLines (result.BinLogPath).ToList ();
Console.WriteLine (string.Join ("\n", lines));
@ -217,7 +214,6 @@ namespace Xamarin.Tests {
var project_path = Path.Combine (project_dir, $"{assemblyName}.csproj");
Clean (project_path);
Configuration.CopyDotNetSupportingFiles (dotnet_bindings_dir);
var result = DotNet.AssertBuild (project_path, verbosity);
var lines = BinLog.PrintToLines (result.BinLogPath);
// Find the resulting binding assembly from the build log
@ -248,7 +244,6 @@ namespace Xamarin.Tests {
var project_path = Path.Combine (project_dir, $"{assemblyName}.csproj");
Clean (project_path);
Configuration.CopyDotNetSupportingFiles (dotnet_bindings_dir);
var result = DotNet.AssertBuild (project_path, verbosity);
var lines = BinLog.PrintToLines (result.BinLogPath);
// Find the resulting binding assembly from the build log
@ -281,55 +276,44 @@ namespace Xamarin.Tests {
var project_path = Path.Combine (project_dir, $"{assemblyName}.csproj");
Clean (project_path);
Configuration.CopyDotNetSupportingFiles (dotnet_bindings_dir);
Configuration.CopyDotNetSupportingFiles (dotnet_bindings_dir.Replace (assemblyName, "bindings-test"));
Configuration.CopyDotNetSupportingFiles (dotnet_bindings_dir.Replace (assemblyName, "bindings-test2"));
var cleanupSupportFiles = Configuration.CopyDotNetSupportingFiles (
Path.Combine (Configuration.SourceRoot, "external", "Touch.Unit", "Touch.Client", "dotnet"),
Path.Combine (Configuration.SourceRoot, "external", "MonoTouch.Dialog", "MonoTouch.Dialog", "dotnet")
);
try {
var result = DotNet.AssertBuild (project_path, verbosity);
var lines = BinLog.PrintToLines (result.BinLogPath);
// Find the resulting binding assembly from the build log
var assemblies = lines.
Select (v => v.Trim ()).
Where (v => {
if (v.Length < 10)
return false;
if (v [0] != '/')
return false;
if (!v.EndsWith ($"{assemblyName}.dll", StringComparison.Ordinal))
return false;
if (!v.Contains ("/bin/", StringComparison.Ordinal))
return false;
if (!v.Contains ($"{assemblyName}.app", StringComparison.Ordinal))
return false;
return true;
});
Assert.That (assemblies, Is.Not.Empty, "Assemblies");
// Make sure there's no other assembly confusing our logic
assemblies = assemblies.Distinct ();
Assert.That (assemblies.Count (), Is.EqualTo (1), $"Unique assemblies: {string.Join (", ", assemblies)}");
var asm = assemblies.First ();
Assert.That (asm, Does.Exist, "Assembly existence");
var result = DotNet.AssertBuild (project_path, verbosity);
var lines = BinLog.PrintToLines (result.BinLogPath);
// Find the resulting binding assembly from the build log
var assemblies = lines.
Select (v => v.Trim ()).
Where (v => {
if (v.Length < 10)
return false;
if (v [0] != '/')
return false;
if (!v.EndsWith ($"{assemblyName}.dll", StringComparison.Ordinal))
return false;
if (!v.Contains ("/bin/", StringComparison.Ordinal))
return false;
if (!v.Contains ($"{assemblyName}.app", StringComparison.Ordinal))
return false;
return true;
});
Assert.That (assemblies, Is.Not.Empty, "Assemblies");
// Make sure there's no other assembly confusing our logic
assemblies = assemblies.Distinct ();
Assert.That (assemblies.Count (), Is.EqualTo (1), $"Unique assemblies: {string.Join (", ", assemblies)}");
var asm = assemblies.First ();
Assert.That (asm, Does.Exist, "Assembly existence");
// Verify that the resources have been linked away
var asmDir = Path.GetDirectoryName (asm)!;
var ad = AssemblyDefinition.ReadAssembly (asm, new ReaderParameters { ReadingMode = ReadingMode.Deferred });
Assert.That (ad.MainModule.Resources.Count, Is.EqualTo (0), "0 resources for interdependent-binding-projects.dll");
// Verify that the resources have been linked away
var asmDir = Path.GetDirectoryName (asm)!;
var ad = AssemblyDefinition.ReadAssembly (asm, new ReaderParameters { ReadingMode = ReadingMode.Deferred });
Assert.That (ad.MainModule.Resources.Count, Is.EqualTo (0), "0 resources for interdependent-binding-projects.dll");
var ad1 = AssemblyDefinition.ReadAssembly (Path.Combine (asmDir, "bindings-test.dll"), new ReaderParameters { ReadingMode = ReadingMode.Deferred });
// The native library is removed from the resources by the linker
Assert.That (ad1.MainModule.Resources.Count, Is.EqualTo (0), "0 resources for bindings-test.dll");
var ad1 = AssemblyDefinition.ReadAssembly (Path.Combine (asmDir, "bindings-test.dll"), new ReaderParameters { ReadingMode = ReadingMode.Deferred });
// The native library is removed from the resources by the linker
Assert.That (ad1.MainModule.Resources.Count, Is.EqualTo (0), "0 resources for bindings-test.dll");
var ad2 = AssemblyDefinition.ReadAssembly (Path.Combine (asmDir, "bindings-test2.dll"), new ReaderParameters { ReadingMode = ReadingMode.Deferred });
// The native library is removed from the resources by the linker
Assert.That (ad2.MainModule.Resources.Count, Is.EqualTo (0), "0 resources for bindings-test2.dll");
var ad2 = AssemblyDefinition.ReadAssembly (Path.Combine (asmDir, "bindings-test2.dll"), new ReaderParameters { ReadingMode = ReadingMode.Deferred });
// The native library is removed from the resources by the linker
Assert.That (ad2.MainModule.Resources.Count, Is.EqualTo (0), "0 resources for bindings-test2.dll");
} finally {
foreach (var file in cleanupSupportFiles)
File.Delete (file);
}
}
[Test]
@ -368,12 +352,6 @@ namespace Xamarin.Tests {
Configuration.IgnoreIfIgnoredPlatform (platform);
var project_path = Path.Combine (Configuration.SourceRoot, "tests", "monotouch-test", "dotnet", platform.AsString (), "monotouch-test.csproj");
Configuration.CopyDotNetSupportingFiles (Path.GetDirectoryName (Path.GetDirectoryName (project_path)));
Configuration.CopyDotNetSupportingFiles (Path.Combine (Configuration.SourceRoot, "tests", "bindings-test", "dotnet"));
Configuration.CopyDotNetSupportingFiles (Path.Combine (Configuration.SourceRoot, "tests", "bindings-test2", "dotnet"));
Configuration.CopyDotNetSupportingFiles (Path.Combine (Configuration.SourceRoot, "tests", "EmbeddedResources", "dotnet"));
Configuration.CopyDotNetSupportingFiles (Path.Combine (Configuration.SourceRoot, "tests", "fsharplibrary", "dotnet"));
Configuration.CopyDotNetSupportingFiles (Path.Combine (Configuration.SourceRoot, "external", "Touch.Unit", "Touch.Client", "dotnet"));
Clean (project_path);
var properties = GetDefaultProperties (runtimeIdentifiers);
if (additionalProperties != null) {
@ -847,9 +825,6 @@ namespace Xamarin.Tests {
Clean (extensionProjectDir);
Clean (consumingProjectDir);
Configuration.CopyDotNetSupportingFiles (Path.GetDirectoryName (extensionProjectDir));
Configuration.CopyDotNetSupportingFiles (Path.GetDirectoryName (consumingProjectDir));
DotNet.AssertBuild (consumingProjectDir, verbosity);
var extensionPath = Path.Combine (Path.GetDirectoryName (consumingProjectDir)!, "bin", "Debug", platform.ToFramework (), GetDefaultRuntimeIdentifier (platform), "MySimpleApp.app", GetPlugInsRelativePath (platform), "ExtensionProject.appex");

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

@ -53,7 +53,6 @@ class MainClass {
</Project>";
var tmpdir = Cache.CreateTemporaryDirectory ();
Configuration.CopyDotNetSupportingFiles (tmpdir);
var project_path = Path.Combine (tmpdir, "TestProject.csproj");
File.WriteAllText (project_path, csproj);
File.WriteAllText (Path.Combine (tmpdir, "Info.plist"), EmptyAppManifest);
@ -88,7 +87,6 @@ class MainClass {
</ItemGroup>
</Project>";
Configuration.CopyDotNetSupportingFiles (tmpdir);
var project_path = Path.Combine (tmpdir, "TestProject.csproj");
File.WriteAllText (project_path, csproj);
File.WriteAllText (Path.Combine (tmpdir, "Info.plist"), EmptyAppManifest);
@ -161,7 +159,6 @@ $@"<Project Sdk=""Microsoft.NET.Sdk"">
var csprojfn = Path.Combine (projdir, Path.GetFileName (projdir) + ".csproj");
File.WriteAllText (csprojfn, csproj);
Configuration.CopyDotNetSupportingFiles (tmpdir);
DotNet.AssertBuild (csprojfn);
ExecuteProjectWithMagicWordAndAssert (csprojfn, platform);
}
@ -179,7 +176,6 @@ $@"<Project Sdk=""Microsoft.NET.Sdk"">
</Project>";
var tmpdir = Cache.CreateTemporaryDirectory ();
Configuration.CopyDotNetSupportingFiles (tmpdir);
var project_path = Path.Combine (tmpdir, "TestProject.csproj");
File.WriteAllText (project_path, csproj);
File.WriteAllText (Path.Combine (tmpdir, "Main.cs"), EmptyMainFile);

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

@ -90,7 +90,6 @@ namespace Xamarin.Tests {
Configuration.IgnoreIfIgnoredPlatform (info.Platform);
var tmpDir = Cache.CreateTemporaryDirectory ();
Configuration.CopyDotNetSupportingFiles (tmpDir);
var outputDir = Path.Combine (tmpDir, info.Template);
DotNet.AssertNew (outputDir, info.Template);
var csproj = Path.Combine (outputDir, info.Template + ".csproj");

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

@ -263,8 +263,6 @@ namespace Xamarin.Tests {
File.WriteAllText (csproj, sb.ToString ());
Configuration.CopyDotNetSupportingFiles (dir);
var appPathRuntimeIdentifier = runtimeIdentifiers.IndexOf (';') >= 0 ? "" : runtimeIdentifiers;
appPath = Path.Combine (dir, "bin", "Debug", platform.ToFramework (), appPathRuntimeIdentifier, name + ".app");

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

@ -3,13 +3,8 @@ TOP=../../../..
include $(TOP)/Make.config
TARGETS += \
.config.stamp \
.install-workloads.stamp \
.config.stamp: Makefile
$(Q) $(MAKE) -C ../.. NuGet.config global.json
$(Q) touch $@
all-local:: compare
compare compare-size: $(TARGETS)

3
tests/fsharplibrary/dotnet/.gitignore поставляемый
Просмотреть файл

@ -1,3 +0,0 @@
global.json
NuGet.config

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

@ -1,3 +0,0 @@
global.json
NuGet.config

3
tests/monotouch-test/.gitignore поставляемый
Просмотреть файл

@ -1,5 +1,2 @@
*.air
*.metallib
global.json
NuGet.config

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

@ -46,7 +46,6 @@ namespace Xamarin.MacDev.Tasks {
</plist>";
var tmpdir = Cache.CreateTemporaryDirectory ();
Configuration.CopyDotNetSupportingFiles (tmpdir);
var csprojPath = Path.Combine (tmpdir, "PartialAppManifest.csproj");
File.WriteAllText (csprojPath, csproj);

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

@ -41,7 +41,6 @@ namespace Xamarin.MacDev.Tasks {
</plist>";
var tmpdir = Cache.CreateTemporaryDirectory ();
Configuration.CopyDotNetSupportingFiles (tmpdir);
var csprojPath = Path.Combine (tmpdir, "BundleIdentifierInPartialAppManifest.csproj");
File.WriteAllText (csprojPath, csproj);

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

@ -65,7 +65,6 @@ namespace Xamarin.Tests
var rv = Configuration.CloneTestDirectory (Configuration.TestProjectsDirectory);
if (mode == ExecutionMode.DotNet) {
Configuration.CopyDotNetSupportingFiles (rv);
Configuration.FixupTestFiles (rv, "dotnet");
}

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

@ -561,7 +561,6 @@ namespace Xamarin
File.WriteAllText (Path.Combine (testDir, appName + ".cs"), CreateCode (code, usings, extraCode));
if (hasPlist)
File.WriteAllText (Path.Combine (testDir, "Info.plist"), CreatePlist (Profile, appName));
Configuration.CopyDotNetSupportingFiles (testDir);
} else {
AppPath = app;
RootAssembly = CompileTestAppExecutable (testDir, code, extraArgs, Profile, appName, extraCode, usings);

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

@ -35,7 +35,7 @@ $CP -p ../mk/quiet.mk $DIR/mk
$CP -p ../mk/mono.mk "$DIR/mk"
# Files to make the unit tests run
$CP -p dotnet/global.json $DIR/tests/global.json
$CP -p ../global.json $DIR
$CP -p ../NuGet.config $DIR
$CP -p test.config $DIR/tests

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

@ -122,12 +122,9 @@ exec-mac-modern-linksdk:
# on eachother. So here we build those library projects first, serialized,
# so that when the test projects need them, they're already built.
.stamp-copy-dotnet-config:
$(Q) $(MAKE) -C dotnet copy-dotnet-config
$(Q) touch $@
define DotNetDependentProject
.stamp-dotnet-dependency-$(2)-$(1): Makefile .stamp-copy-dotnet-config
.stamp-dotnet-dependency-$(2)-$(1): Makefile
$$(Q) $$(MAKE) -C "$(1)/dotnet/$(2)" build
$$(Q) touch $$@

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

@ -2,15 +2,7 @@ TOP=../..
include $(TOP)/Make.config
dotnet/global.json: $(TOP)/NuGet.config Makefile
$(Q) $(MAKE) -C ../dotnet $(notdir $@)
$(Q) $(CP) ../dotnet/$(notdir $@) $@
dotnet/NuGet.config: $(TOP)/NuGet.config Makefile
$(Q) $(MAKE) -C ../dotnet $(notdir $@)
$(Q) $(CP) ../dotnet/$(notdir $@) $@
TARGETS=dotnet/NuGet.config dotnet/global.json
TARGETS=
ifeq ("$(BENCHMARK_OUTPUT_PATH)","")
BENCHMARK_OUTPUT_PATH:=$(abspath $(CURDIR)/output/$(shell date +%Y-%m-%d--%H:%M:%S))

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

@ -11,13 +11,7 @@ include $(TOP)/Make.config
.libs/macos .libs/dotnet/macos:
$(Q) mkdir -p $@
NuGet.config: $(TOP)/tests/dotnet/NuGet.config
$(Q) $(CP) $< $@
global.json: $(TOP)/tests/dotnet/global.json
$(Q) $(CP) $< $@
bin/Debug/$(DOTNET_TFM)-macos/custom-type-assembly.dll: custom-type-assembly.csproj custom-type-assembly.cs global.json NuGet.config
bin/Debug/$(DOTNET_TFM)-macos/custom-type-assembly.dll: custom-type-assembly.csproj custom-type-assembly.cs
$(Q) $(DOTNET) build $< "/bl:$@.binlog" $(MSBUILD_VERBOSITY)
ifdef INCLUDE_XAMARIN_LEGACY

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

@ -3,10 +3,6 @@ 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 $@
@ -14,7 +10,7 @@ PACKAGE_ID=$(shell grep PackageId FrameworksInRuntimesNativeDirectory.csproj | s
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
.libs/FrameworksInRuntimesNativeDirectory.nupkg: FrameworksInRuntimesNativeDirectory.csproj $(wildcard *.cs) | .libs
$(Q) mkdir -p $(abspath $(NUGET_TEST_FEED))
$(Q_GEN) $(DOTNET) pack /bl $(DOTNET_PACK_VERBOSITY) $<
$(Q) $(CP) bin/Debug/Xamarin.Tests.FrameworksInRuntimesNativeDirectory.$(PACKAGE_VERSION).nupkg $@

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

@ -20,7 +20,7 @@ namespace Xharness {
readonly string systemDotnetPath;
readonly string dotnetPath;
// Gets either the SYSTEM_DOTNET or DOTNET variable, depending on any global.json
// Gets either the system .NET or DOTNET variable, depending on any global.json
// config file found in the specified directory or any containing directories.
readonly Dictionary<string, string> dotnet_executables = new Dictionary<string, string> ();

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

@ -209,7 +209,7 @@ namespace Xharness {
SdkRoot = config ["XCODE_DEVELOPER_ROOT"] ?? configuration.SdkRoot;
processManager = new MlaunchProcessManager (XcodeRoot, MlaunchPath);
AppBundleLocator = new AppBundleLocator (processManager, () => HarnessLog, XIBuildPath, config ["SYSTEM_DOTNET"], config ["DOTNET"]);
AppBundleLocator = new AppBundleLocator (processManager, () => HarnessLog, XIBuildPath, "/usr/local/share/dotnet/dotnet", config ["DOTNET"]);
TunnelBore = new TunnelBore (processManager);
}

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

@ -196,14 +196,6 @@ namespace Xharness {
}
}
}
// The global.json and NuGet.config files make sure we use the locally built packages.
var dotnet_test_dir = System.IO.Path.Combine (test.RootDirectory, "dotnet");
var global_json = System.IO.Path.Combine (dotnet_test_dir, "global.json");
var nuget_config = System.IO.Path.Combine (dotnet_test_dir, "NuGet.config");
var target_directory = directory;
File.Copy (global_json, System.IO.Path.Combine (target_directory, System.IO.Path.GetFileName (global_json)), true);
File.Copy (nuget_config, System.IO.Path.Combine (target_directory, System.IO.Path.GetFileName (nuget_config)), true);
}
var projectReferences = new List<TestProject> ();

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

@ -16,8 +16,8 @@ MONO_API_INFO = $(API_TOOLS_PATH)/mono-api-info/bin/Debug/net6.0/mono-api-info.d
MONO_API_HTML = $(API_TOOLS_PATH)/mono-api-html/bin/Debug/net6.0/mono-api-html.dll
MONO_BUILD = $(SYSTEM_MONO)
MONO_API_INFO_EXEC = $(SYSTEM_DOTNET) $(MONO_API_INFO) --ignore-inherited-interfaces
MONO_API_HTML_EXEC = $(SYSTEM_DOTNET) $(MONO_API_HTML)
MONO_API_INFO_EXEC = $(DOTNET) $(MONO_API_INFO) --ignore-inherited-interfaces
MONO_API_HTML_EXEC = $(DOTNET) $(MONO_API_HTML)
# I18N are excluded - but otherwise if should be like ../../builds/Makefile + what XI adds
# in the order to the api-diff.html merged file
@ -54,11 +54,11 @@ MAC_ARCH_ASSEMBLIES = native-64/Xamarin.Mac
APIDIFF_IGNORE = -i 'INSObjectProtocol'
$(MONO_API_INFO): $(wildcard $(API_TOOLS_PATH)/mono-api-info/*.cs*)
$(Q) $(SYSTEM_DOTNET) build $(API_TOOLS_PATH)/mono-api-info/mono-api-info.csproj /bl:$@.binlog $(MSBUILD_VERBOSITY)
$(Q) $(DOTNET) build $(API_TOOLS_PATH)/mono-api-info/mono-api-info.csproj /bl:$@.binlog $(MSBUILD_VERBOSITY)
$(Q) touch $@
$(MONO_API_HTML): $(wildcard $(API_TOOLS_PATH)/mono-api-html/*.cs*)
$(Q) $(SYSTEM_DOTNET) build $(API_TOOLS_PATH)/mono-api-html/mono-api-html.csproj /bl:$@.binlog $(MSBUILD_VERBOSITY)
$(Q) $(DOTNET) build $(API_TOOLS_PATH)/mono-api-html/mono-api-html.csproj /bl:$@.binlog $(MSBUILD_VERBOSITY)
$(Q) touch $@
# create api info. Directory hierarchy is based on installed hierarchy

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

@ -8,7 +8,6 @@ device-tests-provisioning.csx: device-tests-provisioning.csx.in Makefile $(TOP)/
-e 's#@MONO_PACKAGE@#$(MIN_MONO_URL)#g' \
-e 's#@VS_PACKAGE@#$(MIN_VISUAL_STUDIO_URL)#g' \
-e 's#@MIN_SHARPIE_URL@#$(MIN_SHARPIE_URL)#g' \
-e 's#@SYSTEM_DOTNET_VERSION@#$(SYSTEM_DOTNET_VERSION)#g' \
$< > $@;
build-provisioning.csx: build-provisioning.csx.in Makefile $(TOP)/Make.config
@ -17,7 +16,6 @@ build-provisioning.csx: build-provisioning.csx.in Makefile $(TOP)/Make.config
-e 's#@MONO_PACKAGE@#$(MIN_MONO_URL)#g' \
-e 's#@VS_PACKAGE@#$(MIN_VISUAL_STUDIO_URL)#g' \
-e 's#@MIN_SHARPIE_URL@#$(MIN_SHARPIE_URL)#g' \
-e 's#@SYSTEM_DOTNET_VERSION@#$(SYSTEM_DOTNET_VERSION)#g' \
$< > $@;
mac-tests-provisioning.csx: mac-tests-provisioning.csx.in Makefile $(TOP)/Make.config
@ -25,7 +23,6 @@ mac-tests-provisioning.csx: mac-tests-provisioning.csx.in Makefile $(TOP)/Make.c
-e 's#@XM_PACKAGE@#$(XM_PACKAGE)#g' \
-e 's#@MONO_PACKAGE@#$(MIN_MONO_URL)#g' \
-e 's#@VS_PACKAGE@#$(MIN_VISUAL_STUDIO_URL)#g' \
-e 's#@SYSTEM_DOTNET_VERSION@#$(SYSTEM_DOTNET_VERSION)#g' \
$< > $@;
provision-xcode.csx: provision-xcode.csx.in Makefile $(TOP)/Make.config

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

@ -48,7 +48,7 @@ cp -c "$IOS_DESTDIR$MONOTOUCH_PREFIX/bin/mlaunch" "$MLAUNCH_WORK_DIR/mlaunch/bin
cp -c -r "$XAM_TOP"/tools/mlaunch/nupkg/* "$MLAUNCH_WORK_DIR"
# We need to override global.json to use .NET 6.0
cp -c "$XAM_TOP/global6.json" "$MLAUNCH_WORK_DIR/global.json"
cp -c "$XAM_TOP/global.json" "$MLAUNCH_WORK_DIR/global.json"
# Version calculation
XCODE_VERSION=$(grep XCODE_VERSION= "$XAM_TOP/Make.config" | sed 's/.*=//')

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

@ -60,16 +60,6 @@ steps:
displayName: Generate constants files
timeoutInMinutes: 15
- bash: |
set -x
set -e
make global6.json
make -C tests/dotnet global.json NuGet.config
workingDirectory: $(System.DefaultWorkingDirectory)/xamarin-macios
displayName: 'Generate global.json'
timeoutInMinutes: 5
- task: DownloadPipelineArtifact@2
displayName: Download artifacts
inputs:
@ -80,7 +70,7 @@ steps:
set -x
set -e
make global6.json
make global.json
make -C builds dotnet
workingDirectory: $(System.DefaultWorkingDirectory)/xamarin-macios
displayName: Bootstrap dotnet
@ -142,8 +132,6 @@ steps:
PLATFORMS="$PLATFORMS $CURRENT"
done
rm global.json
cp global6.json global.json
$DOTNET workload install --from-rollback-file $ROLLBACK_PATH --source $DOTNET_NUPKG_DIR $SOURCES --verbosity diag $PLATFORMS
var=$(make -C $(Build.SourcesDirectory)/xamarin-macios/tools/devops print-variable VARIABLE=DOTNET_DIR)

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

@ -13,4 +13,3 @@ Xcode ("@XCODE_XIP_NAME@").XcodeSelect (allowUntrusted: true);
Item ("@MONO_PACKAGE@");
Item ("@MIN_SHARPIE_URL@");
Item ("@VS_PACKAGE@");
DotNetCoreSdk ("@SYSTEM_DOTNET_VERSION@");

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

@ -15,6 +15,4 @@ Item ("@VS_PACKAGE@");
Item ("@XI_PACKAGE@");
Item ("@MIN_SHARPIE_URL@");
DotNetCoreSdk ("@SYSTEM_DOTNET_VERSION@");
BrewPackages ("p7zip");

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

@ -10,7 +10,6 @@ using static Xamarin.Provisioning.ProvisioningScript;
Item ("@MONO_PACKAGE@");
Item ("@VS_PACKAGE@");
Item ("@XM_PACKAGE@");
DotNetCoreSdk ("@SYSTEM_DOTNET_VERSION@");
BrewPackages ("p7zip");

1
tools/dotnet-linker/.gitignore поставляемый
Просмотреть файл

@ -1,3 +1,2 @@
global.json
*.csproj.inc
.vscode/

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

@ -16,10 +16,10 @@ DOTNET_DIRECTORIES += \
# dotnet-linker.csproj.inc contains the dotnet_linker_dependencies variable used to determine if mtouch needs to be rebuilt or not.
dotnet-linker.csproj.inc: export BUILD_EXECUTABLE=$(DOTNET) build
dotnet-linker.csproj.inc: export BUILD_VERBOSITY=$(DOTNET_BUILD_VERBOSITY)
dotnet-linker.csproj.inc: global.json
dotnet-linker.csproj.inc:
-include dotnet-linker.csproj.inc
$(BUILD_DIR)/dotnet-linker%dll $(BUILD_DIR)/dotnet-linker%pdb: Makefile global.json $(dotnet_linker_dependencies)
$(BUILD_DIR)/dotnet-linker%dll $(BUILD_DIR)/dotnet-linker%pdb: Makefile $(dotnet_linker_dependencies)
$(Q_DOTNET_BUILD) $(DOTNET) build dotnet-linker.csproj $(DOTNET_BUILD_VERBOSITY)
$(Q) touch $(BUILD_DIR)/dotnet-linker.dll $(BUILD_DIR)/dotnet-linker.pdb
@ -32,12 +32,5 @@ $(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call InstallTemplate,$(platform)
$(DOTNET_DIRECTORIES):
$(Q) mkdir -p $@
# This tells NuGet to use the exact same dotnet version we've configured in Make.config
global.json: $(TOP)/Make.config.inc Makefile $(TOP)/.git/HEAD $(TOP)/.git/index
$(Q_GEN) \
printf "{\n" > $@; \
printf "\t\"sdk\": { \"version\": \"$(DOTNET_VERSION)\" }\n" >> $@; \
printf "}\n" >> $@
all-local:: $(DOTNET_TARGETS)
install-local:: $(DOTNET_TARGETS)

1
tools/nnyeah/.gitignore поставляемый
Просмотреть файл

@ -1,2 +1 @@
nupkg/
global.json

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

@ -12,17 +12,13 @@ $(IOS_DLL):
@echo "Thou shalt run 'make all' in the root directory first"
@exit 1
global.json: $(TOP)/global6.json
$(CP) $< $@
# Example TEST_FILTER:
# TEST_FILTER="--filter FullyQualifiedName~BuildMyCocoaApp"
# Docs: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test#filter-option-details
run-tests:: global.json ./nupkg/nnyeah.$(NUPKG_VERSION).nupkg
run-tests:: ./nupkg/nnyeah.$(NUPKG_VERSION).nupkg
$(DOTNET) test tests/nnyeah-tests.csproj $(TEST_FILTER)
nnyeah/bin/Debug/net6.0/nnyeah.dll: $(IOS_DLL) $(wildcard **/*.cs) $(wildcard **/*.csproj) $(wildcard *.sln) global.json
nnyeah/bin/Debug/net6.0/nnyeah.dll: $(IOS_DLL) $(wildcard **/*.cs) $(wildcard **/*.csproj) $(wildcard *.sln)
$(Q_BUILD) $(DOTNET) build "/bl:$@.binlog" /restore $(MSBUILD_VERBOSITY) $(wildcard *.sln)
clean: