[android-toolchain] Remove use of $(MAKEFLAGS) #603
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
An attempt to bump
external/mono/resulted in abuild failure on a macOS machine:
(This happens on a macOS machine that hasn't previously
built+installed MXE which needs MXE in order to generate Windows
binaries, so auto-builds MXE...)
This error is due to the interraction of three separate choices:
Jenkins is running:
xbuild replaces
\with/.The
_CreateMxeToolchainstarget usesmake $(MAKEFLAGS).Background: what is
$(MAKEFLAGS)?$(MAKEFLAGS)is set bymake(1) and contains the command-line flags to
make.It's value is shown elsewhere in the log file:
Note that
$(MAKEFLAGS)contains a backslash: this is because of theoriginal command, which provides a space-containing value for
$(MSBUILD_ARGS):Instead of preserving the quotes,
makeinstead replaces(space)with
\(backslash-space), which is perfectly valid:The problem is when
xbuildenters the picture: xbuild can'tdifferentiate between paths and...anything else, so for simplicity and
sanity it always replaces
\with the directory-separtor-char,which is
/on macOS/Linux.Unfortunately, this completely changes the semantics of the embedded
MSBUILD_ARGSvalue within$(MAKEFLAGS): replacing\with/causes the
/p:AutoProvisionUsesSudo=Trueto be treated as target bymake, and that target doesn't exist.In theory,
xbuildcould be fixed to address this. In practice,xbuildisn't getting any future work.msbuildis getting morework, but this "corner case" is likely sufficiently complicated that
it might not ever get fixed.
Thus, the simple fix: Don't Do That™: remove use of
$(MAKEFLAGS).It isn't needed in this invocation.