-
Notifications
You must be signed in to change notification settings - Fork 564
Bump to mono/2017-04/dbb63b19 #600
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
19ceb26 to
d723636
Compare
|
The failure is because this is the first time a full build has run on xam-mac-mini-6, which doesn't have MXE pre-built, and things fail when we build MXE. (I'll need to investigate how/why the MXE build broke...) Rebuild, so hopefully we'll hit a different machine. |
|
build |
An attempt to [bump `external/mono/`][0] resulted in a
[build failure on a macOS machine][1]:
Executing: make MSBUILD_ARGS=/p:AutoProvision=True/ /p:AutoProvisionUsesSudo=True V=1 MXE_TARGETS="i686-w64-mingw32.static" gcc cmake zlib pt hreads dlfcn-win32 mman-win32 PREFIX="/Users/builder/android-toolchain/mxe"
make[1]: *** No rule to make target `/p:AutoProvisionUsesSudo=True'. Stop.
(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:
1. Jenkins is running:
make prepare jenkins V=1 MSBUILD_ARGS="/p:AutoProvision=True /p:AutoProvisionUsesSudo=True"
2. xbuild replaces `\` with `/`.
3. The `_CreateMxeToolchains` target uses `make $(MAKEFLAGS)`.
Background: what is `$(MAKEFLAGS)`? `$(MAKEFLAGS)` is set by
**make**(1) and [contains the command-line flags to `make`][2].
It's value is shown elsewhere in the log file:
MAKEFLAGS = MSBUILD_ARGS=/p:AutoProvision=True\ /p:AutoProvisionUsesSudo=True V=1
Note that `$(MAKEFLAGS)` contains a backslash: this is because of the
original command, which provides a space-containing value for
`$(MSBUILD_ARGS)`:
MSBUILD_ARGS="/p:AutoProvision=True /p:AutoProvisionUsesSudo=True"
Instead of preserving the quotes, `make` instead replaces ` ` (space)
with `\ ` (backslash-space), which is perfectly valid:
# MAKEFLAGS set "as if" we executed:
make prepare jenkins V=1 MSBUILD_ARGS=/p:AutoProvision=True\ /p:AutoProvisionUsesSudo=True
The problem is when `xbuild` enters the picture: xbuild can't
differentiate 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_ARGS` value within `$(MAKEFLAGS)`: replacing `\ ` with `/ `
causes the `/p:AutoProvisionUsesSudo=True` to be treated as target by
`make`, and that target doesn't exist.
In theory, `xbuild` could be fixed to address this. In practice,
`xbuild` isn't getting any future work. `msbuild` *is* getting more
work, 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.
[0]: dotnet#600
[1]: https://jenkins.mono-project.com/job/xamarin-android-pr-builder/955
[2]: https://www.gnu.org/software/autoconf/manual/autoconf-2.63/html_node/The-Make-Macro-MAKEFLAGS.html
|
The MXE issue mentioned above is fixed in #603. |
d723636 to
dac9419
Compare
|
build |
An attempt to [bump `external/mono/`][0] resulted in a
[build failure on a macOS machine][1]:
Executing: make MSBUILD_ARGS=/p:AutoProvision=True/ /p:AutoProvisionUsesSudo=True V=1 MXE_TARGETS="i686-w64-mingw32.static" gcc cmake zlib pt hreads dlfcn-win32 mman-win32 PREFIX="/Users/builder/android-toolchain/mxe"
make[1]: *** No rule to make target `/p:AutoProvisionUsesSudo=True'. Stop.
(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:
1. Jenkins is running:
make prepare jenkins V=1 MSBUILD_ARGS="/p:AutoProvision=True /p:AutoProvisionUsesSudo=True"
2. xbuild replaces `\` with `/`.
3. The `_CreateMxeToolchains` target uses `make $(MAKEFLAGS)`.
Background: what is `$(MAKEFLAGS)`? `$(MAKEFLAGS)` is set by
**make**(1) and [contains the command-line flags to `make`][2].
It's value is shown elsewhere in the log file:
MAKEFLAGS = MSBUILD_ARGS=/p:AutoProvision=True\ /p:AutoProvisionUsesSudo=True V=1
Note that `$(MAKEFLAGS)` contains a backslash: this is because of the
original command, which provides a space-containing value for
`$(MSBUILD_ARGS)`:
MSBUILD_ARGS="/p:AutoProvision=True /p:AutoProvisionUsesSudo=True"
Instead of preserving the quotes, `make` instead replaces ` ` (space)
with `\ ` (backslash-space), which is perfectly valid:
# MAKEFLAGS set "as if" we executed:
make prepare jenkins V=1 MSBUILD_ARGS=/p:AutoProvision=True\ /p:AutoProvisionUsesSudo=True
The problem is when `xbuild` enters the picture: xbuild can't
differentiate 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_ARGS` value within `$(MAKEFLAGS)`: replacing `\ ` with `/ `
causes the `/p:AutoProvisionUsesSudo=True` to be treated as target by
`make`, and that target doesn't exist.
In theory, `xbuild` could be fixed to address this. In practice,
`xbuild` isn't getting any future work. `msbuild` *is* getting more
work, 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.
[0]: #600
[1]: https://jenkins.mono-project.com/job/xamarin-android-pr-builder/955
[2]: https://www.gnu.org/software/autoconf/manual/autoconf-2.63/html_node/The-Make-Macro-MAKEFLAGS.html
Context: https://bugzilla.xamarin.com/show_bug.cgi?id=56240 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=56493 Context: https://bugzilla.xamarin.com/show_bug.cgi?id=56567 We want to aim for ~weekly mono bumps while we prepare for release.
dac9419 to
b3ad96d
Compare
|
build |
|
The previous build failed because
We ran We'll need to document this |
|
Obsoleted by PR #611. |
Changes: dotnet/java-interop@27cfd45...bd7c60a * dotnet/java-interop@bd7c60a: [generator] Support //interface/@no-alternatives (#601) * dotnet/java-interop@105d544: [generator] Remove interface alternatives w/ interface-constants (#600) * dotnet/java-interop@b255981: [build] Remove extraneous `nuget restore`s (#599) * dotnet/java-interop@2a59c40: [CI] Specify our PR build trigger in YAML. (#598) * dotnet/java-interop@0a3354b: [Java.Interop.Tools.Cecil] use File.Exists instead of DirectoryGetFile (#596) Reduces the `<LinkAssembliesNoShrink/>` task time from about 711ms to 426ms for a small test Xamarin.Forms app on an initial clean build. Updates `generator --lang-features=interface-constants` output so that we stop emitting the `*Consts` classes in API-R. API Breakages: * `tests/api-compatibility/acceptable-breakages-v10.0.99.txt`: These are because we are no longer generating the `*Consts` types when for Default Interface Methods are enabled. * `tests/api-compatibility/acceptable-breakages-v10.0.txt`: These are because there was a bug where we were not generating `[Obsolete]` on fields that were turned into properties. Now the attribute is generated in API-28 (the "contract"), but they are no longer marked as deprecated by Google in API-29 (the "implementation"), so they appear as removing the attribute. * `tests/api-compatibility/acceptable-breakages-v8.0.txt`: As with v10.0, a "prop-ified" field was missing `[Obsolete]`, and Google later un-deprecated the field.
Changes: dotnet/java-interop@35f30bf...a84d19e * dotnet/java-interop@a84d19e: [generator] Support //interface/@no-alternatives (#601) * dotnet/java-interop@f34ed03: [generator] Remove interface alternatives w/ interface-constants (#600) * dotnet/java-interop@c5b8aca: [CI] Specify our PR build trigger in YAML. (#598) * dotnet/java-interop@d589f1c: [Java.Interop.Tools.Cecil] use File.Exists instead of DirectoryGetFile (#596) Reduces the `<LinkAssembliesNoShrink/>` task time from about 711ms to 426ms for a small test Xamarin.Forms app on an initial clean build. Updates `generator --lang-features=interface-constants` output so that we stop emitting the `*Consts` classes in API-R. API Breakages: * `tests/api-compatibility/acceptable-breakages-v10.0.99.txt`: These are because we are no longer generating the `*Consts` types when for Default Interface Methods are enabled. * `tests/api-compatibility/acceptable-breakages-v10.0.txt`: These are because there was a bug where we were not generating `[Obsolete]` on fields that were turned into properties. Now the attribute is generated in API-28 (the "contract"), but they are no longer marked as deprecated by Google in API-29 (the "implementation"), so they appear as removing the attribute. * `tests/api-compatibility/acceptable-breakages-v8.0.txt`: As with v10.0, a "prop-ified" field was missing `[Obsolete]`, and Google later un-deprecated the field.
We want to aim for ~weekly mono bumps while we prepare for release.