Skip to content

Commit

Permalink
Download the Mono SDK archive for macOS as well. (#5953)
Browse files Browse the repository at this point in the history
* Download the Mono SDK archive for macOS as well.

* [tests] Don't forget the tests.
  • Loading branch information
rolfbjarne committed Apr 26, 2019
1 parent c8ed014 commit 6c36746
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 29 deletions.
18 changes: 12 additions & 6 deletions Make.config
Expand Up @@ -332,15 +332,21 @@ CP:=$(shell df -t apfs / >/dev/null 2>&1 && echo "cp -c" || echo "cp")

# Setup various variables depending on whether mono is downloaded or built from source
MONO_HASH:=$(shell git --git-dir=$(abspath $(TOP)/.git) --work-tree=$(abspath $(TOP)) ls-tree HEAD --full-tree -- external/mono | awk -F' ' '{printf "%s",$$3}')
MONO_FILENAME:=ios-release-Darwin-$(MONO_HASH).zip
MONO_URL:=https://xamjenkinsartifact.azureedge.net/mono-sdks/$(MONO_FILENAME)
MONO_IOS_FILENAME:=ios-release-Darwin-$(MONO_HASH).zip
MONO_IOS_URL:=https://xamjenkinsartifact.azureedge.net/mono-sdks/$(MONO_IOS_FILENAME)
MONO_MAC_FILENAME:=mac-release-Darwin-$(MONO_HASH).zip
MONO_MAC_URL:=https://xamjenkinsartifact.azureedge.net/mono-sdks/$(MONO_MAC_FILENAME)
ifeq ($(MONO_BUILD_FROM_SOURCE),)
MONO_SDK_BUILDDIR:=$(abspath $(TOP)/builds/downloads/$(basename $(MONO_FILENAME)))
MONO_SDK_DESTDIR:=$(abspath $(TOP)/builds/downloads/$(basename $(MONO_FILENAME)))
MONO_IOS_SDK_BUILDDIR:=$(abspath $(TOP)/builds/downloads/$(basename $(MONO_IOS_FILENAME)))
MONO_IOS_SDK_DESTDIR:=$(abspath $(TOP)/builds/downloads/$(basename $(MONO_IOS_FILENAME)))
MONO_MAC_SDK_BUILDDIR:=$(abspath $(TOP)/builds/downloads/$(basename $(MONO_MAC_FILENAME)))
MONO_MAC_SDK_DESTDIR:=$(abspath $(TOP)/builds/downloads/$(basename $(MONO_MAC_FILENAME)))
MONO_BUILD_MODE=download
else
MONO_SDK_BUILDDIR:=$(abspath $(MONO_PATH)/sdks/builds)
MONO_SDK_DESTDIR:=$(abspath $(MONO_PATH)/sdks/out)
MONO_IOS_SDK_BUILDDIR:=$(abspath $(MONO_PATH)/sdks/builds)
MONO_IOS_SDK_DESTDIR:=$(abspath $(MONO_PATH)/sdks/out)
MONO_MAC_SDK_BUILDDIR:=$(abspath $(MONO_PATH)/sdks/builds)
MONO_MAC_SDK_DESTDIR:=$(abspath $(MONO_PATH)/sdks/out)
MONO_BUILD_MODE=compile
endif

Expand Down
37 changes: 20 additions & 17 deletions builds/Makefile
Expand Up @@ -3,26 +3,29 @@ include $(TOP)/Make.config

PREFIX=$(abspath $(IOS_DESTDIR)/$(MONOTOUCH_PREFIX)/)

download: downloads/$(basename $(MONO_FILENAME))
download: downloads/$(basename $(MONO_IOS_FILENAME)) downloads/$(basename $(MONO_MAC_FILENAME))

downloads/$(MONO_FILENAME):
downloads/$(basename $(MONO_IOS_FILENAME)): MONO_URL=$(MONO_IOS_URL)
downloads/$(basename $(MONO_MAC_FILENAME)): MONO_URL=$(MONO_MAC_URL)

downloads/$(MONO_IOS_FILENAME) downloads/$(MONO_MAC_FILENAME):
$(Q) mkdir -p downloads
$(Q) echo "Downloading $(MONO_URL)..."
$(Q) curl -f -L $(if $(V),-v,-s) $(MONO_URL) --output $@.tmp
$(Q) mv $@.tmp $@
$(Q) echo "Downloaded $(MONO_URL)"

downloads/$(basename $(MONO_FILENAME)): downloads/$(MONO_FILENAME)
$(Q) echo "Unzipping $(MONO_FILENAME)..."
downloads/%: downloads/%.zip
$(Q) echo "Unzipping $*..."
$(Q) rm -Rf $@.tmp
$(Q) unzip -q -d $@.tmp $<
$(Q) mv $@.tmp $@
$(Q) echo "Unzipped $(MONO_FILENAME)"
$(Q) echo "Unzipped $*."

clean-locals::
$(Q) rm -Rf downloads

.stamp-download-%: downloads/$(basename $(MONO_FILENAME))
.stamp-download-%: downloads/$(basename $(MONO_IOS_FILENAME)) downloads/$(basename $(MONO_MAC_FILENAME))
$(Q) touch $@

ifeq ($(MONO_BUILD_FROM_SOURCE),)
Expand Down Expand Up @@ -1598,18 +1601,18 @@ build-llvm32: .stamp-build-llvm32
build-llvm64: .stamp-build-llvm64

.stamp-compile-llvm64: $(SDK_CONFIG)
$(MAKE) -C $(MONO_SDK_BUILDDIR) provision-llvm-llvm64 $(SDK_ARGS)
$(MAKE) -C $(MONO_IOS_SDK_BUILDDIR) provision-llvm-llvm64 $(SDK_ARGS)
$(Q) touch $@

.stamp-compile-llvm32: $(SDK_CONFIG)
$(MAKE) -C $(MONO_SDK_BUILDDIR) provision-llvm36-llvm32 $(SDK_ARGS)
$(MAKE) -C $(MONO_IOS_SDK_BUILDDIR) provision-llvm36-llvm32 $(SDK_ARGS)
$(Q) touch $@

.stamp-build-llvm64: .stamp-$(MONO_BUILD_MODE)-llvm64
.stamp-build-llvm32: .stamp-$(MONO_BUILD_MODE)-llvm32

clean-llvm: $(SDK_CONFIG)
$(MAKE) -C $(MONO_SDK_BUILDDIR) clean-llvm36-llvm32 clean-llvm-llvm64 $(SDK_ARGS)
$(MAKE) -C $(MONO_IOS_SDK_BUILDDIR) clean-llvm36-llvm32 clean-llvm-llvm64 $(SDK_ARGS)
$(RM) .stamp-*-llvm*

.PHONY: install-llvm64 install-llvm32 llvm32 llvm64
Expand All @@ -1622,13 +1625,13 @@ LLVM32_TARGETS = \
$(PREFIX)/LLVM36/bin/opt \
$(PREFIX)/LLVM36/bin/llc \

$(MONO_SDK_DESTDIR)/llvm-llvm64/bin/%: .stamp-build-llvm64;
$(MONO_SDK_DESTDIR)/llvm36-llvm32/bin/%: .stamp-build-llvm32;
$(MONO_IOS_SDK_DESTDIR)/llvm-llvm64/bin/%: .stamp-build-llvm64;
$(MONO_IOS_SDK_DESTDIR)/llvm36-llvm32/bin/%: .stamp-build-llvm32;

$(PREFIX)/LLVM/bin/%: $(MONO_SDK_DESTDIR)/llvm-llvm64/bin/% | $(PREFIX)/LLVM/bin
$(PREFIX)/LLVM/bin/%: $(MONO_IOS_SDK_DESTDIR)/llvm-llvm64/bin/% | $(PREFIX)/LLVM/bin
$(call Q_2,INSTALL ,[LLVM64]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $^ $@

$(PREFIX)/LLVM36/bin/%: $(MONO_SDK_DESTDIR)/llvm36-llvm32/bin/% | $(PREFIX)/LLVM36/bin
$(PREFIX)/LLVM36/bin/%: $(MONO_IOS_SDK_DESTDIR)/llvm36-llvm32/bin/% | $(PREFIX)/LLVM36/bin
$(call Q_2,INSTALL ,[LLVM32]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $^ $@

$(PREFIX)/LLVM/bin $(PREFIX)/LLVM36/bin:
Expand Down Expand Up @@ -1674,7 +1677,7 @@ install-local:: install-$(1)
clean-local:: clean-$(1)

.stamp-compile-$(1): .stamp-build-llvm64 .stamp-build-llvm32 $(MONO_PATH)/configure $(MONO_PATH)/tools/offsets-tool/MonoAotOffsetsDumper.exe $(MONO_DEPENDENCIES) $(SDK_CONFIG)
$(MAKE) -C $(MONO_SDK_BUILDDIR) package-ios-$(1) $(SDK_ARGS)
$(MAKE) -C $(MONO_IOS_SDK_BUILDDIR) package-ios-$(1) $(SDK_ARGS)
$(Q) touch $$@

.stamp-build-$(1): .stamp-$(MONO_BUILD_MODE)-$(1)
Expand All @@ -1686,14 +1689,14 @@ _$(1)_CROSS_TARGETS = \

$(SDK_DESTDIR)/ios-$(1)/bin/$(4): .stamp-build-$(1)

$(PREFIX)/bin/$(3): $(MONO_SDK_DESTDIR)/ios-$(1)-release/bin/$(4) | $(PREFIX)/bin
$(PREFIX)/bin/$(3): $(MONO_IOS_SDK_DESTDIR)/ios-$(1)-release/bin/$(4) | $(PREFIX)/bin
$(call Q_2,INSTALL ,[CROSS]) install -c -m 0755 $(INSTALL_STRIP_FLAG) $$< $$@

install-$(1): install-$(2) $$(_$(1)_CROSS_TARGETS)

clean-$(1): $(SDK_CONFIG)
$(MAKE) -C $(MONO_SDK_BUILDDIR) clean-ios-$(1) $(SDK_ARGS)
-rm -rf $(MONO_SDK_DESTDIR)/$(1) .stamp-build-$(1)
$(MAKE) -C $(MONO_IOS_SDK_BUILDDIR) clean-ios-$(1) $(SDK_ARGS)
-rm -rf $(MONO_IOS_SDK_DESTDIR)/$(1) .stamp-build-$(1)

endef

Expand Down
6 changes: 4 additions & 2 deletions tests/Makefile
Expand Up @@ -92,7 +92,8 @@ test.config: Makefile $(TOP)/Make.config
@echo "JENKINS_RESULTS_DIRECTORY=$(abspath $(JENKINS_RESULTS_DIRECTORY))" >> $@
@echo "INCLUDE_DEVICE=$(INCLUDE_DEVICE)" >> $@
@echo "XCODE_DEVELOPER_ROOT=$(XCODE_DEVELOPER_ROOT)" >> $@
@echo "MONO_SDK_DESTDIR=$(MONO_SDK_DESTDIR)" >> $@
@echo "MONO_IOS_SDK_DESTDIR=$(MONO_IOS_SDK_DESTDIR)" >> $@
@echo "MONO_MAC_SDK_DESTDIR=$(MONO_MAC_SDK_DESTDIR)" >> $@
@echo "ENABLE_XAMARIN=$(ENABLE_XAMARIN)" >> $@

test-system.config:
Expand All @@ -102,7 +103,8 @@ test-system.config:
@echo "MAC_DESTDIR=/" >> $@
@echo "JENKINS_RESULTS_DIRECTORY=$(abspath $(JENKINS_RESULTS_DIRECTORY))" >> $@
@echo "INCLUDE_DEVICE=$(INCLUDE_DEVICE)" >> $@
@echo "MONO_SDK_DESTDIR=$(MONO_SDK_DESTDIR)" >> $@
@echo "MONO_IOS_SDK_DESTDIR=$(MONO_IOS_SDK_DESTDIR)" >> $@
@echo "MONO_MAC_SDK_DESTDIR=$(MONO_MAC_SDK_DESTDIR)" >> $@

clean-local::
$(Q) $(SYSTEM_XBUILD) /t:Clean /p:Platform=iPhoneSimulator /p:Configuration=$(CONFIG) $(XBUILD_VERBOSITY) tests.sln
Expand Down
2 changes: 1 addition & 1 deletion tests/bcl-test/BCLTests/Makefile
Expand Up @@ -13,7 +13,7 @@ test-importer:

generate-test-projects: test-importer ./RegisterType.cs.in ./BCLTests.csproj.in
mono ./bcl-test-importer/BCLTestImporter.exe --generate-all-projects --output=. --clean
mono ./bcl-test-importer/BCLTestImporter.exe --generate-all-projects --output=. --override --register-type-template=RegisterType.cs.in --project-template=. --plist-template=. --mono-root=../../../external/mono/ --sdk-download=$(MONO_SDK_DESTDIR) -iOS -v
mono ./bcl-test-importer/BCLTestImporter.exe --generate-all-projects --output=. --override --register-type-template=RegisterType.cs.in --project-template=. --plist-template=. --mono-root=../../../external/mono/ --sdk-download=$(MONO_IOS_SDK_DESTDIR) -iOS -v

all: generate-test-projects

Expand Down
Expand Up @@ -22,7 +22,7 @@ public BCLTestImportTargetFactory (Harness harness)
var plistTemplatePath = outputDir;

projectGenerator = new BCLTestProjectGenerator (outputDir, Harness.MONO_PATH, projectTemplatePath, registerTypesTemplatePath, plistTemplatePath) {
iOSMonoSDKPath = Harness.MONO_SDK_DESTDIR,
iOSMonoSDKPath = Harness.MONO_IOS_SDK_DESTDIR,
Override = true,
GuidGenerator = Harness.NewStableGuid,
GroupTests = Harness.InJenkins || Harness.UseGroupedApps,
Expand Down
6 changes: 4 additions & 2 deletions tests/xharness/Harness.cs
Expand Up @@ -88,7 +88,8 @@ public class Harness
public string JENKINS_RESULTS_DIRECTORY { get; set; } // Use same name as in Makefiles, so that a grep finds it.
public string MAC_DESTDIR { get; set; }
public string IOS_DESTDIR { get; set; }
public string MONO_SDK_DESTDIR { get; set; }
public string MONO_IOS_SDK_DESTDIR { get; set; }
public string MONO_MAC_SDK_DESTDIR { get; set; }
public bool IncludeMac32 { get; set; }
public bool ENABLE_XAMARIN { get; set; }

Expand Down Expand Up @@ -229,7 +230,8 @@ void LoadConfig ()
SdkRoot = make_config ["XCODE_DEVELOPER_ROOT"];
if (string.IsNullOrEmpty (SdkRoot94))
SdkRoot94 = make_config ["XCODE94_DEVELOPER_ROOT"];
MONO_SDK_DESTDIR = make_config ["MONO_SDK_DESTDIR"];
MONO_IOS_SDK_DESTDIR = make_config ["MONO_IOS_SDK_DESTDIR"];
MONO_MAC_SDK_DESTDIR = make_config ["MONO_MAC_SDK_DESTDIR"];
ENABLE_XAMARIN = make_config.ContainsKey ("ENABLE_XAMARIN") && !string.IsNullOrEmpty (make_config ["ENABLE_XAMARIN"]);
}

Expand Down

2 comments on commit 6c36746

@xamarin-release-manager
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Device tests passed on TvOS on Azure DevOps(TvOS): Html Report

Test results

No tests selected.

@xamarin-release-manager
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.