|
12 | 12 | DOTNET_ARCH=x64 |
13 | 13 | endif |
14 | 14 |
|
| 15 | +ifeq ($(OS),Windows_NT) |
| 16 | +DOTNET_INSTALL_SCRIPT=dotnet-install.ps1 |
| 17 | +else |
| 18 | +DOTNET_INSTALL_SCRIPT=dotnet-install.sh |
| 19 | +endif |
| 20 | + |
15 | 21 | include $(TOP)/mk/colors.mk |
16 | 22 |
|
17 | 23 | DOTNET_FILENAME=$(DOTNET_VERSION).tar.gz |
18 | 24 | DOTNET_CACHE_FILENAME=$(HOME)/Library/Caches/xamarin-macios/$(DOTNET_FILENAME) |
19 | 25 |
|
20 | | -downloads/$(DOTNET_INSTALL_NAME): dotnet-install.sh |
| 26 | +downloads/$(DOTNET_INSTALL_NAME): $(DOTNET_INSTALL_SCRIPT) |
21 | 27 | $(Q) echo "Downloading and installing .NET $(DOTNET_VERSION) ($(DOTNET_ARCH)) into $@..." |
| 28 | +ifeq ($(OS),Windows_NT) |
| 29 | + rm -Rf "$@" |
| 30 | + pwsh -ExecutionPolicy ByPass -NoProfile -Command '& ./$(DOTNET_INSTALL_SCRIPT) -Version "$(DOTNET_VERSION)" -InstallDir " [email protected]" -Verbose' |
| 31 | + |
| 32 | +else |
22 | 33 | $(Q) if test -f $(DOTNET_CACHE_FILENAME); then \ |
23 | 34 | echo "Found a cached version of .NET $(DOTNET_VERSION) in $(DOTNET_CACHE_FILENAME)."; \ |
24 | 35 | |
25 | 36 | tar -xzf $(DOTNET_CACHE_FILENAME) -C " [email protected]"; \ |
26 | 37 | else \ |
27 | | - ./dotnet-install.sh --install-dir "$@.tmp" --version "$(DOTNET_VERSION)" --architecture $(DOTNET_ARCH) --no-path --keep-zip --zip-path "downloads/$(DOTNET_FILENAME)" $$DOTNET_INSTALL_EXTRA_ARGS; \ |
28 | | - cp -c downloads/$(DOTNET_FILENAME) $(DOTNET_CACHE_FILENAME); \ |
| 38 | + ./$(DOTNET_INSTALL_SCRIPT) --install-dir " [email protected]" --version "$(DOTNET_VERSION)" --architecture $(DOTNET_ARCH) --no-path --keep-zip --zip-path "downloads/$(DOTNET_FILENAME)" $$DOTNET_INSTALL_EXTRA_ARGS; \ |
| 39 | + mkdir -p $$(dirname $(DOTNET_CACHE_FILENAME)); \ |
| 40 | + $(CP) downloads/$(DOTNET_FILENAME) $(DOTNET_CACHE_FILENAME); \ |
29 | 41 | echo "Cached the download of $(DOTNET_FILENAME) in ~/Library/Caches/xamarin-macios"; \ |
30 | 42 | fi |
31 | 43 | $(Q) rm -Rf "$@" |
32 | 44 | |
| 45 | +endif |
33 | 46 | $(Q) echo "Downloaded and installed .NET $(DOTNET_VERSION) into $@." |
34 | 47 |
|
35 | 48 | # Create a symlink with a persistent (non-version-dependent) name |
36 | 49 | # The dependency on the stamp file is to ensure the symlink is re-created |
37 | 50 | # when the .NET version changes. |
38 | 51 | all-local:: downloads/dotnet |
39 | 52 | dotnet:: downloads/dotnet |
| 53 | + |
| 54 | +ifeq ($(OS),Windows_NT) |
| 55 | +# On Windows, for simplicity just copy the entire directory (creating symbolic links on Windows requires admin rights). |
| 56 | +downloads/dotnet: downloads/$(DOTNET_INSTALL_NAME) |
| 57 | + $(Q) rm -f $@ |
| 58 | + $(Q) $(CP) -r downloads/$(DOTNET_INSTALL_NAME) $@ |
| 59 | +else |
40 | 60 | downloads/dotnet: .stamp-dotnet-symlink-$(DOTNET_VERSION) |
41 | 61 | $(Q) mkdir -p downloads |
42 | 62 | $(Q) rm -f $@ |
43 | 63 | $(Q) ln -s $(abspath downloads/$(DOTNET_INSTALL_NAME)) $@ |
| 64 | +endif |
44 | 65 |
|
45 | 66 | .stamp-dotnet-symlink-$(DOTNET_VERSION): Makefile |
46 | 67 | $(Q) touch $@ |
47 | 68 |
|
48 | 69 | # This is just a helpful target to print the url to the .pkg to download and install the current .NET version into the system. |
49 | | -print-dotnet-pkg-urls: dotnet-install.sh |
| 70 | +print-dotnet-pkg-urls: $(DOTNET_INSTALL_SCRIPT) |
50 | 71 | $(Q) rm -f $@-found-it.stamp |
51 | | - $(Q) for url in $$(./dotnet-install.sh --version "$(DOTNET_VERSION)" --architecture $(DOTNET_ARCH) --no-path $$DOTNET_INSTALL_EXTRA_ARGS --dry-run | grep URL.*primary: | sed 's/.*primary: //'); do \ |
| 72 | + $(Q) for url in $$(./$(DOTNET_INSTALL_SCRIPT) --version "$(DOTNET_VERSION)" --architecture $(DOTNET_ARCH) --no-path $$DOTNET_INSTALL_EXTRA_ARGS --dry-run | grep URL.*primary: | sed 's/.*primary: //'); do \ |
52 | 73 | pkg=$${url/tar.gz/pkg}; \ |
53 | 74 | if $(CURL) -I "$$pkg" >/dev/null 2>&1; then echo "$$pkg"; touch $@-found-it.stamp; break; fi; \ |
54 | 75 | done |
55 | 76 | $(Q) if ! test -f $@-found-it.stamp; then echo "No working urls were found."; exit 1; fi |
56 | 77 | $(Q) rm -f $@-found-it.stamp |
57 | 78 |
|
58 | | -# We need https://github.com/dotnet/install-scripts/pull/555, which hasn't been released yet. |
59 | | -# Revert to using https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh whenever https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh has been updated. |
60 | | -# DOTNET_DOWNLOAD_URL?=https://raw.githubusercontent.com/dotnet/install-scripts/d48e000adad7243861d799ec86c0bf7210a8fc7a/src/dotnet-install.sh |
61 | | - |
62 | | -DOTNET_DOWNLOAD_URL?=https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh |
| 79 | +DOTNET_DOWNLOAD_URL?=https://builds.dotnet.microsoft.com/dotnet/scripts/v1/$(DOTNET_INSTALL_SCRIPT) |
63 | 80 |
|
64 | | -dotnet-install.sh: Makefile |
| 81 | +$(DOTNET_INSTALL_SCRIPT): Makefile |
65 | 82 | $(Q) $(CURL_RETRY) $(DOTNET_DOWNLOAD_URL) --output $@.tmp |
66 | 83 | $(Q) chmod +x $@.tmp |
67 | 84 | $(Q) mv $@.tmp $@ |
@@ -112,6 +129,7 @@ DOTNET_DOWNLOADS = \ |
112 | 129 | .stamp-download-dotnet-packages \ |
113 | 130 | .stamp-install-t4 \ |
114 | 131 |
|
| 132 | +download: downloads/dotnet |
115 | 133 | dotnet:: $(DOTNET_DOWNLOADS) |
116 | 134 | all-local:: $(DOTNET_DOWNLOADS) |
117 | 135 |
|
|
0 commit comments