Skip to content

Commit 9302d51

Browse files
grendellojonpryor
authored andcommitted
[build] Xamarin.Android build preparation utility (#3051)
Fixes: #2562 The `make prepare` **make** target and `msbuild /t:Prepare` MSBuild target are used to "prepare" a `xamarin-android` checkout so that the subsequent `make all` or `msbuild /t:Build` invocation will work. The preparation step involves ensuring that all known required dependencies exist or are provisioned (54a7a02), such as the build utilities (`autoconf`/etc.), cross-compilers (MinGW), the Android SDK and NDK, and building "enough" to allow `Xamarin.Android.sln` to build (see also 7343965). Unfortunately, the Glorious Idea™ of using MSBuild for significant portions of this process is "baroque", making it difficult to understand and maintain, and the requirement on `msbuild` means that things break in really bizarre and obscure ways on Linux and macOS if the installed `mono` version is "too old"...and the determination of "too old" was being done via `mono` & `msbuild`! Furthermore, there was duplication and repetition of various bits of build configuration on Linux and macOS between Makefile and the MSBuild project system, which made it easier to make mistakes. (Then there's the occasional bizarro failures that would result from attempting to evaluate `$(PRODUCT_VERSION)` within `make`; it would fail when `MONO_LOG_LEVEL=info` was set. Then there's...) Instead of having `make prepare` be implemented as an unholy mess of `make` and `msbuild`, introduce the new `build-tools/xaprepare` app. `xaprepare` will be built and executed as part of `make prepare`, and takes over responsibility for repo build preparation. See also: build-tools/xaprepare/README.md TODO: Windows support
1 parent ea6853a commit 9302d51

File tree

265 files changed

+17832
-3496
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

265 files changed

+17832
-3496
lines changed

CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
/build-tools/manifest-attribute-codegen @jonpryor
2121
/build-tools/scripts/PrepareWindows.targets @jonathanpeppers
2222
/build-tools/timing @jonathanpeppers @radekdoulik
23+
/build-tools/xaprepare @grendello
2324

2425
/src/OpenTK-1.0 @radekdoulik @jonpryor
2526
/src/Mono.Android.Export @jonpryor

Configuration.props

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,17 @@
3838
<AndroidUseLatestPlatformSdk Condition=" '$(AndroidFrameworkVersion)' == '' And '$(_IsRunningNuGetRestore)' == 'True' ">True</AndroidUseLatestPlatformSdk>
3939
<DebugType Condition=" '$(DebugType)' == '' ">portable</DebugType>
4040
</PropertyGroup>
41+
<PropertyGroup Condition=" '$(HostOS)' == '' ">
42+
<HostOS Condition="$([MSBuild]::IsOSPlatform('windows'))">Windows</HostOS>
43+
<HostOS Condition="$([MSBuild]::IsOSPlatform('linux'))">Linux</HostOS>
44+
<HostOS Condition="$([MSBuild]::IsOSPlatform('osx'))">Darwin</HostOS>
45+
</PropertyGroup>
4146
<PropertyGroup>
4247
<AutoProvision Condition=" '$(AutoProvision)' == '' ">False</AutoProvision>
4348
<AutoProvisionUsesSudo Condition=" '$(AutoProvisionUsesSudo)' == '' ">False</AutoProvisionUsesSudo>
44-
<XAInstallPrefix Condition=" '$(XAInstallPrefix)' == '' ">$(MSBuildThisFileDirectory)bin\$(Configuration)\lib\xamarin.android\</XAInstallPrefix>
49+
<_XABinRelativeInstallPrefix>lib\xamarin.android</_XABinRelativeInstallPrefix>
50+
<XAInstallPrefix Condition=" '$(XAInstallPrefix)' == '' ">$(MSBuildThisFileDirectory)bin\$(Configuration)\$(_XABinRelativeInstallPrefix)\</XAInstallPrefix>
4551
<MingwDependenciesRootDirectory Condition=" '$(MingwDependenciesRootDirectory)' == '' ">$(MSBuildThisFileDirectory)\bin\Build$(Configuration)\mingw-deps</MingwDependenciesRootDirectory>
46-
<HostOS Condition=" '$(HostOS)' == '' And '$(OS)' == 'Windows_NT' ">Windows</HostOS>
4752
<HostCc Condition=" '$(HostCc)' == '' ">$(HostCc64)</HostCc>
4853
<HostCxx Condition=" '$(HostCxx)' == '' ">$(HostCxx64)</HostCxx>
4954
<HostCc Condition=" '$(HostCc)' == '' ">$(HostCc32)</HostCc>
@@ -171,7 +176,8 @@
171176
<AndroidSupportedTargetAotAbisSplit>$(AndroidSupportedTargetAotAbis.Split(':'))</AndroidSupportedTargetAotAbisSplit>
172177
</PropertyGroup>
173178
<PropertyGroup>
174-
<RemapAssemblyRefTool>$(ManagedRuntime) $(ManagedRuntimeArgs) &quot;$(MSBuildThisFileDirectory)bin\Build$(Configuration)\remap-assembly-ref.exe&quot;</RemapAssemblyRefTool>
179+
<RemapAssemblyRefToolExecutable>$(MSBuildThisFileDirectory)bin\Build$(Configuration)\remap-assembly-ref.exe</RemapAssemblyRefToolExecutable>
180+
<RemapAssemblyRefTool>$(ManagedRuntime) $(ManagedRuntimeArgs) &quot;$(RemapAssemblyRefToolExecutable)&quot;</RemapAssemblyRefTool>
175181
</PropertyGroup>
176182

177183
<!-- Unit Test Properties -->

Makefile

Lines changed: 123 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,78 @@
1-
export OS_NAME := $(shell uname)
2-
export OS_ARCH := $(shell uname -m)
3-
export NO_SUDO ?= false
41
V ?= 0
52
prefix = /usr/local
63
CONFIGURATION = Debug
74
RUNTIME := $(shell which mono64 2> /dev/null && echo mono64 || echo mono) --debug=casts
85
SOLUTION = Xamarin.Android.sln
96
TEST_TARGETS = build-tools/scripts/RunTests.targets
107
API_LEVEL ?=
8+
PREPARE_ARGS =
9+
PREPARE_BUILD_LOG = bin/Build$(CONFIGURATION)/bootstrap-build.binlog
10+
PREPARE_RESTORE_LOG = bin/Build$(CONFIGURATION)/bootstrap-restore.binlog
11+
PREPARE_SOURCE_DIR = build-tools/xaprepare
12+
PREPARE_SOLUTION = $(PREPARE_SOURCE_DIR)/xaprepare.sln
13+
PREPARE_EXE = $(PREPARE_SOURCE_DIR)/xaprepare/bin/$(CONFIGURATION)/xaprepare.exe
14+
PREPARE_COMMON_MSBUILD_FLAGS = /p:Configuration=$(CONFIGURATION) $(PREPARE_MSBUILD_ARGS) $(MSBUILD_ARGS)
15+
PREPARE_MSBUILD_FLAGS = /binaryLogger:"$(PREPARE_BUILD_LOG)" $(PREPARE_COMMON_MSBUILD_FLAGS)
16+
PREPARE_RESTORE_FLAGS = /binaryLogger:"$(PREPARE_RESTORE_LOG)" $(PREPARE_COMMON_MSBUILD_FLAGS)
17+
PREPARE_SCENARIO =
18+
PREPARE_CI ?= 0
19+
PREPARE_AUTOPROVISION ?= 0
20+
PREPARE_IGNORE_MONO_VERSION ?= 1
21+
22+
_PREPARE_CI_MODE_ARGS = --no-emoji --run-mode=CI -a
23+
_PREPARE_ARGS =
24+
25+
all:
26+
$(call MSBUILD_BINLOG,all,$(_SLN_BUILD)) $(MSBUILD_FLAGS) $(SOLUTION)
27+
28+
-include bin/Build$(CONFIGURATION)/rules.mk
29+
30+
ifeq ($(OS_NAME),)
31+
export OS_NAME := $(shell uname)
32+
endif
33+
34+
ifeq ($(OS_ARCH),)
35+
export OS_ARCH := $(shell uname -m)
36+
endif
37+
38+
export NO_SUDO ?= false
39+
40+
ifneq ($(NO_SUDO),false)
41+
_PREPARE_ARGS += --auto-provisioning-uses-sudo=false
42+
endif
43+
44+
ifneq ($(V),0)
45+
MONO_OPTIONS += --debug
46+
NUGET_VERBOSITY = -Verbosity Detailed
47+
_PREPARE_ARGS += -v:d
48+
endif
49+
50+
ifneq ($(PREPARE_CI),0)
51+
_PREPARE_ARGS += $(_PREPARE_CI_MODE_ARGS)
52+
endif
53+
54+
ifneq ($(PREPARE_AUTOPROVISION),0)
55+
_PREPARE_ARGS += --auto-provision=yes --auto-provision-uses-sudo=yes
56+
endif
1157

1258
ifeq ($(OS_NAME),Darwin)
13-
export MACOSX_DEPLOYMENT_TARGET := 10.11
59+
ifeq ($(HOMEBREW_PREFIX),)
1460
HOMEBREW_PREFIX ?= $(shell brew --prefix)
61+
endif
1562
else
1663
HOMEBREW_PREFIX := $prefix
1764
endif
1865

19-
ifneq ($(V),0)
20-
MONO_OPTIONS += --debug
21-
NUGET_VERBOSITY = -Verbosity Detailed
66+
ifeq ($(wildcard Configuration.OperatingSystem.props),)
67+
PREPARE_MSBUILD_FLAGS += "/p:HostHomebrewPrefix=$(HOMEBREW_PREFIX)"
2268
endif
2369

24-
ifneq ($(MONO_OPTIONS),)
25-
export MONO_OPTIONS
70+
ifneq ($(PREPARE_SCENARIO),)
71+
_PREPARE_ARGS += -s:"$(PREPARE_SCENARIO)"
2672
endif
2773

74+
_PREPARE_ARGS += $(PREPARE_ARGS)
75+
2876
include build-tools/scripts/msbuild.mk
2977

3078
ifeq ($(USE_MSBUILD),1)
@@ -34,12 +82,9 @@ _SLN_BUILD = MSBUILD="$(MSBUILD)" tools/scripts/xabuild
3482
endif # $(USE_MSBUILD) == 1
3583

3684
ifneq ($(API_LEVEL),)
37-
MSBUILD_FLAGS += /p:AndroidApiLevel=$(API_LEVEL) /p:AndroidFrameworkVersion=$(word $(API_LEVEL), $(ALL_FRAMEWORKS))
85+
MSBUILD_FLAGS += /p:AndroidApiLevel=$(API_LEVEL) /p:AndroidFrameworkVersion=$(word $(API_LEVEL), $(ALL_FRAMEWORKS)) /p:AndroidPlatformId=$(word $(a), $(ALL_PLATFORM_IDS))
3886
endif
3987

40-
all::
41-
$(call MSBUILD_BINLOG,all,$(_SLN_BUILD)) $(MSBUILD_FLAGS) $(SOLUTION)
42-
4388
all-tests::
4489
MSBUILD="$(MSBUILD)" $(call MSBUILD_BINLOG,all-tests,tools/scripts/xabuild) $(MSBUILD_FLAGS) Xamarin.Android-Tests.sln
4590

@@ -70,87 +115,6 @@ uninstall::
70115
rm -rf "$(prefix)/lib/mono/xbuild/Xamarin/Android"
71116
rm -rf "$(prefix)/lib/mono/xbuild-frameworks/MonoAndroid"
72117

73-
ifeq ($(OS_NAME),Linux)
74-
export LINUX_DISTRO := $(shell lsb_release -i -s || true)
75-
export LINUX_DISTRO_RELEASE := $(shell lsb_release -r -s || true)
76-
prepare:: linux-prepare
77-
endif # $(OS_NAME)=Linux
78-
79-
prepare:: prepare-paths prepare-msbuild
80-
81-
linux-prepare::
82-
BINFMT_MISC_TROUBLE="cli win" \
83-
BINFMT_WARN=no ; \
84-
for m in ${BINFMT_MISC_TROUBLE}; do \
85-
if [ -f "/proc/sys/fs/binfmt_misc/$$m" ]; then \
86-
BINFMT_WARN=yes ; \
87-
fi ; \
88-
done ; \
89-
if [ "x${BINFMT_WARN}" = "xyes" ]; then \
90-
cat Documentation/binfmt_misc-warning-Linux.txt ; \
91-
fi; \
92-
if [ -f build-tools/scripts/dependencies/linux-prepare-$(LINUX_DISTRO)-$(LINUX_DISTRO_RELEASE).sh ]; then \
93-
sh build-tools/scripts/dependencies/linux-prepare-$(LINUX_DISTRO)-$(LINUX_DISTRO_RELEASE).sh $(LINUX_DISTRO_RELEASE); \
94-
elif [ -f build-tools/scripts/dependencies/linux-prepare-$(LINUX_DISTRO).sh ]; then \
95-
sh build-tools/scripts/dependencies/linux-prepare-$(LINUX_DISTRO).sh $(LINUX_DISTRO_RELEASE); \
96-
fi
97-
98-
# $(call GetPath,path)
99-
GetPath = $(shell $(MSBUILD) $(MSBUILD_FLAGS) /p:DoNotLoadOSProperties=True /nologo /v:minimal /t:Get$(1)FullPath build-tools/scripts/Paths.targets | tr -d '[[:space:]]' )
100-
101-
MSBUILD_PREPARE_PROJS = \
102-
src/mono-runtimes/mono-runtimes.csproj \
103-
src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.csproj
104-
105-
prepare-deps: prepare-cmake-mingw-toolchain
106-
git submodule update --init --recursive
107-
./build-tools/scripts/generate-os-info Configuration.OperatingSystem.props
108-
mkdir -p bin/Build$(CONFIGURATION)
109-
$(call MSBUILD_BINLOG,prepare-deps) build-tools/dependencies/dependencies.csproj
110-
111-
#
112-
# $(1): output file name
113-
#
114-
define create_cmake_toolchain
115-
prepare-cmake-mingw-toolchain:: bin/Build$(CONFIGURATION)/$(1)
116-
117-
bin/Build$(CONFIGURATION)/$(1): build-tools/scripts/$(1).in
118-
mkdir -p $$(dir $$@)
119-
sed -e 's;@HOMEBREW_PREFIX@;$$(HOMEBREW_PREFIX);g' < $$< > $$@
120-
endef
121-
122-
$(eval $(call create_cmake_toolchain,mingw-32.cmake))
123-
$(eval $(call create_cmake_toolchain,mingw-64.cmake))
124-
125-
prepare-external: prepare-deps
126-
nuget restore $(NUGET_VERBOSITY) $(SOLUTION)
127-
nuget restore $(NUGET_VERBOSITY) Xamarin.Android-Tests.sln
128-
(cd external/xamarin-android-tools && make prepare CONFIGURATION=$(CONFIGURATION))
129-
(cd $(call GetPath,JavaInterop) && make prepare CONFIGURATION=$(CONFIGURATION) JI_MAX_JDK=8)
130-
(cd $(call GetPath,JavaInterop) && make bin/Build$(CONFIGURATION)/JdkInfo.props CONFIGURATION=$(CONFIGURATION) JI_MAX_JDK=8)
131-
132-
prepare-bundle: prepare-external
133-
$(call MSBUILD_BINLOG,prepare-bundle) build-tools/download-bundle/download-bundle.csproj
134-
$(call MSBUILD_BINLOG,prepare-restore) $(MSBUILD_FLAGS) tests/Xamarin.Forms-Performance-Integration/Xamarin.Forms.Performance.Integration.csproj /t:Restore
135-
136-
prepare-props: prepare-bundle
137-
cp $(call GetPath,JavaInterop)/external/Mono.Cecil* "$(call GetPath,MonoSource)/external"
138-
cp "$(call GetPath,JavaInterop)/product.snk" "$(call GetPath,MonoSource)"
139-
cp build-tools/scripts/Configuration.Java.Interop.Override.props external/Java.Interop/Configuration.Override.props
140-
cp $(call GetPath,MonoSource)/mcs/class/msfinal.pub .
141-
142-
prepare-msbuild: prepare-props
143-
ifeq ($(USE_MSBUILD),1)
144-
for proj in $(MSBUILD_PREPARE_PROJS); do \
145-
$(call MSBUILD_BINLOG,prepare-msbuild) "$$proj" || exit 1; \
146-
done
147-
endif # msbuild
148-
149-
prepare-image-dependencies:
150-
$(call MSBUILD_BINLOG,prepare-image-deps) build-tools/scripts/PrepareImageDependencies.targets /t:PrepareImageDependencies \
151-
/p:AndroidSupportedHostJitAbis=mxe-Win32:mxe-Win64
152-
cat bin/Build$(CONFIGURATION)/prepare-image-dependencies.sh | tr -d '\r' > prepare-image-dependencies.sh
153-
154118
include build-tools/scripts/BuildEverything.mk
155119

156120
# Must be after BuildEverything.mk - it uses variables defined there
@@ -159,59 +123,10 @@ include tests/api-compatibility/api-compatibility.mk
159123

160124
topdir := $(shell pwd)
161125

162-
163-
XA_BUILD_PATHS_OUT = bin/Test$(CONFIGURATION)/XABuildPaths.cs
164-
165-
prepare-paths: $(XA_BUILD_PATHS_OUT)
166-
167-
$(XA_BUILD_PATHS_OUT): bin/Test%/XABuildPaths.cs: build-tools/scripts/XABuildPaths.cs.in
168-
mkdir -p $(shell dirname $@)
169-
sed -e 's;@CONFIGURATION@;$*;g' \
170-
-e 's;@TOP_DIRECTORY@;$(topdir);g' < $< > $@
171-
cat $@
172-
173-
174-
# Usage: $(call CALL_CREATE_THIRD_PARTY_NOTICES,path,licenseType,includeExternalDeps,includeBuildDeps)
175-
define CREATE_THIRD_PARTY_NOTICES
176-
$(call MSBUILD_BINLOG,create-tpn,$(MSBUILD)) $(_MSBUILD_ARGS) \
177-
$(topdir)/build-tools/ThirdPartyNotices/ThirdPartyNotices.csproj \
178-
/p:Configuration=$(CONFIGURATION) \
179-
/p:ThirdPartyNoticeFile=$(topdir)/$(1) \
180-
/p:ThirdPartyNoticeLicenseType=$(2) \
181-
/p:TpnIncludeExternalDependencies=$(3) \
182-
/p:TpnIncludeBuildDependencies=$(4)
183-
endef # CREATE_THIRD_PARTY_NOTICES
184-
185-
prepare:: prepare-tpn
186-
187-
TPN_LICENSE_FILES = $(shell grep -h '<LicenseFile>' external/*.tpnitems src/*.tpnitems \
188-
| sed -E 's,<LicenseFile>(.*)</LicenseFile>,\1,g;s,.\(MSBuildThisFileDirectory\),$(topdir)/external/,g' \
189-
| tr \\ / )
190-
191-
# Usage: $(call CREATE_THIRD_PARTY_NOTICES_RULE,path,licenseType,includeExternalDeps,includeBuildDeps)
192-
define CREATE_THIRD_PARTY_NOTICES_RULE
193-
prepare-tpn:: $(1)
194-
195-
$(1) $(topdir)/$(1): build-tools/ThirdPartyNotices/ThirdPartyNotices.csproj \
196-
$(wildcard external/*.tpnitems src/*.tpnitems build-tools/*.tpnitems) \
197-
$(TPN_LICENSE_FILES)
198-
$(call CREATE_THIRD_PARTY_NOTICES,$(1),$(2),$(3),$(4))
199-
endef # CREATE_THIRD_PARTY_NOTICES_RULE
200-
201-
THIRD_PARTY_NOTICE_LICENSE_TYPE = microsoft-oss
202-
203-
$(eval $(call CREATE_THIRD_PARTY_NOTICES_RULE,ThirdPartyNotices.txt,foundation,False,False))
204-
$(eval $(call CREATE_THIRD_PARTY_NOTICES_RULE,bin/$(CONFIGURATION)/lib/xamarin.android/ThirdPartyNotices.txt,$(THIRD_PARTY_NOTICE_LICENSE_TYPE),True,False))
205-
206126
# Used by External XA Build
207127
EXTERNAL_XA_PATH=$(topdir)
208128
EXTERNAL_GIT_PATH=$(topdir)/external
209129

210-
prepare-external-git-dependencies:
211-
msbuild build-tools/xa-prep-tasks/xa-prep-tasks.csproj /p:Configuration=$(CONFIGURATION)
212-
msbuild build-tools/xa-prep-tasks/xa-prep-tasks.csproj /p:Configuration=$(CONFIGURATION) \
213-
/t:CheckoutExternalGitSources /p:ExternalSourceDependencyDirectory='$(EXTERNAL_GIT_PATH)'
214-
215130
-include $(EXTERNAL_GIT_PATH)/monodroid/xa-integration.mk
216131

217132
run-all-tests:
@@ -257,3 +172,68 @@ list-nunit-tests:
257172
$(MSBUILD) $(MSBUILD_FLAGS) $(TEST_TARGETS) /t:ListNUnitTests
258173

259174
include build-tools/scripts/runtime-helpers.mk
175+
176+
.PHONY: prepare-build-init
177+
prepare-build-init:
178+
mkdir -p $(dir $(PREPARE_BUILD_LOG))
179+
msbuild $(PREPARE_RESTORE_FLAGS) $(PREPARE_SOLUTION) /t:Restore
180+
181+
.PHONY: prepare-build
182+
prepare-build: prepare-build-init
183+
msbuild $(PREPARE_MSBUILD_FLAGS) $(PREPARE_SOLUTION)
184+
185+
.PHONY: prepare-build-ci
186+
prepare-build-ci: prepare-build-init
187+
msbuild $(PREPARE_MSBUILD_FLAGS) $(PREPARE_SOLUTION) $(_MSBUILD_ARGS)
188+
189+
.PHONY: prepare
190+
prepare:: prepare-build
191+
mono --debug $(PREPARE_EXE) $(_PREPARE_ARGS)
192+
193+
.PHONY: prepare-help
194+
prepare-help: prepare-build
195+
mono --debug $(PREPARE_EXE) -h
196+
197+
# Hack: The current commercial pipeline doesn't pass all the required arguments when preparing the build, in particular it doesn't override the
198+
# ABI targets to build and so the prepare step configures only for the default set (armeabi-v7a, arm64-v8a, x86, $HOST_OS) which is not enough.
199+
# The `jenkins` rule in `BuildEverything.mk`, invoked by the commercial pipeline, now calls the rule below in which we rebuild the bootstrapper
200+
# with all the required properties set to include all the ABIs - it should fix the build. After the PR is merged, the commercial pipeline should
201+
# be modified to do the right thing instead.
202+
#
203+
# Commercial pipeline should also set PREPARE_CI=1 when calling targets. Since this is currently not done, we have to pass $(_PREPARE_CI_MODE_ARGS)
204+
# directly below
205+
#
206+
.PHONY: prepare-jenkins
207+
prepare-jenkins: prepare-build-ci prepare-commercial
208+
@echo preparing jenkins build
209+
mono --debug $(PREPARE_EXE) $(_PREPARE_ARGS) $(_PREPARE_CI_MODE_ARGS)
210+
211+
# This should go away once we can modify the commercial pipeline for the bootstrapper
212+
.PHONY: prepare-commercial
213+
ifeq ($(USE_COMMERCIAL_INSTALLER_NAME),true)
214+
prepare-commercial:
215+
cd $(TOP) && ./configure --with-xamarin-android='$(XAMARIN_ANDROID_PATH)'
216+
mkdir -p $(XA_MSBUILD_DIR)
217+
218+
else
219+
prepare-commercial:
220+
endif
221+
222+
.PHONY: prepare-update-mono
223+
224+
prepare-update-mono: prepare-build-ci
225+
mono --debug $(PREPARE_EXE) $(_PREPARE_ARGS) $(_PREPARE_CI_MODE_ARGS) /s:UpdateMono
226+
227+
# These targets exist only temporarily to satisfy requirements of the commercial build (since we can't modify the pipeline script in this PR)
228+
.PHONY: prepare-deps
229+
230+
# Commercial pipeline installs an older version of Mono and in effect we fail. `prepare-deps` is called after provisionator is ran and so we
231+
# can, temporarily, re-update Mono here. After the PR is merged and commercial pipeline updated, this step should be removed.
232+
prepare-deps: prepare-update-mono
233+
@echo prepare-deps is no-op, prepare-jenkins or prepare do the work instead
234+
235+
prepare-image-dependencies: prepare-build-ci
236+
mono --debug $(PREPARE_EXE) $(_PREPARE_ARGS) $(_PREPARE_CI_MODE_ARGS) -s:PrepareImageDependencies
237+
238+
prepare-external-git-dependencies: prepare-build-ci prepare-update-mono
239+
mono --debug $(PREPARE_EXE) $(_PREPARE_ARGS) $(_PREPARE_CI_MODE_ARGS) -s:PrepareExternalGitDependencies

0 commit comments

Comments
 (0)